diff --git a/resources/web/guide/swiper/LICENSE b/resources/web/guide/swiper/LICENSE deleted file mode 100644 index a7876ca731..0000000000 --- a/resources/web/guide/swiper/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -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/resources/web/guide/swiper/README.md b/resources/web/guide/swiper/README.md deleted file mode 100644 index d4e726ca5b..0000000000 --- a/resources/web/guide/swiper/README.md +++ /dev/null @@ -1,11 +0,0 @@ -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/resources/web/guide/swiper/angular/angular/src/public-api.d.ts b/resources/web/guide/swiper/angular/angular/src/public-api.d.ts deleted file mode 100644 index 5add4120da..0000000000 --- a/resources/web/guide/swiper/angular/angular/src/public-api.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './swiper.module'; -export * from './swiper.component'; -export * from './swiper-slide.directive'; diff --git a/resources/web/guide/swiper/angular/angular/src/swiper-slide.directive.d.ts b/resources/web/guide/swiper/angular/angular/src/swiper-slide.directive.d.ts deleted file mode 100644 index 3a51adf7ee..0000000000 --- a/resources/web/guide/swiper/angular/angular/src/swiper-slide.directive.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { TemplateRef } from '@angular/core'; -import * as i0 from "@angular/core"; -export declare class SwiperSlideDirective { - template: TemplateRef; - virtualIndex: number; - class: string; - autoplayDelay: string | null; - set zoom(val: boolean); - get zoom(): boolean; - private _zoom; - slideIndex: number; - get classNames(): string; - set classNames(val: string); - private _hasClass; - slideData: { - isActive: boolean; - isPrev: boolean; - isNext: boolean; - isVisible: boolean; - isDuplicate: boolean; - }; - private _classNames; - constructor(template: TemplateRef); - static ɵfac: i0.ɵɵFactoryDeclaration; - static ɵdir: i0.ɵɵDirectiveDeclaration; -} diff --git a/resources/web/guide/swiper/angular/angular/src/swiper.component.d.ts b/resources/web/guide/swiper/angular/angular/src/swiper.component.d.ts deleted file mode 100644 index bf85023b8f..0000000000 --- a/resources/web/guide/swiper/angular/angular/src/swiper.component.d.ts +++ /dev/null @@ -1,252 +0,0 @@ -import { ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnInit, QueryList, SimpleChanges } from '@angular/core'; -import Swiper from 'swiper'; -import { Observable, Subject } from 'rxjs'; -import { SwiperSlideDirective } from './swiper-slide.directive'; -import { SwiperOptions, SwiperEvents, NavigationOptions, PaginationOptions, ScrollbarOptions, VirtualOptions } from 'swiper/types'; -import * as i0 from "@angular/core"; -export declare class SwiperComponent implements OnInit { - private _ngZone; - private elementRef; - private _changeDetectorRef; - private _platformId; - enabled: SwiperOptions['enabled']; - direction: SwiperOptions['direction']; - touchEventsTarget: SwiperOptions['touchEventsTarget']; - initialSlide: SwiperOptions['initialSlide']; - speed: SwiperOptions['speed']; - cssMode: SwiperOptions['cssMode']; - updateOnWindowResize: SwiperOptions['updateOnWindowResize']; - resizeObserver: SwiperOptions['resizeObserver']; - nested: SwiperOptions['nested']; - focusableElements: SwiperOptions['focusableElements']; - width: SwiperOptions['width']; - height: SwiperOptions['height']; - preventInteractionOnTransition: SwiperOptions['preventInteractionOnTransition']; - userAgent: SwiperOptions['userAgent']; - url: SwiperOptions['url']; - edgeSwipeDetection: boolean | string; - edgeSwipeThreshold: number; - freeMode: SwiperOptions['freeMode']; - autoHeight: SwiperOptions['autoHeight']; - setWrapperSize: SwiperOptions['setWrapperSize']; - virtualTranslate: SwiperOptions['virtualTranslate']; - effect: SwiperOptions['effect']; - breakpoints: SwiperOptions['breakpoints']; - spaceBetween: SwiperOptions['spaceBetween']; - slidesPerView: SwiperOptions['slidesPerView']; - grid: SwiperOptions['grid']; - slidesPerGroup: SwiperOptions['slidesPerGroup']; - slidesPerGroupSkip: SwiperOptions['slidesPerGroupSkip']; - centeredSlides: SwiperOptions['centeredSlides']; - centeredSlidesBounds: SwiperOptions['centeredSlidesBounds']; - slidesOffsetBefore: SwiperOptions['slidesOffsetBefore']; - slidesOffsetAfter: SwiperOptions['slidesOffsetAfter']; - normalizeSlideIndex: SwiperOptions['normalizeSlideIndex']; - centerInsufficientSlides: SwiperOptions['centerInsufficientSlides']; - watchOverflow: SwiperOptions['watchOverflow']; - roundLengths: SwiperOptions['roundLengths']; - touchRatio: SwiperOptions['touchRatio']; - touchAngle: SwiperOptions['touchAngle']; - simulateTouch: SwiperOptions['simulateTouch']; - shortSwipes: SwiperOptions['shortSwipes']; - longSwipes: SwiperOptions['longSwipes']; - longSwipesRatio: SwiperOptions['longSwipesRatio']; - longSwipesMs: SwiperOptions['longSwipesMs']; - followFinger: SwiperOptions['followFinger']; - allowTouchMove: SwiperOptions['allowTouchMove']; - threshold: SwiperOptions['threshold']; - touchMoveStopPropagation: SwiperOptions['touchMoveStopPropagation']; - touchStartPreventDefault: SwiperOptions['touchStartPreventDefault']; - touchStartForcePreventDefault: SwiperOptions['touchStartForcePreventDefault']; - touchReleaseOnEdges: SwiperOptions['touchReleaseOnEdges']; - uniqueNavElements: SwiperOptions['uniqueNavElements']; - resistance: SwiperOptions['resistance']; - resistanceRatio: SwiperOptions['resistanceRatio']; - watchSlidesProgress: SwiperOptions['watchSlidesProgress']; - grabCursor: SwiperOptions['grabCursor']; - preventClicks: SwiperOptions['preventClicks']; - preventClicksPropagation: SwiperOptions['preventClicksPropagation']; - slideToClickedSlide: SwiperOptions['slideToClickedSlide']; - preloadImages: SwiperOptions['preloadImages']; - updateOnImagesReady: SwiperOptions['updateOnImagesReady']; - loop: SwiperOptions['loop']; - loopAdditionalSlides: SwiperOptions['loopAdditionalSlides']; - loopedSlides: SwiperOptions['loopedSlides']; - loopFillGroupWithBlank: SwiperOptions['loopFillGroupWithBlank']; - loopPreventsSlide: SwiperOptions['loopPreventsSlide']; - allowSlidePrev: SwiperOptions['allowSlidePrev']; - allowSlideNext: SwiperOptions['allowSlideNext']; - swipeHandler: SwiperOptions['swipeHandler']; - noSwiping: SwiperOptions['noSwiping']; - noSwipingClass: SwiperOptions['noSwipingClass']; - noSwipingSelector: SwiperOptions['noSwipingSelector']; - passiveListeners: SwiperOptions['passiveListeners']; - containerModifierClass: SwiperOptions['containerModifierClass']; - slideClass: SwiperOptions['slideClass']; - slideBlankClass: SwiperOptions['slideBlankClass']; - slideActiveClass: SwiperOptions['slideActiveClass']; - slideDuplicateActiveClass: SwiperOptions['slideDuplicateActiveClass']; - slideVisibleClass: SwiperOptions['slideVisibleClass']; - slideDuplicateClass: SwiperOptions['slideDuplicateClass']; - slideNextClass: SwiperOptions['slideNextClass']; - slideDuplicateNextClass: SwiperOptions['slideDuplicateNextClass']; - slidePrevClass: SwiperOptions['slidePrevClass']; - slideDuplicatePrevClass: SwiperOptions['slideDuplicatePrevClass']; - wrapperClass: SwiperOptions['wrapperClass']; - runCallbacksOnInit: SwiperOptions['runCallbacksOnInit']; - observeParents: SwiperOptions['observeParents']; - observeSlideChildren: SwiperOptions['observeSlideChildren']; - a11y: SwiperOptions['a11y']; - autoplay: SwiperOptions['autoplay']; - controller: SwiperOptions['controller']; - coverflowEffect: SwiperOptions['coverflowEffect']; - cubeEffect: SwiperOptions['cubeEffect']; - fadeEffect: SwiperOptions['fadeEffect']; - flipEffect: SwiperOptions['flipEffect']; - creativeEffect: SwiperOptions['creativeEffect']; - cardsEffect: SwiperOptions['cardsEffect']; - hashNavigation: SwiperOptions['hashNavigation']; - history: SwiperOptions['history']; - keyboard: SwiperOptions['keyboard']; - lazy: SwiperOptions['lazy']; - mousewheel: SwiperOptions['mousewheel']; - parallax: SwiperOptions['parallax']; - thumbs: SwiperOptions['thumbs']; - zoom: SwiperOptions['zoom']; - class: string; - id: string; - set navigation(val: boolean | "" | NavigationOptions); - get navigation(): boolean | "" | NavigationOptions; - private _navigation; - showNavigation: boolean; - set pagination(val: boolean | "" | PaginationOptions); - get pagination(): boolean | "" | PaginationOptions; - private _pagination; - showPagination: boolean; - set scrollbar(val: boolean | "" | ScrollbarOptions); - get scrollbar(): boolean | "" | ScrollbarOptions; - private _scrollbar; - showScrollbar: boolean; - set virtual(val: boolean | "" | VirtualOptions); - get virtual(): boolean | "" | VirtualOptions; - private _virtual; - set index(index: number); - set config(val: SwiperOptions); - s__beforeBreakpoint: EventEmitter; - s__containerClasses: EventEmitter; - s__slideClass: EventEmitter; - s__swiper: EventEmitter; - s_activeIndexChange: EventEmitter; - s_afterInit: EventEmitter; - s_autoplay: EventEmitter; - s_autoplayStart: EventEmitter; - s_autoplayStop: EventEmitter; - s_beforeDestroy: EventEmitter; - s_beforeInit: EventEmitter; - s_beforeLoopFix: EventEmitter; - s_beforeResize: EventEmitter; - s_beforeSlideChangeStart: EventEmitter; - s_beforeTransitionStart: EventEmitter; - s_breakpoint: EventEmitter; - s_changeDirection: EventEmitter; - s_click: EventEmitter; - s_doubleTap: EventEmitter; - s_doubleClick: EventEmitter; - s_destroy: EventEmitter; - s_fromEdge: EventEmitter; - s_hashChange: EventEmitter; - s_hashSet: EventEmitter; - s_imagesReady: EventEmitter; - s_init: EventEmitter; - s_keyPress: EventEmitter; - s_lazyImageLoad: EventEmitter; - s_lazyImageReady: EventEmitter; - s_loopFix: EventEmitter; - s_momentumBounce: EventEmitter; - s_navigationHide: EventEmitter; - s_navigationShow: EventEmitter; - s_observerUpdate: EventEmitter; - s_orientationchange: EventEmitter; - s_paginationHide: EventEmitter; - s_paginationRender: EventEmitter; - s_paginationShow: EventEmitter; - s_paginationUpdate: EventEmitter; - s_progress: EventEmitter; - s_reachBeginning: EventEmitter; - s_reachEnd: EventEmitter; - s_realIndexChange: EventEmitter; - s_resize: EventEmitter; - s_scroll: EventEmitter; - s_scrollbarDragEnd: EventEmitter; - s_scrollbarDragMove: EventEmitter; - s_scrollbarDragStart: EventEmitter; - s_setTransition: EventEmitter; - s_setTranslate: EventEmitter; - s_slideChange: EventEmitter; - s_slideChangeTransitionEnd: EventEmitter; - s_slideChangeTransitionStart: EventEmitter; - s_slideNextTransitionEnd: EventEmitter; - s_slideNextTransitionStart: EventEmitter; - s_slidePrevTransitionEnd: EventEmitter; - s_slidePrevTransitionStart: EventEmitter; - s_slideResetTransitionStart: EventEmitter; - s_slideResetTransitionEnd: EventEmitter; - s_sliderMove: EventEmitter; - s_sliderFirstMove: EventEmitter; - s_slidesLengthChange: EventEmitter; - s_slidesGridLengthChange: EventEmitter; - s_snapGridLengthChange: EventEmitter; - s_snapIndexChange: EventEmitter; - s_tap: EventEmitter; - s_toEdge: EventEmitter; - s_touchEnd: EventEmitter; - s_touchMove: EventEmitter; - s_touchMoveOpposite: EventEmitter; - s_touchStart: EventEmitter; - s_transitionEnd: EventEmitter; - s_transitionStart: EventEmitter; - s_update: EventEmitter; - s_zoomChange: EventEmitter; - s_swiper: EventEmitter; - indexChange: EventEmitter; - set prevElRef(el: ElementRef); - _prevElRef: ElementRef; - set nextElRef(el: ElementRef); - _nextElRef: ElementRef; - set scrollbarElRef(el: ElementRef); - _scrollbarElRef: ElementRef; - set paginationElRef(el: ElementRef); - _paginationElRef: ElementRef; - slidesEl: QueryList; - private slides; - prependSlides: Observable; - appendSlides: Observable; - swiperRef: Swiper; - readonly _activeSlides: Subject; - get activeSlides(): Observable; - get zoomContainerClass(): string; - containerClasses: string; - constructor(_ngZone: NgZone, elementRef: ElementRef, _changeDetectorRef: ChangeDetectorRef, _platformId: Object); - private _setElement; - ngOnInit(): void; - ngAfterViewInit(): void; - private childrenSlidesInit; - private slidesChanges; - get isSwiperActive(): boolean; - initSwiper(): void; - style: any; - currentVirtualData: any; - private updateVirtualSlides; - ngOnChanges(changedParams: SimpleChanges): void; - updateInitSwiper(changedParams: any): void; - updateSwiper(changedParams: SimpleChanges | any): void; - calcLoopedSlides(): number; - updateParameter(key: string, value: any): void; - /** - * @deprecated will be removed in upcoming versions - */ - setIndex(index: number, speed?: number, silent?: boolean): void; - ngOnDestroy(): void; - static ɵfac: i0.ɵɵFactoryDeclaration; - static ɵcmp: i0.ɵɵComponentDeclaration; -} diff --git a/resources/web/guide/swiper/angular/angular/src/swiper.module.d.ts b/resources/web/guide/swiper/angular/angular/src/swiper.module.d.ts deleted file mode 100644 index 9567f38f2a..0000000000 --- a/resources/web/guide/swiper/angular/angular/src/swiper.module.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import * as i0 from "@angular/core"; -import * as i1 from "./swiper.component"; -import * as i2 from "./swiper-slide.directive"; -import * as i3 from "@angular/common"; -export declare class SwiperModule { - static ɵfac: i0.ɵɵFactoryDeclaration; - static ɵmod: i0.ɵɵNgModuleDeclaration; - static ɵinj: i0.ɵɵInjectorDeclaration; -} diff --git a/resources/web/guide/swiper/angular/angular/src/utils/get-params.d.ts b/resources/web/guide/swiper/angular/angular/src/utils/get-params.d.ts deleted file mode 100644 index 25ffc821e0..0000000000 --- a/resources/web/guide/swiper/angular/angular/src/utils/get-params.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export declare const allowedParams: string[]; -export declare function getParams(obj?: any): { - params: any; - passedParams: any; - rest: any; -}; diff --git a/resources/web/guide/swiper/angular/angular/src/utils/params-list.d.ts b/resources/web/guide/swiper/angular/angular/src/utils/params-list.d.ts deleted file mode 100644 index 7f2dc1dcd5..0000000000 --- a/resources/web/guide/swiper/angular/angular/src/utils/params-list.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const paramsList: string[]; diff --git a/resources/web/guide/swiper/angular/angular/src/utils/utils.d.ts b/resources/web/guide/swiper/angular/angular/src/utils/utils.d.ts deleted file mode 100644 index a4ce4b05a9..0000000000 --- a/resources/web/guide/swiper/angular/angular/src/utils/utils.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export declare function isObject(o: any): boolean; -export declare function isShowEl(val: any, obj: any, el: any): boolean; -export declare function extend(target: any, src: any): void; -export declare function coerceBooleanProperty(value: any): boolean; -export declare const ignoreNgOnChanges: string[]; -export declare function setProperty(val: any, obj?: {}): {} | false; diff --git a/resources/web/guide/swiper/angular/bundles/swiper_angular.umd.js b/resources/web/guide/swiper/angular/bundles/swiper_angular.umd.js deleted file mode 100644 index a6b110e499..0000000000 --- a/resources/web/guide/swiper/angular/bundles/swiper_angular.umd.js +++ /dev/null @@ -1,1830 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('swiper'), require('rxjs')) : - typeof define === 'function' && define.amd ? define('swiper_angular', ['exports', '@angular/core', '@angular/common', 'swiper', 'rxjs'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.swiper_angular = {}, global.ng.core, global.ng.common, global.Swiper, global.rxjs)); -}(this, (function (exports, i0, i1, Swiper, rxjs) { 'use strict'; - - function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } - - function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { - return e[k]; - } - }); - } - }); - } - n['default'] = e; - return Object.freeze(n); - } - - var i0__namespace = /*#__PURE__*/_interopNamespace(i0); - var i1__namespace = /*#__PURE__*/_interopNamespace(i1); - var Swiper__default = /*#__PURE__*/_interopDefaultLegacy(Swiper); - - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. - ***************************************************************************** */ - /* global Reflect, Promise */ - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) - if (Object.prototype.hasOwnProperty.call(b, p)) - d[p] = b[p]; }; - return extendStatics(d, b); - }; - function __extends(d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - var __assign = function () { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) - if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - }; - function __rest(s, e) { - var t = {}; - for (var p in s) - if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; - } - function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - } - function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); }; - } - function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") - return Reflect.metadata(metadataKey, metadataValue); - } - function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { - step(generator.next(value)); - } - catch (e) { - reject(e); - } } - function rejected(value) { try { - step(generator["throw"](value)); - } - catch (e) { - reject(e); - } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - } - function __generator(thisArg, body) { - var _ = { label: 0, sent: function () { if (t[0] & 1) - throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) - throw new TypeError("Generator is already executing."); - while (_) - try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) - return t; - if (y = 0, t) - op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: - case 1: - t = op; - break; - case 4: - _.label++; - return { value: op[1], done: false }; - case 5: - _.label++; - y = op[1]; - op = [0]; - continue; - case 7: - op = _.ops.pop(); - _.trys.pop(); - continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { - _ = 0; - continue; - } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { - _.label = op[1]; - break; - } - if (op[0] === 6 && _.label < t[1]) { - _.label = t[1]; - t = op; - break; - } - if (t && _.label < t[2]) { - _.label = t[2]; - _.ops.push(op); - break; - } - if (t[2]) - _.ops.pop(); - _.trys.pop(); - continue; - } - op = body.call(thisArg, _); - } - catch (e) { - op = [6, e]; - y = 0; - } - finally { - f = t = 0; - } - if (op[0] & 5) - throw op[1]; - return { value: op[0] ? op[1] : void 0, done: true }; - } - } - var __createBinding = Object.create ? (function (o, m, k, k2) { - if (k2 === undefined) - k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } }); - }) : (function (o, m, k, k2) { - if (k2 === undefined) - k2 = k; - o[k2] = m[k]; - }); - function __exportStar(m, o) { - for (var p in m) - if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) - __createBinding(o, m, p); - } - function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) - return m.call(o); - if (o && typeof o.length === "number") - return { - next: function () { - if (o && i >= o.length) - o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); - } - function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) - return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) - ar.push(r.value); - } - catch (error) { - e = { error: error }; - } - finally { - try { - if (r && !r.done && (m = i["return"])) - m.call(i); - } - finally { - if (e) - throw e.error; - } - } - return ar; - } - /** @deprecated */ - function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; - } - /** @deprecated */ - function __spreadArrays() { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) - s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; - } - function __spreadArray(to, from, pack) { - if (pack || arguments.length === 2) - for (var i = 0, l = from.length, ar; i < l; i++) { - if (ar || !(i in from)) { - if (!ar) - ar = Array.prototype.slice.call(from, 0, i); - ar[i] = from[i]; - } - } - return to.concat(ar || Array.prototype.slice.call(from)); - } - function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); - } - function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) - throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; - function verb(n) { if (g[n]) - i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } - function resume(n, v) { try { - step(g[n](v)); - } - catch (e) { - settle(q[0][3], e); - } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) - resume(q[0][0], q[0][1]); } - } - function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } - } - function __asyncValues(o) { - if (!Symbol.asyncIterator) - throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); } - } - function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } - return cooked; - } - ; - var __setModuleDefault = Object.create ? (function (o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - }) : function (o, v) { - o["default"] = v; - }; - function __importStar(mod) { - if (mod && mod.__esModule) - return mod; - var result = {}; - if (mod != null) - for (var k in mod) - if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - } - function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; - } - function __classPrivateFieldGet(receiver, state, kind, f) { - if (kind === "a" && !f) - throw new TypeError("Private accessor was defined without a getter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) - throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); - } - function __classPrivateFieldSet(receiver, state, value, kind, f) { - if (kind === "m") - throw new TypeError("Private method is not writable"); - if (kind === "a" && !f) - throw new TypeError("Private accessor was defined without a setter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) - throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; - } - - function isObject(o) { - return (typeof o === 'object' && - o !== null && - o.constructor && - Object.prototype.toString.call(o).slice(8, -1) === 'Object'); - } - function isShowEl(val, obj, el) { - return ((coerceBooleanProperty(val) === true && obj && !obj.el) || - !(typeof obj !== 'boolean' && - obj.el !== (el === null || el === void 0 ? void 0 : el.nativeElement) && - (typeof obj.el === 'string' || typeof obj.el === 'object'))); - } - function extend(target, src) { - var noExtend = ['__proto__', 'constructor', 'prototype']; - Object.keys(src) - .filter(function (key) { return noExtend.indexOf(key) < 0; }) - .forEach(function (key) { - if (typeof target[key] === 'undefined') { - target[key] = src[key]; - return; - } - if (target[key] && !src[key]) { - return; - } - 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 coerceBooleanProperty(value) { - return value != null && "" + value !== 'false'; - } - var ignoreNgOnChanges = ['pagination', 'navigation', 'scrollbar', 'virtual']; - function setProperty(val, obj) { - if (obj === void 0) { obj = {}; } - if (isObject(val)) { - return val; - } - if (coerceBooleanProperty(val) === true) { - return obj; - } - return false; - } - - /* underscore in name -> watch for changes */ - var paramsList = [ - 'init', - 'enabled', - '_direction', - 'touchEventsTarget', - 'initialSlide', - '_speed', - 'cssMode', - 'updateOnWindowResize', - 'resizeObserver', - 'nested', - 'focusableElements', - '_width', - '_height', - 'preventInteractionOnTransition', - 'userAgent', - 'url', - '_edgeSwipeDetection', - '_edgeSwipeThreshold', - '_freeMode', - '_autoHeight', - 'setWrapperSize', - 'virtualTranslate', - '_effect', - 'breakpoints', - '_spaceBetween', - '_slidesPerView', - '_grid', - '_slidesPerGroup', - '_slidesPerGroupSkip', - '_centeredSlides', - '_centeredSlidesBounds', - '_slidesOffsetBefore', - '_slidesOffsetAfter', - 'normalizeSlideIndex', - '_centerInsufficientSlides', - '_watchOverflow', - 'roundLengths', - 'touchRatio', - 'touchAngle', - 'simulateTouch', - '_shortSwipes', - '_longSwipes', - 'longSwipesRatio', - 'longSwipesMs', - '_followFinger', - 'allowTouchMove', - '_threshold', - 'touchMoveStopPropagation', - 'touchStartPreventDefault', - 'touchStartForcePreventDefault', - 'touchReleaseOnEdges', - 'uniqueNavElements', - '_resistance', - '_resistanceRatio', - '_watchSlidesProgress', - '_grabCursor', - 'preventClicks', - 'preventClicksPropagation', - '_slideToClickedSlide', - '_preloadImages', - 'updateOnImagesReady', - '_loop', - '_loopAdditionalSlides', - '_loopedSlides', - '_loopFillGroupWithBlank', - 'loopPreventsSlide', - '_allowSlidePrev', - '_allowSlideNext', - '_swipeHandler', - '_noSwiping', - 'noSwipingClass', - 'noSwipingSelector', - 'passiveListeners', - 'containerModifierClass', - 'slideClass', - 'slideBlankClass', - 'slideActiveClass', - 'slideDuplicateActiveClass', - 'slideVisibleClass', - 'slideDuplicateClass', - 'slideNextClass', - 'slideDuplicateNextClass', - 'slidePrevClass', - 'slideDuplicatePrevClass', - 'wrapperClass', - 'runCallbacksOnInit', - 'observer', - 'observeParents', - 'observeSlideChildren', - // modules - 'a11y', - 'autoplay', - '_controller', - 'coverflowEffect', - 'cubeEffect', - 'fadeEffect', - 'flipEffect', - 'creativeEffect', - 'cardsEffect', - 'hashNavigation', - 'history', - 'keyboard', - 'lazy', - 'mousewheel', - '_navigation', - '_pagination', - 'parallax', - '_scrollbar', - '_thumbs', - 'virtual', - 'zoom', - ]; - - // eslint-disable-next-line - var allowedParams = paramsList.map(function (key) { return key.replace(/_/, ''); }); - function getParams(obj) { - if (obj === void 0) { obj = {}; } - var params = { - on: {}, - }; - var passedParams = {}; - extend(params, Swiper__default['default'].defaults); - extend(params, Swiper__default['default'].extendedDefaults); - params._emitClasses = true; - var rest = {}; - Object.keys(obj).forEach(function (key) { - var _key = key.replace(/^_/, ''); - 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 { - rest[_key] = obj[_key]; - } - }); - return { params: params, passedParams: passedParams, rest: rest }; - } - - var SwiperSlideDirective = /** @class */ (function () { - function SwiperSlideDirective(template) { - this.template = template; - this.class = ''; - this.autoplayDelay = null; - this.slideData = { - isActive: false, - isPrev: false, - isNext: false, - isVisible: false, - isDuplicate: false, - }; - } - Object.defineProperty(SwiperSlideDirective.prototype, "zoom", { - get: function () { - return this._zoom; - }, - set: function (val) { - this._zoom = coerceBooleanProperty(val); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperSlideDirective.prototype, "classNames", { - get: function () { - return this._classNames; - }, - set: function (val) { - if (this._classNames === val) { - return; - } - this._classNames = val; - this.slideData = { - isActive: this._hasClass(['swiper-slide-active', 'swiper-slide-duplicate-active']), - isVisible: this._hasClass(['swiper-slide-visible']), - isDuplicate: this._hasClass(['swiper-slide-duplicate']), - isPrev: this._hasClass(['swiper-slide-prev', 'swiper-slide-duplicate-prev']), - isNext: this._hasClass(['swiper-slide-next', 'swiper-slide-duplicate-next']), - }; - }, - enumerable: false, - configurable: true - }); - SwiperSlideDirective.prototype._hasClass = function (classNames) { - var _this = this; - return classNames.some(function (className) { return _this._classNames.indexOf(className) >= 0; }); - }; - return SwiperSlideDirective; - }()); - SwiperSlideDirective.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0__namespace, type: SwiperSlideDirective, deps: [{ token: i0__namespace.TemplateRef }], target: i0__namespace.ɵɵFactoryTarget.Directive }); - SwiperSlideDirective.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.2", type: SwiperSlideDirective, selector: "ng-template[swiperSlide]", inputs: { virtualIndex: "virtualIndex", class: "class", autoplayDelay: ["data-swiper-autoplay", "autoplayDelay"], zoom: "zoom" }, ngImport: i0__namespace }); - i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0__namespace, type: SwiperSlideDirective, decorators: [{ - type: i0.Directive, - args: [{ - selector: 'ng-template[swiperSlide]', - }] - }], ctorParameters: function () { return [{ type: i0__namespace.TemplateRef }]; }, propDecorators: { virtualIndex: [{ - type: i0.Input - }], class: [{ - type: i0.Input - }], autoplayDelay: [{ - type: i0.Input, - args: ['data-swiper-autoplay'] - }], zoom: [{ - type: i0.Input - }] } }); - - var SwiperComponent = /** @class */ (function () { - function SwiperComponent(_ngZone, elementRef, _changeDetectorRef, _platformId) { - var _this = this; - this._ngZone = _ngZone; - this.elementRef = elementRef; - this._changeDetectorRef = _changeDetectorRef; - this._platformId = _platformId; - this.slideClass = 'swiper-slide'; - this.wrapperClass = 'swiper-wrapper'; - this.showNavigation = true; - this.showPagination = true; - this.showScrollbar = true; - // prettier-ignore - this.s__beforeBreakpoint = new i0.EventEmitter(); - // prettier-ignore - this.s__containerClasses = new i0.EventEmitter(); - // prettier-ignore - this.s__slideClass = new i0.EventEmitter(); - // prettier-ignore - this.s__swiper = new i0.EventEmitter(); - // prettier-ignore - this.s_activeIndexChange = new i0.EventEmitter(); - // prettier-ignore - this.s_afterInit = new i0.EventEmitter(); - // prettier-ignore - this.s_autoplay = new i0.EventEmitter(); - // prettier-ignore - this.s_autoplayStart = new i0.EventEmitter(); - // prettier-ignore - this.s_autoplayStop = new i0.EventEmitter(); - // prettier-ignore - this.s_beforeDestroy = new i0.EventEmitter(); - // prettier-ignore - this.s_beforeInit = new i0.EventEmitter(); - // prettier-ignore - this.s_beforeLoopFix = new i0.EventEmitter(); - // prettier-ignore - this.s_beforeResize = new i0.EventEmitter(); - // prettier-ignore - this.s_beforeSlideChangeStart = new i0.EventEmitter(); - // prettier-ignore - this.s_beforeTransitionStart = new i0.EventEmitter(); - // prettier-ignore - this.s_breakpoint = new i0.EventEmitter(); - // prettier-ignore - this.s_changeDirection = new i0.EventEmitter(); - // prettier-ignore - this.s_click = new i0.EventEmitter(); - // prettier-ignore - this.s_doubleTap = new i0.EventEmitter(); - // prettier-ignore - this.s_doubleClick = new i0.EventEmitter(); - // prettier-ignore - this.s_destroy = new i0.EventEmitter(); - // prettier-ignore - this.s_fromEdge = new i0.EventEmitter(); - // prettier-ignore - this.s_hashChange = new i0.EventEmitter(); - // prettier-ignore - this.s_hashSet = new i0.EventEmitter(); - // prettier-ignore - this.s_imagesReady = new i0.EventEmitter(); - // prettier-ignore - this.s_init = new i0.EventEmitter(); - // prettier-ignore - this.s_keyPress = new i0.EventEmitter(); - // prettier-ignore - this.s_lazyImageLoad = new i0.EventEmitter(); - // prettier-ignore - this.s_lazyImageReady = new i0.EventEmitter(); - // prettier-ignore - this.s_loopFix = new i0.EventEmitter(); - // prettier-ignore - this.s_momentumBounce = new i0.EventEmitter(); - // prettier-ignore - this.s_navigationHide = new i0.EventEmitter(); - // prettier-ignore - this.s_navigationShow = new i0.EventEmitter(); - // prettier-ignore - this.s_observerUpdate = new i0.EventEmitter(); - // prettier-ignore - this.s_orientationchange = new i0.EventEmitter(); - // prettier-ignore - this.s_paginationHide = new i0.EventEmitter(); - // prettier-ignore - this.s_paginationRender = new i0.EventEmitter(); - // prettier-ignore - this.s_paginationShow = new i0.EventEmitter(); - // prettier-ignore - this.s_paginationUpdate = new i0.EventEmitter(); - // prettier-ignore - this.s_progress = new i0.EventEmitter(); - // prettier-ignore - this.s_reachBeginning = new i0.EventEmitter(); - // prettier-ignore - this.s_reachEnd = new i0.EventEmitter(); - // prettier-ignore - this.s_realIndexChange = new i0.EventEmitter(); - // prettier-ignore - this.s_resize = new i0.EventEmitter(); - // prettier-ignore - this.s_scroll = new i0.EventEmitter(); - // prettier-ignore - this.s_scrollbarDragEnd = new i0.EventEmitter(); - // prettier-ignore - this.s_scrollbarDragMove = new i0.EventEmitter(); - // prettier-ignore - this.s_scrollbarDragStart = new i0.EventEmitter(); - // prettier-ignore - this.s_setTransition = new i0.EventEmitter(); - // prettier-ignore - this.s_setTranslate = new i0.EventEmitter(); - // prettier-ignore - this.s_slideChange = new i0.EventEmitter(); - // prettier-ignore - this.s_slideChangeTransitionEnd = new i0.EventEmitter(); - // prettier-ignore - this.s_slideChangeTransitionStart = new i0.EventEmitter(); - // prettier-ignore - this.s_slideNextTransitionEnd = new i0.EventEmitter(); - // prettier-ignore - this.s_slideNextTransitionStart = new i0.EventEmitter(); - // prettier-ignore - this.s_slidePrevTransitionEnd = new i0.EventEmitter(); - // prettier-ignore - this.s_slidePrevTransitionStart = new i0.EventEmitter(); - // prettier-ignore - this.s_slideResetTransitionStart = new i0.EventEmitter(); - // prettier-ignore - this.s_slideResetTransitionEnd = new i0.EventEmitter(); - // prettier-ignore - this.s_sliderMove = new i0.EventEmitter(); - // prettier-ignore - this.s_sliderFirstMove = new i0.EventEmitter(); - // prettier-ignore - this.s_slidesLengthChange = new i0.EventEmitter(); - // prettier-ignore - this.s_slidesGridLengthChange = new i0.EventEmitter(); - // prettier-ignore - this.s_snapGridLengthChange = new i0.EventEmitter(); - // prettier-ignore - this.s_snapIndexChange = new i0.EventEmitter(); - // prettier-ignore - this.s_tap = new i0.EventEmitter(); - // prettier-ignore - this.s_toEdge = new i0.EventEmitter(); - // prettier-ignore - this.s_touchEnd = new i0.EventEmitter(); - // prettier-ignore - this.s_touchMove = new i0.EventEmitter(); - // prettier-ignore - this.s_touchMoveOpposite = new i0.EventEmitter(); - // prettier-ignore - this.s_touchStart = new i0.EventEmitter(); - // prettier-ignore - this.s_transitionEnd = new i0.EventEmitter(); - // prettier-ignore - this.s_transitionStart = new i0.EventEmitter(); - // prettier-ignore - this.s_update = new i0.EventEmitter(); - // prettier-ignore - this.s_zoomChange = new i0.EventEmitter(); - // prettier-ignore - this.s_swiper = new i0.EventEmitter(); - this.indexChange = new i0.EventEmitter(); - this._activeSlides = new rxjs.Subject(); - this.containerClasses = 'swiper'; - this.slidesChanges = function (val) { - _this.slides = val.map(function (slide, index) { - slide.slideIndex = index; - slide.classNames = _this.slideClass || ''; - return slide; - }); - if (_this.loop && !_this.loopedSlides) { - _this.calcLoopedSlides(); - } - if (!_this.virtual) { - if (_this.loopedSlides) { - _this.prependSlides = rxjs.of(_this.slides.slice(_this.slides.length - _this.loopedSlides)); - _this.appendSlides = rxjs.of(_this.slides.slice(0, _this.loopedSlides)); - } - } - else if (_this.swiperRef && _this.swiperRef.virtual) { - _this._ngZone.runOutsideAngular(function () { - _this.swiperRef.virtual.slides = _this.slides; - _this.swiperRef.virtual.update(true); - }); - } - _this._changeDetectorRef.detectChanges(); - }; - this.style = null; - this.updateVirtualSlides = function (virtualData) { - var _d; - // TODO: type virtualData - if (!_this.swiperRef || - (_this.currentVirtualData && - _this.currentVirtualData.from === virtualData.from && - _this.currentVirtualData.to === virtualData.to && - _this.currentVirtualData.offset === virtualData.offset)) { - return; - } - _this.style = _this.swiperRef.isHorizontal() - ? (_d = {}, - _d[_this.swiperRef.rtlTranslate ? 'right' : 'left'] = virtualData.offset + "px", - _d) : { - top: virtualData.offset + "px", - }; - _this.currentVirtualData = virtualData; - _this._activeSlides.next(virtualData.slides); - _this._ngZone.run(function () { - _this._changeDetectorRef.detectChanges(); - }); - _this._ngZone.runOutsideAngular(function () { - _this.swiperRef.updateSlides(); - _this.swiperRef.updateProgress(); - _this.swiperRef.updateSlidesClasses(); - if (_this.swiperRef.lazy && _this.swiperRef.params.lazy['enabled']) { - _this.swiperRef.lazy.load(); - } - _this.swiperRef.virtual.update(true); - }); - return; - }; - } - Object.defineProperty(SwiperComponent.prototype, "navigation", { - get: function () { - return this._navigation; - }, - set: function (val) { - var _a, _b, _c; - var currentNext = typeof this._navigation !== 'boolean' && this._navigation !== '' - ? (_a = this._navigation) === null || _a === void 0 ? void 0 : _a.nextEl - : null; - var currentPrev = typeof this._navigation !== 'boolean' && this._navigation !== '' - ? (_b = this._navigation) === null || _b === void 0 ? void 0 : _b.prevEl - : null; - this._navigation = setProperty(val, { - nextEl: currentNext || null, - prevEl: currentPrev || null, - }); - this.showNavigation = !(coerceBooleanProperty(val) !== true || - (this._navigation && - typeof this._navigation !== 'boolean' && - this._navigation.prevEl !== ((_c = this._prevElRef) === null || _c === void 0 ? void 0 : _c.nativeElement) && - (this._navigation.prevEl !== null || this._navigation.nextEl !== null) && - (typeof this._navigation.nextEl === 'string' || - typeof this._navigation.prevEl === 'string' || - typeof this._navigation.nextEl === 'object' || - typeof this._navigation.prevEl === 'object'))); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "pagination", { - get: function () { - return this._pagination; - }, - set: function (val) { - var _a; - var current = typeof this._pagination !== 'boolean' && this._pagination !== '' - ? (_a = this._pagination) === null || _a === void 0 ? void 0 : _a.el - : null; - this._pagination = setProperty(val, { - el: current || null, - }); - this.showPagination = isShowEl(val, this._pagination, this._paginationElRef); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "scrollbar", { - get: function () { - return this._scrollbar; - }, - set: function (val) { - var _a; - var current = typeof this._scrollbar !== 'boolean' && this._scrollbar !== '' ? (_a = this._scrollbar) === null || _a === void 0 ? void 0 : _a.el : null; - this._scrollbar = setProperty(val, { - el: current || null, - }); - this.showScrollbar = isShowEl(val, this._scrollbar, this._scrollbarElRef); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "virtual", { - get: function () { - return this._virtual; - }, - set: function (val) { - this._virtual = setProperty(val); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "index", { - set: function (index) { - console.warn('`[(index)]` prop is deprecated and will be removed in upcoming versions'); - this.setIndex(index); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "config", { - set: function (val) { - this.updateSwiper(val); - var params = getParams(val).params; - Object.assign(this, params); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "prevElRef", { - set: function (el) { - this._prevElRef = el; - this._setElement(el, this.navigation, 'navigation', 'prevEl'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "nextElRef", { - set: function (el) { - this._nextElRef = el; - this._setElement(el, this.navigation, 'navigation', 'nextEl'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "scrollbarElRef", { - set: function (el) { - this._scrollbarElRef = el; - this._setElement(el, this.scrollbar, 'scrollbar'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "paginationElRef", { - set: function (el) { - this._paginationElRef = el; - this._setElement(el, this.pagination, 'pagination'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "activeSlides", { - get: function () { - if (this.virtual) { - return this._activeSlides; - } - return rxjs.of(this.slides); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "zoomContainerClass", { - get: function () { - return this.zoom && typeof this.zoom !== 'boolean' - ? this.zoom.containerClass - : 'swiper-zoom-container'; - }, - enumerable: false, - configurable: true - }); - SwiperComponent.prototype._setElement = function (el, ref, update, key) { - if (key === void 0) { key = 'el'; } - if (!el || !ref) { - return; - } - if (ref && el.nativeElement) { - if (ref[key] === el.nativeElement) { - return; - } - ref[key] = el.nativeElement; - } - var updateObj = {}; - updateObj[update] = true; - this.updateInitSwiper(updateObj); - }; - SwiperComponent.prototype.ngOnInit = function () { - var params = getParams(this).params; - Object.assign(this, params); - }; - SwiperComponent.prototype.ngAfterViewInit = function () { - var _this = this; - this.childrenSlidesInit(); - this.initSwiper(); - this._changeDetectorRef.detectChanges(); - setTimeout(function () { - _this.s_swiper.emit(_this.swiperRef); - }); - }; - SwiperComponent.prototype.childrenSlidesInit = function () { - this.slidesChanges(this.slidesEl); - this.slidesEl.changes.subscribe(this.slidesChanges); - }; - Object.defineProperty(SwiperComponent.prototype, "isSwiperActive", { - get: function () { - return this.swiperRef && !this.swiperRef.destroyed; - }, - enumerable: false, - configurable: true - }); - SwiperComponent.prototype.initSwiper = function () { - var _this = this; - var _d = getParams(this), swiperParams = _d.params, passedParams = _d.passedParams; - Object.assign(this, swiperParams); - this._ngZone.runOutsideAngular(function () { - swiperParams.init = false; - if (!swiperParams.virtual) { - swiperParams.observer = true; - } - swiperParams.onAny = function (eventName) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - var emitter = _this[('s_' + eventName)]; - if (emitter) { - emitter.emit.apply(emitter, __spreadArray([], __read(args))); - } - }; - var _slideClasses = function (_, updated) { - updated.forEach(function (_d, index) { - var slideEl = _d.slideEl, classNames = _d.classNames; - var dataIndex = slideEl.getAttribute('data-swiper-slide-index'); - var slideIndex = dataIndex ? parseInt(dataIndex) : index; - if (_this.virtual) { - var virtualSlide = _this.slides.find(function (item) { - return item.virtualIndex && item.virtualIndex === slideIndex; - }); - if (virtualSlide) { - virtualSlide.classNames = classNames; - return; - } - } - if (_this.slides[slideIndex]) { - _this.slides[slideIndex].classNames = classNames; - } - }); - _this._changeDetectorRef.detectChanges(); - }; - var _containerClasses = function (_, classes) { - setTimeout(function () { - _this.containerClasses = classes; - }); - }; - Object.assign(swiperParams.on, { - _containerClasses: _containerClasses, - _slideClasses: _slideClasses, - }); - var swiperRef = new Swiper__default['default'](swiperParams); - swiperRef.loopCreate = function () { }; - swiperRef.loopDestroy = function () { }; - if (swiperParams.loop) { - swiperRef.loopedSlides = _this.loopedSlides; - } - var isVirtualEnabled = typeof swiperRef.params.virtual !== 'undefined' && - typeof swiperRef.params.virtual !== 'boolean' && - swiperRef.params.virtual.enabled; - if (swiperRef.virtual && isVirtualEnabled) { - swiperRef.virtual.slides = _this.slides; - var extendWith = { - cache: false, - slides: _this.slides, - renderExternal: _this.updateVirtualSlides, - renderExternalUpdate: false, - }; - extend(swiperRef.params.virtual, extendWith); - extend(swiperRef.originalParams.virtual, extendWith); - } - if (i1.isPlatformBrowser(_this._platformId)) { - _this.swiperRef = swiperRef.init(_this.elementRef.nativeElement); - var isEnabled = typeof _this.swiperRef.params.virtual !== 'undefined' && - typeof _this.swiperRef.params.virtual !== 'boolean' && - _this.swiperRef.params.virtual.enabled; - if (_this.swiperRef.virtual && isEnabled) { - _this.swiperRef.virtual.update(true); - } - _this._changeDetectorRef.detectChanges(); - swiperRef.on('slideChange', function () { - _this.indexChange.emit(_this.swiperRef.realIndex); - }); - } - }); - }; - SwiperComponent.prototype.ngOnChanges = function (changedParams) { - this.updateSwiper(changedParams); - this._changeDetectorRef.detectChanges(); - }; - SwiperComponent.prototype.updateInitSwiper = function (changedParams) { - var _this = this; - if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) { - return; - } - this._ngZone.runOutsideAngular(function () { - var _d = _this.swiperRef, currentParams = _d.params, pagination = _d.pagination, navigation = _d.navigation, scrollbar = _d.scrollbar, virtual = _d.virtual, thumbs = _d.thumbs; - if (changedParams.pagination) { - if (_this.pagination && - typeof _this.pagination !== 'boolean' && - _this.pagination.el && - pagination && - !pagination.el) { - _this.updateParameter('pagination', _this.pagination); - pagination.init(); - pagination.render(); - pagination.update(); - } - else { - pagination.destroy(); - pagination.el = null; - } - } - if (changedParams.scrollbar) { - if (_this.scrollbar && - typeof _this.scrollbar !== 'boolean' && - _this.scrollbar.el && - scrollbar && - !scrollbar.el) { - _this.updateParameter('scrollbar', _this.scrollbar); - scrollbar.init(); - scrollbar.updateSize(); - scrollbar.setTranslate(); - } - else { - scrollbar.destroy(); - scrollbar.el = null; - } - } - if (changedParams.navigation) { - if (_this.navigation && - typeof _this.navigation !== 'boolean' && - _this.navigation.prevEl && - _this.navigation.nextEl && - navigation && - !navigation.prevEl && - !navigation.nextEl) { - _this.updateParameter('navigation', _this.navigation); - navigation.init(); - navigation.update(); - } - else if (navigation.prevEl && navigation.nextEl) { - navigation.destroy(); - navigation.nextEl = null; - navigation.prevEl = null; - } - } - if (changedParams.thumbs && _this.thumbs && _this.thumbs.swiper) { - _this.updateParameter('thumbs', _this.thumbs); - var initialized = thumbs.init(); - if (initialized) - thumbs.update(true); - } - if (changedParams.controller && _this.controller && _this.controller.control) { - _this.swiperRef.controller.control = _this.controller.control; - } - _this.swiperRef.update(); - }); - }; - SwiperComponent.prototype.updateSwiper = function (changedParams) { - var _this = this; - this._ngZone.runOutsideAngular(function () { - var _a, _b; - if (changedParams.config) { - return; - } - if (!(changedParams && _this.swiperRef && !_this.swiperRef.destroyed)) { - return; - } - for (var key in changedParams) { - if (ignoreNgOnChanges.indexOf(key) >= 0) { - continue; - } - var newValue = (_b = (_a = changedParams[key]) === null || _a === void 0 ? void 0 : _a.currentValue) !== null && _b !== void 0 ? _b : changedParams[key]; - _this.updateParameter(key, newValue); - } - if (changedParams.allowSlideNext) { - _this.swiperRef.allowSlideNext = _this.allowSlideNext; - } - if (changedParams.allowSlidePrev) { - _this.swiperRef.allowSlidePrev = _this.allowSlidePrev; - } - if (changedParams.direction) { - _this.swiperRef.changeDirection(_this.direction, false); - } - if (changedParams.breakpoints) { - if (_this.loop && !_this.loopedSlides) { - _this.calcLoopedSlides(); - } - _this.swiperRef.currentBreakpoint = null; - _this.swiperRef.setBreakpoint(); - } - if (changedParams.thumbs || changedParams.controller) { - _this.updateInitSwiper(changedParams); - } - _this.swiperRef.update(); - }); - }; - SwiperComponent.prototype.calcLoopedSlides = function () { - if (!this.loop) { - return; - } - var slidesPerViewParams = this.slidesPerView; - if (this.breakpoints) { - var breakpoint = Swiper__default['default'].prototype.getBreakpoint(this.breakpoints); - var breakpointOnlyParams = breakpoint in this.breakpoints ? this.breakpoints[breakpoint] : undefined; - if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) { - slidesPerViewParams = breakpointOnlyParams.slidesPerView; - } - } - if (slidesPerViewParams === 'auto') { - this.loopedSlides = this.slides.length; - return this.slides.length; - } - var loopedSlides = this.loopedSlides || slidesPerViewParams; - if (!loopedSlides) { - // ? - return; - } - if (this.loopAdditionalSlides) { - loopedSlides += this.loopAdditionalSlides; - } - if (loopedSlides > this.slides.length) { - loopedSlides = this.slides.length; - } - this.loopedSlides = loopedSlides; - return loopedSlides; - }; - SwiperComponent.prototype.updateParameter = function (key, value) { - if (!(this.swiperRef && !this.swiperRef.destroyed)) { - return; - } - var _key = key.replace(/^_/, ''); - var isCurrentParamObj = isObject(this.swiperRef.params[_key]); - if (Object.keys(this.swiperRef.modules).indexOf(_key) >= 0) { - var defaultParams = this.swiperRef.modules[_key].params[_key]; - if (isCurrentParamObj) { - extend(this.swiperRef.params[_key], defaultParams); - } - else { - this.swiperRef.params[_key] = defaultParams; - } - } - if (_key === 'enabled') { - if (value === true) { - this.swiperRef.enable(); - } - else if (value === false) { - this.swiperRef.disable(); - } - return; - } - if (isCurrentParamObj && isObject(value)) { - extend(this.swiperRef.params[_key], value); - } - else { - this.swiperRef.params[_key] = value; - } - }; - /** - * @deprecated will be removed in upcoming versions - */ - SwiperComponent.prototype.setIndex = function (index, speed, silent) { - var _this = this; - if (!this.isSwiperActive) { - this.initialSlide = index; - return; - } - if (index === this.swiperRef.activeIndex) { - return; - } - this._ngZone.runOutsideAngular(function () { - if (_this.loop) { - _this.swiperRef.slideToLoop(index, speed, !silent); - } - else { - _this.swiperRef.slideTo(index, speed, !silent); - } - }); - }; - SwiperComponent.prototype.ngOnDestroy = function () { - var _this = this; - this._ngZone.runOutsideAngular(function () { - var _a; - (_a = _this.swiperRef) === null || _a === void 0 ? void 0 : _a.destroy(true, false); - }); - }; - return SwiperComponent; - }()); - SwiperComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0__namespace, type: SwiperComponent, deps: [{ token: i0__namespace.NgZone }, { token: i0__namespace.ElementRef }, { token: i0__namespace.ChangeDetectorRef }, { token: i0.PLATFORM_ID }], target: i0__namespace.ɵɵFactoryTarget.Component }); - SwiperComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.2", type: SwiperComponent, selector: "swiper, [swiper]", inputs: { enabled: "enabled", direction: "direction", touchEventsTarget: "touchEventsTarget", initialSlide: "initialSlide", speed: "speed", cssMode: "cssMode", updateOnWindowResize: "updateOnWindowResize", resizeObserver: "resizeObserver", nested: "nested", focusableElements: "focusableElements", width: "width", height: "height", preventInteractionOnTransition: "preventInteractionOnTransition", userAgent: "userAgent", url: "url", edgeSwipeDetection: "edgeSwipeDetection", edgeSwipeThreshold: "edgeSwipeThreshold", freeMode: "freeMode", autoHeight: "autoHeight", setWrapperSize: "setWrapperSize", virtualTranslate: "virtualTranslate", effect: "effect", breakpoints: "breakpoints", spaceBetween: "spaceBetween", slidesPerView: "slidesPerView", grid: "grid", slidesPerGroup: "slidesPerGroup", slidesPerGroupSkip: "slidesPerGroupSkip", centeredSlides: "centeredSlides", centeredSlidesBounds: "centeredSlidesBounds", slidesOffsetBefore: "slidesOffsetBefore", slidesOffsetAfter: "slidesOffsetAfter", normalizeSlideIndex: "normalizeSlideIndex", centerInsufficientSlides: "centerInsufficientSlides", watchOverflow: "watchOverflow", roundLengths: "roundLengths", touchRatio: "touchRatio", touchAngle: "touchAngle", simulateTouch: "simulateTouch", shortSwipes: "shortSwipes", longSwipes: "longSwipes", longSwipesRatio: "longSwipesRatio", longSwipesMs: "longSwipesMs", followFinger: "followFinger", allowTouchMove: "allowTouchMove", threshold: "threshold", touchMoveStopPropagation: "touchMoveStopPropagation", touchStartPreventDefault: "touchStartPreventDefault", touchStartForcePreventDefault: "touchStartForcePreventDefault", touchReleaseOnEdges: "touchReleaseOnEdges", uniqueNavElements: "uniqueNavElements", resistance: "resistance", resistanceRatio: "resistanceRatio", watchSlidesProgress: "watchSlidesProgress", grabCursor: "grabCursor", preventClicks: "preventClicks", preventClicksPropagation: "preventClicksPropagation", slideToClickedSlide: "slideToClickedSlide", preloadImages: "preloadImages", updateOnImagesReady: "updateOnImagesReady", loop: "loop", loopAdditionalSlides: "loopAdditionalSlides", loopedSlides: "loopedSlides", loopFillGroupWithBlank: "loopFillGroupWithBlank", loopPreventsSlide: "loopPreventsSlide", allowSlidePrev: "allowSlidePrev", allowSlideNext: "allowSlideNext", swipeHandler: "swipeHandler", noSwiping: "noSwiping", noSwipingClass: "noSwipingClass", noSwipingSelector: "noSwipingSelector", passiveListeners: "passiveListeners", containerModifierClass: "containerModifierClass", slideClass: "slideClass", slideBlankClass: "slideBlankClass", slideActiveClass: "slideActiveClass", slideDuplicateActiveClass: "slideDuplicateActiveClass", slideVisibleClass: "slideVisibleClass", slideDuplicateClass: "slideDuplicateClass", slideNextClass: "slideNextClass", slideDuplicateNextClass: "slideDuplicateNextClass", slidePrevClass: "slidePrevClass", slideDuplicatePrevClass: "slideDuplicatePrevClass", wrapperClass: "wrapperClass", runCallbacksOnInit: "runCallbacksOnInit", observeParents: "observeParents", observeSlideChildren: "observeSlideChildren", a11y: "a11y", autoplay: "autoplay", controller: "controller", coverflowEffect: "coverflowEffect", cubeEffect: "cubeEffect", fadeEffect: "fadeEffect", flipEffect: "flipEffect", creativeEffect: "creativeEffect", cardsEffect: "cardsEffect", hashNavigation: "hashNavigation", history: "history", keyboard: "keyboard", lazy: "lazy", mousewheel: "mousewheel", parallax: "parallax", thumbs: "thumbs", zoom: "zoom", class: "class", id: "id", navigation: "navigation", pagination: "pagination", scrollbar: "scrollbar", virtual: "virtual", index: "index", config: "config" }, outputs: { s__beforeBreakpoint: "_beforeBreakpoint", s__containerClasses: "_containerClasses", s__slideClass: "_slideClass", s__swiper: "_swiper", s_activeIndexChange: "activeIndexChange", s_afterInit: "afterInit", s_autoplay: "autoplay", s_autoplayStart: "autoplayStart", s_autoplayStop: "autoplayStop", s_beforeDestroy: "beforeDestroy", s_beforeInit: "beforeInit", s_beforeLoopFix: "beforeLoopFix", s_beforeResize: "beforeResize", s_beforeSlideChangeStart: "beforeSlideChangeStart", s_beforeTransitionStart: "beforeTransitionStart", s_breakpoint: "breakpoint", s_changeDirection: "changeDirection", s_click: "click", s_doubleTap: "doubleTap", s_doubleClick: "doubleClick", s_destroy: "destroy", s_fromEdge: "fromEdge", s_hashChange: "hashChange", s_hashSet: "hashSet", s_imagesReady: "imagesReady", s_init: "init", s_keyPress: "keyPress", s_lazyImageLoad: "lazyImageLoad", s_lazyImageReady: "lazyImageReady", s_loopFix: "loopFix", s_momentumBounce: "momentumBounce", s_navigationHide: "navigationHide", s_navigationShow: "navigationShow", s_observerUpdate: "observerUpdate", s_orientationchange: "orientationchange", s_paginationHide: "paginationHide", s_paginationRender: "paginationRender", s_paginationShow: "paginationShow", s_paginationUpdate: "paginationUpdate", s_progress: "progress", s_reachBeginning: "reachBeginning", s_reachEnd: "reachEnd", s_realIndexChange: "realIndexChange", s_resize: "resize", s_scroll: "scroll", s_scrollbarDragEnd: "scrollbarDragEnd", s_scrollbarDragMove: "scrollbarDragMove", s_scrollbarDragStart: "scrollbarDragStart", s_setTransition: "setTransition", s_setTranslate: "setTranslate", s_slideChange: "slideChange", s_slideChangeTransitionEnd: "slideChangeTransitionEnd", s_slideChangeTransitionStart: "slideChangeTransitionStart", s_slideNextTransitionEnd: "slideNextTransitionEnd", s_slideNextTransitionStart: "slideNextTransitionStart", s_slidePrevTransitionEnd: "slidePrevTransitionEnd", s_slidePrevTransitionStart: "slidePrevTransitionStart", s_slideResetTransitionStart: "slideResetTransitionStart", s_slideResetTransitionEnd: "slideResetTransitionEnd", s_sliderMove: "sliderMove", s_sliderFirstMove: "sliderFirstMove", s_slidesLengthChange: "slidesLengthChange", s_slidesGridLengthChange: "slidesGridLengthChange", s_snapGridLengthChange: "snapGridLengthChange", s_snapIndexChange: "snapIndexChange", s_tap: "tap", s_toEdge: "toEdge", s_touchEnd: "touchEnd", s_touchMove: "touchMove", s_touchMoveOpposite: "touchMoveOpposite", s_touchStart: "touchStart", s_transitionEnd: "transitionEnd", s_transitionStart: "transitionStart", s_update: "update", s_zoomChange: "zoomChange", s_swiper: "swiper", indexChange: "indexChange" }, host: { properties: { "class": "this.containerClasses" } }, queries: [{ propertyName: "slidesEl", predicate: SwiperSlideDirective }], viewQueries: [{ propertyName: "prevElRef", first: true, predicate: ["prevElRef"], descendants: true }, { propertyName: "nextElRef", first: true, predicate: ["nextElRef"], descendants: true }, { propertyName: "scrollbarElRef", first: true, predicate: ["scrollbarElRef"], descendants: true }, { propertyName: "paginationElRef", first: true, predicate: ["paginationElRef"], descendants: true }], usesOnChanges: true, ngImport: i0__namespace, template: "\n\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n\n\n\n \n
\n \n
\n \n
\n \n \n\n", styles: ["\n swiper {\n display: block;\n }\n "], directives: [{ type: i1__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1__namespace.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1__namespace.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1__namespace.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "async": i1__namespace.AsyncPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush, encapsulation: i0__namespace.ViewEncapsulation.None }); - i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0__namespace, type: SwiperComponent, decorators: [{ - type: i0.Component, - args: [{ - selector: 'swiper, [swiper]', - templateUrl: './swiper.component.html', - changeDetection: i0.ChangeDetectionStrategy.OnPush, - encapsulation: i0.ViewEncapsulation.None, - styles: [ - "\n swiper {\n display: block;\n }\n ", - ], - }] - }], ctorParameters: function () { - return [{ type: i0__namespace.NgZone }, { type: i0__namespace.ElementRef }, { type: i0__namespace.ChangeDetectorRef }, { type: Object, decorators: [{ - type: i0.Inject, - args: [i0.PLATFORM_ID] - }] }]; - }, propDecorators: { enabled: [{ - type: i0.Input - }], direction: [{ - type: i0.Input - }], touchEventsTarget: [{ - type: i0.Input - }], initialSlide: [{ - type: i0.Input - }], speed: [{ - type: i0.Input - }], cssMode: [{ - type: i0.Input - }], updateOnWindowResize: [{ - type: i0.Input - }], resizeObserver: [{ - type: i0.Input - }], nested: [{ - type: i0.Input - }], focusableElements: [{ - type: i0.Input - }], width: [{ - type: i0.Input - }], height: [{ - type: i0.Input - }], preventInteractionOnTransition: [{ - type: i0.Input - }], userAgent: [{ - type: i0.Input - }], url: [{ - type: i0.Input - }], edgeSwipeDetection: [{ - type: i0.Input - }], edgeSwipeThreshold: [{ - type: i0.Input - }], freeMode: [{ - type: i0.Input - }], autoHeight: [{ - type: i0.Input - }], setWrapperSize: [{ - type: i0.Input - }], virtualTranslate: [{ - type: i0.Input - }], effect: [{ - type: i0.Input - }], breakpoints: [{ - type: i0.Input - }], spaceBetween: [{ - type: i0.Input - }], slidesPerView: [{ - type: i0.Input - }], grid: [{ - type: i0.Input - }], slidesPerGroup: [{ - type: i0.Input - }], slidesPerGroupSkip: [{ - type: i0.Input - }], centeredSlides: [{ - type: i0.Input - }], centeredSlidesBounds: [{ - type: i0.Input - }], slidesOffsetBefore: [{ - type: i0.Input - }], slidesOffsetAfter: [{ - type: i0.Input - }], normalizeSlideIndex: [{ - type: i0.Input - }], centerInsufficientSlides: [{ - type: i0.Input - }], watchOverflow: [{ - type: i0.Input - }], roundLengths: [{ - type: i0.Input - }], touchRatio: [{ - type: i0.Input - }], touchAngle: [{ - type: i0.Input - }], simulateTouch: [{ - type: i0.Input - }], shortSwipes: [{ - type: i0.Input - }], longSwipes: [{ - type: i0.Input - }], longSwipesRatio: [{ - type: i0.Input - }], longSwipesMs: [{ - type: i0.Input - }], followFinger: [{ - type: i0.Input - }], allowTouchMove: [{ - type: i0.Input - }], threshold: [{ - type: i0.Input - }], touchMoveStopPropagation: [{ - type: i0.Input - }], touchStartPreventDefault: [{ - type: i0.Input - }], touchStartForcePreventDefault: [{ - type: i0.Input - }], touchReleaseOnEdges: [{ - type: i0.Input - }], uniqueNavElements: [{ - type: i0.Input - }], resistance: [{ - type: i0.Input - }], resistanceRatio: [{ - type: i0.Input - }], watchSlidesProgress: [{ - type: i0.Input - }], grabCursor: [{ - type: i0.Input - }], preventClicks: [{ - type: i0.Input - }], preventClicksPropagation: [{ - type: i0.Input - }], slideToClickedSlide: [{ - type: i0.Input - }], preloadImages: [{ - type: i0.Input - }], updateOnImagesReady: [{ - type: i0.Input - }], loop: [{ - type: i0.Input - }], loopAdditionalSlides: [{ - type: i0.Input - }], loopedSlides: [{ - type: i0.Input - }], loopFillGroupWithBlank: [{ - type: i0.Input - }], loopPreventsSlide: [{ - type: i0.Input - }], allowSlidePrev: [{ - type: i0.Input - }], allowSlideNext: [{ - type: i0.Input - }], swipeHandler: [{ - type: i0.Input - }], noSwiping: [{ - type: i0.Input - }], noSwipingClass: [{ - type: i0.Input - }], noSwipingSelector: [{ - type: i0.Input - }], passiveListeners: [{ - type: i0.Input - }], containerModifierClass: [{ - type: i0.Input - }], slideClass: [{ - type: i0.Input - }], slideBlankClass: [{ - type: i0.Input - }], slideActiveClass: [{ - type: i0.Input - }], slideDuplicateActiveClass: [{ - type: i0.Input - }], slideVisibleClass: [{ - type: i0.Input - }], slideDuplicateClass: [{ - type: i0.Input - }], slideNextClass: [{ - type: i0.Input - }], slideDuplicateNextClass: [{ - type: i0.Input - }], slidePrevClass: [{ - type: i0.Input - }], slideDuplicatePrevClass: [{ - type: i0.Input - }], wrapperClass: [{ - type: i0.Input - }], runCallbacksOnInit: [{ - type: i0.Input - }], observeParents: [{ - type: i0.Input - }], observeSlideChildren: [{ - type: i0.Input - }], a11y: [{ - type: i0.Input - }], autoplay: [{ - type: i0.Input - }], controller: [{ - type: i0.Input - }], coverflowEffect: [{ - type: i0.Input - }], cubeEffect: [{ - type: i0.Input - }], fadeEffect: [{ - type: i0.Input - }], flipEffect: [{ - type: i0.Input - }], creativeEffect: [{ - type: i0.Input - }], cardsEffect: [{ - type: i0.Input - }], hashNavigation: [{ - type: i0.Input - }], history: [{ - type: i0.Input - }], keyboard: [{ - type: i0.Input - }], lazy: [{ - type: i0.Input - }], mousewheel: [{ - type: i0.Input - }], parallax: [{ - type: i0.Input - }], thumbs: [{ - type: i0.Input - }], zoom: [{ - type: i0.Input - }], class: [{ - type: i0.Input - }], id: [{ - type: i0.Input - }], navigation: [{ - type: i0.Input - }], pagination: [{ - type: i0.Input - }], scrollbar: [{ - type: i0.Input - }], virtual: [{ - type: i0.Input - }], index: [{ - type: i0.Input - }], config: [{ - type: i0.Input - }], s__beforeBreakpoint: [{ - type: i0.Output, - args: ['_beforeBreakpoint'] - }], s__containerClasses: [{ - type: i0.Output, - args: ['_containerClasses'] - }], s__slideClass: [{ - type: i0.Output, - args: ['_slideClass'] - }], s__swiper: [{ - type: i0.Output, - args: ['_swiper'] - }], s_activeIndexChange: [{ - type: i0.Output, - args: ['activeIndexChange'] - }], s_afterInit: [{ - type: i0.Output, - args: ['afterInit'] - }], s_autoplay: [{ - type: i0.Output, - args: ['autoplay'] - }], s_autoplayStart: [{ - type: i0.Output, - args: ['autoplayStart'] - }], s_autoplayStop: [{ - type: i0.Output, - args: ['autoplayStop'] - }], s_beforeDestroy: [{ - type: i0.Output, - args: ['beforeDestroy'] - }], s_beforeInit: [{ - type: i0.Output, - args: ['beforeInit'] - }], s_beforeLoopFix: [{ - type: i0.Output, - args: ['beforeLoopFix'] - }], s_beforeResize: [{ - type: i0.Output, - args: ['beforeResize'] - }], s_beforeSlideChangeStart: [{ - type: i0.Output, - args: ['beforeSlideChangeStart'] - }], s_beforeTransitionStart: [{ - type: i0.Output, - args: ['beforeTransitionStart'] - }], s_breakpoint: [{ - type: i0.Output, - args: ['breakpoint'] - }], s_changeDirection: [{ - type: i0.Output, - args: ['changeDirection'] - }], s_click: [{ - type: i0.Output, - args: ['click'] - }], s_doubleTap: [{ - type: i0.Output, - args: ['doubleTap'] - }], s_doubleClick: [{ - type: i0.Output, - args: ['doubleClick'] - }], s_destroy: [{ - type: i0.Output, - args: ['destroy'] - }], s_fromEdge: [{ - type: i0.Output, - args: ['fromEdge'] - }], s_hashChange: [{ - type: i0.Output, - args: ['hashChange'] - }], s_hashSet: [{ - type: i0.Output, - args: ['hashSet'] - }], s_imagesReady: [{ - type: i0.Output, - args: ['imagesReady'] - }], s_init: [{ - type: i0.Output, - args: ['init'] - }], s_keyPress: [{ - type: i0.Output, - args: ['keyPress'] - }], s_lazyImageLoad: [{ - type: i0.Output, - args: ['lazyImageLoad'] - }], s_lazyImageReady: [{ - type: i0.Output, - args: ['lazyImageReady'] - }], s_loopFix: [{ - type: i0.Output, - args: ['loopFix'] - }], s_momentumBounce: [{ - type: i0.Output, - args: ['momentumBounce'] - }], s_navigationHide: [{ - type: i0.Output, - args: ['navigationHide'] - }], s_navigationShow: [{ - type: i0.Output, - args: ['navigationShow'] - }], s_observerUpdate: [{ - type: i0.Output, - args: ['observerUpdate'] - }], s_orientationchange: [{ - type: i0.Output, - args: ['orientationchange'] - }], s_paginationHide: [{ - type: i0.Output, - args: ['paginationHide'] - }], s_paginationRender: [{ - type: i0.Output, - args: ['paginationRender'] - }], s_paginationShow: [{ - type: i0.Output, - args: ['paginationShow'] - }], s_paginationUpdate: [{ - type: i0.Output, - args: ['paginationUpdate'] - }], s_progress: [{ - type: i0.Output, - args: ['progress'] - }], s_reachBeginning: [{ - type: i0.Output, - args: ['reachBeginning'] - }], s_reachEnd: [{ - type: i0.Output, - args: ['reachEnd'] - }], s_realIndexChange: [{ - type: i0.Output, - args: ['realIndexChange'] - }], s_resize: [{ - type: i0.Output, - args: ['resize'] - }], s_scroll: [{ - type: i0.Output, - args: ['scroll'] - }], s_scrollbarDragEnd: [{ - type: i0.Output, - args: ['scrollbarDragEnd'] - }], s_scrollbarDragMove: [{ - type: i0.Output, - args: ['scrollbarDragMove'] - }], s_scrollbarDragStart: [{ - type: i0.Output, - args: ['scrollbarDragStart'] - }], s_setTransition: [{ - type: i0.Output, - args: ['setTransition'] - }], s_setTranslate: [{ - type: i0.Output, - args: ['setTranslate'] - }], s_slideChange: [{ - type: i0.Output, - args: ['slideChange'] - }], s_slideChangeTransitionEnd: [{ - type: i0.Output, - args: ['slideChangeTransitionEnd'] - }], s_slideChangeTransitionStart: [{ - type: i0.Output, - args: ['slideChangeTransitionStart'] - }], s_slideNextTransitionEnd: [{ - type: i0.Output, - args: ['slideNextTransitionEnd'] - }], s_slideNextTransitionStart: [{ - type: i0.Output, - args: ['slideNextTransitionStart'] - }], s_slidePrevTransitionEnd: [{ - type: i0.Output, - args: ['slidePrevTransitionEnd'] - }], s_slidePrevTransitionStart: [{ - type: i0.Output, - args: ['slidePrevTransitionStart'] - }], s_slideResetTransitionStart: [{ - type: i0.Output, - args: ['slideResetTransitionStart'] - }], s_slideResetTransitionEnd: [{ - type: i0.Output, - args: ['slideResetTransitionEnd'] - }], s_sliderMove: [{ - type: i0.Output, - args: ['sliderMove'] - }], s_sliderFirstMove: [{ - type: i0.Output, - args: ['sliderFirstMove'] - }], s_slidesLengthChange: [{ - type: i0.Output, - args: ['slidesLengthChange'] - }], s_slidesGridLengthChange: [{ - type: i0.Output, - args: ['slidesGridLengthChange'] - }], s_snapGridLengthChange: [{ - type: i0.Output, - args: ['snapGridLengthChange'] - }], s_snapIndexChange: [{ - type: i0.Output, - args: ['snapIndexChange'] - }], s_tap: [{ - type: i0.Output, - args: ['tap'] - }], s_toEdge: [{ - type: i0.Output, - args: ['toEdge'] - }], s_touchEnd: [{ - type: i0.Output, - args: ['touchEnd'] - }], s_touchMove: [{ - type: i0.Output, - args: ['touchMove'] - }], s_touchMoveOpposite: [{ - type: i0.Output, - args: ['touchMoveOpposite'] - }], s_touchStart: [{ - type: i0.Output, - args: ['touchStart'] - }], s_transitionEnd: [{ - type: i0.Output, - args: ['transitionEnd'] - }], s_transitionStart: [{ - type: i0.Output, - args: ['transitionStart'] - }], s_update: [{ - type: i0.Output, - args: ['update'] - }], s_zoomChange: [{ - type: i0.Output, - args: ['zoomChange'] - }], s_swiper: [{ - type: i0.Output, - args: ['swiper'] - }], indexChange: [{ - type: i0.Output - }], prevElRef: [{ - type: i0.ViewChild, - args: ['prevElRef', { static: false }] - }], nextElRef: [{ - type: i0.ViewChild, - args: ['nextElRef', { static: false }] - }], scrollbarElRef: [{ - type: i0.ViewChild, - args: ['scrollbarElRef', { static: false }] - }], paginationElRef: [{ - type: i0.ViewChild, - args: ['paginationElRef', { static: false }] - }], slidesEl: [{ - type: i0.ContentChildren, - args: [SwiperSlideDirective, { descendants: false, emitDistinctChangesOnly: true }] - }], containerClasses: [{ - type: i0.HostBinding, - args: ['class'] - }] } }); - - var SwiperModule = /** @class */ (function () { - function SwiperModule() { - } - return SwiperModule; - }()); - SwiperModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0__namespace, type: SwiperModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule }); - SwiperModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0__namespace, type: SwiperModule, declarations: [SwiperComponent, SwiperSlideDirective], imports: [i1.CommonModule], exports: [SwiperComponent, SwiperSlideDirective] }); - SwiperModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0__namespace, type: SwiperModule, imports: [[i1.CommonModule]] }); - i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0__namespace, type: SwiperModule, decorators: [{ - type: i0.NgModule, - args: [{ - declarations: [SwiperComponent, SwiperSlideDirective], - exports: [SwiperComponent, SwiperSlideDirective], - imports: [i1.CommonModule], - }] - }] }); - - /* - * Public API Surface of angular - */ - - /** - * Generated bundle index. Do not edit. - */ - - exports.SwiperComponent = SwiperComponent; - exports.SwiperModule = SwiperModule; - exports.SwiperSlideDirective = SwiperSlideDirective; - - Object.defineProperty(exports, '__esModule', { value: true }); - -}))); -//# sourceMappingURL=swiper_angular.umd.js.map diff --git a/resources/web/guide/swiper/angular/bundles/swiper_angular.umd.js.map b/resources/web/guide/swiper/angular/bundles/swiper_angular.umd.js.map deleted file mode 100644 index 597e0fc475..0000000000 --- a/resources/web/guide/swiper/angular/bundles/swiper_angular.umd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"swiper_angular.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../src/angular/src/utils/utils.ts","../../../src/angular/src/utils/params-list.ts","../../../src/angular/src/utils/get-params.ts","../../../src/angular/src/swiper-slide.directive.ts","../../../src/angular/src/swiper.component.ts","../../../src/angular/src/swiper.component.html","../../../src/angular/src/swiper.module.ts","../../../src/angular/src/public-api.ts","../../../src/swiper_angular.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export function isObject(o: any): boolean {\n return (\n typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n );\n}\n\nexport function isShowEl(val: any, obj: any, el: any): boolean {\n return (\n (coerceBooleanProperty(val) === true && obj && !obj.el) ||\n !(\n typeof obj !== 'boolean' &&\n obj.el !== el?.nativeElement &&\n (typeof obj.el === 'string' || typeof obj.el === 'object')\n )\n );\n}\n\nexport function extend(target: any, src: any) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src)\n .filter((key) => noExtend.indexOf(key) < 0)\n .forEach((key) => {\n if (typeof target[key] === 'undefined') {\n target[key] = src[key];\n return;\n }\n if (target[key] && !src[key]) {\n return;\n }\n if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];\n else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\n\nexport function coerceBooleanProperty(value: any): boolean {\n return value != null && `${value}` !== 'false';\n}\n\nexport const ignoreNgOnChanges = ['pagination', 'navigation', 'scrollbar', 'virtual'];\n\nexport function setProperty(val: any, obj = {}): {} | false {\n if (isObject(val)) {\n return val;\n }\n\n if (coerceBooleanProperty(val) === true) {\n return obj;\n }\n\n return false;\n}\n","/* underscore in name -> watch for changes */\nexport const paramsList = [\n 'init',\n 'enabled',\n '_direction',\n 'touchEventsTarget',\n 'initialSlide',\n '_speed',\n 'cssMode',\n 'updateOnWindowResize',\n 'resizeObserver',\n 'nested',\n 'focusableElements',\n '_width',\n '_height',\n 'preventInteractionOnTransition',\n 'userAgent',\n 'url',\n '_edgeSwipeDetection',\n '_edgeSwipeThreshold',\n '_freeMode',\n '_autoHeight',\n 'setWrapperSize',\n 'virtualTranslate',\n '_effect',\n 'breakpoints',\n '_spaceBetween',\n '_slidesPerView',\n '_grid',\n '_slidesPerGroup',\n '_slidesPerGroupSkip',\n '_centeredSlides',\n '_centeredSlidesBounds',\n '_slidesOffsetBefore',\n '_slidesOffsetAfter',\n 'normalizeSlideIndex',\n '_centerInsufficientSlides',\n '_watchOverflow',\n 'roundLengths',\n 'touchRatio',\n 'touchAngle',\n 'simulateTouch',\n '_shortSwipes',\n '_longSwipes',\n 'longSwipesRatio',\n 'longSwipesMs',\n '_followFinger',\n 'allowTouchMove',\n '_threshold',\n 'touchMoveStopPropagation',\n 'touchStartPreventDefault',\n 'touchStartForcePreventDefault',\n 'touchReleaseOnEdges',\n 'uniqueNavElements',\n '_resistance',\n '_resistanceRatio',\n '_watchSlidesProgress',\n '_grabCursor',\n 'preventClicks',\n 'preventClicksPropagation',\n '_slideToClickedSlide',\n '_preloadImages',\n 'updateOnImagesReady',\n '_loop',\n '_loopAdditionalSlides',\n '_loopedSlides',\n '_loopFillGroupWithBlank',\n 'loopPreventsSlide',\n '_allowSlidePrev',\n '_allowSlideNext',\n '_swipeHandler',\n '_noSwiping',\n 'noSwipingClass',\n 'noSwipingSelector',\n 'passiveListeners',\n 'containerModifierClass',\n 'slideClass',\n 'slideBlankClass',\n 'slideActiveClass',\n 'slideDuplicateActiveClass',\n 'slideVisibleClass',\n 'slideDuplicateClass',\n 'slideNextClass',\n 'slideDuplicateNextClass',\n 'slidePrevClass',\n 'slideDuplicatePrevClass',\n 'wrapperClass',\n 'runCallbacksOnInit',\n 'observer',\n 'observeParents',\n 'observeSlideChildren',\n\n // modules\n 'a11y',\n 'autoplay',\n '_controller',\n 'coverflowEffect',\n 'cubeEffect',\n 'fadeEffect',\n 'flipEffect',\n 'creativeEffect',\n 'cardsEffect',\n 'hashNavigation',\n 'history',\n 'keyboard',\n 'lazy',\n 'mousewheel',\n '_navigation',\n '_pagination',\n 'parallax',\n '_scrollbar',\n '_thumbs',\n 'virtual',\n 'zoom',\n];\n","// eslint-disable-next-line\nimport { isObject, extend } from './utils';\nimport { paramsList } from './params-list';\n// @ts-ignore\nimport Swiper from 'swiper';\n\nexport const allowedParams = paramsList.map((key) => key.replace(/_/, ''));\nexport function getParams(obj: any = {}) {\n const params: any = {\n on: {},\n };\n const passedParams: any = {};\n extend(params, Swiper.defaults);\n extend(params, Swiper.extendedDefaults);\n params._emitClasses = true;\n\n const rest: any = {};\n Object.keys(obj).forEach((key: string) => {\n const _key = key.replace(/^_/, '');\n if (typeof obj[_key] === 'undefined') return;\n if (allowedParams.indexOf(_key) >= 0) {\n if (isObject(obj[_key])) {\n params[_key] = {};\n passedParams[_key] = {};\n extend(params[_key], obj[_key]);\n extend(passedParams[_key], obj[_key]);\n } else {\n params[_key] = obj[_key];\n passedParams[_key] = obj[_key];\n }\n } else {\n rest[_key] = obj[_key];\n }\n });\n\n return { params, passedParams, rest };\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { coerceBooleanProperty } from './utils/utils';\n@Directive({\n selector: 'ng-template[swiperSlide]',\n})\nexport class SwiperSlideDirective {\n @Input() virtualIndex: number;\n @Input() class: string = '';\n @Input('data-swiper-autoplay') autoplayDelay: string | null = null;\n @Input()\n set zoom(val: boolean) {\n this._zoom = coerceBooleanProperty(val);\n }\n get zoom() {\n return this._zoom;\n }\n private _zoom: boolean;\n slideIndex: number;\n get classNames() {\n return this._classNames;\n }\n set classNames(val) {\n if (this._classNames === val) {\n return;\n }\n this._classNames = val;\n this.slideData = {\n isActive: this._hasClass(['swiper-slide-active', 'swiper-slide-duplicate-active']),\n isVisible: this._hasClass(['swiper-slide-visible']),\n isDuplicate: this._hasClass(['swiper-slide-duplicate']),\n isPrev: this._hasClass(['swiper-slide-prev', 'swiper-slide-duplicate-prev']),\n isNext: this._hasClass(['swiper-slide-next', 'swiper-slide-duplicate-next']),\n };\n }\n\n private _hasClass(classNames: string[]) {\n return classNames.some((className) => this._classNames.indexOf(className) >= 0);\n }\n slideData = {\n isActive: false,\n isPrev: false,\n isNext: false,\n isVisible: false,\n isDuplicate: false,\n };\n\n private _classNames: string;\n constructor(public template: TemplateRef) {}\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnInit,\n Output,\n PLATFORM_ID,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\n// @ts-ignore\nimport Swiper from 'swiper';\nimport { Observable, of, Subject } from 'rxjs';\nimport { getParams } from './utils/get-params';\nimport { SwiperSlideDirective } from './swiper-slide.directive';\nimport {\n extend,\n isObject,\n setProperty,\n ignoreNgOnChanges,\n coerceBooleanProperty,\n isShowEl,\n} from './utils/utils';\nimport {\n SwiperOptions,\n SwiperEvents,\n NavigationOptions,\n PaginationOptions,\n ScrollbarOptions,\n VirtualOptions,\n} from 'swiper/types';\nimport { isPlatformBrowser } from '@angular/common';\n@Component({\n selector: 'swiper, [swiper]',\n templateUrl: './swiper.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\n `\n swiper {\n display: block;\n }\n `,\n ],\n})\nexport class SwiperComponent implements OnInit {\n @Input() enabled: SwiperOptions['enabled'];\n @Input() direction: SwiperOptions['direction'];\n @Input() touchEventsTarget: SwiperOptions['touchEventsTarget'];\n @Input() initialSlide: SwiperOptions['initialSlide'];\n @Input() speed: SwiperOptions['speed'];\n @Input() cssMode: SwiperOptions['cssMode'];\n @Input() updateOnWindowResize: SwiperOptions['updateOnWindowResize'];\n @Input() resizeObserver: SwiperOptions['resizeObserver'];\n @Input() nested: SwiperOptions['nested'];\n @Input() focusableElements: SwiperOptions['focusableElements'];\n @Input() width: SwiperOptions['width'];\n @Input() height: SwiperOptions['height'];\n @Input() preventInteractionOnTransition: SwiperOptions['preventInteractionOnTransition'];\n @Input() userAgent: SwiperOptions['userAgent'];\n @Input() url: SwiperOptions['url'];\n @Input() edgeSwipeDetection: boolean | string;\n @Input() edgeSwipeThreshold: number;\n @Input() freeMode: SwiperOptions['freeMode'];\n @Input() autoHeight: SwiperOptions['autoHeight'];\n @Input() setWrapperSize: SwiperOptions['setWrapperSize'];\n @Input() virtualTranslate: SwiperOptions['virtualTranslate'];\n @Input() effect: SwiperOptions['effect'];\n @Input() breakpoints: SwiperOptions['breakpoints'];\n @Input() spaceBetween: SwiperOptions['spaceBetween'];\n @Input() slidesPerView: SwiperOptions['slidesPerView'];\n @Input() grid: SwiperOptions['grid'];\n @Input() slidesPerGroup: SwiperOptions['slidesPerGroup'];\n @Input() slidesPerGroupSkip: SwiperOptions['slidesPerGroupSkip'];\n @Input() centeredSlides: SwiperOptions['centeredSlides'];\n @Input() centeredSlidesBounds: SwiperOptions['centeredSlidesBounds'];\n @Input() slidesOffsetBefore: SwiperOptions['slidesOffsetBefore'];\n @Input() slidesOffsetAfter: SwiperOptions['slidesOffsetAfter'];\n @Input() normalizeSlideIndex: SwiperOptions['normalizeSlideIndex'];\n @Input() centerInsufficientSlides: SwiperOptions['centerInsufficientSlides'];\n @Input() watchOverflow: SwiperOptions['watchOverflow'];\n @Input() roundLengths: SwiperOptions['roundLengths'];\n @Input() touchRatio: SwiperOptions['touchRatio'];\n @Input() touchAngle: SwiperOptions['touchAngle'];\n @Input() simulateTouch: SwiperOptions['simulateTouch'];\n @Input() shortSwipes: SwiperOptions['shortSwipes'];\n @Input() longSwipes: SwiperOptions['longSwipes'];\n @Input() longSwipesRatio: SwiperOptions['longSwipesRatio'];\n @Input() longSwipesMs: SwiperOptions['longSwipesMs'];\n @Input() followFinger: SwiperOptions['followFinger'];\n @Input() allowTouchMove: SwiperOptions['allowTouchMove'];\n @Input() threshold: SwiperOptions['threshold'];\n @Input() touchMoveStopPropagation: SwiperOptions['touchMoveStopPropagation'];\n @Input() touchStartPreventDefault: SwiperOptions['touchStartPreventDefault'];\n @Input() touchStartForcePreventDefault: SwiperOptions['touchStartForcePreventDefault'];\n @Input() touchReleaseOnEdges: SwiperOptions['touchReleaseOnEdges'];\n @Input() uniqueNavElements: SwiperOptions['uniqueNavElements'];\n @Input() resistance: SwiperOptions['resistance'];\n @Input() resistanceRatio: SwiperOptions['resistanceRatio'];\n @Input() watchSlidesProgress: SwiperOptions['watchSlidesProgress'];\n @Input() grabCursor: SwiperOptions['grabCursor'];\n @Input() preventClicks: SwiperOptions['preventClicks'];\n @Input() preventClicksPropagation: SwiperOptions['preventClicksPropagation'];\n @Input() slideToClickedSlide: SwiperOptions['slideToClickedSlide'];\n @Input() preloadImages: SwiperOptions['preloadImages'];\n @Input() updateOnImagesReady: SwiperOptions['updateOnImagesReady'];\n @Input() loop: SwiperOptions['loop'];\n @Input() loopAdditionalSlides: SwiperOptions['loopAdditionalSlides'];\n @Input() loopedSlides: SwiperOptions['loopedSlides'];\n @Input() loopFillGroupWithBlank: SwiperOptions['loopFillGroupWithBlank'];\n @Input() loopPreventsSlide: SwiperOptions['loopPreventsSlide'];\n @Input() allowSlidePrev: SwiperOptions['allowSlidePrev'];\n @Input() allowSlideNext: SwiperOptions['allowSlideNext'];\n @Input() swipeHandler: SwiperOptions['swipeHandler'];\n @Input() noSwiping: SwiperOptions['noSwiping'];\n @Input() noSwipingClass: SwiperOptions['noSwipingClass'];\n @Input() noSwipingSelector: SwiperOptions['noSwipingSelector'];\n @Input() passiveListeners: SwiperOptions['passiveListeners'];\n @Input() containerModifierClass: SwiperOptions['containerModifierClass'];\n @Input() slideClass: SwiperOptions['slideClass'] = 'swiper-slide';\n @Input() slideBlankClass: SwiperOptions['slideBlankClass'];\n @Input() slideActiveClass: SwiperOptions['slideActiveClass'];\n @Input() slideDuplicateActiveClass: SwiperOptions['slideDuplicateActiveClass'];\n @Input() slideVisibleClass: SwiperOptions['slideVisibleClass'];\n @Input() slideDuplicateClass: SwiperOptions['slideDuplicateClass'];\n @Input() slideNextClass: SwiperOptions['slideNextClass'];\n @Input() slideDuplicateNextClass: SwiperOptions['slideDuplicateNextClass'];\n @Input() slidePrevClass: SwiperOptions['slidePrevClass'];\n @Input() slideDuplicatePrevClass: SwiperOptions['slideDuplicatePrevClass'];\n @Input() wrapperClass: SwiperOptions['wrapperClass'] = 'swiper-wrapper';\n @Input() runCallbacksOnInit: SwiperOptions['runCallbacksOnInit'];\n @Input() observeParents: SwiperOptions['observeParents'];\n @Input() observeSlideChildren: SwiperOptions['observeSlideChildren'];\n @Input() a11y: SwiperOptions['a11y'];\n @Input() autoplay: SwiperOptions['autoplay'];\n @Input() controller: SwiperOptions['controller'];\n @Input() coverflowEffect: SwiperOptions['coverflowEffect'];\n @Input() cubeEffect: SwiperOptions['cubeEffect'];\n @Input() fadeEffect: SwiperOptions['fadeEffect'];\n @Input() flipEffect: SwiperOptions['flipEffect'];\n @Input() creativeEffect: SwiperOptions['creativeEffect'];\n @Input() cardsEffect: SwiperOptions['cardsEffect'];\n @Input() hashNavigation: SwiperOptions['hashNavigation'];\n @Input() history: SwiperOptions['history'];\n @Input() keyboard: SwiperOptions['keyboard'];\n @Input() lazy: SwiperOptions['lazy'];\n @Input() mousewheel: SwiperOptions['mousewheel'];\n @Input() parallax: SwiperOptions['parallax'];\n @Input() thumbs: SwiperOptions['thumbs'];\n @Input() zoom: SwiperOptions['zoom'];\n @Input() class: string;\n @Input() id: string;\n @Input()\n set navigation(val) {\n const currentNext =\n typeof this._navigation !== 'boolean' && this._navigation !== ''\n ? this._navigation?.nextEl\n : null;\n const currentPrev =\n typeof this._navigation !== 'boolean' && this._navigation !== ''\n ? this._navigation?.prevEl\n : null;\n this._navigation = setProperty(val, {\n nextEl: currentNext || null,\n prevEl: currentPrev || null,\n });\n this.showNavigation = !(\n coerceBooleanProperty(val) !== true ||\n (this._navigation &&\n typeof this._navigation !== 'boolean' &&\n this._navigation.prevEl !== this._prevElRef?.nativeElement &&\n (this._navigation.prevEl !== null || this._navigation.nextEl !== null) &&\n (typeof this._navigation.nextEl === 'string' ||\n typeof this._navigation.prevEl === 'string' ||\n typeof this._navigation.nextEl === 'object' ||\n typeof this._navigation.prevEl === 'object'))\n );\n }\n get navigation() {\n return this._navigation;\n }\n private _navigation: NavigationOptions | boolean | '';\n showNavigation: boolean = true;\n\n @Input()\n set pagination(val) {\n const current =\n typeof this._pagination !== 'boolean' && this._pagination !== ''\n ? this._pagination?.el\n : null;\n this._pagination = setProperty(val, {\n el: current || null,\n });\n this.showPagination = isShowEl(val, this._pagination, this._paginationElRef);\n }\n get pagination() {\n return this._pagination;\n }\n private _pagination: PaginationOptions | boolean | '';\n showPagination: boolean = true;\n\n @Input()\n set scrollbar(val) {\n const current =\n typeof this._scrollbar !== 'boolean' && this._scrollbar !== '' ? this._scrollbar?.el : null;\n this._scrollbar = setProperty(val, {\n el: current || null,\n });\n this.showScrollbar = isShowEl(val, this._scrollbar, this._scrollbarElRef);\n }\n get scrollbar() {\n return this._scrollbar;\n }\n private _scrollbar: ScrollbarOptions | boolean | '';\n showScrollbar: boolean = true;\n\n @Input()\n set virtual(val) {\n this._virtual = setProperty(val);\n }\n get virtual() {\n return this._virtual;\n }\n private _virtual: VirtualOptions | boolean | '';\n\n @Input()\n set index(index: number) {\n console.warn('`[(index)]` prop is deprecated and will be removed in upcoming versions');\n this.setIndex(index);\n }\n @Input()\n set config(val: SwiperOptions) {\n this.updateSwiper(val);\n const { params } = getParams(val);\n Object.assign(this, params);\n }\n // prettier-ignore\n @Output('_beforeBreakpoint') s__beforeBreakpoint: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('_containerClasses') s__containerClasses: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('_slideClass') s__slideClass: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('_swiper') s__swiper: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('activeIndexChange') s_activeIndexChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('afterInit') s_afterInit: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('autoplay') s_autoplay: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('autoplayStart') s_autoplayStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('autoplayStop') s_autoplayStop: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeDestroy') s_beforeDestroy: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeInit') s_beforeInit: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeLoopFix') s_beforeLoopFix: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeResize') s_beforeResize: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeSlideChangeStart') s_beforeSlideChangeStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeTransitionStart') s_beforeTransitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('breakpoint') s_breakpoint: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('changeDirection') s_changeDirection: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('click') s_click: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('doubleTap') s_doubleTap: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('doubleClick') s_doubleClick: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('destroy') s_destroy: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('fromEdge') s_fromEdge: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('hashChange') s_hashChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('hashSet') s_hashSet: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('imagesReady') s_imagesReady: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('init') s_init: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('keyPress') s_keyPress: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('lazyImageLoad') s_lazyImageLoad: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('lazyImageReady') s_lazyImageReady: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('loopFix') s_loopFix: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('momentumBounce') s_momentumBounce: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('navigationHide') s_navigationHide: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('navigationShow') s_navigationShow: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('observerUpdate') s_observerUpdate: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('orientationchange') s_orientationchange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('paginationHide') s_paginationHide: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('paginationRender') s_paginationRender: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('paginationShow') s_paginationShow: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('paginationUpdate') s_paginationUpdate: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('progress') s_progress: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('reachBeginning') s_reachBeginning: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('reachEnd') s_reachEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('realIndexChange') s_realIndexChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('resize') s_resize: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('scroll') s_scroll: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('scrollbarDragEnd') s_scrollbarDragEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('scrollbarDragMove') s_scrollbarDragMove: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('scrollbarDragStart') s_scrollbarDragStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('setTransition') s_setTransition: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('setTranslate') s_setTranslate: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideChange') s_slideChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideChangeTransitionEnd') s_slideChangeTransitionEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideChangeTransitionStart') s_slideChangeTransitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideNextTransitionEnd') s_slideNextTransitionEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideNextTransitionStart') s_slideNextTransitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slidePrevTransitionEnd') s_slidePrevTransitionEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slidePrevTransitionStart') s_slidePrevTransitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideResetTransitionStart') s_slideResetTransitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideResetTransitionEnd') s_slideResetTransitionEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('sliderMove') s_sliderMove: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('sliderFirstMove') s_sliderFirstMove: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slidesLengthChange') s_slidesLengthChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slidesGridLengthChange') s_slidesGridLengthChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('snapGridLengthChange') s_snapGridLengthChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('snapIndexChange') s_snapIndexChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('tap') s_tap: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('toEdge') s_toEdge: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('touchEnd') s_touchEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('touchMove') s_touchMove: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('touchMoveOpposite') s_touchMoveOpposite: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('touchStart') s_touchStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('transitionEnd') s_transitionEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('transitionStart') s_transitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('update') s_update: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('zoomChange') s_zoomChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('swiper') s_swiper: EventEmitter = new EventEmitter();\n\n @Output() indexChange = new EventEmitter();\n\n @ViewChild('prevElRef', { static: false })\n set prevElRef(el: ElementRef) {\n this._prevElRef = el;\n this._setElement(el, this.navigation, 'navigation', 'prevEl');\n }\n _prevElRef: ElementRef;\n @ViewChild('nextElRef', { static: false })\n set nextElRef(el: ElementRef) {\n this._nextElRef = el;\n this._setElement(el, this.navigation, 'navigation', 'nextEl');\n }\n _nextElRef: ElementRef;\n @ViewChild('scrollbarElRef', { static: false })\n set scrollbarElRef(el: ElementRef) {\n this._scrollbarElRef = el;\n this._setElement(el, this.scrollbar, 'scrollbar');\n }\n _scrollbarElRef: ElementRef;\n @ViewChild('paginationElRef', { static: false })\n set paginationElRef(el: ElementRef) {\n this._paginationElRef = el;\n this._setElement(el, this.pagination, 'pagination');\n }\n _paginationElRef: ElementRef;\n @ContentChildren(SwiperSlideDirective, { descendants: false, emitDistinctChangesOnly: true })\n slidesEl: QueryList;\n private slides: SwiperSlideDirective[];\n\n prependSlides: Observable;\n appendSlides: Observable;\n\n swiperRef: Swiper;\n readonly _activeSlides = new Subject();\n\n get activeSlides() {\n if (this.virtual) {\n return this._activeSlides;\n }\n return of(this.slides);\n }\n\n get zoomContainerClass() {\n return this.zoom && typeof this.zoom !== 'boolean'\n ? this.zoom.containerClass\n : 'swiper-zoom-container';\n }\n\n @HostBinding('class') containerClasses: string = 'swiper';\n constructor(\n private _ngZone: NgZone,\n private elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(PLATFORM_ID) private _platformId: Object,\n ) {}\n\n private _setElement(el: ElementRef, ref: any, update: string, key = 'el') {\n if (!el || !ref) {\n return;\n }\n if (ref && el.nativeElement) {\n if (ref[key] === el.nativeElement) {\n return;\n }\n ref[key] = el.nativeElement;\n }\n const updateObj: { [key: string]: boolean } = {};\n updateObj[update] = true;\n this.updateInitSwiper(updateObj);\n }\n ngOnInit(): void {\n const { params } = getParams(this);\n Object.assign(this, params);\n }\n ngAfterViewInit() {\n this.childrenSlidesInit();\n this.initSwiper();\n this._changeDetectorRef.detectChanges();\n setTimeout(() => {\n this.s_swiper.emit(this.swiperRef);\n });\n }\n\n private childrenSlidesInit() {\n this.slidesChanges(this.slidesEl);\n this.slidesEl.changes.subscribe(this.slidesChanges);\n }\n\n private slidesChanges = (val: QueryList) => {\n this.slides = val.map((slide: SwiperSlideDirective, index: number) => {\n slide.slideIndex = index;\n slide.classNames = this.slideClass || '';\n return slide;\n });\n if (this.loop && !this.loopedSlides) {\n this.calcLoopedSlides();\n }\n if (!this.virtual) {\n if (this.loopedSlides) {\n this.prependSlides = of(this.slides.slice(this.slides.length - this.loopedSlides));\n this.appendSlides = of(this.slides.slice(0, this.loopedSlides));\n }\n } else if (this.swiperRef && this.swiperRef.virtual) {\n this._ngZone.runOutsideAngular(() => {\n this.swiperRef.virtual.slides = this.slides;\n this.swiperRef.virtual.update(true);\n });\n }\n this._changeDetectorRef.detectChanges();\n };\n\n get isSwiperActive() {\n return this.swiperRef && !this.swiperRef.destroyed;\n }\n\n initSwiper() {\n const { params: swiperParams, passedParams } = getParams(this);\n Object.assign(this, swiperParams);\n this._ngZone.runOutsideAngular(() => {\n swiperParams.init = false;\n if (!swiperParams.virtual) {\n swiperParams.observer = true;\n }\n\n swiperParams.onAny = (eventName: keyof SwiperComponent, ...args: any[]) => {\n const emitter = this[('s_' + eventName) as keyof SwiperComponent] as EventEmitter;\n if (emitter) {\n emitter.emit(...args);\n }\n };\n const _slideClasses: SwiperEvents['_slideClasses'] = (_, updated) => {\n updated.forEach(({ slideEl, classNames }, index) => {\n const dataIndex = slideEl.getAttribute('data-swiper-slide-index');\n const slideIndex = dataIndex ? parseInt(dataIndex) : index;\n if (this.virtual) {\n const virtualSlide = this.slides.find((item) => {\n return item.virtualIndex && item.virtualIndex === slideIndex;\n });\n if (virtualSlide) {\n virtualSlide.classNames = classNames;\n return;\n }\n }\n\n if (this.slides[slideIndex]) {\n this.slides[slideIndex].classNames = classNames;\n }\n });\n this._changeDetectorRef.detectChanges();\n };\n const _containerClasses: SwiperEvents['_containerClasses'] = (_, classes) => {\n setTimeout(() => {\n this.containerClasses = classes;\n });\n };\n Object.assign(swiperParams.on, {\n _containerClasses,\n _slideClasses,\n });\n const swiperRef = new Swiper(swiperParams);\n swiperRef.loopCreate = () => {};\n swiperRef.loopDestroy = () => {};\n if (swiperParams.loop) {\n swiperRef.loopedSlides = this.loopedSlides;\n }\n const isVirtualEnabled =\n typeof swiperRef.params.virtual !== 'undefined' &&\n typeof swiperRef.params.virtual !== 'boolean' &&\n swiperRef.params.virtual.enabled;\n if (swiperRef.virtual && isVirtualEnabled) {\n swiperRef.virtual.slides = this.slides;\n const extendWith = {\n cache: false,\n slides: this.slides,\n renderExternal: this.updateVirtualSlides,\n renderExternalUpdate: false,\n };\n extend(swiperRef.params.virtual, extendWith);\n extend(swiperRef.originalParams.virtual, extendWith);\n }\n\n if (isPlatformBrowser(this._platformId)) {\n this.swiperRef = swiperRef.init(this.elementRef.nativeElement);\n const isEnabled =\n typeof this.swiperRef.params.virtual !== 'undefined' &&\n typeof this.swiperRef.params.virtual !== 'boolean' &&\n this.swiperRef.params.virtual.enabled;\n if (this.swiperRef.virtual && isEnabled) {\n this.swiperRef.virtual.update(true);\n }\n this._changeDetectorRef.detectChanges();\n swiperRef.on('slideChange', () => {\n this.indexChange.emit(this.swiperRef.realIndex);\n });\n }\n });\n }\n\n style: any = null;\n currentVirtualData: any; // TODO: type virtualData;\n private updateVirtualSlides = (virtualData: any) => {\n // TODO: type virtualData\n if (\n !this.swiperRef ||\n (this.currentVirtualData &&\n this.currentVirtualData.from === virtualData.from &&\n this.currentVirtualData.to === virtualData.to &&\n this.currentVirtualData.offset === virtualData.offset)\n ) {\n return;\n }\n this.style = this.swiperRef.isHorizontal()\n ? {\n [this.swiperRef.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`,\n }\n : {\n top: `${virtualData.offset}px`,\n };\n this.currentVirtualData = virtualData;\n this._activeSlides.next(virtualData.slides);\n this._ngZone.run(() => {\n this._changeDetectorRef.detectChanges();\n });\n this._ngZone.runOutsideAngular(() => {\n this.swiperRef.updateSlides();\n this.swiperRef.updateProgress();\n this.swiperRef.updateSlidesClasses();\n if (this.swiperRef.lazy && this.swiperRef.params.lazy['enabled']) {\n this.swiperRef.lazy.load();\n }\n this.swiperRef.virtual.update(true);\n });\n return;\n };\n\n ngOnChanges(changedParams: SimpleChanges) {\n this.updateSwiper(changedParams);\n this._changeDetectorRef.detectChanges();\n }\n\n updateInitSwiper(changedParams: any) {\n if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n\n this._ngZone.runOutsideAngular(() => {\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs,\n } = this.swiperRef;\n\n if (changedParams.pagination) {\n if (\n this.pagination &&\n typeof this.pagination !== 'boolean' &&\n this.pagination.el &&\n pagination &&\n !pagination.el\n ) {\n this.updateParameter('pagination', this.pagination);\n pagination.init();\n pagination.render();\n pagination.update();\n } else {\n pagination.destroy();\n pagination.el = null;\n }\n }\n\n if (changedParams.scrollbar) {\n if (\n this.scrollbar &&\n typeof this.scrollbar !== 'boolean' &&\n this.scrollbar.el &&\n scrollbar &&\n !scrollbar.el\n ) {\n this.updateParameter('scrollbar', this.scrollbar);\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n } else {\n scrollbar.destroy();\n scrollbar.el = null;\n }\n }\n\n if (changedParams.navigation) {\n if (\n this.navigation &&\n typeof this.navigation !== 'boolean' &&\n this.navigation.prevEl &&\n this.navigation.nextEl &&\n navigation &&\n !navigation.prevEl &&\n !navigation.nextEl\n ) {\n this.updateParameter('navigation', this.navigation);\n navigation.init();\n navigation.update();\n } else if (navigation.prevEl && navigation.nextEl) {\n navigation.destroy();\n navigation.nextEl = null;\n navigation.prevEl = null;\n }\n }\n if (changedParams.thumbs && this.thumbs && this.thumbs.swiper) {\n this.updateParameter('thumbs', this.thumbs);\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n\n if (changedParams.controller && this.controller && this.controller.control) {\n this.swiperRef.controller.control = this.controller.control;\n }\n\n this.swiperRef.update();\n });\n }\n\n updateSwiper(changedParams: SimpleChanges | any) {\n this._ngZone.runOutsideAngular(() => {\n if (changedParams.config) {\n return;\n }\n if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n for (const key in changedParams) {\n if (ignoreNgOnChanges.indexOf(key) >= 0) {\n continue;\n }\n const newValue = changedParams[key]?.currentValue ?? changedParams[key];\n this.updateParameter(key, newValue);\n }\n\n if (changedParams.allowSlideNext) {\n this.swiperRef.allowSlideNext = this.allowSlideNext;\n }\n if (changedParams.allowSlidePrev) {\n this.swiperRef.allowSlidePrev = this.allowSlidePrev;\n }\n if (changedParams.direction) {\n this.swiperRef.changeDirection(this.direction, false);\n }\n if (changedParams.breakpoints) {\n if (this.loop && !this.loopedSlides) {\n this.calcLoopedSlides();\n }\n this.swiperRef.currentBreakpoint = null;\n this.swiperRef.setBreakpoint();\n }\n\n if (changedParams.thumbs || changedParams.controller) {\n this.updateInitSwiper(changedParams);\n }\n this.swiperRef.update();\n });\n }\n\n calcLoopedSlides() {\n if (!this.loop) {\n return;\n }\n let slidesPerViewParams = this.slidesPerView;\n if (this.breakpoints) {\n const breakpoint = Swiper.prototype.getBreakpoint(this.breakpoints);\n const breakpointOnlyParams =\n breakpoint in this.breakpoints ? this.breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) {\n slidesPerViewParams = breakpointOnlyParams.slidesPerView;\n }\n }\n if (slidesPerViewParams === 'auto') {\n this.loopedSlides = this.slides.length;\n return this.slides.length;\n }\n let loopedSlides = this.loopedSlides || slidesPerViewParams;\n if (!loopedSlides) {\n // ?\n return;\n }\n\n if (this.loopAdditionalSlides) {\n loopedSlides += this.loopAdditionalSlides;\n }\n if (loopedSlides > this.slides.length) {\n loopedSlides = this.slides.length;\n }\n this.loopedSlides = loopedSlides;\n return loopedSlides;\n }\n\n updateParameter(key: string, value: any) {\n if (!(this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n const _key = key.replace(/^_/, '');\n const isCurrentParamObj = isObject(this.swiperRef.params[_key]);\n\n if (Object.keys(this.swiperRef.modules).indexOf(_key) >= 0) {\n const defaultParams = this.swiperRef.modules[_key].params[_key];\n if (isCurrentParamObj) {\n extend(this.swiperRef.params[_key], defaultParams);\n } else {\n this.swiperRef.params[_key] = defaultParams;\n }\n }\n if (_key === 'enabled') {\n if (value === true) {\n this.swiperRef.enable();\n } else if (value === false) {\n this.swiperRef.disable();\n }\n return;\n }\n if (isCurrentParamObj && isObject(value)) {\n extend(this.swiperRef.params[_key], value);\n } else {\n this.swiperRef.params[_key] = value;\n }\n }\n /**\n * @deprecated will be removed in upcoming versions\n */\n setIndex(index: number, speed?: number, silent?: boolean): void {\n if (!this.isSwiperActive) {\n this.initialSlide = index;\n return;\n }\n if (index === this.swiperRef.activeIndex) {\n return;\n }\n this._ngZone.runOutsideAngular(() => {\n if (this.loop) {\n this.swiperRef.slideToLoop(index, speed, !silent);\n } else {\n this.swiperRef.slideTo(index, speed, !silent);\n }\n });\n }\n\n ngOnDestroy() {\n this._ngZone.runOutsideAngular(() => {\n this.swiperRef?.destroy(true, false);\n });\n }\n}\n","\n\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n\n\n\n \n
\n \n
\n \n
\n \n \n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SwiperComponent } from './swiper.component';\nimport { SwiperSlideDirective } from './swiper-slide.directive';\n@NgModule({\n declarations: [SwiperComponent, SwiperSlideDirective],\n exports: [SwiperComponent, SwiperSlideDirective],\n imports: [CommonModule],\n})\nexport class SwiperModule {}\n","/*\n * Public API Surface of angular\n */\nexport * from './swiper.module';\nexport * from './swiper.component';\nexport * from './swiper-slide.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './swiper-angular';\n"],"names":["Swiper","Directive","Input","EventEmitter","Subject","of","isPlatformBrowser","PLATFORM_ID","Component","ChangeDetectionStrategy","ViewEncapsulation","Inject","Output","ViewChild","ContentChildren","HostBinding","CommonModule","NgModule"],"mappings":"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"} \ No newline at end of file diff --git a/resources/web/guide/swiper/angular/esm2015/angular/src/public-api.js b/resources/web/guide/swiper/angular/esm2015/angular/src/public-api.js deleted file mode 100644 index 26852c407f..0000000000 --- a/resources/web/guide/swiper/angular/esm2015/angular/src/public-api.js +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Public API Surface of angular - */ -export * from './swiper.module'; -export * from './swiper.component'; -export * from './swiper-slide.directive'; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGFuZ3VsYXJcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9zd2lwZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3dpcGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3N3aXBlci1zbGlkZS5kaXJlY3RpdmUnO1xuIl19 \ No newline at end of file diff --git a/resources/web/guide/swiper/angular/esm2015/angular/src/swiper-slide.directive.js b/resources/web/guide/swiper/angular/esm2015/angular/src/swiper-slide.directive.js deleted file mode 100644 index 3e0244e715..0000000000 --- a/resources/web/guide/swiper/angular/esm2015/angular/src/swiper-slide.directive.js +++ /dev/null @@ -1,60 +0,0 @@ -import { Directive, Input } from '@angular/core'; -import { coerceBooleanProperty } from './utils/utils'; -import * as i0 from "@angular/core"; -export class SwiperSlideDirective { - constructor(template) { - this.template = template; - this.class = ''; - this.autoplayDelay = null; - this.slideData = { - isActive: false, - isPrev: false, - isNext: false, - isVisible: false, - isDuplicate: false, - }; - } - set zoom(val) { - this._zoom = coerceBooleanProperty(val); - } - get zoom() { - return this._zoom; - } - get classNames() { - return this._classNames; - } - set classNames(val) { - if (this._classNames === val) { - return; - } - this._classNames = val; - this.slideData = { - isActive: this._hasClass(['swiper-slide-active', 'swiper-slide-duplicate-active']), - isVisible: this._hasClass(['swiper-slide-visible']), - isDuplicate: this._hasClass(['swiper-slide-duplicate']), - isPrev: this._hasClass(['swiper-slide-prev', 'swiper-slide-duplicate-prev']), - isNext: this._hasClass(['swiper-slide-next', 'swiper-slide-duplicate-next']), - }; - } - _hasClass(classNames) { - return classNames.some((className) => this._classNames.indexOf(className) >= 0); - } -} -SwiperSlideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperSlideDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); -SwiperSlideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.2", type: SwiperSlideDirective, selector: "ng-template[swiperSlide]", inputs: { virtualIndex: "virtualIndex", class: "class", autoplayDelay: ["data-swiper-autoplay", "autoplayDelay"], zoom: "zoom" }, ngImport: i0 }); -i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperSlideDirective, decorators: [{ - type: Directive, - args: [{ - selector: 'ng-template[swiperSlide]', - }] - }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { virtualIndex: [{ - type: Input - }], class: [{ - type: Input - }], autoplayDelay: [{ - type: Input, - args: ['data-swiper-autoplay'] - }], zoom: [{ - type: Input - }] } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyLXNsaWRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyL3NyYy9zd2lwZXItc2xpZGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJdEQsTUFBTSxPQUFPLG9CQUFvQjtJQTBDL0IsWUFBbUIsUUFBMEI7UUFBMUIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUF4Q3BDLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDRyxrQkFBYSxHQUFrQixJQUFJLENBQUM7UUE4Qm5FLGNBQVMsR0FBRztZQUNWLFFBQVEsRUFBRSxLQUFLO1lBQ2YsTUFBTSxFQUFFLEtBQUs7WUFDYixNQUFNLEVBQUUsS0FBSztZQUNiLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFdBQVcsRUFBRSxLQUFLO1NBQ25CLENBQUM7SUFHOEMsQ0FBQztJQXRDakQsSUFDSSxJQUFJLENBQUMsR0FBWTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUdELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUMsR0FBRztRQUNoQixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssR0FBRyxFQUFFO1lBQzVCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDZixRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLCtCQUErQixDQUFDLENBQUM7WUFDbEYsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQ25ELFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQztZQUN2RCxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLDZCQUE2QixDQUFDLENBQUM7WUFDNUUsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1NBQzdFLENBQUM7SUFDSixDQUFDO0lBRU8sU0FBUyxDQUFDLFVBQW9CO1FBQ3BDLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQzs7aUhBaENVLG9CQUFvQjtxR0FBcEIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBSGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtpQkFDckM7a0dBRVUsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ3lCLGFBQWE7c0JBQTNDLEtBQUs7dUJBQUMsc0JBQXNCO2dCQUV6QixJQUFJO3NCQURQLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnLi91dGlscy91dGlscyc7XG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtzd2lwZXJTbGlkZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBTd2lwZXJTbGlkZURpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpIHZpcnR1YWxJbmRleDogbnVtYmVyO1xuICBASW5wdXQoKSBjbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgnZGF0YS1zd2lwZXItYXV0b3BsYXknKSBhdXRvcGxheURlbGF5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KClcbiAgc2V0IHpvb20odmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5fem9vbSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWwpO1xuICB9XG4gIGdldCB6b29tKCkge1xuICAgIHJldHVybiB0aGlzLl96b29tO1xuICB9XG4gIHByaXZhdGUgX3pvb206IGJvb2xlYW47XG4gIHNsaWRlSW5kZXg6IG51bWJlcjtcbiAgZ2V0IGNsYXNzTmFtZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsYXNzTmFtZXM7XG4gIH1cbiAgc2V0IGNsYXNzTmFtZXModmFsKSB7XG4gICAgaWYgKHRoaXMuX2NsYXNzTmFtZXMgPT09IHZhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9jbGFzc05hbWVzID0gdmFsO1xuICAgIHRoaXMuc2xpZGVEYXRhID0ge1xuICAgICAgaXNBY3RpdmU6IHRoaXMuX2hhc0NsYXNzKFsnc3dpcGVyLXNsaWRlLWFjdGl2ZScsICdzd2lwZXItc2xpZGUtZHVwbGljYXRlLWFjdGl2ZSddKSxcbiAgICAgIGlzVmlzaWJsZTogdGhpcy5faGFzQ2xhc3MoWydzd2lwZXItc2xpZGUtdmlzaWJsZSddKSxcbiAgICAgIGlzRHVwbGljYXRlOiB0aGlzLl9oYXNDbGFzcyhbJ3N3aXBlci1zbGlkZS1kdXBsaWNhdGUnXSksXG4gICAgICBpc1ByZXY6IHRoaXMuX2hhc0NsYXNzKFsnc3dpcGVyLXNsaWRlLXByZXYnLCAnc3dpcGVyLXNsaWRlLWR1cGxpY2F0ZS1wcmV2J10pLFxuICAgICAgaXNOZXh0OiB0aGlzLl9oYXNDbGFzcyhbJ3N3aXBlci1zbGlkZS1uZXh0JywgJ3N3aXBlci1zbGlkZS1kdXBsaWNhdGUtbmV4dCddKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFzQ2xhc3MoY2xhc3NOYW1lczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gY2xhc3NOYW1lcy5zb21lKChjbGFzc05hbWUpID0+IHRoaXMuX2NsYXNzTmFtZXMuaW5kZXhPZihjbGFzc05hbWUpID49IDApO1xuICB9XG4gIHNsaWRlRGF0YSA9IHtcbiAgICBpc0FjdGl2ZTogZmFsc2UsXG4gICAgaXNQcmV2OiBmYWxzZSxcbiAgICBpc05leHQ6IGZhbHNlLFxuICAgIGlzVmlzaWJsZTogZmFsc2UsXG4gICAgaXNEdXBsaWNhdGU6IGZhbHNlLFxuICB9O1xuXG4gIHByaXZhdGUgX2NsYXNzTmFtZXM6IHN0cmluZztcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuIl19 \ No newline at end of file diff --git a/resources/web/guide/swiper/angular/esm2015/angular/src/swiper.component.js b/resources/web/guide/swiper/angular/esm2015/angular/src/swiper.component.js deleted file mode 100644 index 50f2dad4e3..0000000000 --- a/resources/web/guide/swiper/angular/esm2015/angular/src/swiper.component.js +++ /dev/null @@ -1,1126 +0,0 @@ -import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, HostBinding, Inject, Input, Output, PLATFORM_ID, ViewChild, ViewEncapsulation, } from '@angular/core'; -// @ts-ignore -import Swiper from 'swiper'; -import { of, Subject } from 'rxjs'; -import { getParams } from './utils/get-params'; -import { SwiperSlideDirective } from './swiper-slide.directive'; -import { extend, isObject, setProperty, ignoreNgOnChanges, coerceBooleanProperty, isShowEl, } from './utils/utils'; -import { isPlatformBrowser } from '@angular/common'; -import * as i0 from "@angular/core"; -import * as i1 from "@angular/common"; -export class SwiperComponent { - constructor(_ngZone, elementRef, _changeDetectorRef, _platformId) { - this._ngZone = _ngZone; - this.elementRef = elementRef; - this._changeDetectorRef = _changeDetectorRef; - this._platformId = _platformId; - this.slideClass = 'swiper-slide'; - this.wrapperClass = 'swiper-wrapper'; - this.showNavigation = true; - this.showPagination = true; - this.showScrollbar = true; - // prettier-ignore - this.s__beforeBreakpoint = new EventEmitter(); - // prettier-ignore - this.s__containerClasses = new EventEmitter(); - // prettier-ignore - this.s__slideClass = new EventEmitter(); - // prettier-ignore - this.s__swiper = new EventEmitter(); - // prettier-ignore - this.s_activeIndexChange = new EventEmitter(); - // prettier-ignore - this.s_afterInit = new EventEmitter(); - // prettier-ignore - this.s_autoplay = new EventEmitter(); - // prettier-ignore - this.s_autoplayStart = new EventEmitter(); - // prettier-ignore - this.s_autoplayStop = new EventEmitter(); - // prettier-ignore - this.s_beforeDestroy = new EventEmitter(); - // prettier-ignore - this.s_beforeInit = new EventEmitter(); - // prettier-ignore - this.s_beforeLoopFix = new EventEmitter(); - // prettier-ignore - this.s_beforeResize = new EventEmitter(); - // prettier-ignore - this.s_beforeSlideChangeStart = new EventEmitter(); - // prettier-ignore - this.s_beforeTransitionStart = new EventEmitter(); - // prettier-ignore - this.s_breakpoint = new EventEmitter(); - // prettier-ignore - this.s_changeDirection = new EventEmitter(); - // prettier-ignore - this.s_click = new EventEmitter(); - // prettier-ignore - this.s_doubleTap = new EventEmitter(); - // prettier-ignore - this.s_doubleClick = new EventEmitter(); - // prettier-ignore - this.s_destroy = new EventEmitter(); - // prettier-ignore - this.s_fromEdge = new EventEmitter(); - // prettier-ignore - this.s_hashChange = new EventEmitter(); - // prettier-ignore - this.s_hashSet = new EventEmitter(); - // prettier-ignore - this.s_imagesReady = new EventEmitter(); - // prettier-ignore - this.s_init = new EventEmitter(); - // prettier-ignore - this.s_keyPress = new EventEmitter(); - // prettier-ignore - this.s_lazyImageLoad = new EventEmitter(); - // prettier-ignore - this.s_lazyImageReady = new EventEmitter(); - // prettier-ignore - this.s_loopFix = new EventEmitter(); - // prettier-ignore - this.s_momentumBounce = new EventEmitter(); - // prettier-ignore - this.s_navigationHide = new EventEmitter(); - // prettier-ignore - this.s_navigationShow = new EventEmitter(); - // prettier-ignore - this.s_observerUpdate = new EventEmitter(); - // prettier-ignore - this.s_orientationchange = new EventEmitter(); - // prettier-ignore - this.s_paginationHide = new EventEmitter(); - // prettier-ignore - this.s_paginationRender = new EventEmitter(); - // prettier-ignore - this.s_paginationShow = new EventEmitter(); - // prettier-ignore - this.s_paginationUpdate = new EventEmitter(); - // prettier-ignore - this.s_progress = new EventEmitter(); - // prettier-ignore - this.s_reachBeginning = new EventEmitter(); - // prettier-ignore - this.s_reachEnd = new EventEmitter(); - // prettier-ignore - this.s_realIndexChange = new EventEmitter(); - // prettier-ignore - this.s_resize = new EventEmitter(); - // prettier-ignore - this.s_scroll = new EventEmitter(); - // prettier-ignore - this.s_scrollbarDragEnd = new EventEmitter(); - // prettier-ignore - this.s_scrollbarDragMove = new EventEmitter(); - // prettier-ignore - this.s_scrollbarDragStart = new EventEmitter(); - // prettier-ignore - this.s_setTransition = new EventEmitter(); - // prettier-ignore - this.s_setTranslate = new EventEmitter(); - // prettier-ignore - this.s_slideChange = new EventEmitter(); - // prettier-ignore - this.s_slideChangeTransitionEnd = new EventEmitter(); - // prettier-ignore - this.s_slideChangeTransitionStart = new EventEmitter(); - // prettier-ignore - this.s_slideNextTransitionEnd = new EventEmitter(); - // prettier-ignore - this.s_slideNextTransitionStart = new EventEmitter(); - // prettier-ignore - this.s_slidePrevTransitionEnd = new EventEmitter(); - // prettier-ignore - this.s_slidePrevTransitionStart = new EventEmitter(); - // prettier-ignore - this.s_slideResetTransitionStart = new EventEmitter(); - // prettier-ignore - this.s_slideResetTransitionEnd = new EventEmitter(); - // prettier-ignore - this.s_sliderMove = new EventEmitter(); - // prettier-ignore - this.s_sliderFirstMove = new EventEmitter(); - // prettier-ignore - this.s_slidesLengthChange = new EventEmitter(); - // prettier-ignore - this.s_slidesGridLengthChange = new EventEmitter(); - // prettier-ignore - this.s_snapGridLengthChange = new EventEmitter(); - // prettier-ignore - this.s_snapIndexChange = new EventEmitter(); - // prettier-ignore - this.s_tap = new EventEmitter(); - // prettier-ignore - this.s_toEdge = new EventEmitter(); - // prettier-ignore - this.s_touchEnd = new EventEmitter(); - // prettier-ignore - this.s_touchMove = new EventEmitter(); - // prettier-ignore - this.s_touchMoveOpposite = new EventEmitter(); - // prettier-ignore - this.s_touchStart = new EventEmitter(); - // prettier-ignore - this.s_transitionEnd = new EventEmitter(); - // prettier-ignore - this.s_transitionStart = new EventEmitter(); - // prettier-ignore - this.s_update = new EventEmitter(); - // prettier-ignore - this.s_zoomChange = new EventEmitter(); - // prettier-ignore - this.s_swiper = new EventEmitter(); - this.indexChange = new EventEmitter(); - this._activeSlides = new Subject(); - this.containerClasses = 'swiper'; - this.slidesChanges = (val) => { - this.slides = val.map((slide, index) => { - slide.slideIndex = index; - slide.classNames = this.slideClass || ''; - return slide; - }); - if (this.loop && !this.loopedSlides) { - this.calcLoopedSlides(); - } - if (!this.virtual) { - if (this.loopedSlides) { - this.prependSlides = of(this.slides.slice(this.slides.length - this.loopedSlides)); - this.appendSlides = of(this.slides.slice(0, this.loopedSlides)); - } - } - else if (this.swiperRef && this.swiperRef.virtual) { - this._ngZone.runOutsideAngular(() => { - this.swiperRef.virtual.slides = this.slides; - this.swiperRef.virtual.update(true); - }); - } - this._changeDetectorRef.detectChanges(); - }; - this.style = null; - this.updateVirtualSlides = (virtualData) => { - // TODO: type virtualData - if (!this.swiperRef || - (this.currentVirtualData && - this.currentVirtualData.from === virtualData.from && - this.currentVirtualData.to === virtualData.to && - this.currentVirtualData.offset === virtualData.offset)) { - return; - } - this.style = this.swiperRef.isHorizontal() - ? { - [this.swiperRef.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`, - } - : { - top: `${virtualData.offset}px`, - }; - this.currentVirtualData = virtualData; - this._activeSlides.next(virtualData.slides); - this._ngZone.run(() => { - this._changeDetectorRef.detectChanges(); - }); - this._ngZone.runOutsideAngular(() => { - this.swiperRef.updateSlides(); - this.swiperRef.updateProgress(); - this.swiperRef.updateSlidesClasses(); - if (this.swiperRef.lazy && this.swiperRef.params.lazy['enabled']) { - this.swiperRef.lazy.load(); - } - this.swiperRef.virtual.update(true); - }); - return; - }; - } - set navigation(val) { - var _a, _b, _c; - const currentNext = typeof this._navigation !== 'boolean' && this._navigation !== '' - ? (_a = this._navigation) === null || _a === void 0 ? void 0 : _a.nextEl - : null; - const currentPrev = typeof this._navigation !== 'boolean' && this._navigation !== '' - ? (_b = this._navigation) === null || _b === void 0 ? void 0 : _b.prevEl - : null; - this._navigation = setProperty(val, { - nextEl: currentNext || null, - prevEl: currentPrev || null, - }); - this.showNavigation = !(coerceBooleanProperty(val) !== true || - (this._navigation && - typeof this._navigation !== 'boolean' && - this._navigation.prevEl !== ((_c = this._prevElRef) === null || _c === void 0 ? void 0 : _c.nativeElement) && - (this._navigation.prevEl !== null || this._navigation.nextEl !== null) && - (typeof this._navigation.nextEl === 'string' || - typeof this._navigation.prevEl === 'string' || - typeof this._navigation.nextEl === 'object' || - typeof this._navigation.prevEl === 'object'))); - } - get navigation() { - return this._navigation; - } - set pagination(val) { - var _a; - const current = typeof this._pagination !== 'boolean' && this._pagination !== '' - ? (_a = this._pagination) === null || _a === void 0 ? void 0 : _a.el - : null; - this._pagination = setProperty(val, { - el: current || null, - }); - this.showPagination = isShowEl(val, this._pagination, this._paginationElRef); - } - get pagination() { - return this._pagination; - } - set scrollbar(val) { - var _a; - const current = typeof this._scrollbar !== 'boolean' && this._scrollbar !== '' ? (_a = this._scrollbar) === null || _a === void 0 ? void 0 : _a.el : null; - this._scrollbar = setProperty(val, { - el: current || null, - }); - this.showScrollbar = isShowEl(val, this._scrollbar, this._scrollbarElRef); - } - get scrollbar() { - return this._scrollbar; - } - set virtual(val) { - this._virtual = setProperty(val); - } - get virtual() { - return this._virtual; - } - set index(index) { - console.warn('`[(index)]` prop is deprecated and will be removed in upcoming versions'); - this.setIndex(index); - } - set config(val) { - this.updateSwiper(val); - const { params } = getParams(val); - Object.assign(this, params); - } - set prevElRef(el) { - this._prevElRef = el; - this._setElement(el, this.navigation, 'navigation', 'prevEl'); - } - set nextElRef(el) { - this._nextElRef = el; - this._setElement(el, this.navigation, 'navigation', 'nextEl'); - } - set scrollbarElRef(el) { - this._scrollbarElRef = el; - this._setElement(el, this.scrollbar, 'scrollbar'); - } - set paginationElRef(el) { - this._paginationElRef = el; - this._setElement(el, this.pagination, 'pagination'); - } - get activeSlides() { - if (this.virtual) { - return this._activeSlides; - } - return of(this.slides); - } - get zoomContainerClass() { - return this.zoom && typeof this.zoom !== 'boolean' - ? this.zoom.containerClass - : 'swiper-zoom-container'; - } - _setElement(el, ref, update, key = 'el') { - if (!el || !ref) { - return; - } - if (ref && el.nativeElement) { - if (ref[key] === el.nativeElement) { - return; - } - ref[key] = el.nativeElement; - } - const updateObj = {}; - updateObj[update] = true; - this.updateInitSwiper(updateObj); - } - ngOnInit() { - const { params } = getParams(this); - Object.assign(this, params); - } - ngAfterViewInit() { - this.childrenSlidesInit(); - this.initSwiper(); - this._changeDetectorRef.detectChanges(); - setTimeout(() => { - this.s_swiper.emit(this.swiperRef); - }); - } - childrenSlidesInit() { - this.slidesChanges(this.slidesEl); - this.slidesEl.changes.subscribe(this.slidesChanges); - } - get isSwiperActive() { - return this.swiperRef && !this.swiperRef.destroyed; - } - initSwiper() { - const { params: swiperParams, passedParams } = getParams(this); - Object.assign(this, swiperParams); - this._ngZone.runOutsideAngular(() => { - swiperParams.init = false; - if (!swiperParams.virtual) { - swiperParams.observer = true; - } - swiperParams.onAny = (eventName, ...args) => { - const emitter = this[('s_' + eventName)]; - if (emitter) { - emitter.emit(...args); - } - }; - const _slideClasses = (_, updated) => { - updated.forEach(({ slideEl, classNames }, index) => { - const dataIndex = slideEl.getAttribute('data-swiper-slide-index'); - const slideIndex = dataIndex ? parseInt(dataIndex) : index; - if (this.virtual) { - const virtualSlide = this.slides.find((item) => { - return item.virtualIndex && item.virtualIndex === slideIndex; - }); - if (virtualSlide) { - virtualSlide.classNames = classNames; - return; - } - } - if (this.slides[slideIndex]) { - this.slides[slideIndex].classNames = classNames; - } - }); - this._changeDetectorRef.detectChanges(); - }; - const _containerClasses = (_, classes) => { - setTimeout(() => { - this.containerClasses = classes; - }); - }; - Object.assign(swiperParams.on, { - _containerClasses, - _slideClasses, - }); - const swiperRef = new Swiper(swiperParams); - swiperRef.loopCreate = () => { }; - swiperRef.loopDestroy = () => { }; - if (swiperParams.loop) { - swiperRef.loopedSlides = this.loopedSlides; - } - const isVirtualEnabled = typeof swiperRef.params.virtual !== 'undefined' && - typeof swiperRef.params.virtual !== 'boolean' && - swiperRef.params.virtual.enabled; - if (swiperRef.virtual && isVirtualEnabled) { - swiperRef.virtual.slides = this.slides; - const extendWith = { - cache: false, - slides: this.slides, - renderExternal: this.updateVirtualSlides, - renderExternalUpdate: false, - }; - extend(swiperRef.params.virtual, extendWith); - extend(swiperRef.originalParams.virtual, extendWith); - } - if (isPlatformBrowser(this._platformId)) { - this.swiperRef = swiperRef.init(this.elementRef.nativeElement); - const isEnabled = typeof this.swiperRef.params.virtual !== 'undefined' && - typeof this.swiperRef.params.virtual !== 'boolean' && - this.swiperRef.params.virtual.enabled; - if (this.swiperRef.virtual && isEnabled) { - this.swiperRef.virtual.update(true); - } - this._changeDetectorRef.detectChanges(); - swiperRef.on('slideChange', () => { - this.indexChange.emit(this.swiperRef.realIndex); - }); - } - }); - } - ngOnChanges(changedParams) { - this.updateSwiper(changedParams); - this._changeDetectorRef.detectChanges(); - } - updateInitSwiper(changedParams) { - if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) { - return; - } - this._ngZone.runOutsideAngular(() => { - const { params: currentParams, pagination, navigation, scrollbar, virtual, thumbs, } = this.swiperRef; - if (changedParams.pagination) { - if (this.pagination && - typeof this.pagination !== 'boolean' && - this.pagination.el && - pagination && - !pagination.el) { - this.updateParameter('pagination', this.pagination); - pagination.init(); - pagination.render(); - pagination.update(); - } - else { - pagination.destroy(); - pagination.el = null; - } - } - if (changedParams.scrollbar) { - if (this.scrollbar && - typeof this.scrollbar !== 'boolean' && - this.scrollbar.el && - scrollbar && - !scrollbar.el) { - this.updateParameter('scrollbar', this.scrollbar); - scrollbar.init(); - scrollbar.updateSize(); - scrollbar.setTranslate(); - } - else { - scrollbar.destroy(); - scrollbar.el = null; - } - } - if (changedParams.navigation) { - if (this.navigation && - typeof this.navigation !== 'boolean' && - this.navigation.prevEl && - this.navigation.nextEl && - navigation && - !navigation.prevEl && - !navigation.nextEl) { - this.updateParameter('navigation', this.navigation); - navigation.init(); - navigation.update(); - } - else if (navigation.prevEl && navigation.nextEl) { - navigation.destroy(); - navigation.nextEl = null; - navigation.prevEl = null; - } - } - if (changedParams.thumbs && this.thumbs && this.thumbs.swiper) { - this.updateParameter('thumbs', this.thumbs); - const initialized = thumbs.init(); - if (initialized) - thumbs.update(true); - } - if (changedParams.controller && this.controller && this.controller.control) { - this.swiperRef.controller.control = this.controller.control; - } - this.swiperRef.update(); - }); - } - updateSwiper(changedParams) { - this._ngZone.runOutsideAngular(() => { - var _a, _b; - if (changedParams.config) { - return; - } - if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) { - return; - } - for (const key in changedParams) { - if (ignoreNgOnChanges.indexOf(key) >= 0) { - continue; - } - const newValue = (_b = (_a = changedParams[key]) === null || _a === void 0 ? void 0 : _a.currentValue) !== null && _b !== void 0 ? _b : changedParams[key]; - this.updateParameter(key, newValue); - } - if (changedParams.allowSlideNext) { - this.swiperRef.allowSlideNext = this.allowSlideNext; - } - if (changedParams.allowSlidePrev) { - this.swiperRef.allowSlidePrev = this.allowSlidePrev; - } - if (changedParams.direction) { - this.swiperRef.changeDirection(this.direction, false); - } - if (changedParams.breakpoints) { - if (this.loop && !this.loopedSlides) { - this.calcLoopedSlides(); - } - this.swiperRef.currentBreakpoint = null; - this.swiperRef.setBreakpoint(); - } - if (changedParams.thumbs || changedParams.controller) { - this.updateInitSwiper(changedParams); - } - this.swiperRef.update(); - }); - } - calcLoopedSlides() { - if (!this.loop) { - return; - } - let slidesPerViewParams = this.slidesPerView; - if (this.breakpoints) { - const breakpoint = Swiper.prototype.getBreakpoint(this.breakpoints); - const breakpointOnlyParams = breakpoint in this.breakpoints ? this.breakpoints[breakpoint] : undefined; - if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) { - slidesPerViewParams = breakpointOnlyParams.slidesPerView; - } - } - if (slidesPerViewParams === 'auto') { - this.loopedSlides = this.slides.length; - return this.slides.length; - } - let loopedSlides = this.loopedSlides || slidesPerViewParams; - if (!loopedSlides) { - // ? - return; - } - if (this.loopAdditionalSlides) { - loopedSlides += this.loopAdditionalSlides; - } - if (loopedSlides > this.slides.length) { - loopedSlides = this.slides.length; - } - this.loopedSlides = loopedSlides; - return loopedSlides; - } - updateParameter(key, value) { - if (!(this.swiperRef && !this.swiperRef.destroyed)) { - return; - } - const _key = key.replace(/^_/, ''); - const isCurrentParamObj = isObject(this.swiperRef.params[_key]); - if (Object.keys(this.swiperRef.modules).indexOf(_key) >= 0) { - const defaultParams = this.swiperRef.modules[_key].params[_key]; - if (isCurrentParamObj) { - extend(this.swiperRef.params[_key], defaultParams); - } - else { - this.swiperRef.params[_key] = defaultParams; - } - } - if (_key === 'enabled') { - if (value === true) { - this.swiperRef.enable(); - } - else if (value === false) { - this.swiperRef.disable(); - } - return; - } - if (isCurrentParamObj && isObject(value)) { - extend(this.swiperRef.params[_key], value); - } - else { - this.swiperRef.params[_key] = value; - } - } - /** - * @deprecated will be removed in upcoming versions - */ - setIndex(index, speed, silent) { - if (!this.isSwiperActive) { - this.initialSlide = index; - return; - } - if (index === this.swiperRef.activeIndex) { - return; - } - this._ngZone.runOutsideAngular(() => { - if (this.loop) { - this.swiperRef.slideToLoop(index, speed, !silent); - } - else { - this.swiperRef.slideTo(index, speed, !silent); - } - }); - } - ngOnDestroy() { - this._ngZone.runOutsideAngular(() => { - var _a; - (_a = this.swiperRef) === null || _a === void 0 ? void 0 : _a.destroy(true, false); - }); - } -} -SwiperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); -SwiperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.2", type: SwiperComponent, selector: "swiper, [swiper]", inputs: { enabled: "enabled", direction: "direction", touchEventsTarget: "touchEventsTarget", initialSlide: "initialSlide", speed: "speed", cssMode: "cssMode", updateOnWindowResize: "updateOnWindowResize", resizeObserver: "resizeObserver", nested: "nested", focusableElements: "focusableElements", width: "width", height: "height", preventInteractionOnTransition: "preventInteractionOnTransition", userAgent: "userAgent", url: "url", edgeSwipeDetection: "edgeSwipeDetection", edgeSwipeThreshold: "edgeSwipeThreshold", freeMode: "freeMode", autoHeight: "autoHeight", setWrapperSize: "setWrapperSize", virtualTranslate: "virtualTranslate", effect: "effect", breakpoints: "breakpoints", spaceBetween: "spaceBetween", slidesPerView: "slidesPerView", grid: "grid", slidesPerGroup: "slidesPerGroup", slidesPerGroupSkip: "slidesPerGroupSkip", centeredSlides: "centeredSlides", centeredSlidesBounds: "centeredSlidesBounds", slidesOffsetBefore: "slidesOffsetBefore", slidesOffsetAfter: "slidesOffsetAfter", normalizeSlideIndex: "normalizeSlideIndex", centerInsufficientSlides: "centerInsufficientSlides", watchOverflow: "watchOverflow", roundLengths: "roundLengths", touchRatio: "touchRatio", touchAngle: "touchAngle", simulateTouch: "simulateTouch", shortSwipes: "shortSwipes", longSwipes: "longSwipes", longSwipesRatio: "longSwipesRatio", longSwipesMs: "longSwipesMs", followFinger: "followFinger", allowTouchMove: "allowTouchMove", threshold: "threshold", touchMoveStopPropagation: "touchMoveStopPropagation", touchStartPreventDefault: "touchStartPreventDefault", touchStartForcePreventDefault: "touchStartForcePreventDefault", touchReleaseOnEdges: "touchReleaseOnEdges", uniqueNavElements: "uniqueNavElements", resistance: "resistance", resistanceRatio: "resistanceRatio", watchSlidesProgress: "watchSlidesProgress", grabCursor: "grabCursor", preventClicks: "preventClicks", preventClicksPropagation: "preventClicksPropagation", slideToClickedSlide: "slideToClickedSlide", preloadImages: "preloadImages", updateOnImagesReady: "updateOnImagesReady", loop: "loop", loopAdditionalSlides: "loopAdditionalSlides", loopedSlides: "loopedSlides", loopFillGroupWithBlank: "loopFillGroupWithBlank", loopPreventsSlide: "loopPreventsSlide", allowSlidePrev: "allowSlidePrev", allowSlideNext: "allowSlideNext", swipeHandler: "swipeHandler", noSwiping: "noSwiping", noSwipingClass: "noSwipingClass", noSwipingSelector: "noSwipingSelector", passiveListeners: "passiveListeners", containerModifierClass: "containerModifierClass", slideClass: "slideClass", slideBlankClass: "slideBlankClass", slideActiveClass: "slideActiveClass", slideDuplicateActiveClass: "slideDuplicateActiveClass", slideVisibleClass: "slideVisibleClass", slideDuplicateClass: "slideDuplicateClass", slideNextClass: "slideNextClass", slideDuplicateNextClass: "slideDuplicateNextClass", slidePrevClass: "slidePrevClass", slideDuplicatePrevClass: "slideDuplicatePrevClass", wrapperClass: "wrapperClass", runCallbacksOnInit: "runCallbacksOnInit", observeParents: "observeParents", observeSlideChildren: "observeSlideChildren", a11y: "a11y", autoplay: "autoplay", controller: "controller", coverflowEffect: "coverflowEffect", cubeEffect: "cubeEffect", fadeEffect: "fadeEffect", flipEffect: "flipEffect", creativeEffect: "creativeEffect", cardsEffect: "cardsEffect", hashNavigation: "hashNavigation", history: "history", keyboard: "keyboard", lazy: "lazy", mousewheel: "mousewheel", parallax: "parallax", thumbs: "thumbs", zoom: "zoom", class: "class", id: "id", navigation: "navigation", pagination: "pagination", scrollbar: "scrollbar", virtual: "virtual", index: "index", config: "config" }, outputs: { s__beforeBreakpoint: "_beforeBreakpoint", s__containerClasses: "_containerClasses", s__slideClass: "_slideClass", s__swiper: "_swiper", s_activeIndexChange: "activeIndexChange", s_afterInit: "afterInit", s_autoplay: "autoplay", s_autoplayStart: "autoplayStart", s_autoplayStop: "autoplayStop", s_beforeDestroy: "beforeDestroy", s_beforeInit: "beforeInit", s_beforeLoopFix: "beforeLoopFix", s_beforeResize: "beforeResize", s_beforeSlideChangeStart: "beforeSlideChangeStart", s_beforeTransitionStart: "beforeTransitionStart", s_breakpoint: "breakpoint", s_changeDirection: "changeDirection", s_click: "click", s_doubleTap: "doubleTap", s_doubleClick: "doubleClick", s_destroy: "destroy", s_fromEdge: "fromEdge", s_hashChange: "hashChange", s_hashSet: "hashSet", s_imagesReady: "imagesReady", s_init: "init", s_keyPress: "keyPress", s_lazyImageLoad: "lazyImageLoad", s_lazyImageReady: "lazyImageReady", s_loopFix: "loopFix", s_momentumBounce: "momentumBounce", s_navigationHide: "navigationHide", s_navigationShow: "navigationShow", s_observerUpdate: "observerUpdate", s_orientationchange: "orientationchange", s_paginationHide: "paginationHide", s_paginationRender: "paginationRender", s_paginationShow: "paginationShow", s_paginationUpdate: "paginationUpdate", s_progress: "progress", s_reachBeginning: "reachBeginning", s_reachEnd: "reachEnd", s_realIndexChange: "realIndexChange", s_resize: "resize", s_scroll: "scroll", s_scrollbarDragEnd: "scrollbarDragEnd", s_scrollbarDragMove: "scrollbarDragMove", s_scrollbarDragStart: "scrollbarDragStart", s_setTransition: "setTransition", s_setTranslate: "setTranslate", s_slideChange: "slideChange", s_slideChangeTransitionEnd: "slideChangeTransitionEnd", s_slideChangeTransitionStart: "slideChangeTransitionStart", s_slideNextTransitionEnd: "slideNextTransitionEnd", s_slideNextTransitionStart: "slideNextTransitionStart", s_slidePrevTransitionEnd: "slidePrevTransitionEnd", s_slidePrevTransitionStart: "slidePrevTransitionStart", s_slideResetTransitionStart: "slideResetTransitionStart", s_slideResetTransitionEnd: "slideResetTransitionEnd", s_sliderMove: "sliderMove", s_sliderFirstMove: "sliderFirstMove", s_slidesLengthChange: "slidesLengthChange", s_slidesGridLengthChange: "slidesGridLengthChange", s_snapGridLengthChange: "snapGridLengthChange", s_snapIndexChange: "snapIndexChange", s_tap: "tap", s_toEdge: "toEdge", s_touchEnd: "touchEnd", s_touchMove: "touchMove", s_touchMoveOpposite: "touchMoveOpposite", s_touchStart: "touchStart", s_transitionEnd: "transitionEnd", s_transitionStart: "transitionStart", s_update: "update", s_zoomChange: "zoomChange", s_swiper: "swiper", indexChange: "indexChange" }, host: { properties: { "class": "this.containerClasses" } }, queries: [{ propertyName: "slidesEl", predicate: SwiperSlideDirective }], viewQueries: [{ propertyName: "prevElRef", first: true, predicate: ["prevElRef"], descendants: true }, { propertyName: "nextElRef", first: true, predicate: ["nextElRef"], descendants: true }, { propertyName: "scrollbarElRef", first: true, predicate: ["scrollbarElRef"], descendants: true }, { propertyName: "paginationElRef", first: true, predicate: ["paginationElRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "\n\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n\n\n\n \n
\n \n
\n \n
\n \n \n\n", styles: ["\n swiper {\n display: block;\n }\n "], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "async": i1.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); -i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperComponent, decorators: [{ - type: Component, - args: [{ - selector: 'swiper, [swiper]', - templateUrl: './swiper.component.html', - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None, - styles: [ - ` - swiper { - display: block; - } - `, - ], - }] - }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: Object, decorators: [{ - type: Inject, - args: [PLATFORM_ID] - }] }]; }, propDecorators: { enabled: [{ - type: Input - }], direction: [{ - type: Input - }], touchEventsTarget: [{ - type: Input - }], initialSlide: [{ - type: Input - }], speed: [{ - type: Input - }], cssMode: [{ - type: Input - }], updateOnWindowResize: [{ - type: Input - }], resizeObserver: [{ - type: Input - }], nested: [{ - type: Input - }], focusableElements: [{ - type: Input - }], width: [{ - type: Input - }], height: [{ - type: Input - }], preventInteractionOnTransition: [{ - type: Input - }], userAgent: [{ - type: Input - }], url: [{ - type: Input - }], edgeSwipeDetection: [{ - type: Input - }], edgeSwipeThreshold: [{ - type: Input - }], freeMode: [{ - type: Input - }], autoHeight: [{ - type: Input - }], setWrapperSize: [{ - type: Input - }], virtualTranslate: [{ - type: Input - }], effect: [{ - type: Input - }], breakpoints: [{ - type: Input - }], spaceBetween: [{ - type: Input - }], slidesPerView: [{ - type: Input - }], grid: [{ - type: Input - }], slidesPerGroup: [{ - type: Input - }], slidesPerGroupSkip: [{ - type: Input - }], centeredSlides: [{ - type: Input - }], centeredSlidesBounds: [{ - type: Input - }], slidesOffsetBefore: [{ - type: Input - }], slidesOffsetAfter: [{ - type: Input - }], normalizeSlideIndex: [{ - type: Input - }], centerInsufficientSlides: [{ - type: Input - }], watchOverflow: [{ - type: Input - }], roundLengths: [{ - type: Input - }], touchRatio: [{ - type: Input - }], touchAngle: [{ - type: Input - }], simulateTouch: [{ - type: Input - }], shortSwipes: [{ - type: Input - }], longSwipes: [{ - type: Input - }], longSwipesRatio: [{ - type: Input - }], longSwipesMs: [{ - type: Input - }], followFinger: [{ - type: Input - }], allowTouchMove: [{ - type: Input - }], threshold: [{ - type: Input - }], touchMoveStopPropagation: [{ - type: Input - }], touchStartPreventDefault: [{ - type: Input - }], touchStartForcePreventDefault: [{ - type: Input - }], touchReleaseOnEdges: [{ - type: Input - }], uniqueNavElements: [{ - type: Input - }], resistance: [{ - type: Input - }], resistanceRatio: [{ - type: Input - }], watchSlidesProgress: [{ - type: Input - }], grabCursor: [{ - type: Input - }], preventClicks: [{ - type: Input - }], preventClicksPropagation: [{ - type: Input - }], slideToClickedSlide: [{ - type: Input - }], preloadImages: [{ - type: Input - }], updateOnImagesReady: [{ - type: Input - }], loop: [{ - type: Input - }], loopAdditionalSlides: [{ - type: Input - }], loopedSlides: [{ - type: Input - }], loopFillGroupWithBlank: [{ - type: Input - }], loopPreventsSlide: [{ - type: Input - }], allowSlidePrev: [{ - type: Input - }], allowSlideNext: [{ - type: Input - }], swipeHandler: [{ - type: Input - }], noSwiping: [{ - type: Input - }], noSwipingClass: [{ - type: Input - }], noSwipingSelector: [{ - type: Input - }], passiveListeners: [{ - type: Input - }], containerModifierClass: [{ - type: Input - }], slideClass: [{ - type: Input - }], slideBlankClass: [{ - type: Input - }], slideActiveClass: [{ - type: Input - }], slideDuplicateActiveClass: [{ - type: Input - }], slideVisibleClass: [{ - type: Input - }], slideDuplicateClass: [{ - type: Input - }], slideNextClass: [{ - type: Input - }], slideDuplicateNextClass: [{ - type: Input - }], slidePrevClass: [{ - type: Input - }], slideDuplicatePrevClass: [{ - type: Input - }], wrapperClass: [{ - type: Input - }], runCallbacksOnInit: [{ - type: Input - }], observeParents: [{ - type: Input - }], observeSlideChildren: [{ - type: Input - }], a11y: [{ - type: Input - }], autoplay: [{ - type: Input - }], controller: [{ - type: Input - }], coverflowEffect: [{ - type: Input - }], cubeEffect: [{ - type: Input - }], fadeEffect: [{ - type: Input - }], flipEffect: [{ - type: Input - }], creativeEffect: [{ - type: Input - }], cardsEffect: [{ - type: Input - }], hashNavigation: [{ - type: Input - }], history: [{ - type: Input - }], keyboard: [{ - type: Input - }], lazy: [{ - type: Input - }], mousewheel: [{ - type: Input - }], parallax: [{ - type: Input - }], thumbs: [{ - type: Input - }], zoom: [{ - type: Input - }], class: [{ - type: Input - }], id: [{ - type: Input - }], navigation: [{ - type: Input - }], pagination: [{ - type: Input - }], scrollbar: [{ - type: Input - }], virtual: [{ - type: Input - }], index: [{ - type: Input - }], config: [{ - type: Input - }], s__beforeBreakpoint: [{ - type: Output, - args: ['_beforeBreakpoint'] - }], s__containerClasses: [{ - type: Output, - args: ['_containerClasses'] - }], s__slideClass: [{ - type: Output, - args: ['_slideClass'] - }], s__swiper: [{ - type: Output, - args: ['_swiper'] - }], s_activeIndexChange: [{ - type: Output, - args: ['activeIndexChange'] - }], s_afterInit: [{ - type: Output, - args: ['afterInit'] - }], s_autoplay: [{ - type: Output, - args: ['autoplay'] - }], s_autoplayStart: [{ - type: Output, - args: ['autoplayStart'] - }], s_autoplayStop: [{ - type: Output, - args: ['autoplayStop'] - }], s_beforeDestroy: [{ - type: Output, - args: ['beforeDestroy'] - }], s_beforeInit: [{ - type: Output, - args: ['beforeInit'] - }], s_beforeLoopFix: [{ - type: Output, - args: ['beforeLoopFix'] - }], s_beforeResize: [{ - type: Output, - args: ['beforeResize'] - }], s_beforeSlideChangeStart: [{ - type: Output, - args: ['beforeSlideChangeStart'] - }], s_beforeTransitionStart: [{ - type: Output, - args: ['beforeTransitionStart'] - }], s_breakpoint: [{ - type: Output, - args: ['breakpoint'] - }], s_changeDirection: [{ - type: Output, - args: ['changeDirection'] - }], s_click: [{ - type: Output, - args: ['click'] - }], s_doubleTap: [{ - type: Output, - args: ['doubleTap'] - }], s_doubleClick: [{ - type: Output, - args: ['doubleClick'] - }], s_destroy: [{ - type: Output, - args: ['destroy'] - }], s_fromEdge: [{ - type: Output, - args: ['fromEdge'] - }], s_hashChange: [{ - type: Output, - args: ['hashChange'] - }], s_hashSet: [{ - type: Output, - args: ['hashSet'] - }], s_imagesReady: [{ - type: Output, - args: ['imagesReady'] - }], s_init: [{ - type: Output, - args: ['init'] - }], s_keyPress: [{ - type: Output, - args: ['keyPress'] - }], s_lazyImageLoad: [{ - type: Output, - args: ['lazyImageLoad'] - }], s_lazyImageReady: [{ - type: Output, - args: ['lazyImageReady'] - }], s_loopFix: [{ - type: Output, - args: ['loopFix'] - }], s_momentumBounce: [{ - type: Output, - args: ['momentumBounce'] - }], s_navigationHide: [{ - type: Output, - args: ['navigationHide'] - }], s_navigationShow: [{ - type: Output, - args: ['navigationShow'] - }], s_observerUpdate: [{ - type: Output, - args: ['observerUpdate'] - }], s_orientationchange: [{ - type: Output, - args: ['orientationchange'] - }], s_paginationHide: [{ - type: Output, - args: ['paginationHide'] - }], s_paginationRender: [{ - type: Output, - args: ['paginationRender'] - }], s_paginationShow: [{ - type: Output, - args: ['paginationShow'] - }], s_paginationUpdate: [{ - type: Output, - args: ['paginationUpdate'] - }], s_progress: [{ - type: Output, - args: ['progress'] - }], s_reachBeginning: [{ - type: Output, - args: ['reachBeginning'] - }], s_reachEnd: [{ - type: Output, - args: ['reachEnd'] - }], s_realIndexChange: [{ - type: Output, - args: ['realIndexChange'] - }], s_resize: [{ - type: Output, - args: ['resize'] - }], s_scroll: [{ - type: Output, - args: ['scroll'] - }], s_scrollbarDragEnd: [{ - type: Output, - args: ['scrollbarDragEnd'] - }], s_scrollbarDragMove: [{ - type: Output, - args: ['scrollbarDragMove'] - }], s_scrollbarDragStart: [{ - type: Output, - args: ['scrollbarDragStart'] - }], s_setTransition: [{ - type: Output, - args: ['setTransition'] - }], s_setTranslate: [{ - type: Output, - args: ['setTranslate'] - }], s_slideChange: [{ - type: Output, - args: ['slideChange'] - }], s_slideChangeTransitionEnd: [{ - type: Output, - args: ['slideChangeTransitionEnd'] - }], s_slideChangeTransitionStart: [{ - type: Output, - args: ['slideChangeTransitionStart'] - }], s_slideNextTransitionEnd: [{ - type: Output, - args: ['slideNextTransitionEnd'] - }], s_slideNextTransitionStart: [{ - type: Output, - args: ['slideNextTransitionStart'] - }], s_slidePrevTransitionEnd: [{ - type: Output, - args: ['slidePrevTransitionEnd'] - }], s_slidePrevTransitionStart: [{ - type: Output, - args: ['slidePrevTransitionStart'] - }], s_slideResetTransitionStart: [{ - type: Output, - args: ['slideResetTransitionStart'] - }], s_slideResetTransitionEnd: [{ - type: Output, - args: ['slideResetTransitionEnd'] - }], s_sliderMove: [{ - type: Output, - args: ['sliderMove'] - }], s_sliderFirstMove: [{ - type: Output, - args: ['sliderFirstMove'] - }], s_slidesLengthChange: [{ - type: Output, - args: ['slidesLengthChange'] - }], s_slidesGridLengthChange: [{ - type: Output, - args: ['slidesGridLengthChange'] - }], s_snapGridLengthChange: [{ - type: Output, - args: ['snapGridLengthChange'] - }], s_snapIndexChange: [{ - type: Output, - args: ['snapIndexChange'] - }], s_tap: [{ - type: Output, - args: ['tap'] - }], s_toEdge: [{ - type: Output, - args: ['toEdge'] - }], s_touchEnd: [{ - type: Output, - args: ['touchEnd'] - }], s_touchMove: [{ - type: Output, - args: ['touchMove'] - }], s_touchMoveOpposite: [{ - type: Output, - args: ['touchMoveOpposite'] - }], s_touchStart: [{ - type: Output, - args: ['touchStart'] - }], s_transitionEnd: [{ - type: Output, - args: ['transitionEnd'] - }], s_transitionStart: [{ - type: Output, - args: ['transitionStart'] - }], s_update: [{ - type: Output, - args: ['update'] - }], s_zoomChange: [{ - type: Output, - args: ['zoomChange'] - }], s_swiper: [{ - type: Output, - args: ['swiper'] - }], indexChange: [{ - type: Output - }], prevElRef: [{ - type: ViewChild, - args: ['prevElRef', { static: false }] - }], nextElRef: [{ - type: ViewChild, - args: ['nextElRef', { static: false }] - }], scrollbarElRef: [{ - type: ViewChild, - args: ['scrollbarElRef', { static: false }] - }], paginationElRef: [{ - type: ViewChild, - args: ['paginationElRef', { static: false }] - }], slidesEl: [{ - type: ContentChildren, - args: [SwiperSlideDirective, { descendants: false, emitDistinctChangesOnly: true }] - }], containerClasses: [{ - type: HostBinding, - args: ['class'] - }] } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyL3NyYy9zd2lwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2FuZ3VsYXIvc3JjL3N3aXBlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixXQUFXLEVBR1gsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixhQUFhO0FBQ2IsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFTdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQWNwRCxNQUFNLE9BQU8sZUFBZTtJQTBZMUIsWUFDVSxPQUFlLEVBQ2YsVUFBc0IsRUFDdEIsa0JBQXFDLEVBQ2hCLFdBQW1CO1FBSHhDLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFwVXpDLGVBQVUsR0FBZ0MsY0FBYyxDQUFDO1FBVXpELGlCQUFZLEdBQWtD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RTtnQkFPckMsU0FBUztzQkFEWixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBT3JDLGNBQWM7c0JBRGpCLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQU8xQyxlQUFlO3NCQURsQixTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFPL0MsUUFBUTtzQkFEUCxlQUFlO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUU7Z0JBdUJ0RSxnQkFBZ0I7c0JBQXJDLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFBMQVRGT1JNX0lELFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IFN3aXBlciBmcm9tICdzd2lwZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGdldFBhcmFtcyB9IGZyb20gJy4vdXRpbHMvZ2V0LXBhcmFtcyc7XG5pbXBvcnQgeyBTd2lwZXJTbGlkZURpcmVjdGl2ZSB9IGZyb20gJy4vc3dpcGVyLXNsaWRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICBleHRlbmQsXG4gIGlzT2JqZWN0LFxuICBzZXRQcm9wZXJ0eSxcbiAgaWdub3JlTmdPbkNoYW5nZXMsXG4gIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSxcbiAgaXNTaG93RWwsXG59IGZyb20gJy4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHtcbiAgU3dpcGVyT3B0aW9ucyxcbiAgU3dpcGVyRXZlbnRzLFxuICBOYXZpZ2F0aW9uT3B0aW9ucyxcbiAgUGFnaW5hdGlvbk9wdGlvbnMsXG4gIFNjcm9sbGJhck9wdGlvbnMsXG4gIFZpcnR1YWxPcHRpb25zLFxufSBmcm9tICdzd2lwZXIvdHlwZXMnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3dpcGVyLCBbc3dpcGVyXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zd2lwZXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgc3dpcGVyIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU3dpcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZW5hYmxlZDogU3dpcGVyT3B0aW9uc1snZW5hYmxlZCddO1xuICBASW5wdXQoKSBkaXJlY3Rpb246IFN3aXBlck9wdGlvbnNbJ2RpcmVjdGlvbiddO1xuICBASW5wdXQoKSB0b3VjaEV2ZW50c1RhcmdldDogU3dpcGVyT3B0aW9uc1sndG91Y2hFdmVudHNUYXJnZXQnXTtcbiAgQElucHV0KCkgaW5pdGlhbFNsaWRlOiBTd2lwZXJPcHRpb25zWydpbml0aWFsU2xpZGUnXTtcbiAgQElucHV0KCkgc3BlZWQ6IFN3aXBlck9wdGlvbnNbJ3NwZWVkJ107XG4gIEBJbnB1dCgpIGNzc01vZGU6IFN3aXBlck9wdGlvbnNbJ2Nzc01vZGUnXTtcbiAgQElucHV0KCkgdXBkYXRlT25XaW5kb3dSZXNpemU6IFN3aXBlck9wdGlvbnNbJ3VwZGF0ZU9uV2luZG93UmVzaXplJ107XG4gIEBJbnB1dCgpIHJlc2l6ZU9ic2VydmVyOiBTd2lwZXJPcHRpb25zWydyZXNpemVPYnNlcnZlciddO1xuICBASW5wdXQoKSBuZXN0ZWQ6IFN3aXBlck9wdGlvbnNbJ25lc3RlZCddO1xuICBASW5wdXQoKSBmb2N1c2FibGVFbGVtZW50czogU3dpcGVyT3B0aW9uc1snZm9jdXNhYmxlRWxlbWVudHMnXTtcbiAgQElucHV0KCkgd2lkdGg6IFN3aXBlck9wdGlvbnNbJ3dpZHRoJ107XG4gIEBJbnB1dCgpIGhlaWdodDogU3dpcGVyT3B0aW9uc1snaGVpZ2h0J107XG4gIEBJbnB1dCgpIHByZXZlbnRJbnRlcmFjdGlvbk9uVHJhbnNpdGlvbjogU3dpcGVyT3B0aW9uc1sncHJldmVudEludGVyYWN0aW9uT25UcmFuc2l0aW9uJ107XG4gIEBJbnB1dCgpIHVzZXJBZ2VudDogU3dpcGVyT3B0aW9uc1sndXNlckFnZW50J107XG4gIEBJbnB1dCgpIHVybDogU3dpcGVyT3B0aW9uc1sndXJsJ107XG4gIEBJbnB1dCgpIGVkZ2VTd2lwZURldGVjdGlvbjogYm9vbGVhbiB8IHN0cmluZztcbiAgQElucHV0KCkgZWRnZVN3aXBlVGhyZXNob2xkOiBudW1iZXI7XG4gIEBJbnB1dCgpIGZyZWVNb2RlOiBTd2lwZXJPcHRpb25zWydmcmVlTW9kZSddO1xuICBASW5wdXQoKSBhdXRvSGVpZ2h0OiBTd2lwZXJPcHRpb25zWydhdXRvSGVpZ2h0J107XG4gIEBJbnB1dCgpIHNldFdyYXBwZXJTaXplOiBTd2lwZXJPcHRpb25zWydzZXRXcmFwcGVyU2l6ZSddO1xuICBASW5wdXQoKSB2aXJ0dWFsVHJhbnNsYXRlOiBTd2lwZXJPcHRpb25zWyd2aXJ0dWFsVHJhbnNsYXRlJ107XG4gIEBJbnB1dCgpIGVmZmVjdDogU3dpcGVyT3B0aW9uc1snZWZmZWN0J107XG4gIEBJbnB1dCgpIGJyZWFrcG9pbnRzOiBTd2lwZXJPcHRpb25zWydicmVha3BvaW50cyddO1xuICBASW5wdXQoKSBzcGFjZUJldHdlZW46IFN3aXBlck9wdGlvbnNbJ3NwYWNlQmV0d2VlbiddO1xuICBASW5wdXQoKSBzbGlkZXNQZXJWaWV3OiBTd2lwZXJPcHRpb25zWydzbGlkZXNQZXJWaWV3J107XG4gIEBJbnB1dCgpIGdyaWQ6IFN3aXBlck9wdGlvbnNbJ2dyaWQnXTtcbiAgQElucHV0KCkgc2xpZGVzUGVyR3JvdXA6IFN3aXBlck9wdGlvbnNbJ3NsaWRlc1Blckdyb3VwJ107XG4gIEBJbnB1dCgpIHNsaWRlc1Blckdyb3VwU2tpcDogU3dpcGVyT3B0aW9uc1snc2xpZGVzUGVyR3JvdXBTa2lwJ107XG4gIEBJbnB1dCgpIGNlbnRlcmVkU2xpZGVzOiBTd2lwZXJPcHRpb25zWydjZW50ZXJlZFNsaWRlcyddO1xuICBASW5wdXQoKSBjZW50ZXJlZFNsaWRlc0JvdW5kczogU3dpcGVyT3B0aW9uc1snY2VudGVyZWRTbGlkZXNCb3VuZHMnXTtcbiAgQElucHV0KCkgc2xpZGVzT2Zmc2V0QmVmb3JlOiBTd2lwZXJPcHRpb25zWydzbGlkZXNPZmZzZXRCZWZvcmUnXTtcbiAgQElucHV0KCkgc2xpZGVzT2Zmc2V0QWZ0ZXI6IFN3aXBlck9wdGlvbnNbJ3NsaWRlc09mZnNldEFmdGVyJ107XG4gIEBJbnB1dCgpIG5vcm1hbGl6ZVNsaWRlSW5kZXg6IFN3aXBlck9wdGlvbnNbJ25vcm1hbGl6ZVNsaWRlSW5kZXgnXTtcbiAgQElucHV0KCkgY2VudGVySW5zdWZmaWNpZW50U2xpZGVzOiBTd2lwZXJPcHRpb25zWydjZW50ZXJJbnN1ZmZpY2llbnRTbGlkZXMnXTtcbiAgQElucHV0KCkgd2F0Y2hPdmVyZmxvdzogU3dpcGVyT3B0aW9uc1snd2F0Y2hPdmVyZmxvdyddO1xuICBASW5wdXQoKSByb3VuZExlbmd0aHM6IFN3aXBlck9wdGlvbnNbJ3JvdW5kTGVuZ3RocyddO1xuICBASW5wdXQoKSB0b3VjaFJhdGlvOiBTd2lwZXJPcHRpb25zWyd0b3VjaFJhdGlvJ107XG4gIEBJbnB1dCgpIHRvdWNoQW5nbGU6IFN3aXBlck9wdGlvbnNbJ3RvdWNoQW5nbGUnXTtcbiAgQElucHV0KCkgc2ltdWxhdGVUb3VjaDogU3dpcGVyT3B0aW9uc1snc2ltdWxhdGVUb3VjaCddO1xuICBASW5wdXQoKSBzaG9ydFN3aXBlczogU3dpcGVyT3B0aW9uc1snc2hvcnRTd2lwZXMnXTtcbiAgQElucHV0KCkgbG9uZ1N3aXBlczogU3dpcGVyT3B0aW9uc1snbG9uZ1N3aXBlcyddO1xuICBASW5wdXQoKSBsb25nU3dpcGVzUmF0aW86IFN3aXBlck9wdGlvbnNbJ2xvbmdTd2lwZXNSYXRpbyddO1xuICBASW5wdXQoKSBsb25nU3dpcGVzTXM6IFN3aXBlck9wdGlvbnNbJ2xvbmdTd2lwZXNNcyddO1xuICBASW5wdXQoKSBmb2xsb3dGaW5nZXI6IFN3aXBlck9wdGlvbnNbJ2ZvbGxvd0ZpbmdlciddO1xuICBASW5wdXQoKSBhbGxvd1RvdWNoTW92ZTogU3dpcGVyT3B0aW9uc1snYWxsb3dUb3VjaE1vdmUnXTtcbiAgQElucHV0KCkgdGhyZXNob2xkOiBTd2lwZXJPcHRpb25zWyd0aHJlc2hvbGQnXTtcbiAgQElucHV0KCkgdG91Y2hNb3ZlU3RvcFByb3BhZ2F0aW9uOiBTd2lwZXJPcHRpb25zWyd0b3VjaE1vdmVTdG9wUHJvcGFnYXRpb24nXTtcbiAgQElucHV0KCkgdG91Y2hTdGFydFByZXZlbnREZWZhdWx0OiBTd2lwZXJPcHRpb25zWyd0b3VjaFN0YXJ0UHJldmVudERlZmF1bHQnXTtcbiAgQElucHV0KCkgdG91Y2hTdGFydEZvcmNlUHJldmVudERlZmF1bHQ6IFN3aXBlck9wdGlvbnNbJ3RvdWNoU3RhcnRGb3JjZVByZXZlbnREZWZhdWx0J107XG4gIEBJbnB1dCgpIHRvdWNoUmVsZWFzZU9uRWRnZXM6IFN3aXBlck9wdGlvbnNbJ3RvdWNoUmVsZWFzZU9uRWRnZXMnXTtcbiAgQElucHV0KCkgdW5pcXVlTmF2RWxlbWVudHM6IFN3aXBlck9wdGlvbnNbJ3VuaXF1ZU5hdkVsZW1lbnRzJ107XG4gIEBJbnB1dCgpIHJlc2lzdGFuY2U6IFN3aXBlck9wdGlvbnNbJ3Jlc2lzdGFuY2UnXTtcbiAgQElucHV0KCkgcmVzaXN0YW5jZVJhdGlvOiBTd2lwZXJPcHRpb25zWydyZXNpc3RhbmNlUmF0aW8nXTtcbiAgQElucHV0KCkgd2F0Y2hTbGlkZXNQcm9ncmVzczogU3dpcGVyT3B0aW9uc1snd2F0Y2hTbGlkZXNQcm9ncmVzcyddO1xuICBASW5wdXQoKSBncmFiQ3Vyc29yOiBTd2lwZXJPcHRpb25zWydncmFiQ3Vyc29yJ107XG4gIEBJbnB1dCgpIHByZXZlbnRDbGlja3M6IFN3aXBlck9wdGlvbnNbJ3ByZXZlbnRDbGlja3MnXTtcbiAgQElucHV0KCkgcHJldmVudENsaWNrc1Byb3BhZ2F0aW9uOiBTd2lwZXJPcHRpb25zWydwcmV2ZW50Q2xpY2tzUHJvcGFnYXRpb24nXTtcbiAgQElucHV0KCkgc2xpZGVUb0NsaWNrZWRTbGlkZTogU3dpcGVyT3B0aW9uc1snc2xpZGVUb0NsaWNrZWRTbGlkZSddO1xuICBASW5wdXQoKSBwcmVsb2FkSW1hZ2VzOiBTd2lwZXJPcHRpb25zWydwcmVsb2FkSW1hZ2VzJ107XG4gIEBJbnB1dCgpIHVwZGF0ZU9uSW1hZ2VzUmVhZHk6IFN3aXBlck9wdGlvbnNbJ3VwZGF0ZU9uSW1hZ2VzUmVhZHknXTtcbiAgQElucHV0KCkgbG9vcDogU3dpcGVyT3B0aW9uc1snbG9vcCddO1xuICBASW5wdXQoKSBsb29wQWRkaXRpb25hbFNsaWRlczogU3dpcGVyT3B0aW9uc1snbG9vcEFkZGl0aW9uYWxTbGlkZXMnXTtcbiAgQElucHV0KCkgbG9vcGVkU2xpZGVzOiBTd2lwZXJPcHRpb25zWydsb29wZWRTbGlkZXMnXTtcbiAgQElucHV0KCkgbG9vcEZpbGxHcm91cFdpdGhCbGFuazogU3dpcGVyT3B0aW9uc1snbG9vcEZpbGxHcm91cFdpdGhCbGFuayddO1xuICBASW5wdXQoKSBsb29wUHJldmVudHNTbGlkZTogU3dpcGVyT3B0aW9uc1snbG9vcFByZXZlbnRzU2xpZGUnXTtcbiAgQElucHV0KCkgYWxsb3dTbGlkZVByZXY6IFN3aXBlck9wdGlvbnNbJ2FsbG93U2xpZGVQcmV2J107XG4gIEBJbnB1dCgpIGFsbG93U2xpZGVOZXh0OiBTd2lwZXJPcHRpb25zWydhbGxvd1NsaWRlTmV4dCddO1xuICBASW5wdXQoKSBzd2lwZUhhbmRsZXI6IFN3aXBlck9wdGlvbnNbJ3N3aXBlSGFuZGxlciddO1xuICBASW5wdXQoKSBub1N3aXBpbmc6IFN3aXBlck9wdGlvbnNbJ25vU3dpcGluZyddO1xuICBASW5wdXQoKSBub1N3aXBpbmdDbGFzczogU3dpcGVyT3B0aW9uc1snbm9Td2lwaW5nQ2xhc3MnXTtcbiAgQElucHV0KCkgbm9Td2lwaW5nU2VsZWN0b3I6IFN3aXBlck9wdGlvbnNbJ25vU3dpcGluZ1NlbGVjdG9yJ107XG4gIEBJbnB1dCgpIHBhc3NpdmVMaXN0ZW5lcnM6IFN3aXBlck9wdGlvbnNbJ3Bhc3NpdmVMaXN0ZW5lcnMnXTtcbiAgQElucHV0KCkgY29udGFpbmVyTW9kaWZpZXJDbGFzczogU3dpcGVyT3B0aW9uc1snY29udGFpbmVyTW9kaWZpZXJDbGFzcyddO1xuICBASW5wdXQoKSBzbGlkZUNsYXNzOiBTd2lwZXJPcHRpb25zWydzbGlkZUNsYXNzJ10gPSAnc3dpcGVyLXNsaWRlJztcbiAgQElucHV0KCkgc2xpZGVCbGFua0NsYXNzOiBTd2lwZXJPcHRpb25zWydzbGlkZUJsYW5rQ2xhc3MnXTtcbiAgQElucHV0KCkgc2xpZGVBY3RpdmVDbGFzczogU3dpcGVyT3B0aW9uc1snc2xpZGVBY3RpdmVDbGFzcyddO1xuICBASW5wdXQoKSBzbGlkZUR1cGxpY2F0ZUFjdGl2ZUNsYXNzOiBTd2lwZXJPcHRpb25zWydzbGlkZUR1cGxpY2F0ZUFjdGl2ZUNsYXNzJ107XG4gIEBJbnB1dCgpIHNsaWRlVmlzaWJsZUNsYXNzOiBTd2lwZXJPcHRpb25zWydzbGlkZVZpc2libGVDbGFzcyddO1xuICBASW5wdXQoKSBzbGlkZUR1cGxpY2F0ZUNsYXNzOiBTd2lwZXJPcHRpb25zWydzbGlkZUR1cGxpY2F0ZUNsYXNzJ107XG4gIEBJbnB1dCgpIHNsaWRlTmV4dENsYXNzOiBTd2lwZXJPcHRpb25zWydzbGlkZU5leHRDbGFzcyddO1xuICBASW5wdXQoKSBzbGlkZUR1cGxpY2F0ZU5leHRDbGFzczogU3dpcGVyT3B0aW9uc1snc2xpZGVEdXBsaWNhdGVOZXh0Q2xhc3MnXTtcbiAgQElucHV0KCkgc2xpZGVQcmV2Q2xhc3M6IFN3aXBlck9wdGlvbnNbJ3NsaWRlUHJldkNsYXNzJ107XG4gIEBJbnB1dCgpIHNsaWRlRHVwbGljYXRlUHJldkNsYXNzOiBTd2lwZXJPcHRpb25zWydzbGlkZUR1cGxpY2F0ZVByZXZDbGFzcyddO1xuICBASW5wdXQoKSB3cmFwcGVyQ2xhc3M6IFN3aXBlck9wdGlvbnNbJ3dyYXBwZXJDbGFzcyddID0gJ3N3aXBlci13cmFwcGVyJztcbiAgQElucHV0KCkgcnVuQ2FsbGJhY2tzT25Jbml0OiBTd2lwZXJPcHRpb25zWydydW5DYWxsYmFja3NPbkluaXQnXTtcbiAgQElucHV0KCkgb2JzZXJ2ZVBhcmVudHM6IFN3aXBlck9wdGlvbnNbJ29ic2VydmVQYXJlbnRzJ107XG4gIEBJbnB1dCgpIG9ic2VydmVTbGlkZUNoaWxkcmVuOiBTd2lwZXJPcHRpb25zWydvYnNlcnZlU2xpZGVDaGlsZHJlbiddO1xuICBASW5wdXQoKSBhMTF5OiBTd2lwZXJPcHRpb25zWydhMTF5J107XG4gIEBJbnB1dCgpIGF1dG9wbGF5OiBTd2lwZXJPcHRpb25zWydhdXRvcGxheSddO1xuICBASW5wdXQoKSBjb250cm9sbGVyOiBTd2lwZXJPcHRpb25zWydjb250cm9sbGVyJ107XG4gIEBJbnB1dCgpIGNvdmVyZmxvd0VmZmVjdDogU3dpcGVyT3B0aW9uc1snY292ZXJmbG93RWZmZWN0J107XG4gIEBJbnB1dCgpIGN1YmVFZmZlY3Q6IFN3aXBlck9wdGlvbnNbJ2N1YmVFZmZlY3QnXTtcbiAgQElucHV0KCkgZmFkZUVmZmVjdDogU3dpcGVyT3B0aW9uc1snZmFkZUVmZmVjdCddO1xuICBASW5wdXQoKSBmbGlwRWZmZWN0OiBTd2lwZXJPcHRpb25zWydmbGlwRWZmZWN0J107XG4gIEBJbnB1dCgpIGNyZWF0aXZlRWZmZWN0OiBTd2lwZXJPcHRpb25zWydjcmVhdGl2ZUVmZmVjdCddO1xuICBASW5wdXQoKSBjYXJkc0VmZmVjdDogU3dpcGVyT3B0aW9uc1snY2FyZHNFZmZlY3QnXTtcbiAgQElucHV0KCkgaGFzaE5hdmlnYXRpb246IFN3aXBlck9wdGlvbnNbJ2hhc2hOYXZpZ2F0aW9uJ107XG4gIEBJbnB1dCgpIGhpc3Rvcnk6IFN3aXBlck9wdGlvbnNbJ2hpc3RvcnknXTtcbiAgQElucHV0KCkga2V5Ym9hcmQ6IFN3aXBlck9wdGlvbnNbJ2tleWJvYXJkJ107XG4gIEBJbnB1dCgpIGxhenk6IFN3aXBlck9wdGlvbnNbJ2xhenknXTtcbiAgQElucHV0KCkgbW91c2V3aGVlbDogU3dpcGVyT3B0aW9uc1snbW91c2V3aGVlbCddO1xuICBASW5wdXQoKSBwYXJhbGxheDogU3dpcGVyT3B0aW9uc1sncGFyYWxsYXgnXTtcbiAgQElucHV0KCkgdGh1bWJzOiBTd2lwZXJPcHRpb25zWyd0aHVtYnMnXTtcbiAgQElucHV0KCkgem9vbTogU3dpcGVyT3B0aW9uc1snem9vbSddO1xuICBASW5wdXQoKSBjbGFzczogc3RyaW5nO1xuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICBASW5wdXQoKVxuICBzZXQgbmF2aWdhdGlvbih2YWwpIHtcbiAgICBjb25zdCBjdXJyZW50TmV4dCA9XG4gICAgICB0eXBlb2YgdGhpcy5fbmF2aWdhdGlvbiAhPT0gJ2Jvb2xlYW4nICYmIHRoaXMuX25hdmlnYXRpb24gIT09ICcnXG4gICAgICAgID8gdGhpcy5fbmF2aWdhdGlvbj8ubmV4dEVsXG4gICAgICAgIDogbnVsbDtcbiAgICBjb25zdCBjdXJyZW50UHJldiA9XG4gICAgICB0eXBlb2YgdGhpcy5fbmF2aWdhdGlvbiAhPT0gJ2Jvb2xlYW4nICYmIHRoaXMuX25hdmlnYXRpb24gIT09ICcnXG4gICAgICAgID8gdGhpcy5fbmF2aWdhdGlvbj8ucHJldkVsXG4gICAgICAgIDogbnVsbDtcbiAgICB0aGlzLl9uYXZpZ2F0aW9uID0gc2V0UHJvcGVydHkodmFsLCB7XG4gICAgICBuZXh0RWw6IGN1cnJlbnROZXh0IHx8IG51bGwsXG4gICAgICBwcmV2RWw6IGN1cnJlbnRQcmV2IHx8IG51bGwsXG4gICAgfSk7XG4gICAgdGhpcy5zaG93TmF2aWdhdGlvbiA9ICEoXG4gICAgICBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsKSAhPT0gdHJ1ZSB8fFxuICAgICAgKHRoaXMuX25hdmlnYXRpb24gJiZcbiAgICAgICAgdHlwZW9mIHRoaXMuX25hdmlnYXRpb24gIT09ICdib29sZWFuJyAmJlxuICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uLnByZXZFbCAhPT0gdGhpcy5fcHJldkVsUmVmPy5uYXRpdmVFbGVtZW50ICYmXG4gICAgICAgICh0aGlzLl9uYXZpZ2F0aW9uLnByZXZFbCAhPT0gbnVsbCB8fCB0aGlzLl9uYXZpZ2F0aW9uLm5leHRFbCAhPT0gbnVsbCkgJiZcbiAgICAgICAgKHR5cGVvZiB0aGlzLl9uYXZpZ2F0aW9uLm5leHRFbCA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgICB0eXBlb2YgdGhpcy5fbmF2aWdhdGlvbi5wcmV2RWwgPT09ICdzdHJpbmcnIHx8XG4gICAgICAgICAgdHlwZW9mIHRoaXMuX25hdmlnYXRpb24ubmV4dEVsID09PSAnb2JqZWN0JyB8fFxuICAgICAgICAgIHR5cGVvZiB0aGlzLl9uYXZpZ2F0aW9uLnByZXZFbCA9PT0gJ29iamVjdCcpKVxuICAgICk7XG4gIH1cbiAgZ2V0IG5hdmlnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb247XG4gIH1cbiAgcHJpdmF0ZSBfbmF2aWdhdGlvbjogTmF2aWdhdGlvbk9wdGlvbnMgfCBib29sZWFuIHwgJyc7XG4gIHNob3dOYXZpZ2F0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBzZXQgcGFnaW5hdGlvbih2YWwpIHtcbiAgICBjb25zdCBjdXJyZW50ID1cbiAgICAgIHR5cGVvZiB0aGlzLl9wYWdpbmF0aW9uICE9PSAnYm9vbGVhbicgJiYgdGhpcy5fcGFnaW5hdGlvbiAhPT0gJydcbiAgICAgICAgPyB0aGlzLl9wYWdpbmF0aW9uPy5lbFxuICAgICAgICA6IG51bGw7XG4gICAgdGhpcy5fcGFnaW5hdGlvbiA9IHNldFByb3BlcnR5KHZhbCwge1xuICAgICAgZWw6IGN1cnJlbnQgfHwgbnVsbCxcbiAgICB9KTtcbiAgICB0aGlzLnNob3dQYWdpbmF0aW9uID0gaXNTaG93RWwodmFsLCB0aGlzLl9wYWdpbmF0aW9uLCB0aGlzLl9wYWdpbmF0aW9uRWxSZWYpO1xuICB9XG4gIGdldCBwYWdpbmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9wYWdpbmF0aW9uO1xuICB9XG4gIHByaXZhdGUgX3BhZ2luYXRpb246IFBhZ2luYXRpb25PcHRpb25zIHwgYm9vbGVhbiB8ICcnO1xuICBzaG93UGFnaW5hdGlvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgc2V0IHNjcm9sbGJhcih2YWwpIHtcbiAgICBjb25zdCBjdXJyZW50ID1cbiAgICAgIHR5cGVvZiB0aGlzLl9zY3JvbGxiYXIgIT09ICdib29sZWFuJyAmJiB0aGlzLl9zY3JvbGxiYXIgIT09ICcnID8gdGhpcy5fc2Nyb2xsYmFyPy5lbCA6IG51bGw7XG4gICAgdGhpcy5fc2Nyb2xsYmFyID0gc2V0UHJvcGVydHkodmFsLCB7XG4gICAgICBlbDogY3VycmVudCB8fCBudWxsLFxuICAgIH0pO1xuICAgIHRoaXMuc2hvd1Njcm9sbGJhciA9IGlzU2hvd0VsKHZhbCwgdGhpcy5fc2Nyb2xsYmFyLCB0aGlzLl9zY3JvbGxiYXJFbFJlZik7XG4gIH1cbiAgZ2V0IHNjcm9sbGJhcigpIHtcbiAgICByZXR1cm4gdGhpcy5fc2Nyb2xsYmFyO1xuICB9XG4gIHByaXZhdGUgX3Njcm9sbGJhcjogU2Nyb2xsYmFyT3B0aW9ucyB8IGJvb2xlYW4gfCAnJztcbiAgc2hvd1Njcm9sbGJhcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgc2V0IHZpcnR1YWwodmFsKSB7XG4gICAgdGhpcy5fdmlydHVhbCA9IHNldFByb3BlcnR5KHZhbCk7XG4gIH1cbiAgZ2V0IHZpcnR1YWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpcnR1YWw7XG4gIH1cbiAgcHJpdmF0ZSBfdmlydHVhbDogVmlydHVhbE9wdGlvbnMgfCBib29sZWFuIHwgJyc7XG5cbiAgQElucHV0KClcbiAgc2V0IGluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zb2xlLndhcm4oJ2BbKGluZGV4KV1gIHByb3AgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHVwY29taW5nIHZlcnNpb25zJyk7XG4gICAgdGhpcy5zZXRJbmRleChpbmRleCk7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IGNvbmZpZyh2YWw6IFN3aXBlck9wdGlvbnMpIHtcbiAgICB0aGlzLnVwZGF0ZVN3aXBlcih2YWwpO1xuICAgIGNvbnN0IHsgcGFyYW1zIH0gPSBnZXRQYXJhbXModmFsKTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIHBhcmFtcyk7XG4gIH1cbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ19iZWZvcmVCcmVha3BvaW50Jykgc19fYmVmb3JlQnJlYWtwb2ludDogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snX2JlZm9yZUJyZWFrcG9pbnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ19jb250YWluZXJDbGFzc2VzJykgc19fY29udGFpbmVyQ2xhc3NlczogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snX2NvbnRhaW5lckNsYXNzZXMnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ19zbGlkZUNsYXNzJykgc19fc2xpZGVDbGFzczogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snX3NsaWRlQ2xhc3MnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ19zd2lwZXInKSBzX19zd2lwZXI6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ19zd2lwZXInXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2FjdGl2ZUluZGV4Q2hhbmdlJykgc19hY3RpdmVJbmRleENoYW5nZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snYWN0aXZlSW5kZXhDaGFuZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2FmdGVySW5pdCcpIHNfYWZ0ZXJJbml0OiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydhZnRlckluaXQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2F1dG9wbGF5Jykgc19hdXRvcGxheTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snYXV0b3BsYXknXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2F1dG9wbGF5U3RhcnQnKSBzX2F1dG9wbGF5U3RhcnQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2F1dG9wbGF5U3RhcnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2F1dG9wbGF5U3RvcCcpIHNfYXV0b3BsYXlTdG9wOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydhdXRvcGxheVN0b3AnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2JlZm9yZURlc3Ryb3knKSBzX2JlZm9yZURlc3Ryb3k6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2JlZm9yZURlc3Ryb3knXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2JlZm9yZUluaXQnKSBzX2JlZm9yZUluaXQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2JlZm9yZUluaXQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2JlZm9yZUxvb3BGaXgnKSBzX2JlZm9yZUxvb3BGaXg6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2JlZm9yZUxvb3BGaXgnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2JlZm9yZVJlc2l6ZScpIHNfYmVmb3JlUmVzaXplOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydiZWZvcmVSZXNpemUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2JlZm9yZVNsaWRlQ2hhbmdlU3RhcnQnKSBzX2JlZm9yZVNsaWRlQ2hhbmdlU3RhcnQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2JlZm9yZVNsaWRlQ2hhbmdlU3RhcnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2JlZm9yZVRyYW5zaXRpb25TdGFydCcpIHNfYmVmb3JlVHJhbnNpdGlvblN0YXJ0OiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydiZWZvcmVUcmFuc2l0aW9uU3RhcnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2JyZWFrcG9pbnQnKSBzX2JyZWFrcG9pbnQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2JyZWFrcG9pbnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2NoYW5nZURpcmVjdGlvbicpIHNfY2hhbmdlRGlyZWN0aW9uOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydjaGFuZ2VEaXJlY3Rpb24nXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2NsaWNrJykgc19jbGljazogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snY2xpY2snXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2RvdWJsZVRhcCcpIHNfZG91YmxlVGFwOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydkb3VibGVUYXAnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2RvdWJsZUNsaWNrJykgc19kb3VibGVDbGljazogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snZG91YmxlQ2xpY2snXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2Rlc3Ryb3knKSBzX2Rlc3Ryb3k6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2Rlc3Ryb3knXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2Zyb21FZGdlJykgc19mcm9tRWRnZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snZnJvbUVkZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2hhc2hDaGFuZ2UnKSBzX2hhc2hDaGFuZ2U6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2hhc2hDaGFuZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2hhc2hTZXQnKSBzX2hhc2hTZXQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2hhc2hTZXQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2ltYWdlc1JlYWR5Jykgc19pbWFnZXNSZWFkeTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snaW1hZ2VzUmVhZHknXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2luaXQnKSBzX2luaXQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2luaXQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2tleVByZXNzJykgc19rZXlQcmVzczogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1sna2V5UHJlc3MnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2xhenlJbWFnZUxvYWQnKSBzX2xhenlJbWFnZUxvYWQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2xhenlJbWFnZUxvYWQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2xhenlJbWFnZVJlYWR5Jykgc19sYXp5SW1hZ2VSZWFkeTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snbGF6eUltYWdlUmVhZHknXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2xvb3BGaXgnKSBzX2xvb3BGaXg6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2xvb3BGaXgnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ21vbWVudHVtQm91bmNlJykgc19tb21lbnR1bUJvdW5jZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snbW9tZW50dW1Cb3VuY2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ25hdmlnYXRpb25IaWRlJykgc19uYXZpZ2F0aW9uSGlkZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snbmF2aWdhdGlvbkhpZGUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ25hdmlnYXRpb25TaG93Jykgc19uYXZpZ2F0aW9uU2hvdzogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snbmF2aWdhdGlvblNob3cnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ29ic2VydmVyVXBkYXRlJykgc19vYnNlcnZlclVwZGF0ZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snb2JzZXJ2ZXJVcGRhdGUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ29yaWVudGF0aW9uY2hhbmdlJykgc19vcmllbnRhdGlvbmNoYW5nZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snb3JpZW50YXRpb25jaGFuZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3BhZ2luYXRpb25IaWRlJykgc19wYWdpbmF0aW9uSGlkZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1sncGFnaW5hdGlvbkhpZGUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3BhZ2luYXRpb25SZW5kZXInKSBzX3BhZ2luYXRpb25SZW5kZXI6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3BhZ2luYXRpb25SZW5kZXInXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3BhZ2luYXRpb25TaG93Jykgc19wYWdpbmF0aW9uU2hvdzogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1sncGFnaW5hdGlvblNob3cnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3BhZ2luYXRpb25VcGRhdGUnKSBzX3BhZ2luYXRpb25VcGRhdGU6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3BhZ2luYXRpb25VcGRhdGUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3Byb2dyZXNzJykgc19wcm9ncmVzczogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1sncHJvZ3Jlc3MnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3JlYWNoQmVnaW5uaW5nJykgc19yZWFjaEJlZ2lubmluZzogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1sncmVhY2hCZWdpbm5pbmcnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3JlYWNoRW5kJykgc19yZWFjaEVuZDogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1sncmVhY2hFbmQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3JlYWxJbmRleENoYW5nZScpIHNfcmVhbEluZGV4Q2hhbmdlOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydyZWFsSW5kZXhDaGFuZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3Jlc2l6ZScpIHNfcmVzaXplOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydyZXNpemUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3Njcm9sbCcpIHNfc2Nyb2xsOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydzY3JvbGwnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3Njcm9sbGJhckRyYWdFbmQnKSBzX3Njcm9sbGJhckRyYWdFbmQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3Njcm9sbGJhckRyYWdFbmQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3Njcm9sbGJhckRyYWdNb3ZlJykgc19zY3JvbGxiYXJEcmFnTW92ZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snc2Nyb2xsYmFyRHJhZ01vdmUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3Njcm9sbGJhckRyYWdTdGFydCcpIHNfc2Nyb2xsYmFyRHJhZ1N0YXJ0OiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydzY3JvbGxiYXJEcmFnU3RhcnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NldFRyYW5zaXRpb24nKSBzX3NldFRyYW5zaXRpb246IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3NldFRyYW5zaXRpb24nXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NldFRyYW5zbGF0ZScpIHNfc2V0VHJhbnNsYXRlOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydzZXRUcmFuc2xhdGUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlQ2hhbmdlJykgc19zbGlkZUNoYW5nZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snc2xpZGVDaGFuZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlQ2hhbmdlVHJhbnNpdGlvbkVuZCcpIHNfc2xpZGVDaGFuZ2VUcmFuc2l0aW9uRW5kOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydzbGlkZUNoYW5nZVRyYW5zaXRpb25FbmQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlQ2hhbmdlVHJhbnNpdGlvblN0YXJ0Jykgc19zbGlkZUNoYW5nZVRyYW5zaXRpb25TdGFydDogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snc2xpZGVDaGFuZ2VUcmFuc2l0aW9uU3RhcnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlTmV4dFRyYW5zaXRpb25FbmQnKSBzX3NsaWRlTmV4dFRyYW5zaXRpb25FbmQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3NsaWRlTmV4dFRyYW5zaXRpb25FbmQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlTmV4dFRyYW5zaXRpb25TdGFydCcpIHNfc2xpZGVOZXh0VHJhbnNpdGlvblN0YXJ0OiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydzbGlkZU5leHRUcmFuc2l0aW9uU3RhcnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlUHJldlRyYW5zaXRpb25FbmQnKSBzX3NsaWRlUHJldlRyYW5zaXRpb25FbmQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3NsaWRlUHJldlRyYW5zaXRpb25FbmQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlUHJldlRyYW5zaXRpb25TdGFydCcpIHNfc2xpZGVQcmV2VHJhbnNpdGlvblN0YXJ0OiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydzbGlkZVByZXZUcmFuc2l0aW9uU3RhcnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlUmVzZXRUcmFuc2l0aW9uU3RhcnQnKSBzX3NsaWRlUmVzZXRUcmFuc2l0aW9uU3RhcnQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3NsaWRlUmVzZXRUcmFuc2l0aW9uU3RhcnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlUmVzZXRUcmFuc2l0aW9uRW5kJykgc19zbGlkZVJlc2V0VHJhbnNpdGlvbkVuZDogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snc2xpZGVSZXNldFRyYW5zaXRpb25FbmQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlck1vdmUnKSBzX3NsaWRlck1vdmU6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3NsaWRlck1vdmUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlckZpcnN0TW92ZScpIHNfc2xpZGVyRmlyc3RNb3ZlOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydzbGlkZXJGaXJzdE1vdmUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlc0xlbmd0aENoYW5nZScpIHNfc2xpZGVzTGVuZ3RoQ2hhbmdlOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydzbGlkZXNMZW5ndGhDaGFuZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlc0dyaWRMZW5ndGhDaGFuZ2UnKSBzX3NsaWRlc0dyaWRMZW5ndGhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3NsaWRlc0dyaWRMZW5ndGhDaGFuZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NuYXBHcmlkTGVuZ3RoQ2hhbmdlJykgc19zbmFwR3JpZExlbmd0aENoYW5nZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snc25hcEdyaWRMZW5ndGhDaGFuZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NuYXBJbmRleENoYW5nZScpIHNfc25hcEluZGV4Q2hhbmdlOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydzbmFwSW5kZXhDaGFuZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3RhcCcpIHNfdGFwOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWyd0YXAnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3RvRWRnZScpIHNfdG9FZGdlOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWyd0b0VkZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3RvdWNoRW5kJykgc190b3VjaEVuZDogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1sndG91Y2hFbmQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3RvdWNoTW92ZScpIHNfdG91Y2hNb3ZlOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWyd0b3VjaE1vdmUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3RvdWNoTW92ZU9wcG9zaXRlJykgc190b3VjaE1vdmVPcHBvc2l0ZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1sndG91Y2hNb3ZlT3Bwb3NpdGUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3RvdWNoU3RhcnQnKSBzX3RvdWNoU3RhcnQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3RvdWNoU3RhcnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3RyYW5zaXRpb25FbmQnKSBzX3RyYW5zaXRpb25FbmQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3RyYW5zaXRpb25FbmQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3RyYW5zaXRpb25TdGFydCcpIHNfdHJhbnNpdGlvblN0YXJ0OiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWyd0cmFuc2l0aW9uU3RhcnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3VwZGF0ZScpIHNfdXBkYXRlOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWyd1cGRhdGUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3pvb21DaGFuZ2UnKSBzX3pvb21DaGFuZ2U6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3pvb21DaGFuZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3N3aXBlcicpIHNfc3dpcGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKSBpbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3ByZXZFbFJlZicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBzZXQgcHJldkVsUmVmKGVsOiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy5fcHJldkVsUmVmID0gZWw7XG4gICAgdGhpcy5fc2V0RWxlbWVudChlbCwgdGhpcy5uYXZpZ2F0aW9uLCAnbmF2aWdhdGlvbicsICdwcmV2RWwnKTtcbiAgfVxuICBfcHJldkVsUmVmOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCduZXh0RWxSZWYnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgc2V0IG5leHRFbFJlZihlbDogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX25leHRFbFJlZiA9IGVsO1xuICAgIHRoaXMuX3NldEVsZW1lbnQoZWwsIHRoaXMubmF2aWdhdGlvbiwgJ25hdmlnYXRpb24nLCAnbmV4dEVsJyk7XG4gIH1cbiAgX25leHRFbFJlZjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc2Nyb2xsYmFyRWxSZWYnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgc2V0IHNjcm9sbGJhckVsUmVmKGVsOiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy5fc2Nyb2xsYmFyRWxSZWYgPSBlbDtcbiAgICB0aGlzLl9zZXRFbGVtZW50KGVsLCB0aGlzLnNjcm9sbGJhciwgJ3Njcm9sbGJhcicpO1xuICB9XG4gIF9zY3JvbGxiYXJFbFJlZjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgncGFnaW5hdGlvbkVsUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHNldCBwYWdpbmF0aW9uRWxSZWYoZWw6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLl9wYWdpbmF0aW9uRWxSZWYgPSBlbDtcbiAgICB0aGlzLl9zZXRFbGVtZW50KGVsLCB0aGlzLnBhZ2luYXRpb24sICdwYWdpbmF0aW9uJyk7XG4gIH1cbiAgX3BhZ2luYXRpb25FbFJlZjogRWxlbWVudFJlZjtcbiAgQENvbnRlbnRDaGlsZHJlbihTd2lwZXJTbGlkZURpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogZmFsc2UsIGVtaXREaXN0aW5jdENoYW5nZXNPbmx5OiB0cnVlIH0pXG4gIHNsaWRlc0VsOiBRdWVyeUxpc3Q8U3dpcGVyU2xpZGVEaXJlY3RpdmU+O1xuICBwcml2YXRlIHNsaWRlczogU3dpcGVyU2xpZGVEaXJlY3RpdmVbXTtcblxuICBwcmVwZW5kU2xpZGVzOiBPYnNlcnZhYmxlPFN3aXBlclNsaWRlRGlyZWN0aXZlW10+O1xuICBhcHBlbmRTbGlkZXM6IE9ic2VydmFibGU8U3dpcGVyU2xpZGVEaXJlY3RpdmVbXT47XG5cbiAgc3dpcGVyUmVmOiBTd2lwZXI7XG4gIHJlYWRvbmx5IF9hY3RpdmVTbGlkZXMgPSBuZXcgU3ViamVjdDxTd2lwZXJTbGlkZURpcmVjdGl2ZVtdPigpO1xuXG4gIGdldCBhY3RpdmVTbGlkZXMoKSB7XG4gICAgaWYgKHRoaXMudmlydHVhbCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVNsaWRlcztcbiAgICB9XG4gICAgcmV0dXJuIG9mKHRoaXMuc2xpZGVzKTtcbiAgfVxuXG4gIGdldCB6b29tQ29udGFpbmVyQ2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuem9vbSAmJiB0eXBlb2YgdGhpcy56b29tICE9PSAnYm9vbGVhbidcbiAgICAgID8gdGhpcy56b29tLmNvbnRhaW5lckNsYXNzXG4gICAgICA6ICdzd2lwZXItem9vbS1jb250YWluZXInO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNvbnRhaW5lckNsYXNzZXM6IHN0cmluZyA9ICdzd2lwZXInO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgX3BsYXRmb3JtSWQ6IE9iamVjdCxcbiAgKSB7fVxuXG4gIHByaXZhdGUgX3NldEVsZW1lbnQoZWw6IEVsZW1lbnRSZWYsIHJlZjogYW55LCB1cGRhdGU6IHN0cmluZywga2V5ID0gJ2VsJykge1xuICAgIGlmICghZWwgfHwgIXJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVmICYmIGVsLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIGlmIChyZWZba2V5XSA9PT0gZWwubmF0aXZlRWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZWZba2V5XSA9IGVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuICAgIGNvbnN0IHVwZGF0ZU9iajogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcbiAgICB1cGRhdGVPYmpbdXBkYXRlXSA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVJbml0U3dpcGVyKHVwZGF0ZU9iaik7XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgeyBwYXJhbXMgfSA9IGdldFBhcmFtcyh0aGlzKTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIHBhcmFtcyk7XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY2hpbGRyZW5TbGlkZXNJbml0KCk7XG4gICAgdGhpcy5pbml0U3dpcGVyKCk7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zX3N3aXBlci5lbWl0KHRoaXMuc3dpcGVyUmVmKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2hpbGRyZW5TbGlkZXNJbml0KCkge1xuICAgIHRoaXMuc2xpZGVzQ2hhbmdlcyh0aGlzLnNsaWRlc0VsKTtcbiAgICB0aGlzLnNsaWRlc0VsLmNoYW5nZXMuc3Vic2NyaWJlKHRoaXMuc2xpZGVzQ2hhbmdlcyk7XG4gIH1cblxuICBwcml2YXRlIHNsaWRlc0NoYW5nZXMgPSAodmFsOiBRdWVyeUxpc3Q8U3dpcGVyU2xpZGVEaXJlY3RpdmU+KSA9PiB7XG4gICAgdGhpcy5zbGlkZXMgPSB2YWwubWFwKChzbGlkZTogU3dpcGVyU2xpZGVEaXJlY3RpdmUsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIHNsaWRlLnNsaWRlSW5kZXggPSBpbmRleDtcbiAgICAgIHNsaWRlLmNsYXNzTmFtZXMgPSB0aGlzLnNsaWRlQ2xhc3MgfHwgJyc7XG4gICAgICByZXR1cm4gc2xpZGU7XG4gICAgfSk7XG4gICAgaWYgKHRoaXMubG9vcCAmJiAhdGhpcy5sb29wZWRTbGlkZXMpIHtcbiAgICAgIHRoaXMuY2FsY0xvb3BlZFNsaWRlcygpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMudmlydHVhbCkge1xuICAgICAgaWYgKHRoaXMubG9vcGVkU2xpZGVzKSB7XG4gICAgICAgIHRoaXMucHJlcGVuZFNsaWRlcyA9IG9mKHRoaXMuc2xpZGVzLnNsaWNlKHRoaXMuc2xpZGVzLmxlbmd0aCAtIHRoaXMubG9vcGVkU2xpZGVzKSk7XG4gICAgICAgIHRoaXMuYXBwZW5kU2xpZGVzID0gb2YodGhpcy5zbGlkZXMuc2xpY2UoMCwgdGhpcy5sb29wZWRTbGlkZXMpKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuc3dpcGVyUmVmICYmIHRoaXMuc3dpcGVyUmVmLnZpcnR1YWwpIHtcbiAgICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuc3dpcGVyUmVmLnZpcnR1YWwuc2xpZGVzID0gdGhpcy5zbGlkZXM7XG4gICAgICAgIHRoaXMuc3dpcGVyUmVmLnZpcnR1YWwudXBkYXRlKHRydWUpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfTtcblxuICBnZXQgaXNTd2lwZXJBY3RpdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3dpcGVyUmVmICYmICF0aGlzLnN3aXBlclJlZi5kZXN0cm95ZWQ7XG4gIH1cblxuICBpbml0U3dpcGVyKCkge1xuICAgIGNvbnN0IHsgcGFyYW1zOiBzd2lwZXJQYXJhbXMsIHBhc3NlZFBhcmFtcyB9ID0gZ2V0UGFyYW1zKHRoaXMpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgc3dpcGVyUGFyYW1zKTtcbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgc3dpcGVyUGFyYW1zLmluaXQgPSBmYWxzZTtcbiAgICAgIGlmICghc3dpcGVyUGFyYW1zLnZpcnR1YWwpIHtcbiAgICAgICAgc3dpcGVyUGFyYW1zLm9ic2VydmVyID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgc3dpcGVyUGFyYW1zLm9uQW55ID0gKGV2ZW50TmFtZToga2V5b2YgU3dpcGVyQ29tcG9uZW50LCAuLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICBjb25zdCBlbWl0dGVyID0gdGhpc1soJ3NfJyArIGV2ZW50TmFtZSkgYXMga2V5b2YgU3dpcGVyQ29tcG9uZW50XSBhcyBFdmVudEVtaXR0ZXI8YW55PjtcbiAgICAgICAgaWYgKGVtaXR0ZXIpIHtcbiAgICAgICAgICBlbWl0dGVyLmVtaXQoLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBjb25zdCBfc2xpZGVDbGFzc2VzOiBTd2lwZXJFdmVudHNbJ19zbGlkZUNsYXNzZXMnXSA9IChfLCB1cGRhdGVkKSA9PiB7XG4gICAgICAgIHVwZGF0ZWQuZm9yRWFjaCgoeyBzbGlkZUVsLCBjbGFzc05hbWVzIH0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0YUluZGV4ID0gc2xpZGVFbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4Jyk7XG4gICAgICAgICAgY29uc3Qgc2xpZGVJbmRleCA9IGRhdGFJbmRleCA/IHBhcnNlSW50KGRhdGFJbmRleCkgOiBpbmRleDtcbiAgICAgICAgICBpZiAodGhpcy52aXJ0dWFsKSB7XG4gICAgICAgICAgICBjb25zdCB2aXJ0dWFsU2xpZGUgPSB0aGlzLnNsaWRlcy5maW5kKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBpdGVtLnZpcnR1YWxJbmRleCAmJiBpdGVtLnZpcnR1YWxJbmRleCA9PT0gc2xpZGVJbmRleDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHZpcnR1YWxTbGlkZSkge1xuICAgICAgICAgICAgICB2aXJ0dWFsU2xpZGUuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5zbGlkZXNbc2xpZGVJbmRleF0pIHtcbiAgICAgICAgICAgIHRoaXMuc2xpZGVzW3NsaWRlSW5kZXhdLmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH07XG4gICAgICBjb25zdCBfY29udGFpbmVyQ2xhc3NlczogU3dpcGVyRXZlbnRzWydfY29udGFpbmVyQ2xhc3NlcyddID0gKF8sIGNsYXNzZXMpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb250YWluZXJDbGFzc2VzID0gY2xhc3NlcztcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgT2JqZWN0LmFzc2lnbihzd2lwZXJQYXJhbXMub24sIHtcbiAgICAgICAgX2NvbnRhaW5lckNsYXNzZXMsXG4gICAgICAgIF9zbGlkZUNsYXNzZXMsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHN3aXBlclJlZiA9IG5ldyBTd2lwZXIoc3dpcGVyUGFyYW1zKTtcbiAgICAgIHN3aXBlclJlZi5sb29wQ3JlYXRlID0gKCkgPT4ge307XG4gICAgICBzd2lwZXJSZWYubG9vcERlc3Ryb3kgPSAoKSA9PiB7fTtcbiAgICAgIGlmIChzd2lwZXJQYXJhbXMubG9vcCkge1xuICAgICAgICBzd2lwZXJSZWYubG9vcGVkU2xpZGVzID0gdGhpcy5sb29wZWRTbGlkZXM7XG4gICAgICB9XG4gICAgICBjb25zdCBpc1ZpcnR1YWxFbmFibGVkID1cbiAgICAgICAgdHlwZW9mIHN3aXBlclJlZi5wYXJhbXMudmlydHVhbCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgdHlwZW9mIHN3aXBlclJlZi5wYXJhbXMudmlydHVhbCAhPT0gJ2Jvb2xlYW4nICYmXG4gICAgICAgIHN3aXBlclJlZi5wYXJhbXMudmlydHVhbC5lbmFibGVkO1xuICAgICAgaWYgKHN3aXBlclJlZi52aXJ0dWFsICYmIGlzVmlydHVhbEVuYWJsZWQpIHtcbiAgICAgICAgc3dpcGVyUmVmLnZpcnR1YWwuc2xpZGVzID0gdGhpcy5zbGlkZXM7XG4gICAgICAgIGNvbnN0IGV4dGVuZFdpdGggPSB7XG4gICAgICAgICAgY2FjaGU6IGZhbHNlLFxuICAgICAgICAgIHNsaWRlczogdGhpcy5zbGlkZXMsXG4gICAgICAgICAgcmVuZGVyRXh0ZXJuYWw6IHRoaXMudXBkYXRlVmlydHVhbFNsaWRlcyxcbiAgICAgICAgICByZW5kZXJFeHRlcm5hbFVwZGF0ZTogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIGV4dGVuZChzd2lwZXJSZWYucGFyYW1zLnZpcnR1YWwsIGV4dGVuZFdpdGgpO1xuICAgICAgICBleHRlbmQoc3dpcGVyUmVmLm9yaWdpbmFsUGFyYW1zLnZpcnR1YWwsIGV4dGVuZFdpdGgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5fcGxhdGZvcm1JZCkpIHtcbiAgICAgICAgdGhpcy5zd2lwZXJSZWYgPSBzd2lwZXJSZWYuaW5pdCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGlzRW5hYmxlZCA9XG4gICAgICAgICAgdHlwZW9mIHRoaXMuc3dpcGVyUmVmLnBhcmFtcy52aXJ0dWFsICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgIHR5cGVvZiB0aGlzLnN3aXBlclJlZi5wYXJhbXMudmlydHVhbCAhPT0gJ2Jvb2xlYW4nICYmXG4gICAgICAgICAgdGhpcy5zd2lwZXJSZWYucGFyYW1zLnZpcnR1YWwuZW5hYmxlZDtcbiAgICAgICAgaWYgKHRoaXMuc3dpcGVyUmVmLnZpcnR1YWwgJiYgaXNFbmFibGVkKSB7XG4gICAgICAgICAgdGhpcy5zd2lwZXJSZWYudmlydHVhbC51cGRhdGUodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBzd2lwZXJSZWYub24oJ3NsaWRlQ2hhbmdlJywgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaW5kZXhDaGFuZ2UuZW1pdCh0aGlzLnN3aXBlclJlZi5yZWFsSW5kZXgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0eWxlOiBhbnkgPSBudWxsO1xuICBjdXJyZW50VmlydHVhbERhdGE6IGFueTsgLy8gVE9ETzogdHlwZSB2aXJ0dWFsRGF0YTtcbiAgcHJpdmF0ZSB1cGRhdGVWaXJ0dWFsU2xpZGVzID0gKHZpcnR1YWxEYXRhOiBhbnkpID0+IHtcbiAgICAvLyBUT0RPOiB0eXBlIHZpcnR1YWxEYXRhXG4gICAgaWYgKFxuICAgICAgIXRoaXMuc3dpcGVyUmVmIHx8XG4gICAgICAodGhpcy5jdXJyZW50VmlydHVhbERhdGEgJiZcbiAgICAgICAgdGhpcy5jdXJyZW50VmlydHVhbERhdGEuZnJvbSA9PT0gdmlydHVhbERhdGEuZnJvbSAmJlxuICAgICAgICB0aGlzLmN1cnJlbnRWaXJ0dWFsRGF0YS50byA9PT0gdmlydHVhbERhdGEudG8gJiZcbiAgICAgICAgdGhpcy5jdXJyZW50VmlydHVhbERhdGEub2Zmc2V0ID09PSB2aXJ0dWFsRGF0YS5vZmZzZXQpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3R5bGUgPSB0aGlzLnN3aXBlclJlZi5pc0hvcml6b250YWwoKVxuICAgICAgPyB7XG4gICAgICAgICAgW3RoaXMuc3dpcGVyUmVmLnJ0bFRyYW5zbGF0ZSA/ICdyaWdodCcgOiAnbGVmdCddOiBgJHt2aXJ0dWFsRGF0YS5vZmZzZXR9cHhgLFxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICB0b3A6IGAke3ZpcnR1YWxEYXRhLm9mZnNldH1weGAsXG4gICAgICAgIH07XG4gICAgdGhpcy5jdXJyZW50VmlydHVhbERhdGEgPSB2aXJ0dWFsRGF0YTtcbiAgICB0aGlzLl9hY3RpdmVTbGlkZXMubmV4dCh2aXJ0dWFsRGF0YS5zbGlkZXMpO1xuICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLnN3aXBlclJlZi51cGRhdGVTbGlkZXMoKTtcbiAgICAgIHRoaXMuc3dpcGVyUmVmLnVwZGF0ZVByb2dyZXNzKCk7XG4gICAgICB0aGlzLnN3aXBlclJlZi51cGRhdGVTbGlkZXNDbGFzc2VzKCk7XG4gICAgICBpZiAodGhpcy5zd2lwZXJSZWYubGF6eSAmJiB0aGlzLnN3aXBlclJlZi5wYXJhbXMubGF6eVsnZW5hYmxlZCddKSB7XG4gICAgICAgIHRoaXMuc3dpcGVyUmVmLmxhenkubG9hZCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5zd2lwZXJSZWYudmlydHVhbC51cGRhdGUodHJ1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9O1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZWRQYXJhbXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLnVwZGF0ZVN3aXBlcihjaGFuZ2VkUGFyYW1zKTtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB1cGRhdGVJbml0U3dpcGVyKGNoYW5nZWRQYXJhbXM6IGFueSkge1xuICAgIGlmICghKGNoYW5nZWRQYXJhbXMgJiYgdGhpcy5zd2lwZXJSZWYgJiYgIXRoaXMuc3dpcGVyUmVmLmRlc3Ryb3llZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwYXJhbXM6IGN1cnJlbnRQYXJhbXMsXG4gICAgICAgIHBhZ2luYXRpb24sXG4gICAgICAgIG5hdmlnYXRpb24sXG4gICAgICAgIHNjcm9sbGJhcixcbiAgICAgICAgdmlydHVhbCxcbiAgICAgICAgdGh1bWJzLFxuICAgICAgfSA9IHRoaXMuc3dpcGVyUmVmO1xuXG4gICAgICBpZiAoY2hhbmdlZFBhcmFtcy5wYWdpbmF0aW9uKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnBhZ2luYXRpb24gJiZcbiAgICAgICAgICB0eXBlb2YgdGhpcy5wYWdpbmF0aW9uICE9PSAnYm9vbGVhbicgJiZcbiAgICAgICAgICB0aGlzLnBhZ2luYXRpb24uZWwgJiZcbiAgICAgICAgICBwYWdpbmF0aW9uICYmXG4gICAgICAgICAgIXBhZ2luYXRpb24uZWxcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVQYXJhbWV0ZXIoJ3BhZ2luYXRpb24nLCB0aGlzLnBhZ2luYXRpb24pO1xuICAgICAgICAgIHBhZ2luYXRpb24uaW5pdCgpO1xuICAgICAgICAgIHBhZ2luYXRpb24ucmVuZGVyKCk7XG4gICAgICAgICAgcGFnaW5hdGlvbi51cGRhdGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwYWdpbmF0aW9uLmRlc3Ryb3koKTtcbiAgICAgICAgICBwYWdpbmF0aW9uLmVsID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY2hhbmdlZFBhcmFtcy5zY3JvbGxiYXIpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuc2Nyb2xsYmFyICYmXG4gICAgICAgICAgdHlwZW9mIHRoaXMuc2Nyb2xsYmFyICE9PSAnYm9vbGVhbicgJiZcbiAgICAgICAgICB0aGlzLnNjcm9sbGJhci5lbCAmJlxuICAgICAgICAgIHNjcm9sbGJhciAmJlxuICAgICAgICAgICFzY3JvbGxiYXIuZWxcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVQYXJhbWV0ZXIoJ3Njcm9sbGJhcicsIHRoaXMuc2Nyb2xsYmFyKTtcbiAgICAgICAgICBzY3JvbGxiYXIuaW5pdCgpO1xuICAgICAgICAgIHNjcm9sbGJhci51cGRhdGVTaXplKCk7XG4gICAgICAgICAgc2Nyb2xsYmFyLnNldFRyYW5zbGF0ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNjcm9sbGJhci5kZXN0cm95KCk7XG4gICAgICAgICAgc2Nyb2xsYmFyLmVsID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY2hhbmdlZFBhcmFtcy5uYXZpZ2F0aW9uKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLm5hdmlnYXRpb24gJiZcbiAgICAgICAgICB0eXBlb2YgdGhpcy5uYXZpZ2F0aW9uICE9PSAnYm9vbGVhbicgJiZcbiAgICAgICAgICB0aGlzLm5hdmlnYXRpb24ucHJldkVsICYmXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLm5leHRFbCAmJlxuICAgICAgICAgIG5hdmlnYXRpb24gJiZcbiAgICAgICAgICAhbmF2aWdhdGlvbi5wcmV2RWwgJiZcbiAgICAgICAgICAhbmF2aWdhdGlvbi5uZXh0RWxcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVQYXJhbWV0ZXIoJ25hdmlnYXRpb24nLCB0aGlzLm5hdmlnYXRpb24pO1xuICAgICAgICAgIG5hdmlnYXRpb24uaW5pdCgpO1xuICAgICAgICAgIG5hdmlnYXRpb24udXBkYXRlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAobmF2aWdhdGlvbi5wcmV2RWwgJiYgbmF2aWdhdGlvbi5uZXh0RWwpIHtcbiAgICAgICAgICBuYXZpZ2F0aW9uLmRlc3Ryb3koKTtcbiAgICAgICAgICBuYXZpZ2F0aW9uLm5leHRFbCA9IG51bGw7XG4gICAgICAgICAgbmF2aWdhdGlvbi5wcmV2RWwgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2hhbmdlZFBhcmFtcy50aHVtYnMgJiYgdGhpcy50aHVtYnMgJiYgdGhpcy50aHVtYnMuc3dpcGVyKSB7XG4gICAgICAgIHRoaXMudXBkYXRlUGFyYW1ldGVyKCd0aHVtYnMnLCB0aGlzLnRodW1icyk7XG4gICAgICAgIGNvbnN0IGluaXRpYWxpemVkID0gdGh1bWJzLmluaXQoKTtcbiAgICAgICAgaWYgKGluaXRpYWxpemVkKSB0aHVtYnMudXBkYXRlKHRydWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2hhbmdlZFBhcmFtcy5jb250cm9sbGVyICYmIHRoaXMuY29udHJvbGxlciAmJiB0aGlzLmNvbnRyb2xsZXIuY29udHJvbCkge1xuICAgICAgICB0aGlzLnN3aXBlclJlZi5jb250cm9sbGVyLmNvbnRyb2wgPSB0aGlzLmNvbnRyb2xsZXIuY29udHJvbDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zd2lwZXJSZWYudXBkYXRlKCk7XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVTd2lwZXIoY2hhbmdlZFBhcmFtczogU2ltcGxlQ2hhbmdlcyB8IGFueSkge1xuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAoY2hhbmdlZFBhcmFtcy5jb25maWcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCEoY2hhbmdlZFBhcmFtcyAmJiB0aGlzLnN3aXBlclJlZiAmJiAhdGhpcy5zd2lwZXJSZWYuZGVzdHJveWVkKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBjaGFuZ2VkUGFyYW1zKSB7XG4gICAgICAgIGlmIChpZ25vcmVOZ09uQ2hhbmdlcy5pbmRleE9mKGtleSkgPj0gMCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY2hhbmdlZFBhcmFtc1trZXldPy5jdXJyZW50VmFsdWUgPz8gY2hhbmdlZFBhcmFtc1trZXldO1xuICAgICAgICB0aGlzLnVwZGF0ZVBhcmFtZXRlcihrZXksIG5ld1ZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZWRQYXJhbXMuYWxsb3dTbGlkZU5leHQpIHtcbiAgICAgICAgdGhpcy5zd2lwZXJSZWYuYWxsb3dTbGlkZU5leHQgPSB0aGlzLmFsbG93U2xpZGVOZXh0O1xuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZWRQYXJhbXMuYWxsb3dTbGlkZVByZXYpIHtcbiAgICAgICAgdGhpcy5zd2lwZXJSZWYuYWxsb3dTbGlkZVByZXYgPSB0aGlzLmFsbG93U2xpZGVQcmV2O1xuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZWRQYXJhbXMuZGlyZWN0aW9uKSB7XG4gICAgICAgIHRoaXMuc3dpcGVyUmVmLmNoYW5nZURpcmVjdGlvbih0aGlzLmRpcmVjdGlvbiwgZmFsc2UpO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZWRQYXJhbXMuYnJlYWtwb2ludHMpIHtcbiAgICAgICAgaWYgKHRoaXMubG9vcCAmJiAhdGhpcy5sb29wZWRTbGlkZXMpIHtcbiAgICAgICAgICB0aGlzLmNhbGNMb29wZWRTbGlkZXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN3aXBlclJlZi5jdXJyZW50QnJlYWtwb2ludCA9IG51bGw7XG4gICAgICAgIHRoaXMuc3dpcGVyUmVmLnNldEJyZWFrcG9pbnQoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZWRQYXJhbXMudGh1bWJzIHx8IGNoYW5nZWRQYXJhbXMuY29udHJvbGxlcikge1xuICAgICAgICB0aGlzLnVwZGF0ZUluaXRTd2lwZXIoY2hhbmdlZFBhcmFtcyk7XG4gICAgICB9XG4gICAgICB0aGlzLnN3aXBlclJlZi51cGRhdGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNhbGNMb29wZWRTbGlkZXMoKSB7XG4gICAgaWYgKCF0aGlzLmxvb3ApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IHNsaWRlc1BlclZpZXdQYXJhbXMgPSB0aGlzLnNsaWRlc1BlclZpZXc7XG4gICAgaWYgKHRoaXMuYnJlYWtwb2ludHMpIHtcbiAgICAgIGNvbnN0IGJyZWFrcG9pbnQgPSBTd2lwZXIucHJvdG90eXBlLmdldEJyZWFrcG9pbnQodGhpcy5icmVha3BvaW50cyk7XG4gICAgICBjb25zdCBicmVha3BvaW50T25seVBhcmFtcyA9XG4gICAgICAgIGJyZWFrcG9pbnQgaW4gdGhpcy5icmVha3BvaW50cyA/IHRoaXMuYnJlYWtwb2ludHNbYnJlYWtwb2ludF0gOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoYnJlYWtwb2ludE9ubHlQYXJhbXMgJiYgYnJlYWtwb2ludE9ubHlQYXJhbXMuc2xpZGVzUGVyVmlldykge1xuICAgICAgICBzbGlkZXNQZXJWaWV3UGFyYW1zID0gYnJlYWtwb2ludE9ubHlQYXJhbXMuc2xpZGVzUGVyVmlldztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNsaWRlc1BlclZpZXdQYXJhbXMgPT09ICdhdXRvJykge1xuICAgICAgdGhpcy5sb29wZWRTbGlkZXMgPSB0aGlzLnNsaWRlcy5sZW5ndGg7XG4gICAgICByZXR1cm4gdGhpcy5zbGlkZXMubGVuZ3RoO1xuICAgIH1cbiAgICBsZXQgbG9vcGVkU2xpZGVzID0gdGhpcy5sb29wZWRTbGlkZXMgfHwgc2xpZGVzUGVyVmlld1BhcmFtcztcbiAgICBpZiAoIWxvb3BlZFNsaWRlcykge1xuICAgICAgLy8gP1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxvb3BBZGRpdGlvbmFsU2xpZGVzKSB7XG4gICAgICBsb29wZWRTbGlkZXMgKz0gdGhpcy5sb29wQWRkaXRpb25hbFNsaWRlcztcbiAgICB9XG4gICAgaWYgKGxvb3BlZFNsaWRlcyA+IHRoaXMuc2xpZGVzLmxlbmd0aCkge1xuICAgICAgbG9vcGVkU2xpZGVzID0gdGhpcy5zbGlkZXMubGVuZ3RoO1xuICAgIH1cbiAgICB0aGlzLmxvb3BlZFNsaWRlcyA9IGxvb3BlZFNsaWRlcztcbiAgICByZXR1cm4gbG9vcGVkU2xpZGVzO1xuICB9XG5cbiAgdXBkYXRlUGFyYW1ldGVyKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgaWYgKCEodGhpcy5zd2lwZXJSZWYgJiYgIXRoaXMuc3dpcGVyUmVmLmRlc3Ryb3llZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgX2tleSA9IGtleS5yZXBsYWNlKC9eXy8sICcnKTtcbiAgICBjb25zdCBpc0N1cnJlbnRQYXJhbU9iaiA9IGlzT2JqZWN0KHRoaXMuc3dpcGVyUmVmLnBhcmFtc1tfa2V5XSk7XG5cbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5zd2lwZXJSZWYubW9kdWxlcykuaW5kZXhPZihfa2V5KSA+PSAwKSB7XG4gICAgICBjb25zdCBkZWZhdWx0UGFyYW1zID0gdGhpcy5zd2lwZXJSZWYubW9kdWxlc1tfa2V5XS5wYXJhbXNbX2tleV07XG4gICAgICBpZiAoaXNDdXJyZW50UGFyYW1PYmopIHtcbiAgICAgICAgZXh0ZW5kKHRoaXMuc3dpcGVyUmVmLnBhcmFtc1tfa2V5XSwgZGVmYXVsdFBhcmFtcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN3aXBlclJlZi5wYXJhbXNbX2tleV0gPSBkZWZhdWx0UGFyYW1zO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoX2tleSA9PT0gJ2VuYWJsZWQnKSB7XG4gICAgICBpZiAodmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5zd2lwZXJSZWYuZW5hYmxlKCk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLnN3aXBlclJlZi5kaXNhYmxlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc0N1cnJlbnRQYXJhbU9iaiAmJiBpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgIGV4dGVuZCh0aGlzLnN3aXBlclJlZi5wYXJhbXNbX2tleV0sIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zd2lwZXJSZWYucGFyYW1zW19rZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB3aWxsIGJlIHJlbW92ZWQgaW4gdXBjb21pbmcgdmVyc2lvbnNcbiAgICovXG4gIHNldEluZGV4KGluZGV4OiBudW1iZXIsIHNwZWVkPzogbnVtYmVyLCBzaWxlbnQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzU3dpcGVyQWN0aXZlKSB7XG4gICAgICB0aGlzLmluaXRpYWxTbGlkZSA9IGluZGV4O1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaW5kZXggPT09IHRoaXMuc3dpcGVyUmVmLmFjdGl2ZUluZGV4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5sb29wKSB7XG4gICAgICAgIHRoaXMuc3dpcGVyUmVmLnNsaWRlVG9Mb29wKGluZGV4LCBzcGVlZCwgIXNpbGVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN3aXBlclJlZi5zbGlkZVRvKGluZGV4LCBzcGVlZCwgIXNpbGVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5zd2lwZXJSZWY/LmRlc3Ryb3kodHJ1ZSwgZmFsc2UpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1jb250YWluZXItc3RhcnRdXCI+PC9uZy1jb250ZW50PlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdmlnYXRpb24gJiYgc2hvd05hdmlnYXRpb25cIj5cbiAgPGRpdiBjbGFzcz1cInN3aXBlci1idXR0b24tcHJldlwiICNwcmV2RWxSZWY+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJzd2lwZXItYnV0dG9uLW5leHRcIiAjbmV4dEVsUmVmPjwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48ZGl2ICpuZ0lmPVwic2Nyb2xsYmFyICYmIHNob3dTY3JvbGxiYXJcIiBjbGFzcz1cInN3aXBlci1zY3JvbGxiYXJcIiAjc2Nyb2xsYmFyRWxSZWY+PC9kaXY+XG48ZGl2ICpuZ0lmPVwicGFnaW5hdGlvbiAmJiBzaG93UGFnaW5hdGlvblwiIGNsYXNzPVwic3dpcGVyLXBhZ2luYXRpb25cIiAjcGFnaW5hdGlvbkVsUmVmPjwvZGl2PlxuPGRpdiBbbmdDbGFzc109XCJ3cmFwcGVyQ2xhc3NcIiBbYXR0ci5pZF09XCJpZFwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD13cmFwcGVyLXN0YXJ0XVwiPjwvbmctY29udGVudD5cbiAgPG5nLXRlbXBsYXRlXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgIHNsaWRlc1RlbXBsYXRlO1xuICAgICAgY29udGV4dDoge1xuICAgICAgICBsb29wU2xpZGVzOiBwcmVwZW5kU2xpZGVzLFxuICAgICAgICBrZXk6ICdwcmVwZW5kJ1xuICAgICAgfVxuICAgIFwiXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGVcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgc2xpZGVzVGVtcGxhdGU7XG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIGxvb3BTbGlkZXM6IGFjdGl2ZVNsaWRlcyxcbiAgICAgICAga2V5OiAnJ1xuICAgICAgfVxuICAgIFwiXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGVcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgc2xpZGVzVGVtcGxhdGU7XG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIGxvb3BTbGlkZXM6IGFwcGVuZFNsaWRlcyxcbiAgICAgICAga2V5OiAnYXBwZW5kJ1xuICAgICAgfVxuICAgIFwiXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD13cmFwcGVyLWVuZF1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxuZy1jb250ZW50IHNlbGVjdD1cIltzbG90PWNvbnRhaW5lci1lbmRdXCI+PC9uZy1jb250ZW50PlxuXG48bmctdGVtcGxhdGUgI3NsaWRlc1RlbXBsYXRlIGxldC1sb29wU2xpZGVzPVwibG9vcFNsaWRlc1wiIGxldC1zbGlkZUtleT1cImtleVwiPlxuICA8ZGl2XG4gICAgKm5nRm9yPVwibGV0IHNsaWRlIG9mIGxvb3BTbGlkZXMgfCBhc3luY1wiXG4gICAgW25nQ2xhc3NdPVwiXG4gICAgICAoc2xpZGUuY2xhc3MgPyBzbGlkZS5jbGFzcyArICcgJyA6ICcnKSArXG4gICAgICBzbGlkZUNsYXNzICtcbiAgICAgIChzbGlkZUtleSAhPT0gJycgPyAnICcgKyBzbGlkZUR1cGxpY2F0ZUNsYXNzIDogJycpXG4gICAgXCJcbiAgICBbYXR0ci5kYXRhLXN3aXBlci1zbGlkZS1pbmRleF09XCJzbGlkZS52aXJ0dWFsSW5kZXggPyBzbGlkZS52aXJ0dWFsSW5kZXggOiBzbGlkZS5zbGlkZUluZGV4XCJcbiAgICBbYXR0ci5kYXRhLXN3aXBlci1hdXRvcGxheV09XCJzbGlkZS5hdXRvcGxheURlbGF5XCJcbiAgICBbc3R5bGVdPVwic3R5bGVcIlxuICAgIFtuZ1N3aXRjaF09XCJzbGlkZS56b29tXCJcbiAgPlxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cInRydWVcIiBbbmdDbGFzc109XCJ6b29tQ29udGFpbmVyQ2xhc3NcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJzbGlkZS50ZW1wbGF0ZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgJGltcGxpY2l0OiBzbGlkZS5zbGlkZURhdGFcbiAgICAgICAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2xpZGUudGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICRpbXBsaWNpdDogc2xpZGUuc2xpZGVEYXRhXG4gICAgICAgIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ== \ No newline at end of file diff --git a/resources/web/guide/swiper/angular/esm2015/angular/src/swiper.module.js b/resources/web/guide/swiper/angular/esm2015/angular/src/swiper.module.js deleted file mode 100644 index b4fa3a0e4a..0000000000 --- a/resources/web/guide/swiper/angular/esm2015/angular/src/swiper.module.js +++ /dev/null @@ -1,19 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { SwiperComponent } from './swiper.component'; -import { SwiperSlideDirective } from './swiper-slide.directive'; -import * as i0 from "@angular/core"; -export class SwiperModule { -} -SwiperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -SwiperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperModule, declarations: [SwiperComponent, SwiperSlideDirective], imports: [CommonModule], exports: [SwiperComponent, SwiperSlideDirective] }); -SwiperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperModule, imports: [[CommonModule]] }); -i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperModule, decorators: [{ - type: NgModule, - args: [{ - declarations: [SwiperComponent, SwiperSlideDirective], - exports: [SwiperComponent, SwiperSlideDirective], - imports: [CommonModule], - }] - }] }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyL3NyYy9zd2lwZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFNaEUsTUFBTSxPQUFPLFlBQVk7O3lHQUFaLFlBQVk7MEdBQVosWUFBWSxpQkFKUixlQUFlLEVBQUUsb0JBQW9CLGFBRTFDLFlBQVksYUFEWixlQUFlLEVBQUUsb0JBQW9COzBHQUdwQyxZQUFZLFlBRmQsQ0FBQyxZQUFZLENBQUM7MkZBRVosWUFBWTtrQkFMeEIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxlQUFlLEVBQUUsb0JBQW9CLENBQUM7b0JBQ3JELE9BQU8sRUFBRSxDQUFDLGVBQWUsRUFBRSxvQkFBb0IsQ0FBQztvQkFDaEQsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3dpcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zd2lwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFN3aXBlclNsaWRlRGlyZWN0aXZlIH0gZnJvbSAnLi9zd2lwZXItc2xpZGUuZGlyZWN0aXZlJztcbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1N3aXBlckNvbXBvbmVudCwgU3dpcGVyU2xpZGVEaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbU3dpcGVyQ29tcG9uZW50LCBTd2lwZXJTbGlkZURpcmVjdGl2ZV0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTd2lwZXJNb2R1bGUge31cbiJdfQ== \ No newline at end of file diff --git a/resources/web/guide/swiper/angular/esm2015/angular/src/utils/get-params.js b/resources/web/guide/swiper/angular/esm2015/angular/src/utils/get-params.js deleted file mode 100644 index 9279259e86..0000000000 --- a/resources/web/guide/swiper/angular/esm2015/angular/src/utils/get-params.js +++ /dev/null @@ -1,38 +0,0 @@ -// eslint-disable-next-line -import { isObject, extend } from './utils'; -import { paramsList } from './params-list'; -// @ts-ignore -import Swiper from 'swiper'; -export const allowedParams = paramsList.map((key) => key.replace(/_/, '')); -export function getParams(obj = {}) { - const params = { - on: {}, - }; - const passedParams = {}; - extend(params, Swiper.defaults); - extend(params, Swiper.extendedDefaults); - params._emitClasses = true; - const rest = {}; - Object.keys(obj).forEach((key) => { - const _key = key.replace(/^_/, ''); - 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 { - rest[_key] = obj[_key]; - } - }); - return { params, passedParams, rest }; -} -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXBhcmFtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyL3NyYy91dGlscy9nZXQtcGFyYW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQjtBQUMzQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLGFBQWE7QUFDYixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0UsTUFBTSxVQUFVLFNBQVMsQ0FBQyxNQUFXLEVBQUU7SUFDckMsTUFBTSxNQUFNLEdBQVE7UUFDbEIsRUFBRSxFQUFFLEVBQUU7S0FDUCxDQUFDO0lBQ0YsTUFBTSxZQUFZLEdBQVEsRUFBRSxDQUFDO0lBQzdCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDeEMsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFFM0IsTUFBTSxJQUFJLEdBQVEsRUFBRSxDQUFDO0lBQ3JCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7UUFDdkMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxXQUFXO1lBQUUsT0FBTztRQUM3QyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3BDLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO2dCQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNsQixZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUN4QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3pCLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDaEM7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDeEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuaW1wb3J0IHsgaXNPYmplY3QsIGV4dGVuZCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgcGFyYW1zTGlzdCB9IGZyb20gJy4vcGFyYW1zLWxpc3QnO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IFN3aXBlciBmcm9tICdzd2lwZXInO1xuXG5leHBvcnQgY29uc3QgYWxsb3dlZFBhcmFtcyA9IHBhcmFtc0xpc3QubWFwKChrZXkpID0+IGtleS5yZXBsYWNlKC9fLywgJycpKTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJhbXMob2JqOiBhbnkgPSB7fSkge1xuICBjb25zdCBwYXJhbXM6IGFueSA9IHtcbiAgICBvbjoge30sXG4gIH07XG4gIGNvbnN0IHBhc3NlZFBhcmFtczogYW55ID0ge307XG4gIGV4dGVuZChwYXJhbXMsIFN3aXBlci5kZWZhdWx0cyk7XG4gIGV4dGVuZChwYXJhbXMsIFN3aXBlci5leHRlbmRlZERlZmF1bHRzKTtcbiAgcGFyYW1zLl9lbWl0Q2xhc3NlcyA9IHRydWU7XG5cbiAgY29uc3QgcmVzdDogYW55ID0ge307XG4gIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBfa2V5ID0ga2V5LnJlcGxhY2UoL15fLywgJycpO1xuICAgIGlmICh0eXBlb2Ygb2JqW19rZXldID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgIGlmIChhbGxvd2VkUGFyYW1zLmluZGV4T2YoX2tleSkgPj0gMCkge1xuICAgICAgaWYgKGlzT2JqZWN0KG9ialtfa2V5XSkpIHtcbiAgICAgICAgcGFyYW1zW19rZXldID0ge307XG4gICAgICAgIHBhc3NlZFBhcmFtc1tfa2V5XSA9IHt9O1xuICAgICAgICBleHRlbmQocGFyYW1zW19rZXldLCBvYmpbX2tleV0pO1xuICAgICAgICBleHRlbmQocGFzc2VkUGFyYW1zW19rZXldLCBvYmpbX2tleV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyYW1zW19rZXldID0gb2JqW19rZXldO1xuICAgICAgICBwYXNzZWRQYXJhbXNbX2tleV0gPSBvYmpbX2tleV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3RbX2tleV0gPSBvYmpbX2tleV07XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4geyBwYXJhbXMsIHBhc3NlZFBhcmFtcywgcmVzdCB9O1xufVxuIl19 \ No newline at end of file diff --git a/resources/web/guide/swiper/angular/esm2015/angular/src/utils/params-list.js b/resources/web/guide/swiper/angular/esm2015/angular/src/utils/params-list.js deleted file mode 100644 index f80626c2fd..0000000000 --- a/resources/web/guide/swiper/angular/esm2015/angular/src/utils/params-list.js +++ /dev/null @@ -1,115 +0,0 @@ -/* underscore in name -> watch for changes */ -export const paramsList = [ - 'init', - 'enabled', - '_direction', - 'touchEventsTarget', - 'initialSlide', - '_speed', - 'cssMode', - 'updateOnWindowResize', - 'resizeObserver', - 'nested', - 'focusableElements', - '_width', - '_height', - 'preventInteractionOnTransition', - 'userAgent', - 'url', - '_edgeSwipeDetection', - '_edgeSwipeThreshold', - '_freeMode', - '_autoHeight', - 'setWrapperSize', - 'virtualTranslate', - '_effect', - 'breakpoints', - '_spaceBetween', - '_slidesPerView', - '_grid', - '_slidesPerGroup', - '_slidesPerGroupSkip', - '_centeredSlides', - '_centeredSlidesBounds', - '_slidesOffsetBefore', - '_slidesOffsetAfter', - 'normalizeSlideIndex', - '_centerInsufficientSlides', - '_watchOverflow', - 'roundLengths', - 'touchRatio', - 'touchAngle', - 'simulateTouch', - '_shortSwipes', - '_longSwipes', - 'longSwipesRatio', - 'longSwipesMs', - '_followFinger', - 'allowTouchMove', - '_threshold', - 'touchMoveStopPropagation', - 'touchStartPreventDefault', - 'touchStartForcePreventDefault', - 'touchReleaseOnEdges', - 'uniqueNavElements', - '_resistance', - '_resistanceRatio', - '_watchSlidesProgress', - '_grabCursor', - 'preventClicks', - 'preventClicksPropagation', - '_slideToClickedSlide', - '_preloadImages', - 'updateOnImagesReady', - '_loop', - '_loopAdditionalSlides', - '_loopedSlides', - '_loopFillGroupWithBlank', - 'loopPreventsSlide', - '_allowSlidePrev', - '_allowSlideNext', - '_swipeHandler', - '_noSwiping', - 'noSwipingClass', - 'noSwipingSelector', - 'passiveListeners', - 'containerModifierClass', - 'slideClass', - 'slideBlankClass', - 'slideActiveClass', - 'slideDuplicateActiveClass', - 'slideVisibleClass', - 'slideDuplicateClass', - 'slideNextClass', - 'slideDuplicateNextClass', - 'slidePrevClass', - 'slideDuplicatePrevClass', - 'wrapperClass', - 'runCallbacksOnInit', - 'observer', - 'observeParents', - 'observeSlideChildren', - // modules - 'a11y', - 'autoplay', - '_controller', - 'coverflowEffect', - 'cubeEffect', - 'fadeEffect', - 'flipEffect', - 'creativeEffect', - 'cardsEffect', - 'hashNavigation', - 'history', - 'keyboard', - 'lazy', - 'mousewheel', - '_navigation', - '_pagination', - 'parallax', - '_scrollbar', - '_thumbs', - 'virtual', - 'zoom', -]; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLWxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYW5ndWxhci9zcmMvdXRpbHMvcGFyYW1zLWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkNBQTZDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixNQUFNO0lBQ04sU0FBUztJQUNULFlBQVk7SUFDWixtQkFBbUI7SUFDbkIsY0FBYztJQUNkLFFBQVE7SUFDUixTQUFTO0lBQ1Qsc0JBQXNCO0lBQ3RCLGdCQUFnQjtJQUNoQixRQUFRO0lBQ1IsbUJBQW1CO0lBQ25CLFFBQVE7SUFDUixTQUFTO0lBQ1QsZ0NBQWdDO0lBQ2hDLFdBQVc7SUFDWCxLQUFLO0lBQ0wscUJBQXFCO0lBQ3JCLHFCQUFxQjtJQUNyQixXQUFXO0lBQ1gsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQixrQkFBa0I7SUFDbEIsU0FBUztJQUNULGFBQWE7SUFDYixlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLE9BQU87SUFDUCxpQkFBaUI7SUFDakIscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQix1QkFBdUI7SUFDdkIscUJBQXFCO0lBQ3JCLG9CQUFvQjtJQUNwQixxQkFBcUI7SUFDckIsMkJBQTJCO0lBQzNCLGdCQUFnQjtJQUNoQixjQUFjO0lBQ2QsWUFBWTtJQUNaLFlBQVk7SUFDWixlQUFlO0lBQ2YsY0FBYztJQUNkLGFBQWE7SUFDYixpQkFBaUI7SUFDakIsY0FBYztJQUNkLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsWUFBWTtJQUNaLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsK0JBQStCO0lBQy9CLHFCQUFxQjtJQUNyQixtQkFBbUI7SUFDbkIsYUFBYTtJQUNiLGtCQUFrQjtJQUNsQixzQkFBc0I7SUFDdEIsYUFBYTtJQUNiLGVBQWU7SUFDZiwwQkFBMEI7SUFDMUIsc0JBQXNCO0lBQ3RCLGdCQUFnQjtJQUNoQixxQkFBcUI7SUFDckIsT0FBTztJQUNQLHVCQUF1QjtJQUN2QixlQUFlO0lBQ2YseUJBQXlCO0lBQ3pCLG1CQUFtQjtJQUNuQixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGVBQWU7SUFDZixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLG1CQUFtQjtJQUNuQixrQkFBa0I7SUFDbEIsd0JBQXdCO0lBQ3hCLFlBQVk7SUFDWixpQkFBaUI7SUFDakIsa0JBQWtCO0lBQ2xCLDJCQUEyQjtJQUMzQixtQkFBbUI7SUFDbkIscUJBQXFCO0lBQ3JCLGdCQUFnQjtJQUNoQix5QkFBeUI7SUFDekIsZ0JBQWdCO0lBQ2hCLHlCQUF5QjtJQUN6QixjQUFjO0lBQ2Qsb0JBQW9CO0lBQ3BCLFVBQVU7SUFDVixnQkFBZ0I7SUFDaEIsc0JBQXNCO0lBRXRCLFVBQVU7SUFDVixNQUFNO0lBQ04sVUFBVTtJQUNWLGFBQWE7SUFDYixpQkFBaUI7SUFDakIsWUFBWTtJQUNaLFlBQVk7SUFDWixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixnQkFBZ0I7SUFDaEIsU0FBUztJQUNULFVBQVU7SUFDVixNQUFNO0lBQ04sWUFBWTtJQUNaLGFBQWE7SUFDYixhQUFhO0lBQ2IsVUFBVTtJQUNWLFlBQVk7SUFDWixTQUFTO0lBQ1QsU0FBUztJQUNULE1BQU07Q0FDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogdW5kZXJzY29yZSBpbiBuYW1lIC0+IHdhdGNoIGZvciBjaGFuZ2VzICovXG5leHBvcnQgY29uc3QgcGFyYW1zTGlzdCA9IFtcbiAgJ2luaXQnLFxuICAnZW5hYmxlZCcsXG4gICdfZGlyZWN0aW9uJyxcbiAgJ3RvdWNoRXZlbnRzVGFyZ2V0JyxcbiAgJ2luaXRpYWxTbGlkZScsXG4gICdfc3BlZWQnLFxuICAnY3NzTW9kZScsXG4gICd1cGRhdGVPbldpbmRvd1Jlc2l6ZScsXG4gICdyZXNpemVPYnNlcnZlcicsXG4gICduZXN0ZWQnLFxuICAnZm9jdXNhYmxlRWxlbWVudHMnLFxuICAnX3dpZHRoJyxcbiAgJ19oZWlnaHQnLFxuICAncHJldmVudEludGVyYWN0aW9uT25UcmFuc2l0aW9uJyxcbiAgJ3VzZXJBZ2VudCcsXG4gICd1cmwnLFxuICAnX2VkZ2VTd2lwZURldGVjdGlvbicsXG4gICdfZWRnZVN3aXBlVGhyZXNob2xkJyxcbiAgJ19mcmVlTW9kZScsXG4gICdfYXV0b0hlaWdodCcsXG4gICdzZXRXcmFwcGVyU2l6ZScsXG4gICd2aXJ0dWFsVHJhbnNsYXRlJyxcbiAgJ19lZmZlY3QnLFxuICAnYnJlYWtwb2ludHMnLFxuICAnX3NwYWNlQmV0d2VlbicsXG4gICdfc2xpZGVzUGVyVmlldycsXG4gICdfZ3JpZCcsXG4gICdfc2xpZGVzUGVyR3JvdXAnLFxuICAnX3NsaWRlc1Blckdyb3VwU2tpcCcsXG4gICdfY2VudGVyZWRTbGlkZXMnLFxuICAnX2NlbnRlcmVkU2xpZGVzQm91bmRzJyxcbiAgJ19zbGlkZXNPZmZzZXRCZWZvcmUnLFxuICAnX3NsaWRlc09mZnNldEFmdGVyJyxcbiAgJ25vcm1hbGl6ZVNsaWRlSW5kZXgnLFxuICAnX2NlbnRlckluc3VmZmljaWVudFNsaWRlcycsXG4gICdfd2F0Y2hPdmVyZmxvdycsXG4gICdyb3VuZExlbmd0aHMnLFxuICAndG91Y2hSYXRpbycsXG4gICd0b3VjaEFuZ2xlJyxcbiAgJ3NpbXVsYXRlVG91Y2gnLFxuICAnX3Nob3J0U3dpcGVzJyxcbiAgJ19sb25nU3dpcGVzJyxcbiAgJ2xvbmdTd2lwZXNSYXRpbycsXG4gICdsb25nU3dpcGVzTXMnLFxuICAnX2ZvbGxvd0ZpbmdlcicsXG4gICdhbGxvd1RvdWNoTW92ZScsXG4gICdfdGhyZXNob2xkJyxcbiAgJ3RvdWNoTW92ZVN0b3BQcm9wYWdhdGlvbicsXG4gICd0b3VjaFN0YXJ0UHJldmVudERlZmF1bHQnLFxuICAndG91Y2hTdGFydEZvcmNlUHJldmVudERlZmF1bHQnLFxuICAndG91Y2hSZWxlYXNlT25FZGdlcycsXG4gICd1bmlxdWVOYXZFbGVtZW50cycsXG4gICdfcmVzaXN0YW5jZScsXG4gICdfcmVzaXN0YW5jZVJhdGlvJyxcbiAgJ193YXRjaFNsaWRlc1Byb2dyZXNzJyxcbiAgJ19ncmFiQ3Vyc29yJyxcbiAgJ3ByZXZlbnRDbGlja3MnLFxuICAncHJldmVudENsaWNrc1Byb3BhZ2F0aW9uJyxcbiAgJ19zbGlkZVRvQ2xpY2tlZFNsaWRlJyxcbiAgJ19wcmVsb2FkSW1hZ2VzJyxcbiAgJ3VwZGF0ZU9uSW1hZ2VzUmVhZHknLFxuICAnX2xvb3AnLFxuICAnX2xvb3BBZGRpdGlvbmFsU2xpZGVzJyxcbiAgJ19sb29wZWRTbGlkZXMnLFxuICAnX2xvb3BGaWxsR3JvdXBXaXRoQmxhbmsnLFxuICAnbG9vcFByZXZlbnRzU2xpZGUnLFxuICAnX2FsbG93U2xpZGVQcmV2JyxcbiAgJ19hbGxvd1NsaWRlTmV4dCcsXG4gICdfc3dpcGVIYW5kbGVyJyxcbiAgJ19ub1N3aXBpbmcnLFxuICAnbm9Td2lwaW5nQ2xhc3MnLFxuICAnbm9Td2lwaW5nU2VsZWN0b3InLFxuICAncGFzc2l2ZUxpc3RlbmVycycsXG4gICdjb250YWluZXJNb2RpZmllckNsYXNzJyxcbiAgJ3NsaWRlQ2xhc3MnLFxuICAnc2xpZGVCbGFua0NsYXNzJyxcbiAgJ3NsaWRlQWN0aXZlQ2xhc3MnLFxuICAnc2xpZGVEdXBsaWNhdGVBY3RpdmVDbGFzcycsXG4gICdzbGlkZVZpc2libGVDbGFzcycsXG4gICdzbGlkZUR1cGxpY2F0ZUNsYXNzJyxcbiAgJ3NsaWRlTmV4dENsYXNzJyxcbiAgJ3NsaWRlRHVwbGljYXRlTmV4dENsYXNzJyxcbiAgJ3NsaWRlUHJldkNsYXNzJyxcbiAgJ3NsaWRlRHVwbGljYXRlUHJldkNsYXNzJyxcbiAgJ3dyYXBwZXJDbGFzcycsXG4gICdydW5DYWxsYmFja3NPbkluaXQnLFxuICAnb2JzZXJ2ZXInLFxuICAnb2JzZXJ2ZVBhcmVudHMnLFxuICAnb2JzZXJ2ZVNsaWRlQ2hpbGRyZW4nLFxuXG4gIC8vIG1vZHVsZXNcbiAgJ2ExMXknLFxuICAnYXV0b3BsYXknLFxuICAnX2NvbnRyb2xsZXInLFxuICAnY292ZXJmbG93RWZmZWN0JyxcbiAgJ2N1YmVFZmZlY3QnLFxuICAnZmFkZUVmZmVjdCcsXG4gICdmbGlwRWZmZWN0JyxcbiAgJ2NyZWF0aXZlRWZmZWN0JyxcbiAgJ2NhcmRzRWZmZWN0JyxcbiAgJ2hhc2hOYXZpZ2F0aW9uJyxcbiAgJ2hpc3RvcnknLFxuICAna2V5Ym9hcmQnLFxuICAnbGF6eScsXG4gICdtb3VzZXdoZWVsJyxcbiAgJ19uYXZpZ2F0aW9uJyxcbiAgJ19wYWdpbmF0aW9uJyxcbiAgJ3BhcmFsbGF4JyxcbiAgJ19zY3JvbGxiYXInLFxuICAnX3RodW1icycsXG4gICd2aXJ0dWFsJyxcbiAgJ3pvb20nLFxuXTtcbiJdfQ== \ No newline at end of file diff --git a/resources/web/guide/swiper/angular/esm2015/angular/src/utils/utils.js b/resources/web/guide/swiper/angular/esm2015/angular/src/utils/utils.js deleted file mode 100644 index a0b22cc0ea..0000000000 --- a/resources/web/guide/swiper/angular/esm2015/angular/src/utils/utils.js +++ /dev/null @@ -1,49 +0,0 @@ -export function isObject(o) { - return (typeof o === 'object' && - o !== null && - o.constructor && - Object.prototype.toString.call(o).slice(8, -1) === 'Object'); -} -export function isShowEl(val, obj, el) { - return ((coerceBooleanProperty(val) === true && obj && !obj.el) || - !(typeof obj !== 'boolean' && - obj.el !== (el === null || el === void 0 ? void 0 : el.nativeElement) && - (typeof obj.el === 'string' || typeof obj.el === 'object'))); -} -export 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]; - return; - } - if (target[key] && !src[key]) { - return; - } - 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]; - } - }); -} -export function coerceBooleanProperty(value) { - return value != null && `${value}` !== 'false'; -} -export const ignoreNgOnChanges = ['pagination', 'navigation', 'scrollbar', 'virtual']; -export function setProperty(val, obj = {}) { - if (isObject(val)) { - return val; - } - if (coerceBooleanProperty(val) === true) { - return obj; - } - return false; -} -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYW5ndWxhci9zcmMvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFFBQVEsQ0FBQyxDQUFNO0lBQzdCLE9BQU8sQ0FDTCxPQUFPLENBQUMsS0FBSyxRQUFRO1FBQ3JCLENBQUMsS0FBSyxJQUFJO1FBQ1YsQ0FBQyxDQUFDLFdBQVc7UUFDYixNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FDNUQsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQVEsRUFBRSxHQUFRLEVBQUUsRUFBTztJQUNsRCxPQUFPLENBQ0wsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN2RCxDQUFDLENBQ0MsT0FBTyxHQUFHLEtBQUssU0FBUztZQUN4QixHQUFHLENBQUMsRUFBRSxNQUFLLEVBQUUsYUFBRixFQUFFLHVCQUFGLEVBQUUsQ0FBRSxhQUFhLENBQUE7WUFDNUIsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLEtBQUssUUFBUSxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FDM0QsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxNQUFNLENBQUMsTUFBVyxFQUFFLEdBQVE7SUFDMUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNELE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ2IsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMxQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNmLElBQUksT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssV0FBVyxFQUFFO1lBQ3RDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkIsT0FBTztTQUNSO1FBQ0QsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUIsT0FBTztTQUNSO1FBQ0QsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuRixJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVO2dCQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7O2dCQUMzQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3BDO2FBQU07WUFDTCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEtBQVU7SUFDOUMsT0FBTyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsS0FBSyxFQUFFLEtBQUssT0FBTyxDQUFDO0FBQ2pELENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRXRGLE1BQU0sVUFBVSxXQUFXLENBQUMsR0FBUSxFQUFFLEdBQUcsR0FBRyxFQUFFO0lBQzVDLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ2pCLE9BQU8sR0FBRyxDQUFDO0tBQ1o7SUFFRCxJQUFJLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtRQUN2QyxPQUFPLEdBQUcsQ0FBQztLQUNaO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0KG86IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBvID09PSAnb2JqZWN0JyAmJlxuICAgIG8gIT09IG51bGwgJiZcbiAgICBvLmNvbnN0cnVjdG9yICYmXG4gICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKSA9PT0gJ09iamVjdCdcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2hvd0VsKHZhbDogYW55LCBvYmo6IGFueSwgZWw6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIChjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsKSA9PT0gdHJ1ZSAmJiBvYmogJiYgIW9iai5lbCkgfHxcbiAgICAhKFxuICAgICAgdHlwZW9mIG9iaiAhPT0gJ2Jvb2xlYW4nICYmXG4gICAgICBvYmouZWwgIT09IGVsPy5uYXRpdmVFbGVtZW50ICYmXG4gICAgICAodHlwZW9mIG9iai5lbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG9iai5lbCA9PT0gJ29iamVjdCcpXG4gICAgKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kKHRhcmdldDogYW55LCBzcmM6IGFueSkge1xuICBjb25zdCBub0V4dGVuZCA9IFsnX19wcm90b19fJywgJ2NvbnN0cnVjdG9yJywgJ3Byb3RvdHlwZSddO1xuICBPYmplY3Qua2V5cyhzcmMpXG4gICAgLmZpbHRlcigoa2V5KSA9PiBub0V4dGVuZC5pbmRleE9mKGtleSkgPCAwKVxuICAgIC5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdGFyZ2V0W2tleV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRhcmdldFtrZXldID0gc3JjW2tleV07XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0YXJnZXRba2V5XSAmJiAhc3JjW2tleV0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGlzT2JqZWN0KHNyY1trZXldKSAmJiBpc09iamVjdCh0YXJnZXRba2V5XSkgJiYgT2JqZWN0LmtleXMoc3JjW2tleV0pLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHNyY1trZXldLl9fc3dpcGVyX18pIHRhcmdldFtrZXldID0gc3JjW2tleV07XG4gICAgICAgIGVsc2UgZXh0ZW5kKHRhcmdldFtrZXldLCBzcmNba2V5XSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXRba2V5XSA9IHNyY1trZXldO1xuICAgICAgfVxuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgYCR7dmFsdWV9YCAhPT0gJ2ZhbHNlJztcbn1cblxuZXhwb3J0IGNvbnN0IGlnbm9yZU5nT25DaGFuZ2VzID0gWydwYWdpbmF0aW9uJywgJ25hdmlnYXRpb24nLCAnc2Nyb2xsYmFyJywgJ3ZpcnR1YWwnXTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFByb3BlcnR5KHZhbDogYW55LCBvYmogPSB7fSk6IHt9IHwgZmFsc2Uge1xuICBpZiAoaXNPYmplY3QodmFsKSkge1xuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBpZiAoY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbCkgPT09IHRydWUpIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuIl19 \ No newline at end of file diff --git a/resources/web/guide/swiper/angular/esm2015/swiper-angular.js b/resources/web/guide/swiper/angular/esm2015/swiper-angular.js deleted file mode 100644 index 96e42d6f94..0000000000 --- a/resources/web/guide/swiper/angular/esm2015/swiper-angular.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from './angular/src/public-api'; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyLWFuZ3VsYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3dpcGVyLWFuZ3VsYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYW5ndWxhci9zcmMvcHVibGljLWFwaSc7XG4iXX0= \ No newline at end of file diff --git a/resources/web/guide/swiper/angular/esm2015/swiper_angular.js b/resources/web/guide/swiper/angular/esm2015/swiper_angular.js deleted file mode 100644 index 5105204835..0000000000 --- a/resources/web/guide/swiper/angular/esm2015/swiper_angular.js +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Generated bundle index. Do not edit. - */ -export * from './swiper-angular'; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyX2FuZ3VsYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3dpcGVyX2FuZ3VsYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3N3aXBlci1hbmd1bGFyJztcbiJdfQ== \ No newline at end of file diff --git a/resources/web/guide/swiper/angular/fesm2015/swiper_angular.js b/resources/web/guide/swiper/angular/fesm2015/swiper_angular.js deleted file mode 100644 index af4a317bed..0000000000 --- a/resources/web/guide/swiper/angular/fesm2015/swiper_angular.js +++ /dev/null @@ -1,1402 +0,0 @@ -import * as i0 from '@angular/core'; -import { Directive, Input, EventEmitter, PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Output, ViewChild, ContentChildren, HostBinding, NgModule } from '@angular/core'; -import * as i1 from '@angular/common'; -import { isPlatformBrowser, CommonModule } from '@angular/common'; -import Swiper from 'swiper'; -import { Subject, of } from 'rxjs'; - -function isObject(o) { - return (typeof o === 'object' && - o !== null && - o.constructor && - Object.prototype.toString.call(o).slice(8, -1) === 'Object'); -} -function isShowEl(val, obj, el) { - return ((coerceBooleanProperty(val) === true && obj && !obj.el) || - !(typeof obj !== 'boolean' && - obj.el !== (el === null || el === void 0 ? void 0 : el.nativeElement) && - (typeof obj.el === 'string' || typeof obj.el === '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]; - return; - } - if (target[key] && !src[key]) { - return; - } - 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 coerceBooleanProperty(value) { - return value != null && `${value}` !== 'false'; -} -const ignoreNgOnChanges = ['pagination', 'navigation', 'scrollbar', 'virtual']; -function setProperty(val, obj = {}) { - if (isObject(val)) { - return val; - } - if (coerceBooleanProperty(val) === true) { - return obj; - } - return false; -} - -/* underscore in name -> watch for changes */ -const paramsList = [ - 'init', - 'enabled', - '_direction', - 'touchEventsTarget', - 'initialSlide', - '_speed', - 'cssMode', - 'updateOnWindowResize', - 'resizeObserver', - 'nested', - 'focusableElements', - '_width', - '_height', - 'preventInteractionOnTransition', - 'userAgent', - 'url', - '_edgeSwipeDetection', - '_edgeSwipeThreshold', - '_freeMode', - '_autoHeight', - 'setWrapperSize', - 'virtualTranslate', - '_effect', - 'breakpoints', - '_spaceBetween', - '_slidesPerView', - '_grid', - '_slidesPerGroup', - '_slidesPerGroupSkip', - '_centeredSlides', - '_centeredSlidesBounds', - '_slidesOffsetBefore', - '_slidesOffsetAfter', - 'normalizeSlideIndex', - '_centerInsufficientSlides', - '_watchOverflow', - 'roundLengths', - 'touchRatio', - 'touchAngle', - 'simulateTouch', - '_shortSwipes', - '_longSwipes', - 'longSwipesRatio', - 'longSwipesMs', - '_followFinger', - 'allowTouchMove', - '_threshold', - 'touchMoveStopPropagation', - 'touchStartPreventDefault', - 'touchStartForcePreventDefault', - 'touchReleaseOnEdges', - 'uniqueNavElements', - '_resistance', - '_resistanceRatio', - '_watchSlidesProgress', - '_grabCursor', - 'preventClicks', - 'preventClicksPropagation', - '_slideToClickedSlide', - '_preloadImages', - 'updateOnImagesReady', - '_loop', - '_loopAdditionalSlides', - '_loopedSlides', - '_loopFillGroupWithBlank', - 'loopPreventsSlide', - '_allowSlidePrev', - '_allowSlideNext', - '_swipeHandler', - '_noSwiping', - 'noSwipingClass', - 'noSwipingSelector', - 'passiveListeners', - 'containerModifierClass', - 'slideClass', - 'slideBlankClass', - 'slideActiveClass', - 'slideDuplicateActiveClass', - 'slideVisibleClass', - 'slideDuplicateClass', - 'slideNextClass', - 'slideDuplicateNextClass', - 'slidePrevClass', - 'slideDuplicatePrevClass', - 'wrapperClass', - 'runCallbacksOnInit', - 'observer', - 'observeParents', - 'observeSlideChildren', - // modules - 'a11y', - 'autoplay', - '_controller', - 'coverflowEffect', - 'cubeEffect', - 'fadeEffect', - 'flipEffect', - 'creativeEffect', - 'cardsEffect', - 'hashNavigation', - 'history', - 'keyboard', - 'lazy', - 'mousewheel', - '_navigation', - '_pagination', - 'parallax', - '_scrollbar', - '_thumbs', - 'virtual', - 'zoom', -]; - -// eslint-disable-next-line -const allowedParams = paramsList.map((key) => key.replace(/_/, '')); -function getParams(obj = {}) { - const params = { - on: {}, - }; - const passedParams = {}; - extend(params, Swiper.defaults); - extend(params, Swiper.extendedDefaults); - params._emitClasses = true; - const rest = {}; - Object.keys(obj).forEach((key) => { - const _key = key.replace(/^_/, ''); - 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 { - rest[_key] = obj[_key]; - } - }); - return { params, passedParams, rest }; -} - -class SwiperSlideDirective { - constructor(template) { - this.template = template; - this.class = ''; - this.autoplayDelay = null; - this.slideData = { - isActive: false, - isPrev: false, - isNext: false, - isVisible: false, - isDuplicate: false, - }; - } - set zoom(val) { - this._zoom = coerceBooleanProperty(val); - } - get zoom() { - return this._zoom; - } - get classNames() { - return this._classNames; - } - set classNames(val) { - if (this._classNames === val) { - return; - } - this._classNames = val; - this.slideData = { - isActive: this._hasClass(['swiper-slide-active', 'swiper-slide-duplicate-active']), - isVisible: this._hasClass(['swiper-slide-visible']), - isDuplicate: this._hasClass(['swiper-slide-duplicate']), - isPrev: this._hasClass(['swiper-slide-prev', 'swiper-slide-duplicate-prev']), - isNext: this._hasClass(['swiper-slide-next', 'swiper-slide-duplicate-next']), - }; - } - _hasClass(classNames) { - return classNames.some((className) => this._classNames.indexOf(className) >= 0); - } -} -SwiperSlideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperSlideDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); -SwiperSlideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.2", type: SwiperSlideDirective, selector: "ng-template[swiperSlide]", inputs: { virtualIndex: "virtualIndex", class: "class", autoplayDelay: ["data-swiper-autoplay", "autoplayDelay"], zoom: "zoom" }, ngImport: i0 }); -i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperSlideDirective, decorators: [{ - type: Directive, - args: [{ - selector: 'ng-template[swiperSlide]', - }] - }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { virtualIndex: [{ - type: Input - }], class: [{ - type: Input - }], autoplayDelay: [{ - type: Input, - args: ['data-swiper-autoplay'] - }], zoom: [{ - type: Input - }] } }); - -class SwiperComponent { - constructor(_ngZone, elementRef, _changeDetectorRef, _platformId) { - this._ngZone = _ngZone; - this.elementRef = elementRef; - this._changeDetectorRef = _changeDetectorRef; - this._platformId = _platformId; - this.slideClass = 'swiper-slide'; - this.wrapperClass = 'swiper-wrapper'; - this.showNavigation = true; - this.showPagination = true; - this.showScrollbar = true; - // prettier-ignore - this.s__beforeBreakpoint = new EventEmitter(); - // prettier-ignore - this.s__containerClasses = new EventEmitter(); - // prettier-ignore - this.s__slideClass = new EventEmitter(); - // prettier-ignore - this.s__swiper = new EventEmitter(); - // prettier-ignore - this.s_activeIndexChange = new EventEmitter(); - // prettier-ignore - this.s_afterInit = new EventEmitter(); - // prettier-ignore - this.s_autoplay = new EventEmitter(); - // prettier-ignore - this.s_autoplayStart = new EventEmitter(); - // prettier-ignore - this.s_autoplayStop = new EventEmitter(); - // prettier-ignore - this.s_beforeDestroy = new EventEmitter(); - // prettier-ignore - this.s_beforeInit = new EventEmitter(); - // prettier-ignore - this.s_beforeLoopFix = new EventEmitter(); - // prettier-ignore - this.s_beforeResize = new EventEmitter(); - // prettier-ignore - this.s_beforeSlideChangeStart = new EventEmitter(); - // prettier-ignore - this.s_beforeTransitionStart = new EventEmitter(); - // prettier-ignore - this.s_breakpoint = new EventEmitter(); - // prettier-ignore - this.s_changeDirection = new EventEmitter(); - // prettier-ignore - this.s_click = new EventEmitter(); - // prettier-ignore - this.s_doubleTap = new EventEmitter(); - // prettier-ignore - this.s_doubleClick = new EventEmitter(); - // prettier-ignore - this.s_destroy = new EventEmitter(); - // prettier-ignore - this.s_fromEdge = new EventEmitter(); - // prettier-ignore - this.s_hashChange = new EventEmitter(); - // prettier-ignore - this.s_hashSet = new EventEmitter(); - // prettier-ignore - this.s_imagesReady = new EventEmitter(); - // prettier-ignore - this.s_init = new EventEmitter(); - // prettier-ignore - this.s_keyPress = new EventEmitter(); - // prettier-ignore - this.s_lazyImageLoad = new EventEmitter(); - // prettier-ignore - this.s_lazyImageReady = new EventEmitter(); - // prettier-ignore - this.s_loopFix = new EventEmitter(); - // prettier-ignore - this.s_momentumBounce = new EventEmitter(); - // prettier-ignore - this.s_navigationHide = new EventEmitter(); - // prettier-ignore - this.s_navigationShow = new EventEmitter(); - // prettier-ignore - this.s_observerUpdate = new EventEmitter(); - // prettier-ignore - this.s_orientationchange = new EventEmitter(); - // prettier-ignore - this.s_paginationHide = new EventEmitter(); - // prettier-ignore - this.s_paginationRender = new EventEmitter(); - // prettier-ignore - this.s_paginationShow = new EventEmitter(); - // prettier-ignore - this.s_paginationUpdate = new EventEmitter(); - // prettier-ignore - this.s_progress = new EventEmitter(); - // prettier-ignore - this.s_reachBeginning = new EventEmitter(); - // prettier-ignore - this.s_reachEnd = new EventEmitter(); - // prettier-ignore - this.s_realIndexChange = new EventEmitter(); - // prettier-ignore - this.s_resize = new EventEmitter(); - // prettier-ignore - this.s_scroll = new EventEmitter(); - // prettier-ignore - this.s_scrollbarDragEnd = new EventEmitter(); - // prettier-ignore - this.s_scrollbarDragMove = new EventEmitter(); - // prettier-ignore - this.s_scrollbarDragStart = new EventEmitter(); - // prettier-ignore - this.s_setTransition = new EventEmitter(); - // prettier-ignore - this.s_setTranslate = new EventEmitter(); - // prettier-ignore - this.s_slideChange = new EventEmitter(); - // prettier-ignore - this.s_slideChangeTransitionEnd = new EventEmitter(); - // prettier-ignore - this.s_slideChangeTransitionStart = new EventEmitter(); - // prettier-ignore - this.s_slideNextTransitionEnd = new EventEmitter(); - // prettier-ignore - this.s_slideNextTransitionStart = new EventEmitter(); - // prettier-ignore - this.s_slidePrevTransitionEnd = new EventEmitter(); - // prettier-ignore - this.s_slidePrevTransitionStart = new EventEmitter(); - // prettier-ignore - this.s_slideResetTransitionStart = new EventEmitter(); - // prettier-ignore - this.s_slideResetTransitionEnd = new EventEmitter(); - // prettier-ignore - this.s_sliderMove = new EventEmitter(); - // prettier-ignore - this.s_sliderFirstMove = new EventEmitter(); - // prettier-ignore - this.s_slidesLengthChange = new EventEmitter(); - // prettier-ignore - this.s_slidesGridLengthChange = new EventEmitter(); - // prettier-ignore - this.s_snapGridLengthChange = new EventEmitter(); - // prettier-ignore - this.s_snapIndexChange = new EventEmitter(); - // prettier-ignore - this.s_tap = new EventEmitter(); - // prettier-ignore - this.s_toEdge = new EventEmitter(); - // prettier-ignore - this.s_touchEnd = new EventEmitter(); - // prettier-ignore - this.s_touchMove = new EventEmitter(); - // prettier-ignore - this.s_touchMoveOpposite = new EventEmitter(); - // prettier-ignore - this.s_touchStart = new EventEmitter(); - // prettier-ignore - this.s_transitionEnd = new EventEmitter(); - // prettier-ignore - this.s_transitionStart = new EventEmitter(); - // prettier-ignore - this.s_update = new EventEmitter(); - // prettier-ignore - this.s_zoomChange = new EventEmitter(); - // prettier-ignore - this.s_swiper = new EventEmitter(); - this.indexChange = new EventEmitter(); - this._activeSlides = new Subject(); - this.containerClasses = 'swiper'; - this.slidesChanges = (val) => { - this.slides = val.map((slide, index) => { - slide.slideIndex = index; - slide.classNames = this.slideClass || ''; - return slide; - }); - if (this.loop && !this.loopedSlides) { - this.calcLoopedSlides(); - } - if (!this.virtual) { - if (this.loopedSlides) { - this.prependSlides = of(this.slides.slice(this.slides.length - this.loopedSlides)); - this.appendSlides = of(this.slides.slice(0, this.loopedSlides)); - } - } - else if (this.swiperRef && this.swiperRef.virtual) { - this._ngZone.runOutsideAngular(() => { - this.swiperRef.virtual.slides = this.slides; - this.swiperRef.virtual.update(true); - }); - } - this._changeDetectorRef.detectChanges(); - }; - this.style = null; - this.updateVirtualSlides = (virtualData) => { - // TODO: type virtualData - if (!this.swiperRef || - (this.currentVirtualData && - this.currentVirtualData.from === virtualData.from && - this.currentVirtualData.to === virtualData.to && - this.currentVirtualData.offset === virtualData.offset)) { - return; - } - this.style = this.swiperRef.isHorizontal() - ? { - [this.swiperRef.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`, - } - : { - top: `${virtualData.offset}px`, - }; - this.currentVirtualData = virtualData; - this._activeSlides.next(virtualData.slides); - this._ngZone.run(() => { - this._changeDetectorRef.detectChanges(); - }); - this._ngZone.runOutsideAngular(() => { - this.swiperRef.updateSlides(); - this.swiperRef.updateProgress(); - this.swiperRef.updateSlidesClasses(); - if (this.swiperRef.lazy && this.swiperRef.params.lazy['enabled']) { - this.swiperRef.lazy.load(); - } - this.swiperRef.virtual.update(true); - }); - return; - }; - } - set navigation(val) { - var _a, _b, _c; - const currentNext = typeof this._navigation !== 'boolean' && this._navigation !== '' - ? (_a = this._navigation) === null || _a === void 0 ? void 0 : _a.nextEl - : null; - const currentPrev = typeof this._navigation !== 'boolean' && this._navigation !== '' - ? (_b = this._navigation) === null || _b === void 0 ? void 0 : _b.prevEl - : null; - this._navigation = setProperty(val, { - nextEl: currentNext || null, - prevEl: currentPrev || null, - }); - this.showNavigation = !(coerceBooleanProperty(val) !== true || - (this._navigation && - typeof this._navigation !== 'boolean' && - this._navigation.prevEl !== ((_c = this._prevElRef) === null || _c === void 0 ? void 0 : _c.nativeElement) && - (this._navigation.prevEl !== null || this._navigation.nextEl !== null) && - (typeof this._navigation.nextEl === 'string' || - typeof this._navigation.prevEl === 'string' || - typeof this._navigation.nextEl === 'object' || - typeof this._navigation.prevEl === 'object'))); - } - get navigation() { - return this._navigation; - } - set pagination(val) { - var _a; - const current = typeof this._pagination !== 'boolean' && this._pagination !== '' - ? (_a = this._pagination) === null || _a === void 0 ? void 0 : _a.el - : null; - this._pagination = setProperty(val, { - el: current || null, - }); - this.showPagination = isShowEl(val, this._pagination, this._paginationElRef); - } - get pagination() { - return this._pagination; - } - set scrollbar(val) { - var _a; - const current = typeof this._scrollbar !== 'boolean' && this._scrollbar !== '' ? (_a = this._scrollbar) === null || _a === void 0 ? void 0 : _a.el : null; - this._scrollbar = setProperty(val, { - el: current || null, - }); - this.showScrollbar = isShowEl(val, this._scrollbar, this._scrollbarElRef); - } - get scrollbar() { - return this._scrollbar; - } - set virtual(val) { - this._virtual = setProperty(val); - } - get virtual() { - return this._virtual; - } - set index(index) { - console.warn('`[(index)]` prop is deprecated and will be removed in upcoming versions'); - this.setIndex(index); - } - set config(val) { - this.updateSwiper(val); - const { params } = getParams(val); - Object.assign(this, params); - } - set prevElRef(el) { - this._prevElRef = el; - this._setElement(el, this.navigation, 'navigation', 'prevEl'); - } - set nextElRef(el) { - this._nextElRef = el; - this._setElement(el, this.navigation, 'navigation', 'nextEl'); - } - set scrollbarElRef(el) { - this._scrollbarElRef = el; - this._setElement(el, this.scrollbar, 'scrollbar'); - } - set paginationElRef(el) { - this._paginationElRef = el; - this._setElement(el, this.pagination, 'pagination'); - } - get activeSlides() { - if (this.virtual) { - return this._activeSlides; - } - return of(this.slides); - } - get zoomContainerClass() { - return this.zoom && typeof this.zoom !== 'boolean' - ? this.zoom.containerClass - : 'swiper-zoom-container'; - } - _setElement(el, ref, update, key = 'el') { - if (!el || !ref) { - return; - } - if (ref && el.nativeElement) { - if (ref[key] === el.nativeElement) { - return; - } - ref[key] = el.nativeElement; - } - const updateObj = {}; - updateObj[update] = true; - this.updateInitSwiper(updateObj); - } - ngOnInit() { - const { params } = getParams(this); - Object.assign(this, params); - } - ngAfterViewInit() { - this.childrenSlidesInit(); - this.initSwiper(); - this._changeDetectorRef.detectChanges(); - setTimeout(() => { - this.s_swiper.emit(this.swiperRef); - }); - } - childrenSlidesInit() { - this.slidesChanges(this.slidesEl); - this.slidesEl.changes.subscribe(this.slidesChanges); - } - get isSwiperActive() { - return this.swiperRef && !this.swiperRef.destroyed; - } - initSwiper() { - const { params: swiperParams, passedParams } = getParams(this); - Object.assign(this, swiperParams); - this._ngZone.runOutsideAngular(() => { - swiperParams.init = false; - if (!swiperParams.virtual) { - swiperParams.observer = true; - } - swiperParams.onAny = (eventName, ...args) => { - const emitter = this[('s_' + eventName)]; - if (emitter) { - emitter.emit(...args); - } - }; - const _slideClasses = (_, updated) => { - updated.forEach(({ slideEl, classNames }, index) => { - const dataIndex = slideEl.getAttribute('data-swiper-slide-index'); - const slideIndex = dataIndex ? parseInt(dataIndex) : index; - if (this.virtual) { - const virtualSlide = this.slides.find((item) => { - return item.virtualIndex && item.virtualIndex === slideIndex; - }); - if (virtualSlide) { - virtualSlide.classNames = classNames; - return; - } - } - if (this.slides[slideIndex]) { - this.slides[slideIndex].classNames = classNames; - } - }); - this._changeDetectorRef.detectChanges(); - }; - const _containerClasses = (_, classes) => { - setTimeout(() => { - this.containerClasses = classes; - }); - }; - Object.assign(swiperParams.on, { - _containerClasses, - _slideClasses, - }); - const swiperRef = new Swiper(swiperParams); - swiperRef.loopCreate = () => { }; - swiperRef.loopDestroy = () => { }; - if (swiperParams.loop) { - swiperRef.loopedSlides = this.loopedSlides; - } - const isVirtualEnabled = typeof swiperRef.params.virtual !== 'undefined' && - typeof swiperRef.params.virtual !== 'boolean' && - swiperRef.params.virtual.enabled; - if (swiperRef.virtual && isVirtualEnabled) { - swiperRef.virtual.slides = this.slides; - const extendWith = { - cache: false, - slides: this.slides, - renderExternal: this.updateVirtualSlides, - renderExternalUpdate: false, - }; - extend(swiperRef.params.virtual, extendWith); - extend(swiperRef.originalParams.virtual, extendWith); - } - if (isPlatformBrowser(this._platformId)) { - this.swiperRef = swiperRef.init(this.elementRef.nativeElement); - const isEnabled = typeof this.swiperRef.params.virtual !== 'undefined' && - typeof this.swiperRef.params.virtual !== 'boolean' && - this.swiperRef.params.virtual.enabled; - if (this.swiperRef.virtual && isEnabled) { - this.swiperRef.virtual.update(true); - } - this._changeDetectorRef.detectChanges(); - swiperRef.on('slideChange', () => { - this.indexChange.emit(this.swiperRef.realIndex); - }); - } - }); - } - ngOnChanges(changedParams) { - this.updateSwiper(changedParams); - this._changeDetectorRef.detectChanges(); - } - updateInitSwiper(changedParams) { - if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) { - return; - } - this._ngZone.runOutsideAngular(() => { - const { params: currentParams, pagination, navigation, scrollbar, virtual, thumbs, } = this.swiperRef; - if (changedParams.pagination) { - if (this.pagination && - typeof this.pagination !== 'boolean' && - this.pagination.el && - pagination && - !pagination.el) { - this.updateParameter('pagination', this.pagination); - pagination.init(); - pagination.render(); - pagination.update(); - } - else { - pagination.destroy(); - pagination.el = null; - } - } - if (changedParams.scrollbar) { - if (this.scrollbar && - typeof this.scrollbar !== 'boolean' && - this.scrollbar.el && - scrollbar && - !scrollbar.el) { - this.updateParameter('scrollbar', this.scrollbar); - scrollbar.init(); - scrollbar.updateSize(); - scrollbar.setTranslate(); - } - else { - scrollbar.destroy(); - scrollbar.el = null; - } - } - if (changedParams.navigation) { - if (this.navigation && - typeof this.navigation !== 'boolean' && - this.navigation.prevEl && - this.navigation.nextEl && - navigation && - !navigation.prevEl && - !navigation.nextEl) { - this.updateParameter('navigation', this.navigation); - navigation.init(); - navigation.update(); - } - else if (navigation.prevEl && navigation.nextEl) { - navigation.destroy(); - navigation.nextEl = null; - navigation.prevEl = null; - } - } - if (changedParams.thumbs && this.thumbs && this.thumbs.swiper) { - this.updateParameter('thumbs', this.thumbs); - const initialized = thumbs.init(); - if (initialized) - thumbs.update(true); - } - if (changedParams.controller && this.controller && this.controller.control) { - this.swiperRef.controller.control = this.controller.control; - } - this.swiperRef.update(); - }); - } - updateSwiper(changedParams) { - this._ngZone.runOutsideAngular(() => { - var _a, _b; - if (changedParams.config) { - return; - } - if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) { - return; - } - for (const key in changedParams) { - if (ignoreNgOnChanges.indexOf(key) >= 0) { - continue; - } - const newValue = (_b = (_a = changedParams[key]) === null || _a === void 0 ? void 0 : _a.currentValue) !== null && _b !== void 0 ? _b : changedParams[key]; - this.updateParameter(key, newValue); - } - if (changedParams.allowSlideNext) { - this.swiperRef.allowSlideNext = this.allowSlideNext; - } - if (changedParams.allowSlidePrev) { - this.swiperRef.allowSlidePrev = this.allowSlidePrev; - } - if (changedParams.direction) { - this.swiperRef.changeDirection(this.direction, false); - } - if (changedParams.breakpoints) { - if (this.loop && !this.loopedSlides) { - this.calcLoopedSlides(); - } - this.swiperRef.currentBreakpoint = null; - this.swiperRef.setBreakpoint(); - } - if (changedParams.thumbs || changedParams.controller) { - this.updateInitSwiper(changedParams); - } - this.swiperRef.update(); - }); - } - calcLoopedSlides() { - if (!this.loop) { - return; - } - let slidesPerViewParams = this.slidesPerView; - if (this.breakpoints) { - const breakpoint = Swiper.prototype.getBreakpoint(this.breakpoints); - const breakpointOnlyParams = breakpoint in this.breakpoints ? this.breakpoints[breakpoint] : undefined; - if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) { - slidesPerViewParams = breakpointOnlyParams.slidesPerView; - } - } - if (slidesPerViewParams === 'auto') { - this.loopedSlides = this.slides.length; - return this.slides.length; - } - let loopedSlides = this.loopedSlides || slidesPerViewParams; - if (!loopedSlides) { - // ? - return; - } - if (this.loopAdditionalSlides) { - loopedSlides += this.loopAdditionalSlides; - } - if (loopedSlides > this.slides.length) { - loopedSlides = this.slides.length; - } - this.loopedSlides = loopedSlides; - return loopedSlides; - } - updateParameter(key, value) { - if (!(this.swiperRef && !this.swiperRef.destroyed)) { - return; - } - const _key = key.replace(/^_/, ''); - const isCurrentParamObj = isObject(this.swiperRef.params[_key]); - if (Object.keys(this.swiperRef.modules).indexOf(_key) >= 0) { - const defaultParams = this.swiperRef.modules[_key].params[_key]; - if (isCurrentParamObj) { - extend(this.swiperRef.params[_key], defaultParams); - } - else { - this.swiperRef.params[_key] = defaultParams; - } - } - if (_key === 'enabled') { - if (value === true) { - this.swiperRef.enable(); - } - else if (value === false) { - this.swiperRef.disable(); - } - return; - } - if (isCurrentParamObj && isObject(value)) { - extend(this.swiperRef.params[_key], value); - } - else { - this.swiperRef.params[_key] = value; - } - } - /** - * @deprecated will be removed in upcoming versions - */ - setIndex(index, speed, silent) { - if (!this.isSwiperActive) { - this.initialSlide = index; - return; - } - if (index === this.swiperRef.activeIndex) { - return; - } - this._ngZone.runOutsideAngular(() => { - if (this.loop) { - this.swiperRef.slideToLoop(index, speed, !silent); - } - else { - this.swiperRef.slideTo(index, speed, !silent); - } - }); - } - ngOnDestroy() { - this._ngZone.runOutsideAngular(() => { - var _a; - (_a = this.swiperRef) === null || _a === void 0 ? void 0 : _a.destroy(true, false); - }); - } -} -SwiperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); -SwiperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.2", type: SwiperComponent, selector: "swiper, [swiper]", inputs: { enabled: "enabled", direction: "direction", touchEventsTarget: "touchEventsTarget", initialSlide: "initialSlide", speed: "speed", cssMode: "cssMode", updateOnWindowResize: "updateOnWindowResize", resizeObserver: "resizeObserver", nested: "nested", focusableElements: "focusableElements", width: "width", height: "height", preventInteractionOnTransition: "preventInteractionOnTransition", userAgent: "userAgent", url: "url", edgeSwipeDetection: "edgeSwipeDetection", edgeSwipeThreshold: "edgeSwipeThreshold", freeMode: "freeMode", autoHeight: "autoHeight", setWrapperSize: "setWrapperSize", virtualTranslate: "virtualTranslate", effect: "effect", breakpoints: "breakpoints", spaceBetween: "spaceBetween", slidesPerView: "slidesPerView", grid: "grid", slidesPerGroup: "slidesPerGroup", slidesPerGroupSkip: "slidesPerGroupSkip", centeredSlides: "centeredSlides", centeredSlidesBounds: "centeredSlidesBounds", slidesOffsetBefore: "slidesOffsetBefore", slidesOffsetAfter: "slidesOffsetAfter", normalizeSlideIndex: "normalizeSlideIndex", centerInsufficientSlides: "centerInsufficientSlides", watchOverflow: "watchOverflow", roundLengths: "roundLengths", touchRatio: "touchRatio", touchAngle: "touchAngle", simulateTouch: "simulateTouch", shortSwipes: "shortSwipes", longSwipes: "longSwipes", longSwipesRatio: "longSwipesRatio", longSwipesMs: "longSwipesMs", followFinger: "followFinger", allowTouchMove: "allowTouchMove", threshold: "threshold", touchMoveStopPropagation: "touchMoveStopPropagation", touchStartPreventDefault: "touchStartPreventDefault", touchStartForcePreventDefault: "touchStartForcePreventDefault", touchReleaseOnEdges: "touchReleaseOnEdges", uniqueNavElements: "uniqueNavElements", resistance: "resistance", resistanceRatio: "resistanceRatio", watchSlidesProgress: "watchSlidesProgress", grabCursor: "grabCursor", preventClicks: "preventClicks", preventClicksPropagation: "preventClicksPropagation", slideToClickedSlide: "slideToClickedSlide", preloadImages: "preloadImages", updateOnImagesReady: "updateOnImagesReady", loop: "loop", loopAdditionalSlides: "loopAdditionalSlides", loopedSlides: "loopedSlides", loopFillGroupWithBlank: "loopFillGroupWithBlank", loopPreventsSlide: "loopPreventsSlide", allowSlidePrev: "allowSlidePrev", allowSlideNext: "allowSlideNext", swipeHandler: "swipeHandler", noSwiping: "noSwiping", noSwipingClass: "noSwipingClass", noSwipingSelector: "noSwipingSelector", passiveListeners: "passiveListeners", containerModifierClass: "containerModifierClass", slideClass: "slideClass", slideBlankClass: "slideBlankClass", slideActiveClass: "slideActiveClass", slideDuplicateActiveClass: "slideDuplicateActiveClass", slideVisibleClass: "slideVisibleClass", slideDuplicateClass: "slideDuplicateClass", slideNextClass: "slideNextClass", slideDuplicateNextClass: "slideDuplicateNextClass", slidePrevClass: "slidePrevClass", slideDuplicatePrevClass: "slideDuplicatePrevClass", wrapperClass: "wrapperClass", runCallbacksOnInit: "runCallbacksOnInit", observeParents: "observeParents", observeSlideChildren: "observeSlideChildren", a11y: "a11y", autoplay: "autoplay", controller: "controller", coverflowEffect: "coverflowEffect", cubeEffect: "cubeEffect", fadeEffect: "fadeEffect", flipEffect: "flipEffect", creativeEffect: "creativeEffect", cardsEffect: "cardsEffect", hashNavigation: "hashNavigation", history: "history", keyboard: "keyboard", lazy: "lazy", mousewheel: "mousewheel", parallax: "parallax", thumbs: "thumbs", zoom: "zoom", class: "class", id: "id", navigation: "navigation", pagination: "pagination", scrollbar: "scrollbar", virtual: "virtual", index: "index", config: "config" }, outputs: { s__beforeBreakpoint: "_beforeBreakpoint", s__containerClasses: "_containerClasses", s__slideClass: "_slideClass", s__swiper: "_swiper", s_activeIndexChange: "activeIndexChange", s_afterInit: "afterInit", s_autoplay: "autoplay", s_autoplayStart: "autoplayStart", s_autoplayStop: "autoplayStop", s_beforeDestroy: "beforeDestroy", s_beforeInit: "beforeInit", s_beforeLoopFix: "beforeLoopFix", s_beforeResize: "beforeResize", s_beforeSlideChangeStart: "beforeSlideChangeStart", s_beforeTransitionStart: "beforeTransitionStart", s_breakpoint: "breakpoint", s_changeDirection: "changeDirection", s_click: "click", s_doubleTap: "doubleTap", s_doubleClick: "doubleClick", s_destroy: "destroy", s_fromEdge: "fromEdge", s_hashChange: "hashChange", s_hashSet: "hashSet", s_imagesReady: "imagesReady", s_init: "init", s_keyPress: "keyPress", s_lazyImageLoad: "lazyImageLoad", s_lazyImageReady: "lazyImageReady", s_loopFix: "loopFix", s_momentumBounce: "momentumBounce", s_navigationHide: "navigationHide", s_navigationShow: "navigationShow", s_observerUpdate: "observerUpdate", s_orientationchange: "orientationchange", s_paginationHide: "paginationHide", s_paginationRender: "paginationRender", s_paginationShow: "paginationShow", s_paginationUpdate: "paginationUpdate", s_progress: "progress", s_reachBeginning: "reachBeginning", s_reachEnd: "reachEnd", s_realIndexChange: "realIndexChange", s_resize: "resize", s_scroll: "scroll", s_scrollbarDragEnd: "scrollbarDragEnd", s_scrollbarDragMove: "scrollbarDragMove", s_scrollbarDragStart: "scrollbarDragStart", s_setTransition: "setTransition", s_setTranslate: "setTranslate", s_slideChange: "slideChange", s_slideChangeTransitionEnd: "slideChangeTransitionEnd", s_slideChangeTransitionStart: "slideChangeTransitionStart", s_slideNextTransitionEnd: "slideNextTransitionEnd", s_slideNextTransitionStart: "slideNextTransitionStart", s_slidePrevTransitionEnd: "slidePrevTransitionEnd", s_slidePrevTransitionStart: "slidePrevTransitionStart", s_slideResetTransitionStart: "slideResetTransitionStart", s_slideResetTransitionEnd: "slideResetTransitionEnd", s_sliderMove: "sliderMove", s_sliderFirstMove: "sliderFirstMove", s_slidesLengthChange: "slidesLengthChange", s_slidesGridLengthChange: "slidesGridLengthChange", s_snapGridLengthChange: "snapGridLengthChange", s_snapIndexChange: "snapIndexChange", s_tap: "tap", s_toEdge: "toEdge", s_touchEnd: "touchEnd", s_touchMove: "touchMove", s_touchMoveOpposite: "touchMoveOpposite", s_touchStart: "touchStart", s_transitionEnd: "transitionEnd", s_transitionStart: "transitionStart", s_update: "update", s_zoomChange: "zoomChange", s_swiper: "swiper", indexChange: "indexChange" }, host: { properties: { "class": "this.containerClasses" } }, queries: [{ propertyName: "slidesEl", predicate: SwiperSlideDirective }], viewQueries: [{ propertyName: "prevElRef", first: true, predicate: ["prevElRef"], descendants: true }, { propertyName: "nextElRef", first: true, predicate: ["nextElRef"], descendants: true }, { propertyName: "scrollbarElRef", first: true, predicate: ["scrollbarElRef"], descendants: true }, { propertyName: "paginationElRef", first: true, predicate: ["paginationElRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "\n\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n\n\n\n \n
\n \n
\n \n
\n \n \n\n", styles: ["\n swiper {\n display: block;\n }\n "], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "async": i1.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); -i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperComponent, decorators: [{ - type: Component, - args: [{ - selector: 'swiper, [swiper]', - templateUrl: './swiper.component.html', - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None, - styles: [ - ` - swiper { - display: block; - } - `, - ], - }] - }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: Object, decorators: [{ - type: Inject, - args: [PLATFORM_ID] - }] }]; }, propDecorators: { enabled: [{ - type: Input - }], direction: [{ - type: Input - }], touchEventsTarget: [{ - type: Input - }], initialSlide: [{ - type: Input - }], speed: [{ - type: Input - }], cssMode: [{ - type: Input - }], updateOnWindowResize: [{ - type: Input - }], resizeObserver: [{ - type: Input - }], nested: [{ - type: Input - }], focusableElements: [{ - type: Input - }], width: [{ - type: Input - }], height: [{ - type: Input - }], preventInteractionOnTransition: [{ - type: Input - }], userAgent: [{ - type: Input - }], url: [{ - type: Input - }], edgeSwipeDetection: [{ - type: Input - }], edgeSwipeThreshold: [{ - type: Input - }], freeMode: [{ - type: Input - }], autoHeight: [{ - type: Input - }], setWrapperSize: [{ - type: Input - }], virtualTranslate: [{ - type: Input - }], effect: [{ - type: Input - }], breakpoints: [{ - type: Input - }], spaceBetween: [{ - type: Input - }], slidesPerView: [{ - type: Input - }], grid: [{ - type: Input - }], slidesPerGroup: [{ - type: Input - }], slidesPerGroupSkip: [{ - type: Input - }], centeredSlides: [{ - type: Input - }], centeredSlidesBounds: [{ - type: Input - }], slidesOffsetBefore: [{ - type: Input - }], slidesOffsetAfter: [{ - type: Input - }], normalizeSlideIndex: [{ - type: Input - }], centerInsufficientSlides: [{ - type: Input - }], watchOverflow: [{ - type: Input - }], roundLengths: [{ - type: Input - }], touchRatio: [{ - type: Input - }], touchAngle: [{ - type: Input - }], simulateTouch: [{ - type: Input - }], shortSwipes: [{ - type: Input - }], longSwipes: [{ - type: Input - }], longSwipesRatio: [{ - type: Input - }], longSwipesMs: [{ - type: Input - }], followFinger: [{ - type: Input - }], allowTouchMove: [{ - type: Input - }], threshold: [{ - type: Input - }], touchMoveStopPropagation: [{ - type: Input - }], touchStartPreventDefault: [{ - type: Input - }], touchStartForcePreventDefault: [{ - type: Input - }], touchReleaseOnEdges: [{ - type: Input - }], uniqueNavElements: [{ - type: Input - }], resistance: [{ - type: Input - }], resistanceRatio: [{ - type: Input - }], watchSlidesProgress: [{ - type: Input - }], grabCursor: [{ - type: Input - }], preventClicks: [{ - type: Input - }], preventClicksPropagation: [{ - type: Input - }], slideToClickedSlide: [{ - type: Input - }], preloadImages: [{ - type: Input - }], updateOnImagesReady: [{ - type: Input - }], loop: [{ - type: Input - }], loopAdditionalSlides: [{ - type: Input - }], loopedSlides: [{ - type: Input - }], loopFillGroupWithBlank: [{ - type: Input - }], loopPreventsSlide: [{ - type: Input - }], allowSlidePrev: [{ - type: Input - }], allowSlideNext: [{ - type: Input - }], swipeHandler: [{ - type: Input - }], noSwiping: [{ - type: Input - }], noSwipingClass: [{ - type: Input - }], noSwipingSelector: [{ - type: Input - }], passiveListeners: [{ - type: Input - }], containerModifierClass: [{ - type: Input - }], slideClass: [{ - type: Input - }], slideBlankClass: [{ - type: Input - }], slideActiveClass: [{ - type: Input - }], slideDuplicateActiveClass: [{ - type: Input - }], slideVisibleClass: [{ - type: Input - }], slideDuplicateClass: [{ - type: Input - }], slideNextClass: [{ - type: Input - }], slideDuplicateNextClass: [{ - type: Input - }], slidePrevClass: [{ - type: Input - }], slideDuplicatePrevClass: [{ - type: Input - }], wrapperClass: [{ - type: Input - }], runCallbacksOnInit: [{ - type: Input - }], observeParents: [{ - type: Input - }], observeSlideChildren: [{ - type: Input - }], a11y: [{ - type: Input - }], autoplay: [{ - type: Input - }], controller: [{ - type: Input - }], coverflowEffect: [{ - type: Input - }], cubeEffect: [{ - type: Input - }], fadeEffect: [{ - type: Input - }], flipEffect: [{ - type: Input - }], creativeEffect: [{ - type: Input - }], cardsEffect: [{ - type: Input - }], hashNavigation: [{ - type: Input - }], history: [{ - type: Input - }], keyboard: [{ - type: Input - }], lazy: [{ - type: Input - }], mousewheel: [{ - type: Input - }], parallax: [{ - type: Input - }], thumbs: [{ - type: Input - }], zoom: [{ - type: Input - }], class: [{ - type: Input - }], id: [{ - type: Input - }], navigation: [{ - type: Input - }], pagination: [{ - type: Input - }], scrollbar: [{ - type: Input - }], virtual: [{ - type: Input - }], index: [{ - type: Input - }], config: [{ - type: Input - }], s__beforeBreakpoint: [{ - type: Output, - args: ['_beforeBreakpoint'] - }], s__containerClasses: [{ - type: Output, - args: ['_containerClasses'] - }], s__slideClass: [{ - type: Output, - args: ['_slideClass'] - }], s__swiper: [{ - type: Output, - args: ['_swiper'] - }], s_activeIndexChange: [{ - type: Output, - args: ['activeIndexChange'] - }], s_afterInit: [{ - type: Output, - args: ['afterInit'] - }], s_autoplay: [{ - type: Output, - args: ['autoplay'] - }], s_autoplayStart: [{ - type: Output, - args: ['autoplayStart'] - }], s_autoplayStop: [{ - type: Output, - args: ['autoplayStop'] - }], s_beforeDestroy: [{ - type: Output, - args: ['beforeDestroy'] - }], s_beforeInit: [{ - type: Output, - args: ['beforeInit'] - }], s_beforeLoopFix: [{ - type: Output, - args: ['beforeLoopFix'] - }], s_beforeResize: [{ - type: Output, - args: ['beforeResize'] - }], s_beforeSlideChangeStart: [{ - type: Output, - args: ['beforeSlideChangeStart'] - }], s_beforeTransitionStart: [{ - type: Output, - args: ['beforeTransitionStart'] - }], s_breakpoint: [{ - type: Output, - args: ['breakpoint'] - }], s_changeDirection: [{ - type: Output, - args: ['changeDirection'] - }], s_click: [{ - type: Output, - args: ['click'] - }], s_doubleTap: [{ - type: Output, - args: ['doubleTap'] - }], s_doubleClick: [{ - type: Output, - args: ['doubleClick'] - }], s_destroy: [{ - type: Output, - args: ['destroy'] - }], s_fromEdge: [{ - type: Output, - args: ['fromEdge'] - }], s_hashChange: [{ - type: Output, - args: ['hashChange'] - }], s_hashSet: [{ - type: Output, - args: ['hashSet'] - }], s_imagesReady: [{ - type: Output, - args: ['imagesReady'] - }], s_init: [{ - type: Output, - args: ['init'] - }], s_keyPress: [{ - type: Output, - args: ['keyPress'] - }], s_lazyImageLoad: [{ - type: Output, - args: ['lazyImageLoad'] - }], s_lazyImageReady: [{ - type: Output, - args: ['lazyImageReady'] - }], s_loopFix: [{ - type: Output, - args: ['loopFix'] - }], s_momentumBounce: [{ - type: Output, - args: ['momentumBounce'] - }], s_navigationHide: [{ - type: Output, - args: ['navigationHide'] - }], s_navigationShow: [{ - type: Output, - args: ['navigationShow'] - }], s_observerUpdate: [{ - type: Output, - args: ['observerUpdate'] - }], s_orientationchange: [{ - type: Output, - args: ['orientationchange'] - }], s_paginationHide: [{ - type: Output, - args: ['paginationHide'] - }], s_paginationRender: [{ - type: Output, - args: ['paginationRender'] - }], s_paginationShow: [{ - type: Output, - args: ['paginationShow'] - }], s_paginationUpdate: [{ - type: Output, - args: ['paginationUpdate'] - }], s_progress: [{ - type: Output, - args: ['progress'] - }], s_reachBeginning: [{ - type: Output, - args: ['reachBeginning'] - }], s_reachEnd: [{ - type: Output, - args: ['reachEnd'] - }], s_realIndexChange: [{ - type: Output, - args: ['realIndexChange'] - }], s_resize: [{ - type: Output, - args: ['resize'] - }], s_scroll: [{ - type: Output, - args: ['scroll'] - }], s_scrollbarDragEnd: [{ - type: Output, - args: ['scrollbarDragEnd'] - }], s_scrollbarDragMove: [{ - type: Output, - args: ['scrollbarDragMove'] - }], s_scrollbarDragStart: [{ - type: Output, - args: ['scrollbarDragStart'] - }], s_setTransition: [{ - type: Output, - args: ['setTransition'] - }], s_setTranslate: [{ - type: Output, - args: ['setTranslate'] - }], s_slideChange: [{ - type: Output, - args: ['slideChange'] - }], s_slideChangeTransitionEnd: [{ - type: Output, - args: ['slideChangeTransitionEnd'] - }], s_slideChangeTransitionStart: [{ - type: Output, - args: ['slideChangeTransitionStart'] - }], s_slideNextTransitionEnd: [{ - type: Output, - args: ['slideNextTransitionEnd'] - }], s_slideNextTransitionStart: [{ - type: Output, - args: ['slideNextTransitionStart'] - }], s_slidePrevTransitionEnd: [{ - type: Output, - args: ['slidePrevTransitionEnd'] - }], s_slidePrevTransitionStart: [{ - type: Output, - args: ['slidePrevTransitionStart'] - }], s_slideResetTransitionStart: [{ - type: Output, - args: ['slideResetTransitionStart'] - }], s_slideResetTransitionEnd: [{ - type: Output, - args: ['slideResetTransitionEnd'] - }], s_sliderMove: [{ - type: Output, - args: ['sliderMove'] - }], s_sliderFirstMove: [{ - type: Output, - args: ['sliderFirstMove'] - }], s_slidesLengthChange: [{ - type: Output, - args: ['slidesLengthChange'] - }], s_slidesGridLengthChange: [{ - type: Output, - args: ['slidesGridLengthChange'] - }], s_snapGridLengthChange: [{ - type: Output, - args: ['snapGridLengthChange'] - }], s_snapIndexChange: [{ - type: Output, - args: ['snapIndexChange'] - }], s_tap: [{ - type: Output, - args: ['tap'] - }], s_toEdge: [{ - type: Output, - args: ['toEdge'] - }], s_touchEnd: [{ - type: Output, - args: ['touchEnd'] - }], s_touchMove: [{ - type: Output, - args: ['touchMove'] - }], s_touchMoveOpposite: [{ - type: Output, - args: ['touchMoveOpposite'] - }], s_touchStart: [{ - type: Output, - args: ['touchStart'] - }], s_transitionEnd: [{ - type: Output, - args: ['transitionEnd'] - }], s_transitionStart: [{ - type: Output, - args: ['transitionStart'] - }], s_update: [{ - type: Output, - args: ['update'] - }], s_zoomChange: [{ - type: Output, - args: ['zoomChange'] - }], s_swiper: [{ - type: Output, - args: ['swiper'] - }], indexChange: [{ - type: Output - }], prevElRef: [{ - type: ViewChild, - args: ['prevElRef', { static: false }] - }], nextElRef: [{ - type: ViewChild, - args: ['nextElRef', { static: false }] - }], scrollbarElRef: [{ - type: ViewChild, - args: ['scrollbarElRef', { static: false }] - }], paginationElRef: [{ - type: ViewChild, - args: ['paginationElRef', { static: false }] - }], slidesEl: [{ - type: ContentChildren, - args: [SwiperSlideDirective, { descendants: false, emitDistinctChangesOnly: true }] - }], containerClasses: [{ - type: HostBinding, - args: ['class'] - }] } }); - -class SwiperModule { -} -SwiperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -SwiperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperModule, declarations: [SwiperComponent, SwiperSlideDirective], imports: [CommonModule], exports: [SwiperComponent, SwiperSlideDirective] }); -SwiperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperModule, imports: [[CommonModule]] }); -i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperModule, decorators: [{ - type: NgModule, - args: [{ - declarations: [SwiperComponent, SwiperSlideDirective], - exports: [SwiperComponent, SwiperSlideDirective], - imports: [CommonModule], - }] - }] }); - -/* - * Public API Surface of angular - */ - -/** - * Generated bundle index. Do not edit. - */ - -export { SwiperComponent, SwiperModule, SwiperSlideDirective }; -//# sourceMappingURL=swiper_angular.js.map diff --git a/resources/web/guide/swiper/angular/fesm2015/swiper_angular.js.map b/resources/web/guide/swiper/angular/fesm2015/swiper_angular.js.map deleted file mode 100644 index 56b5f76095..0000000000 --- a/resources/web/guide/swiper/angular/fesm2015/swiper_angular.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"swiper_angular.js","sources":["../../../src/angular/src/utils/utils.ts","../../../src/angular/src/utils/params-list.ts","../../../src/angular/src/utils/get-params.ts","../../../src/angular/src/swiper-slide.directive.ts","../../../src/angular/src/swiper.component.ts","../../../src/angular/src/swiper.component.html","../../../src/angular/src/swiper.module.ts","../../../src/angular/src/public-api.ts","../../../src/swiper_angular.ts"],"sourcesContent":["export function isObject(o: any): boolean {\n return (\n typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n );\n}\n\nexport function isShowEl(val: any, obj: any, el: any): boolean {\n return (\n (coerceBooleanProperty(val) === true && obj && !obj.el) ||\n !(\n typeof obj !== 'boolean' &&\n obj.el !== el?.nativeElement &&\n (typeof obj.el === 'string' || typeof obj.el === 'object')\n )\n );\n}\n\nexport function extend(target: any, src: any) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src)\n .filter((key) => noExtend.indexOf(key) < 0)\n .forEach((key) => {\n if (typeof target[key] === 'undefined') {\n target[key] = src[key];\n return;\n }\n if (target[key] && !src[key]) {\n return;\n }\n if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];\n else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\n\nexport function coerceBooleanProperty(value: any): boolean {\n return value != null && `${value}` !== 'false';\n}\n\nexport const ignoreNgOnChanges = ['pagination', 'navigation', 'scrollbar', 'virtual'];\n\nexport function setProperty(val: any, obj = {}): {} | false {\n if (isObject(val)) {\n return val;\n }\n\n if (coerceBooleanProperty(val) === true) {\n return obj;\n }\n\n return false;\n}\n","/* underscore in name -> watch for changes */\nexport const paramsList = [\n 'init',\n 'enabled',\n '_direction',\n 'touchEventsTarget',\n 'initialSlide',\n '_speed',\n 'cssMode',\n 'updateOnWindowResize',\n 'resizeObserver',\n 'nested',\n 'focusableElements',\n '_width',\n '_height',\n 'preventInteractionOnTransition',\n 'userAgent',\n 'url',\n '_edgeSwipeDetection',\n '_edgeSwipeThreshold',\n '_freeMode',\n '_autoHeight',\n 'setWrapperSize',\n 'virtualTranslate',\n '_effect',\n 'breakpoints',\n '_spaceBetween',\n '_slidesPerView',\n '_grid',\n '_slidesPerGroup',\n '_slidesPerGroupSkip',\n '_centeredSlides',\n '_centeredSlidesBounds',\n '_slidesOffsetBefore',\n '_slidesOffsetAfter',\n 'normalizeSlideIndex',\n '_centerInsufficientSlides',\n '_watchOverflow',\n 'roundLengths',\n 'touchRatio',\n 'touchAngle',\n 'simulateTouch',\n '_shortSwipes',\n '_longSwipes',\n 'longSwipesRatio',\n 'longSwipesMs',\n '_followFinger',\n 'allowTouchMove',\n '_threshold',\n 'touchMoveStopPropagation',\n 'touchStartPreventDefault',\n 'touchStartForcePreventDefault',\n 'touchReleaseOnEdges',\n 'uniqueNavElements',\n '_resistance',\n '_resistanceRatio',\n '_watchSlidesProgress',\n '_grabCursor',\n 'preventClicks',\n 'preventClicksPropagation',\n '_slideToClickedSlide',\n '_preloadImages',\n 'updateOnImagesReady',\n '_loop',\n '_loopAdditionalSlides',\n '_loopedSlides',\n '_loopFillGroupWithBlank',\n 'loopPreventsSlide',\n '_allowSlidePrev',\n '_allowSlideNext',\n '_swipeHandler',\n '_noSwiping',\n 'noSwipingClass',\n 'noSwipingSelector',\n 'passiveListeners',\n 'containerModifierClass',\n 'slideClass',\n 'slideBlankClass',\n 'slideActiveClass',\n 'slideDuplicateActiveClass',\n 'slideVisibleClass',\n 'slideDuplicateClass',\n 'slideNextClass',\n 'slideDuplicateNextClass',\n 'slidePrevClass',\n 'slideDuplicatePrevClass',\n 'wrapperClass',\n 'runCallbacksOnInit',\n 'observer',\n 'observeParents',\n 'observeSlideChildren',\n\n // modules\n 'a11y',\n 'autoplay',\n '_controller',\n 'coverflowEffect',\n 'cubeEffect',\n 'fadeEffect',\n 'flipEffect',\n 'creativeEffect',\n 'cardsEffect',\n 'hashNavigation',\n 'history',\n 'keyboard',\n 'lazy',\n 'mousewheel',\n '_navigation',\n '_pagination',\n 'parallax',\n '_scrollbar',\n '_thumbs',\n 'virtual',\n 'zoom',\n];\n","// eslint-disable-next-line\nimport { isObject, extend } from './utils';\nimport { paramsList } from './params-list';\n// @ts-ignore\nimport Swiper from 'swiper';\n\nexport const allowedParams = paramsList.map((key) => key.replace(/_/, ''));\nexport function getParams(obj: any = {}) {\n const params: any = {\n on: {},\n };\n const passedParams: any = {};\n extend(params, Swiper.defaults);\n extend(params, Swiper.extendedDefaults);\n params._emitClasses = true;\n\n const rest: any = {};\n Object.keys(obj).forEach((key: string) => {\n const _key = key.replace(/^_/, '');\n if (typeof obj[_key] === 'undefined') return;\n if (allowedParams.indexOf(_key) >= 0) {\n if (isObject(obj[_key])) {\n params[_key] = {};\n passedParams[_key] = {};\n extend(params[_key], obj[_key]);\n extend(passedParams[_key], obj[_key]);\n } else {\n params[_key] = obj[_key];\n passedParams[_key] = obj[_key];\n }\n } else {\n rest[_key] = obj[_key];\n }\n });\n\n return { params, passedParams, rest };\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { coerceBooleanProperty } from './utils/utils';\n@Directive({\n selector: 'ng-template[swiperSlide]',\n})\nexport class SwiperSlideDirective {\n @Input() virtualIndex: number;\n @Input() class: string = '';\n @Input('data-swiper-autoplay') autoplayDelay: string | null = null;\n @Input()\n set zoom(val: boolean) {\n this._zoom = coerceBooleanProperty(val);\n }\n get zoom() {\n return this._zoom;\n }\n private _zoom: boolean;\n slideIndex: number;\n get classNames() {\n return this._classNames;\n }\n set classNames(val) {\n if (this._classNames === val) {\n return;\n }\n this._classNames = val;\n this.slideData = {\n isActive: this._hasClass(['swiper-slide-active', 'swiper-slide-duplicate-active']),\n isVisible: this._hasClass(['swiper-slide-visible']),\n isDuplicate: this._hasClass(['swiper-slide-duplicate']),\n isPrev: this._hasClass(['swiper-slide-prev', 'swiper-slide-duplicate-prev']),\n isNext: this._hasClass(['swiper-slide-next', 'swiper-slide-duplicate-next']),\n };\n }\n\n private _hasClass(classNames: string[]) {\n return classNames.some((className) => this._classNames.indexOf(className) >= 0);\n }\n slideData = {\n isActive: false,\n isPrev: false,\n isNext: false,\n isVisible: false,\n isDuplicate: false,\n };\n\n private _classNames: string;\n constructor(public template: TemplateRef) {}\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnInit,\n Output,\n PLATFORM_ID,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\n// @ts-ignore\nimport Swiper from 'swiper';\nimport { Observable, of, Subject } from 'rxjs';\nimport { getParams } from './utils/get-params';\nimport { SwiperSlideDirective } from './swiper-slide.directive';\nimport {\n extend,\n isObject,\n setProperty,\n ignoreNgOnChanges,\n coerceBooleanProperty,\n isShowEl,\n} from './utils/utils';\nimport {\n SwiperOptions,\n SwiperEvents,\n NavigationOptions,\n PaginationOptions,\n ScrollbarOptions,\n VirtualOptions,\n} from 'swiper/types';\nimport { isPlatformBrowser } from '@angular/common';\n@Component({\n selector: 'swiper, [swiper]',\n templateUrl: './swiper.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\n `\n swiper {\n display: block;\n }\n `,\n ],\n})\nexport class SwiperComponent implements OnInit {\n @Input() enabled: SwiperOptions['enabled'];\n @Input() direction: SwiperOptions['direction'];\n @Input() touchEventsTarget: SwiperOptions['touchEventsTarget'];\n @Input() initialSlide: SwiperOptions['initialSlide'];\n @Input() speed: SwiperOptions['speed'];\n @Input() cssMode: SwiperOptions['cssMode'];\n @Input() updateOnWindowResize: SwiperOptions['updateOnWindowResize'];\n @Input() resizeObserver: SwiperOptions['resizeObserver'];\n @Input() nested: SwiperOptions['nested'];\n @Input() focusableElements: SwiperOptions['focusableElements'];\n @Input() width: SwiperOptions['width'];\n @Input() height: SwiperOptions['height'];\n @Input() preventInteractionOnTransition: SwiperOptions['preventInteractionOnTransition'];\n @Input() userAgent: SwiperOptions['userAgent'];\n @Input() url: SwiperOptions['url'];\n @Input() edgeSwipeDetection: boolean | string;\n @Input() edgeSwipeThreshold: number;\n @Input() freeMode: SwiperOptions['freeMode'];\n @Input() autoHeight: SwiperOptions['autoHeight'];\n @Input() setWrapperSize: SwiperOptions['setWrapperSize'];\n @Input() virtualTranslate: SwiperOptions['virtualTranslate'];\n @Input() effect: SwiperOptions['effect'];\n @Input() breakpoints: SwiperOptions['breakpoints'];\n @Input() spaceBetween: SwiperOptions['spaceBetween'];\n @Input() slidesPerView: SwiperOptions['slidesPerView'];\n @Input() grid: SwiperOptions['grid'];\n @Input() slidesPerGroup: SwiperOptions['slidesPerGroup'];\n @Input() slidesPerGroupSkip: SwiperOptions['slidesPerGroupSkip'];\n @Input() centeredSlides: SwiperOptions['centeredSlides'];\n @Input() centeredSlidesBounds: SwiperOptions['centeredSlidesBounds'];\n @Input() slidesOffsetBefore: SwiperOptions['slidesOffsetBefore'];\n @Input() slidesOffsetAfter: SwiperOptions['slidesOffsetAfter'];\n @Input() normalizeSlideIndex: SwiperOptions['normalizeSlideIndex'];\n @Input() centerInsufficientSlides: SwiperOptions['centerInsufficientSlides'];\n @Input() watchOverflow: SwiperOptions['watchOverflow'];\n @Input() roundLengths: SwiperOptions['roundLengths'];\n @Input() touchRatio: SwiperOptions['touchRatio'];\n @Input() touchAngle: SwiperOptions['touchAngle'];\n @Input() simulateTouch: SwiperOptions['simulateTouch'];\n @Input() shortSwipes: SwiperOptions['shortSwipes'];\n @Input() longSwipes: SwiperOptions['longSwipes'];\n @Input() longSwipesRatio: SwiperOptions['longSwipesRatio'];\n @Input() longSwipesMs: SwiperOptions['longSwipesMs'];\n @Input() followFinger: SwiperOptions['followFinger'];\n @Input() allowTouchMove: SwiperOptions['allowTouchMove'];\n @Input() threshold: SwiperOptions['threshold'];\n @Input() touchMoveStopPropagation: SwiperOptions['touchMoveStopPropagation'];\n @Input() touchStartPreventDefault: SwiperOptions['touchStartPreventDefault'];\n @Input() touchStartForcePreventDefault: SwiperOptions['touchStartForcePreventDefault'];\n @Input() touchReleaseOnEdges: SwiperOptions['touchReleaseOnEdges'];\n @Input() uniqueNavElements: SwiperOptions['uniqueNavElements'];\n @Input() resistance: SwiperOptions['resistance'];\n @Input() resistanceRatio: SwiperOptions['resistanceRatio'];\n @Input() watchSlidesProgress: SwiperOptions['watchSlidesProgress'];\n @Input() grabCursor: SwiperOptions['grabCursor'];\n @Input() preventClicks: SwiperOptions['preventClicks'];\n @Input() preventClicksPropagation: SwiperOptions['preventClicksPropagation'];\n @Input() slideToClickedSlide: SwiperOptions['slideToClickedSlide'];\n @Input() preloadImages: SwiperOptions['preloadImages'];\n @Input() updateOnImagesReady: SwiperOptions['updateOnImagesReady'];\n @Input() loop: SwiperOptions['loop'];\n @Input() loopAdditionalSlides: SwiperOptions['loopAdditionalSlides'];\n @Input() loopedSlides: SwiperOptions['loopedSlides'];\n @Input() loopFillGroupWithBlank: SwiperOptions['loopFillGroupWithBlank'];\n @Input() loopPreventsSlide: SwiperOptions['loopPreventsSlide'];\n @Input() allowSlidePrev: SwiperOptions['allowSlidePrev'];\n @Input() allowSlideNext: SwiperOptions['allowSlideNext'];\n @Input() swipeHandler: SwiperOptions['swipeHandler'];\n @Input() noSwiping: SwiperOptions['noSwiping'];\n @Input() noSwipingClass: SwiperOptions['noSwipingClass'];\n @Input() noSwipingSelector: SwiperOptions['noSwipingSelector'];\n @Input() passiveListeners: SwiperOptions['passiveListeners'];\n @Input() containerModifierClass: SwiperOptions['containerModifierClass'];\n @Input() slideClass: SwiperOptions['slideClass'] = 'swiper-slide';\n @Input() slideBlankClass: SwiperOptions['slideBlankClass'];\n @Input() slideActiveClass: SwiperOptions['slideActiveClass'];\n @Input() slideDuplicateActiveClass: SwiperOptions['slideDuplicateActiveClass'];\n @Input() slideVisibleClass: SwiperOptions['slideVisibleClass'];\n @Input() slideDuplicateClass: SwiperOptions['slideDuplicateClass'];\n @Input() slideNextClass: SwiperOptions['slideNextClass'];\n @Input() slideDuplicateNextClass: SwiperOptions['slideDuplicateNextClass'];\n @Input() slidePrevClass: SwiperOptions['slidePrevClass'];\n @Input() slideDuplicatePrevClass: SwiperOptions['slideDuplicatePrevClass'];\n @Input() wrapperClass: SwiperOptions['wrapperClass'] = 'swiper-wrapper';\n @Input() runCallbacksOnInit: SwiperOptions['runCallbacksOnInit'];\n @Input() observeParents: SwiperOptions['observeParents'];\n @Input() observeSlideChildren: SwiperOptions['observeSlideChildren'];\n @Input() a11y: SwiperOptions['a11y'];\n @Input() autoplay: SwiperOptions['autoplay'];\n @Input() controller: SwiperOptions['controller'];\n @Input() coverflowEffect: SwiperOptions['coverflowEffect'];\n @Input() cubeEffect: SwiperOptions['cubeEffect'];\n @Input() fadeEffect: SwiperOptions['fadeEffect'];\n @Input() flipEffect: SwiperOptions['flipEffect'];\n @Input() creativeEffect: SwiperOptions['creativeEffect'];\n @Input() cardsEffect: SwiperOptions['cardsEffect'];\n @Input() hashNavigation: SwiperOptions['hashNavigation'];\n @Input() history: SwiperOptions['history'];\n @Input() keyboard: SwiperOptions['keyboard'];\n @Input() lazy: SwiperOptions['lazy'];\n @Input() mousewheel: SwiperOptions['mousewheel'];\n @Input() parallax: SwiperOptions['parallax'];\n @Input() thumbs: SwiperOptions['thumbs'];\n @Input() zoom: SwiperOptions['zoom'];\n @Input() class: string;\n @Input() id: string;\n @Input()\n set navigation(val) {\n const currentNext =\n typeof this._navigation !== 'boolean' && this._navigation !== ''\n ? this._navigation?.nextEl\n : null;\n const currentPrev =\n typeof this._navigation !== 'boolean' && this._navigation !== ''\n ? this._navigation?.prevEl\n : null;\n this._navigation = setProperty(val, {\n nextEl: currentNext || null,\n prevEl: currentPrev || null,\n });\n this.showNavigation = !(\n coerceBooleanProperty(val) !== true ||\n (this._navigation &&\n typeof this._navigation !== 'boolean' &&\n this._navigation.prevEl !== this._prevElRef?.nativeElement &&\n (this._navigation.prevEl !== null || this._navigation.nextEl !== null) &&\n (typeof this._navigation.nextEl === 'string' ||\n typeof this._navigation.prevEl === 'string' ||\n typeof this._navigation.nextEl === 'object' ||\n typeof this._navigation.prevEl === 'object'))\n );\n }\n get navigation() {\n return this._navigation;\n }\n private _navigation: NavigationOptions | boolean | '';\n showNavigation: boolean = true;\n\n @Input()\n set pagination(val) {\n const current =\n typeof this._pagination !== 'boolean' && this._pagination !== ''\n ? this._pagination?.el\n : null;\n this._pagination = setProperty(val, {\n el: current || null,\n });\n this.showPagination = isShowEl(val, this._pagination, this._paginationElRef);\n }\n get pagination() {\n return this._pagination;\n }\n private _pagination: PaginationOptions | boolean | '';\n showPagination: boolean = true;\n\n @Input()\n set scrollbar(val) {\n const current =\n typeof this._scrollbar !== 'boolean' && this._scrollbar !== '' ? this._scrollbar?.el : null;\n this._scrollbar = setProperty(val, {\n el: current || null,\n });\n this.showScrollbar = isShowEl(val, this._scrollbar, this._scrollbarElRef);\n }\n get scrollbar() {\n return this._scrollbar;\n }\n private _scrollbar: ScrollbarOptions | boolean | '';\n showScrollbar: boolean = true;\n\n @Input()\n set virtual(val) {\n this._virtual = setProperty(val);\n }\n get virtual() {\n return this._virtual;\n }\n private _virtual: VirtualOptions | boolean | '';\n\n @Input()\n set index(index: number) {\n console.warn('`[(index)]` prop is deprecated and will be removed in upcoming versions');\n this.setIndex(index);\n }\n @Input()\n set config(val: SwiperOptions) {\n this.updateSwiper(val);\n const { params } = getParams(val);\n Object.assign(this, params);\n }\n // prettier-ignore\n @Output('_beforeBreakpoint') s__beforeBreakpoint: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('_containerClasses') s__containerClasses: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('_slideClass') s__slideClass: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('_swiper') s__swiper: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('activeIndexChange') s_activeIndexChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('afterInit') s_afterInit: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('autoplay') s_autoplay: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('autoplayStart') s_autoplayStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('autoplayStop') s_autoplayStop: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeDestroy') s_beforeDestroy: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeInit') s_beforeInit: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeLoopFix') s_beforeLoopFix: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeResize') s_beforeResize: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeSlideChangeStart') s_beforeSlideChangeStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeTransitionStart') s_beforeTransitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('breakpoint') s_breakpoint: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('changeDirection') s_changeDirection: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('click') s_click: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('doubleTap') s_doubleTap: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('doubleClick') s_doubleClick: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('destroy') s_destroy: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('fromEdge') s_fromEdge: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('hashChange') s_hashChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('hashSet') s_hashSet: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('imagesReady') s_imagesReady: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('init') s_init: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('keyPress') s_keyPress: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('lazyImageLoad') s_lazyImageLoad: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('lazyImageReady') s_lazyImageReady: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('loopFix') s_loopFix: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('momentumBounce') s_momentumBounce: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('navigationHide') s_navigationHide: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('navigationShow') s_navigationShow: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('observerUpdate') s_observerUpdate: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('orientationchange') s_orientationchange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('paginationHide') s_paginationHide: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('paginationRender') s_paginationRender: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('paginationShow') s_paginationShow: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('paginationUpdate') s_paginationUpdate: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('progress') s_progress: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('reachBeginning') s_reachBeginning: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('reachEnd') s_reachEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('realIndexChange') s_realIndexChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('resize') s_resize: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('scroll') s_scroll: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('scrollbarDragEnd') s_scrollbarDragEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('scrollbarDragMove') s_scrollbarDragMove: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('scrollbarDragStart') s_scrollbarDragStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('setTransition') s_setTransition: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('setTranslate') s_setTranslate: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideChange') s_slideChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideChangeTransitionEnd') s_slideChangeTransitionEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideChangeTransitionStart') s_slideChangeTransitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideNextTransitionEnd') s_slideNextTransitionEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideNextTransitionStart') s_slideNextTransitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slidePrevTransitionEnd') s_slidePrevTransitionEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slidePrevTransitionStart') s_slidePrevTransitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideResetTransitionStart') s_slideResetTransitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideResetTransitionEnd') s_slideResetTransitionEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('sliderMove') s_sliderMove: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('sliderFirstMove') s_sliderFirstMove: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slidesLengthChange') s_slidesLengthChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slidesGridLengthChange') s_slidesGridLengthChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('snapGridLengthChange') s_snapGridLengthChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('snapIndexChange') s_snapIndexChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('tap') s_tap: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('toEdge') s_toEdge: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('touchEnd') s_touchEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('touchMove') s_touchMove: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('touchMoveOpposite') s_touchMoveOpposite: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('touchStart') s_touchStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('transitionEnd') s_transitionEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('transitionStart') s_transitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('update') s_update: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('zoomChange') s_zoomChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('swiper') s_swiper: EventEmitter = new EventEmitter();\n\n @Output() indexChange = new EventEmitter();\n\n @ViewChild('prevElRef', { static: false })\n set prevElRef(el: ElementRef) {\n this._prevElRef = el;\n this._setElement(el, this.navigation, 'navigation', 'prevEl');\n }\n _prevElRef: ElementRef;\n @ViewChild('nextElRef', { static: false })\n set nextElRef(el: ElementRef) {\n this._nextElRef = el;\n this._setElement(el, this.navigation, 'navigation', 'nextEl');\n }\n _nextElRef: ElementRef;\n @ViewChild('scrollbarElRef', { static: false })\n set scrollbarElRef(el: ElementRef) {\n this._scrollbarElRef = el;\n this._setElement(el, this.scrollbar, 'scrollbar');\n }\n _scrollbarElRef: ElementRef;\n @ViewChild('paginationElRef', { static: false })\n set paginationElRef(el: ElementRef) {\n this._paginationElRef = el;\n this._setElement(el, this.pagination, 'pagination');\n }\n _paginationElRef: ElementRef;\n @ContentChildren(SwiperSlideDirective, { descendants: false, emitDistinctChangesOnly: true })\n slidesEl: QueryList;\n private slides: SwiperSlideDirective[];\n\n prependSlides: Observable;\n appendSlides: Observable;\n\n swiperRef: Swiper;\n readonly _activeSlides = new Subject();\n\n get activeSlides() {\n if (this.virtual) {\n return this._activeSlides;\n }\n return of(this.slides);\n }\n\n get zoomContainerClass() {\n return this.zoom && typeof this.zoom !== 'boolean'\n ? this.zoom.containerClass\n : 'swiper-zoom-container';\n }\n\n @HostBinding('class') containerClasses: string = 'swiper';\n constructor(\n private _ngZone: NgZone,\n private elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(PLATFORM_ID) private _platformId: Object,\n ) {}\n\n private _setElement(el: ElementRef, ref: any, update: string, key = 'el') {\n if (!el || !ref) {\n return;\n }\n if (ref && el.nativeElement) {\n if (ref[key] === el.nativeElement) {\n return;\n }\n ref[key] = el.nativeElement;\n }\n const updateObj: { [key: string]: boolean } = {};\n updateObj[update] = true;\n this.updateInitSwiper(updateObj);\n }\n ngOnInit(): void {\n const { params } = getParams(this);\n Object.assign(this, params);\n }\n ngAfterViewInit() {\n this.childrenSlidesInit();\n this.initSwiper();\n this._changeDetectorRef.detectChanges();\n setTimeout(() => {\n this.s_swiper.emit(this.swiperRef);\n });\n }\n\n private childrenSlidesInit() {\n this.slidesChanges(this.slidesEl);\n this.slidesEl.changes.subscribe(this.slidesChanges);\n }\n\n private slidesChanges = (val: QueryList) => {\n this.slides = val.map((slide: SwiperSlideDirective, index: number) => {\n slide.slideIndex = index;\n slide.classNames = this.slideClass || '';\n return slide;\n });\n if (this.loop && !this.loopedSlides) {\n this.calcLoopedSlides();\n }\n if (!this.virtual) {\n if (this.loopedSlides) {\n this.prependSlides = of(this.slides.slice(this.slides.length - this.loopedSlides));\n this.appendSlides = of(this.slides.slice(0, this.loopedSlides));\n }\n } else if (this.swiperRef && this.swiperRef.virtual) {\n this._ngZone.runOutsideAngular(() => {\n this.swiperRef.virtual.slides = this.slides;\n this.swiperRef.virtual.update(true);\n });\n }\n this._changeDetectorRef.detectChanges();\n };\n\n get isSwiperActive() {\n return this.swiperRef && !this.swiperRef.destroyed;\n }\n\n initSwiper() {\n const { params: swiperParams, passedParams } = getParams(this);\n Object.assign(this, swiperParams);\n this._ngZone.runOutsideAngular(() => {\n swiperParams.init = false;\n if (!swiperParams.virtual) {\n swiperParams.observer = true;\n }\n\n swiperParams.onAny = (eventName: keyof SwiperComponent, ...args: any[]) => {\n const emitter = this[('s_' + eventName) as keyof SwiperComponent] as EventEmitter;\n if (emitter) {\n emitter.emit(...args);\n }\n };\n const _slideClasses: SwiperEvents['_slideClasses'] = (_, updated) => {\n updated.forEach(({ slideEl, classNames }, index) => {\n const dataIndex = slideEl.getAttribute('data-swiper-slide-index');\n const slideIndex = dataIndex ? parseInt(dataIndex) : index;\n if (this.virtual) {\n const virtualSlide = this.slides.find((item) => {\n return item.virtualIndex && item.virtualIndex === slideIndex;\n });\n if (virtualSlide) {\n virtualSlide.classNames = classNames;\n return;\n }\n }\n\n if (this.slides[slideIndex]) {\n this.slides[slideIndex].classNames = classNames;\n }\n });\n this._changeDetectorRef.detectChanges();\n };\n const _containerClasses: SwiperEvents['_containerClasses'] = (_, classes) => {\n setTimeout(() => {\n this.containerClasses = classes;\n });\n };\n Object.assign(swiperParams.on, {\n _containerClasses,\n _slideClasses,\n });\n const swiperRef = new Swiper(swiperParams);\n swiperRef.loopCreate = () => {};\n swiperRef.loopDestroy = () => {};\n if (swiperParams.loop) {\n swiperRef.loopedSlides = this.loopedSlides;\n }\n const isVirtualEnabled =\n typeof swiperRef.params.virtual !== 'undefined' &&\n typeof swiperRef.params.virtual !== 'boolean' &&\n swiperRef.params.virtual.enabled;\n if (swiperRef.virtual && isVirtualEnabled) {\n swiperRef.virtual.slides = this.slides;\n const extendWith = {\n cache: false,\n slides: this.slides,\n renderExternal: this.updateVirtualSlides,\n renderExternalUpdate: false,\n };\n extend(swiperRef.params.virtual, extendWith);\n extend(swiperRef.originalParams.virtual, extendWith);\n }\n\n if (isPlatformBrowser(this._platformId)) {\n this.swiperRef = swiperRef.init(this.elementRef.nativeElement);\n const isEnabled =\n typeof this.swiperRef.params.virtual !== 'undefined' &&\n typeof this.swiperRef.params.virtual !== 'boolean' &&\n this.swiperRef.params.virtual.enabled;\n if (this.swiperRef.virtual && isEnabled) {\n this.swiperRef.virtual.update(true);\n }\n this._changeDetectorRef.detectChanges();\n swiperRef.on('slideChange', () => {\n this.indexChange.emit(this.swiperRef.realIndex);\n });\n }\n });\n }\n\n style: any = null;\n currentVirtualData: any; // TODO: type virtualData;\n private updateVirtualSlides = (virtualData: any) => {\n // TODO: type virtualData\n if (\n !this.swiperRef ||\n (this.currentVirtualData &&\n this.currentVirtualData.from === virtualData.from &&\n this.currentVirtualData.to === virtualData.to &&\n this.currentVirtualData.offset === virtualData.offset)\n ) {\n return;\n }\n this.style = this.swiperRef.isHorizontal()\n ? {\n [this.swiperRef.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`,\n }\n : {\n top: `${virtualData.offset}px`,\n };\n this.currentVirtualData = virtualData;\n this._activeSlides.next(virtualData.slides);\n this._ngZone.run(() => {\n this._changeDetectorRef.detectChanges();\n });\n this._ngZone.runOutsideAngular(() => {\n this.swiperRef.updateSlides();\n this.swiperRef.updateProgress();\n this.swiperRef.updateSlidesClasses();\n if (this.swiperRef.lazy && this.swiperRef.params.lazy['enabled']) {\n this.swiperRef.lazy.load();\n }\n this.swiperRef.virtual.update(true);\n });\n return;\n };\n\n ngOnChanges(changedParams: SimpleChanges) {\n this.updateSwiper(changedParams);\n this._changeDetectorRef.detectChanges();\n }\n\n updateInitSwiper(changedParams: any) {\n if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n\n this._ngZone.runOutsideAngular(() => {\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs,\n } = this.swiperRef;\n\n if (changedParams.pagination) {\n if (\n this.pagination &&\n typeof this.pagination !== 'boolean' &&\n this.pagination.el &&\n pagination &&\n !pagination.el\n ) {\n this.updateParameter('pagination', this.pagination);\n pagination.init();\n pagination.render();\n pagination.update();\n } else {\n pagination.destroy();\n pagination.el = null;\n }\n }\n\n if (changedParams.scrollbar) {\n if (\n this.scrollbar &&\n typeof this.scrollbar !== 'boolean' &&\n this.scrollbar.el &&\n scrollbar &&\n !scrollbar.el\n ) {\n this.updateParameter('scrollbar', this.scrollbar);\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n } else {\n scrollbar.destroy();\n scrollbar.el = null;\n }\n }\n\n if (changedParams.navigation) {\n if (\n this.navigation &&\n typeof this.navigation !== 'boolean' &&\n this.navigation.prevEl &&\n this.navigation.nextEl &&\n navigation &&\n !navigation.prevEl &&\n !navigation.nextEl\n ) {\n this.updateParameter('navigation', this.navigation);\n navigation.init();\n navigation.update();\n } else if (navigation.prevEl && navigation.nextEl) {\n navigation.destroy();\n navigation.nextEl = null;\n navigation.prevEl = null;\n }\n }\n if (changedParams.thumbs && this.thumbs && this.thumbs.swiper) {\n this.updateParameter('thumbs', this.thumbs);\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n\n if (changedParams.controller && this.controller && this.controller.control) {\n this.swiperRef.controller.control = this.controller.control;\n }\n\n this.swiperRef.update();\n });\n }\n\n updateSwiper(changedParams: SimpleChanges | any) {\n this._ngZone.runOutsideAngular(() => {\n if (changedParams.config) {\n return;\n }\n if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n for (const key in changedParams) {\n if (ignoreNgOnChanges.indexOf(key) >= 0) {\n continue;\n }\n const newValue = changedParams[key]?.currentValue ?? changedParams[key];\n this.updateParameter(key, newValue);\n }\n\n if (changedParams.allowSlideNext) {\n this.swiperRef.allowSlideNext = this.allowSlideNext;\n }\n if (changedParams.allowSlidePrev) {\n this.swiperRef.allowSlidePrev = this.allowSlidePrev;\n }\n if (changedParams.direction) {\n this.swiperRef.changeDirection(this.direction, false);\n }\n if (changedParams.breakpoints) {\n if (this.loop && !this.loopedSlides) {\n this.calcLoopedSlides();\n }\n this.swiperRef.currentBreakpoint = null;\n this.swiperRef.setBreakpoint();\n }\n\n if (changedParams.thumbs || changedParams.controller) {\n this.updateInitSwiper(changedParams);\n }\n this.swiperRef.update();\n });\n }\n\n calcLoopedSlides() {\n if (!this.loop) {\n return;\n }\n let slidesPerViewParams = this.slidesPerView;\n if (this.breakpoints) {\n const breakpoint = Swiper.prototype.getBreakpoint(this.breakpoints);\n const breakpointOnlyParams =\n breakpoint in this.breakpoints ? this.breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) {\n slidesPerViewParams = breakpointOnlyParams.slidesPerView;\n }\n }\n if (slidesPerViewParams === 'auto') {\n this.loopedSlides = this.slides.length;\n return this.slides.length;\n }\n let loopedSlides = this.loopedSlides || slidesPerViewParams;\n if (!loopedSlides) {\n // ?\n return;\n }\n\n if (this.loopAdditionalSlides) {\n loopedSlides += this.loopAdditionalSlides;\n }\n if (loopedSlides > this.slides.length) {\n loopedSlides = this.slides.length;\n }\n this.loopedSlides = loopedSlides;\n return loopedSlides;\n }\n\n updateParameter(key: string, value: any) {\n if (!(this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n const _key = key.replace(/^_/, '');\n const isCurrentParamObj = isObject(this.swiperRef.params[_key]);\n\n if (Object.keys(this.swiperRef.modules).indexOf(_key) >= 0) {\n const defaultParams = this.swiperRef.modules[_key].params[_key];\n if (isCurrentParamObj) {\n extend(this.swiperRef.params[_key], defaultParams);\n } else {\n this.swiperRef.params[_key] = defaultParams;\n }\n }\n if (_key === 'enabled') {\n if (value === true) {\n this.swiperRef.enable();\n } else if (value === false) {\n this.swiperRef.disable();\n }\n return;\n }\n if (isCurrentParamObj && isObject(value)) {\n extend(this.swiperRef.params[_key], value);\n } else {\n this.swiperRef.params[_key] = value;\n }\n }\n /**\n * @deprecated will be removed in upcoming versions\n */\n setIndex(index: number, speed?: number, silent?: boolean): void {\n if (!this.isSwiperActive) {\n this.initialSlide = index;\n return;\n }\n if (index === this.swiperRef.activeIndex) {\n return;\n }\n this._ngZone.runOutsideAngular(() => {\n if (this.loop) {\n this.swiperRef.slideToLoop(index, speed, !silent);\n } else {\n this.swiperRef.slideTo(index, speed, !silent);\n }\n });\n }\n\n ngOnDestroy() {\n this._ngZone.runOutsideAngular(() => {\n this.swiperRef?.destroy(true, false);\n });\n }\n}\n","\n\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n\n\n\n \n
\n \n
\n \n
\n \n \n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SwiperComponent } from './swiper.component';\nimport { SwiperSlideDirective } from './swiper-slide.directive';\n@NgModule({\n declarations: [SwiperComponent, SwiperSlideDirective],\n exports: [SwiperComponent, SwiperSlideDirective],\n imports: [CommonModule],\n})\nexport class SwiperModule {}\n","/*\n * Public API Surface of angular\n */\nexport * from './swiper.module';\nexport * from './swiper.component';\nexport * from './swiper-slide.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './swiper-angular';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/resources/web/guide/swiper/angular/package.json b/resources/web/guide/swiper/angular/package.json deleted file mode 100644 index 04ad3ce5bf..0000000000 --- a/resources/web/guide/swiper/angular/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "swiper_angular", - "version": "0.0.1", - "private": "true", - "peerDependencies": { - "@angular/common": "^12.2.0", - "@angular/core": "^12.2.0" - }, - "dependencies": { - "tslib": "^2.3.0" - }, - "main": "bundles/swiper_angular.umd.js", - "module": "fesm2015/swiper_angular.js", - "es2015": "fesm2015/swiper_angular.js", - "esm2015": "esm2015/swiper_angular.js", - "fesm2015": "fesm2015/swiper_angular.js", - "typings": "swiper_angular.d.ts", - "sideEffects": false -} \ No newline at end of file diff --git a/resources/web/guide/swiper/angular/swiper-angular.d.ts b/resources/web/guide/swiper/angular/swiper-angular.d.ts deleted file mode 100644 index 7075866ce6..0000000000 --- a/resources/web/guide/swiper/angular/swiper-angular.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './angular/src/public-api'; diff --git a/resources/web/guide/swiper/angular/swiper_angular.d.ts b/resources/web/guide/swiper/angular/swiper_angular.d.ts deleted file mode 100644 index a94e51beb1..0000000000 --- a/resources/web/guide/swiper/angular/swiper_angular.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Generated bundle index. Do not edit. - */ -/// -export * from './swiper-angular'; diff --git a/resources/web/guide/swiper/core/breakpoints/getBreakpoint.js b/resources/web/guide/swiper/core/breakpoints/getBreakpoint.js deleted file mode 100644 index 34311b3037..0000000000 --- a/resources/web/guide/swiper/core/breakpoints/getBreakpoint.js +++ /dev/null @@ -1,40 +0,0 @@ -import { getWindow } from 'ssr-window'; -export default 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'; -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/breakpoints/index.js b/resources/web/guide/swiper/core/breakpoints/index.js deleted file mode 100644 index 341d640f6e..0000000000 --- a/resources/web/guide/swiper/core/breakpoints/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import setBreakpoint from './setBreakpoint.js'; -import getBreakpoint from './getBreakpoint.js'; -export default { - setBreakpoint, - getBreakpoint -}; \ No newline at end of file diff --git a/resources/web/guide/swiper/core/breakpoints/setBreakpoint.js b/resources/web/guide/swiper/core/breakpoints/setBreakpoint.js deleted file mode 100644 index aa6455bc78..0000000000 --- a/resources/web/guide/swiper/core/breakpoints/setBreakpoint.js +++ /dev/null @@ -1,72 +0,0 @@ -import { extend } from '../../shared/utils.js'; - -const isGridEnabled = (swiper, params) => { - return swiper.grid && params.grid && params.grid.rows > 1; -}; - -export default function setBreakpoint() { - const swiper = this; - const { - activeIndex, - initialized, - loopedSlides = 0, - params, - $el - } = swiper; - const breakpoints = params.breakpoints; - if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters - - const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); - 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 wasEnabled = params.enabled; - - if (wasMultiRow && !isMultiRow) { - $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`); - swiper.emitContainerClasses(); - } else if (!wasMultiRow && isMultiRow) { - $el.addClass(`${params.containerModifierClass}grid`); - - if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { - $el.addClass(`${params.containerModifierClass}grid-column`); - } - - swiper.emitContainerClasses(); - } - - const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; - const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); - - if (directionChanged && initialized) { - swiper.changeDirection(); - } - - extend(swiper.params, breakpointParams); - const isEnabled = swiper.params.enabled; - 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 (needsReLoop && initialized) { - swiper.loopDestroy(); - swiper.loopCreate(); - swiper.updateSlides(); - swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false); - } - - swiper.emit('breakpoint', breakpointParams); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/check-overflow/index.js b/resources/web/guide/swiper/core/check-overflow/index.js deleted file mode 100644 index d21f522d7f..0000000000 --- a/resources/web/guide/swiper/core/check-overflow/index.js +++ /dev/null @@ -1,38 +0,0 @@ -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'); - } -} - -export default { - checkOverflow -}; \ No newline at end of file diff --git a/resources/web/guide/swiper/core/classes/addClasses.js b/resources/web/guide/swiper/core/classes/addClasses.js deleted file mode 100644 index 3475b3e808..0000000000 --- a/resources/web/guide/swiper/core/classes/addClasses.js +++ /dev/null @@ -1,52 +0,0 @@ -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; -} - -export default function addClasses() { - const swiper = this; - const { - classNames, - params, - rtl, - $el, - device, - support - } = swiper; // prettier-ignore - - const suffixes = prepareClasses(['initialized', params.direction, { - 'pointer-events': !support.touch - }, { - '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 - }], params.containerModifierClass); - classNames.push(...suffixes); - $el.addClass([...classNames].join(' ')); - swiper.emitContainerClasses(); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/classes/index.js b/resources/web/guide/swiper/core/classes/index.js deleted file mode 100644 index 27cd28cd78..0000000000 --- a/resources/web/guide/swiper/core/classes/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import addClasses from './addClasses.js'; -import removeClasses from './removeClasses.js'; -export default { - addClasses, - removeClasses -}; \ No newline at end of file diff --git a/resources/web/guide/swiper/core/classes/removeClasses.js b/resources/web/guide/swiper/core/classes/removeClasses.js deleted file mode 100644 index bd168b120d..0000000000 --- a/resources/web/guide/swiper/core/classes/removeClasses.js +++ /dev/null @@ -1,9 +0,0 @@ -export default function removeClasses() { - const swiper = this; - const { - $el, - classNames - } = swiper; - $el.removeClass(classNames.join(' ')); - swiper.emitContainerClasses(); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/core.js b/resources/web/guide/swiper/core/core.js deleted file mode 100644 index 9f657693b7..0000000000 --- a/resources/web/guide/swiper/core/core.js +++ /dev/null @@ -1,610 +0,0 @@ -/* eslint no-param-reassign: "off" */ -import { getDocument } from 'ssr-window'; -import $ from '../shared/dom.js'; -import { extend, now, deleteProps } from '../shared/utils.js'; -import { getSupport } from '../shared/get-support.js'; -import { getDevice } from '../shared/get-device.js'; -import { getBrowser } from '../shared/get-browser.js'; -import Resize from './modules/resize/resize.js'; -import Observer from './modules/observer/observer.js'; -import eventsEmitter from './events-emitter.js'; -import update from './update/index.js'; -import translate from './translate/index.js'; -import transition from './transition/index.js'; -import slide from './slide/index.js'; -import loop from './loop/index.js'; -import grabCursor from './grab-cursor/index.js'; -import events from './events/index.js'; -import breakpoints from './breakpoints/index.js'; -import classes from './classes/index.js'; -import images from './images/index.js'; -import checkOverflow from './check-overflow/index.js'; -import defaults from './defaults.js'; -import moduleExtendParams from './moduleExtendParams.js'; -const prototypes = { - eventsEmitter, - update, - translate, - transition, - slide, - loop, - grabCursor, - events, - breakpoints, - checkOverflow, - classes, - images -}; -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; - - if (params.el && $(params.el).length > 1) { - const swipers = []; - $(params.el).each(containerEl => { - const newParams = extend({}, params, { - el: containerEl - }); - swipers.push(new Swiper(newParams)); - }); - 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)) { - swiper.modules.push(...params.modules); - } - - const allModulesParams = {}; - swiper.modules.forEach(mod => { - mod({ - 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); - } // Save Dom lib - - - swiper.$ = $; // 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, - // Locks - allowSlideNext: swiper.params.allowSlideNext, - allowSlidePrev: swiper.params.allowSlidePrev, - // Touch Events - touchEvents: function touchEvents() { - const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel']; - const desktop = ['pointerdown', 'pointermove', 'pointerup']; - swiper.touchEventsTouch = { - start: touch[0], - move: touch[1], - end: touch[2], - cancel: touch[3] - }; - swiper.touchEventsDesktop = { - start: desktop[0], - move: desktop[1], - end: desktop[2] - }; - return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop; - }(), - 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: now(), - clickTimeout: undefined, - // Velocities - velocities: [], - allowMomentumBounce: undefined, - isTouchEvent: undefined, - startMoving: undefined - }, - // 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 - - - return swiper; - } - - 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; - 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.each(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 (params.centeredSlides) { - let slideSize = slides[activeIndex].swiperSlideSize; - let breakLoop; - - for (let i = activeIndex + 1; i < slides.length; i += 1) { - if (slides[i] && !breakLoop) { - slideSize += 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.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 (swiper.params.freeMode && swiper.params.freeMode.enabled) { - setTranslate(); - - if (swiper.params.autoHeight) { - swiper.updateAutoHeight(); - } - } else { - if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { - translated = swiper.slideTo(swiper.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.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`); - swiper.emitContainerClasses(); - swiper.params.direction = newDirection; - swiper.slides.each(slideEl => { - if (newDirection === 'vertical') { - slideEl.style.width = ''; - } else { - slideEl.style.height = ''; - } - }); - swiper.emit('changeDirection'); - if (needUpdate) swiper.update(); - return swiper; - } - - mount(el) { - const swiper = this; - if (swiper.mounted) return true; // Find el - - const $el = $(el || swiper.params.el); - el = $el[0]; - - if (!el) { - return false; - } - - el.swiper = swiper; - - 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 - - res.children = options => $el.children(options); - - return res; - } - - return $el.children(getWrapperSelector()); - }; // Find Wrapper - - - let $wrapperEl = getWrapper(); - - if ($wrapperEl.length === 0 && swiper.params.createElements) { - const document = getDocument(); - const wrapper = document.createElement('div'); - $wrapperEl = $(wrapper); - wrapper.className = swiper.params.wrapperClass; - $el.append(wrapper); - $el.children(`.${swiper.params.slideClass}`).each(slideEl => { - $wrapperEl.append(slideEl); - }); - } - - Object.assign(swiper, { - $el, - el, - $wrapperEl, - wrapperEl: $wrapperEl[0], - mounted: true, - // RTL - rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl', - rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), - wrongRTL: $wrapperEl.css('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(); // Create loop - - if (swiper.params.loop) { - swiper.loopCreate(); - } // 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(); - } - - if (swiper.params.preloadImages) { - swiper.preloadImages(); - } // Slide To Initial Slide - - - if (swiper.params.loop) { - swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true); - } else { - swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); - } // Attach events - - - swiper.attachEvents(); // Init Flag - - swiper.initialized = true; // 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(); - $el.removeAttr('style'); - $wrapperEl.removeAttr('style'); - - if (slides && slides.length) { - slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index'); - } - } - - swiper.emit('destroy'); // Detach emitter events - - Object.keys(swiper.eventsListeners).forEach(eventName => { - swiper.off(eventName); - }); - - if (deleteInstance !== false) { - swiper.$el[0].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 default Swiper; \ No newline at end of file diff --git a/resources/web/guide/swiper/core/defaults.js b/resources/web/guide/swiper/core/defaults.js deleted file mode 100644 index cc324a859f..0000000000 --- a/resources/web/guide/swiper/core/defaults.js +++ /dev/null @@ -1,120 +0,0 @@ -export default { - init: true, - direction: 'horizontal', - touchEventsTarget: 'wrapper', - initialSlide: 0, - speed: 300, - cssMode: false, - updateOnWindowResize: true, - resizeObserver: true, - nested: false, - createElements: false, - 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, - // 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: 0, - 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, - // Images - preloadImages: true, - updateOnImagesReady: true, - // loop - loop: false, - loopAdditionalSlides: 0, - loopedSlides: null, - loopFillGroupWithBlank: false, - loopPreventsSlide: true, - // Swiping/no swiping - allowSlidePrev: true, - allowSlideNext: true, - swipeHandler: null, - // '.swipe-handler', - noSwiping: true, - noSwipingClass: 'swiper-no-swiping', - noSwipingSelector: null, - // Passive Listeners - passiveListeners: true, - // NS - containerModifierClass: 'swiper-', - // NEW - slideClass: 'swiper-slide', - slideBlankClass: 'swiper-slide-invisible-blank', - slideActiveClass: 'swiper-slide-active', - slideDuplicateActiveClass: 'swiper-slide-duplicate-active', - slideVisibleClass: 'swiper-slide-visible', - slideDuplicateClass: 'swiper-slide-duplicate', - slideNextClass: 'swiper-slide-next', - slideDuplicateNextClass: 'swiper-slide-duplicate-next', - slidePrevClass: 'swiper-slide-prev', - slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', - wrapperClass: 'swiper-wrapper', - // Callbacks - runCallbacksOnInit: true, - // Internals - _emitClasses: false -}; \ No newline at end of file diff --git a/resources/web/guide/swiper/core/events-emitter.js b/resources/web/guide/swiper/core/events-emitter.js deleted file mode 100644 index ea577a9ce5..0000000000 --- a/resources/web/guide/swiper/core/events-emitter.js +++ /dev/null @@ -1,108 +0,0 @@ -/* eslint-disable no-underscore-dangle */ -export default { - on(events, handler, priority) { - const self = this; - 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 (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 (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.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) 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) 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; - } - -}; \ No newline at end of file diff --git a/resources/web/guide/swiper/core/events/index.js b/resources/web/guide/swiper/core/events/index.js deleted file mode 100644 index 8b5c83b52a..0000000000 --- a/resources/web/guide/swiper/core/events/index.js +++ /dev/null @@ -1,97 +0,0 @@ -import { getDocument } from 'ssr-window'; -import onTouchStart from './onTouchStart.js'; -import onTouchMove from './onTouchMove.js'; -import onTouchEnd from './onTouchEnd.js'; -import onResize from './onResize.js'; -import onClick from './onClick.js'; -import onScroll from './onScroll.js'; -let dummyEventAttached = false; - -function dummyEventListener() {} - -const events = (swiper, method) => { - const document = getDocument(); - const { - params, - touchEvents, - el, - wrapperEl, - device, - support - } = swiper; - const capture = !!params.nested; - const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; - const swiperMethod = method; // Touch Events - - if (!support.touch) { - el[domMethod](touchEvents.start, swiper.onTouchStart, false); - document[domMethod](touchEvents.move, swiper.onTouchMove, capture); - document[domMethod](touchEvents.end, swiper.onTouchEnd, false); - } else { - const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? { - passive: true, - capture: false - } : false; - el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener); - el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? { - passive: false, - capture - } : capture); - el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener); - - if (touchEvents.cancel) { - el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener); - } - } // 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); - } -}; - -function attachEvents() { - const swiper = this; - const document = getDocument(); - const { - params, - support - } = swiper; - swiper.onTouchStart = onTouchStart.bind(swiper); - swiper.onTouchMove = onTouchMove.bind(swiper); - swiper.onTouchEnd = onTouchEnd.bind(swiper); - - if (params.cssMode) { - swiper.onScroll = onScroll.bind(swiper); - } - - swiper.onClick = onClick.bind(swiper); - - if (support.touch && !dummyEventAttached) { - document.addEventListener('touchstart', dummyEventListener); - dummyEventAttached = true; - } - - events(swiper, 'on'); -} - -function detachEvents() { - const swiper = this; - events(swiper, 'off'); -} - -export default { - attachEvents, - detachEvents -}; \ No newline at end of file diff --git a/resources/web/guide/swiper/core/events/onClick.js b/resources/web/guide/swiper/core/events/onClick.js deleted file mode 100644 index 71f8da074f..0000000000 --- a/resources/web/guide/swiper/core/events/onClick.js +++ /dev/null @@ -1,13 +0,0 @@ -export default 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(); - } - } -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/events/onResize.js b/resources/web/guide/swiper/core/events/onResize.js deleted file mode 100644 index 85ac87164e..0000000000 --- a/resources/web/guide/swiper/core/events/onResize.js +++ /dev/null @@ -1,43 +0,0 @@ -export default 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; // Disable locks on resize - - swiper.allowSlideNext = true; - swiper.allowSlidePrev = true; - swiper.updateSize(); - swiper.updateSlides(); - swiper.updateSlidesClasses(); - - if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) { - swiper.slideTo(swiper.slides.length - 1, 0, false, true); - } else { - swiper.slideTo(swiper.activeIndex, 0, false, true); - } - - if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { - swiper.autoplay.run(); - } // Return locks after resize - - - swiper.allowSlidePrev = allowSlidePrev; - swiper.allowSlideNext = allowSlideNext; - - if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { - swiper.checkOverflow(); - } -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/events/onScroll.js b/resources/web/guide/swiper/core/events/onScroll.js deleted file mode 100644 index 738aea8603..0000000000 --- a/resources/web/guide/swiper/core/events/onScroll.js +++ /dev/null @@ -1,35 +0,0 @@ -export default 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); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/events/onTouchEnd.js b/resources/web/guide/swiper/core/events/onTouchEnd.js deleted file mode 100644 index 4ed79f012b..0000000000 --- a/resources/web/guide/swiper/core/events/onTouchEnd.js +++ /dev/null @@ -1,143 +0,0 @@ -import { now, nextTick } from '../../shared/utils.js'; -export default function onTouchEnd(event) { - const swiper = this; - const data = swiper.touchEventsData; - const { - params, - touches, - rtlTranslate: rtl, - slidesGrid, - enabled - } = swiper; - if (!enabled) return; - let e = event; - if (e.originalEvent) e = e.originalEvent; - - 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) { - swiper.updateClickedSlide(e); - 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.currentTranslate === data.startTranslate) { - 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 (swiper.params.freeMode && params.freeMode.enabled) { - swiper.freeMode.onTouchEnd({ - currentPos - }); - return; - } // Find current slide - - - 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 (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { - stopIndex = i; - groupSize = slidesGrid[i + increment] - slidesGrid[i]; - } - } else if (currentPos >= slidesGrid[i]) { - stopIndex = i; - groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; - } - } // 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(stopIndex + increment);else swiper.slideTo(stopIndex); - } - - if (swiper.swipeDirection === 'prev') { - if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);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(stopIndex + increment); - } - - if (swiper.swipeDirection === 'prev') { - swiper.slideTo(stopIndex); - } - } else if (e.target === swiper.navigation.nextEl) { - swiper.slideTo(stopIndex + increment); - } else { - swiper.slideTo(stopIndex); - } - } -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/events/onTouchMove.js b/resources/web/guide/swiper/core/events/onTouchMove.js deleted file mode 100644 index 015107dd6c..0000000000 --- a/resources/web/guide/swiper/core/events/onTouchMove.js +++ /dev/null @@ -1,222 +0,0 @@ -import { getDocument } from 'ssr-window'; -import $ from '../../shared/dom.js'; -import { now } from '../../shared/utils.js'; -export default function onTouchMove(event) { - const document = getDocument(); - const swiper = this; - const data = swiper.touchEventsData; - const { - params, - touches, - rtlTranslate: rtl, - enabled - } = swiper; - if (!enabled) return; - let e = event; - if (e.originalEvent) e = e.originalEvent; - - if (!data.isTouched) { - if (data.startMoving && data.isScrolling) { - swiper.emit('touchMoveOpposite', e); - } - - return; - } - - if (data.isTouchEvent && e.type !== 'touchmove') return; - const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]); - const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX; - const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY; - - if (e.preventedByNestedSwiper) { - touches.startX = pageX; - touches.startY = pageY; - return; - } - - if (!swiper.allowTouchMove) { - // isMoved = true; - swiper.allowClick = false; - - if (data.isTouched) { - Object.assign(touches, { - startX: pageX, - startY: pageY, - currentX: pageX, - currentY: pageY - }); - data.touchStartTime = now(); - } - - return; - } - - if (data.isTouchEvent && 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 (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { - return; - } - } - - if (data.isTouchEvent && document.activeElement) { - if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) { - data.isMoved = true; - swiper.allowClick = false; - return; - } - } - - if (data.allowTouchCallbacks) { - swiper.emit('touchMove', e); - } - - if (e.targetTouches && e.targetTouches.length > 1) return; - 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) { - 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(); - } - - if (!data.isMoved) { - if (params.loop && !params.cssMode) { - swiper.loopFix(); - } - - data.startTranslate = swiper.getTranslate(); - swiper.setTransition(0); - - if (swiper.animating) { - swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); - } - - data.allowMomentumBounce = false; // Grab Cursor - - if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { - swiper.setGrabCursor(true); - } - - swiper.emit('sliderFirstMove', e); - } - - swiper.emit('sliderMove', e); - data.isMoved = true; - let diff = swiper.isHorizontal() ? diffX : diffY; - touches.diff = diff; - diff *= params.touchRatio; - if (rtl) diff = -diff; - swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; - data.currentTranslate = diff + data.startTranslate; - let disableParentSwiper = true; - let resistanceRatio = params.resistanceRatio; - - if (params.touchReleaseOnEdges) { - resistanceRatio = 0; - } - - if (diff > 0 && data.currentTranslate > swiper.minTranslate()) { - disableParentSwiper = false; - if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; - } else if (diff < 0 && 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 (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) { - swiper.freeMode.onTouchMove(); - } // Update progress - - - swiper.updateProgress(data.currentTranslate); // Update translate - - swiper.setTranslate(data.currentTranslate); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/events/onTouchStart.js b/resources/web/guide/swiper/core/events/onTouchStart.js deleted file mode 100644 index cc5a257a24..0000000000 --- a/resources/web/guide/swiper/core/events/onTouchStart.js +++ /dev/null @@ -1,114 +0,0 @@ -import { getWindow, getDocument } from 'ssr-window'; -import $ from '../../shared/dom.js'; -import { now } from '../../shared/utils.js'; // 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); - return found || __closestFrom(el.getRootNode().host); - } - - return __closestFrom(base); -} - -export default function onTouchStart(event) { - const swiper = this; - const document = getDocument(); - const window = getWindow(); - const data = swiper.touchEventsData; - const { - params, - touches, - enabled - } = swiper; - if (!enabled) return; - - if (swiper.animating && params.preventInteractionOnTransition) { - return; - } - - if (!swiper.animating && params.cssMode && params.loop) { - swiper.loopFix(); - } - - let e = event; - if (e.originalEvent) e = e.originalEvent; - let $targetEl = $(e.target); - - if (params.touchEventsTarget === 'wrapper') { - if (!$targetEl.closest(swiper.wrapperEl).length) return; - } - - data.isTouchEvent = e.type === 'touchstart'; - if (!data.isTouchEvent && 'which' in e && e.which === 3) return; - if (!data.isTouchEvent && '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 !== ''; - - if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) { - $targetEl = $(event.path[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, e.target) : $targetEl.closest(noSwipingSelector)[0])) { - swiper.allowClick = true; - return; - } - - if (params.swipeHandler) { - if (!$targetEl.closest(params.swipeHandler)[0]) return; - } - - touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; - touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : 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 - - const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; - const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; - - if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { - if (edgeSwipeDetection === 'prevent') { - event.preventDefault(); - } else { - 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; - - if (e.type !== 'touchstart') { - let preventDefault = true; - if ($targetEl.is(data.focusableElements)) preventDefault = false; - - if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) { - document.activeElement.blur(); - } - - const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; - - if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) { - e.preventDefault(); - } - } - - swiper.emit('touchStart', e); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/grab-cursor/index.js b/resources/web/guide/swiper/core/grab-cursor/index.js deleted file mode 100644 index ac4bdcf6ff..0000000000 --- a/resources/web/guide/swiper/core/grab-cursor/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import setGrabCursor from './setGrabCursor.js'; -import unsetGrabCursor from './unsetGrabCursor.js'; -export default { - setGrabCursor, - unsetGrabCursor -}; \ No newline at end of file diff --git a/resources/web/guide/swiper/core/grab-cursor/setGrabCursor.js b/resources/web/guide/swiper/core/grab-cursor/setGrabCursor.js deleted file mode 100644 index 96e6227214..0000000000 --- a/resources/web/guide/swiper/core/grab-cursor/setGrabCursor.js +++ /dev/null @@ -1,9 +0,0 @@ -export default function setGrabCursor(moving) { - const swiper = this; - if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; - const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; - el.style.cursor = 'move'; - el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab'; - el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab'; - el.style.cursor = moving ? 'grabbing' : 'grab'; -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/grab-cursor/unsetGrabCursor.js b/resources/web/guide/swiper/core/grab-cursor/unsetGrabCursor.js deleted file mode 100644 index 923e23d446..0000000000 --- a/resources/web/guide/swiper/core/grab-cursor/unsetGrabCursor.js +++ /dev/null @@ -1,9 +0,0 @@ -export default function unsetGrabCursor() { - const swiper = this; - - if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { - return; - } - - swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/images/index.js b/resources/web/guide/swiper/core/images/index.js deleted file mode 100644 index ee01026096..0000000000 --- a/resources/web/guide/swiper/core/images/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import loadImage from './loadImage.js'; -import preloadImages from './preloadImages.js'; -export default { - loadImage, - preloadImages -}; \ No newline at end of file diff --git a/resources/web/guide/swiper/core/images/loadImage.js b/resources/web/guide/swiper/core/images/loadImage.js deleted file mode 100644 index 0811b4c9a9..0000000000 --- a/resources/web/guide/swiper/core/images/loadImage.js +++ /dev/null @@ -1,37 +0,0 @@ -import { getWindow } from 'ssr-window'; -import $ from '../../shared/dom.js'; -export default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) { - const window = getWindow(); - let image; - - function onReady() { - if (callback) callback(); - } - - const isPicture = $(imageEl).parent('picture')[0]; - - if (!isPicture && (!imageEl.complete || !checkForComplete)) { - if (src) { - image = new window.Image(); - image.onload = onReady; - image.onerror = onReady; - - if (sizes) { - image.sizes = sizes; - } - - if (srcset) { - image.srcset = srcset; - } - - if (src) { - image.src = src; - } - } else { - onReady(); - } - } else { - // image already loaded... - onReady(); - } -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/images/preloadImages.js b/resources/web/guide/swiper/core/images/preloadImages.js deleted file mode 100644 index 464d9a776d..0000000000 --- a/resources/web/guide/swiper/core/images/preloadImages.js +++ /dev/null @@ -1,19 +0,0 @@ -export default function preloadImages() { - const swiper = this; - swiper.imagesToLoad = swiper.$el.find('img'); - - function onReady() { - if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return; - if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1; - - if (swiper.imagesLoaded === swiper.imagesToLoad.length) { - if (swiper.params.updateOnImagesReady) swiper.update(); - swiper.emit('imagesReady'); - } - } - - for (let i = 0; i < swiper.imagesToLoad.length; i += 1) { - const imageEl = swiper.imagesToLoad[i]; - swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady); - } -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/loop/index.js b/resources/web/guide/swiper/core/loop/index.js deleted file mode 100644 index 428da41404..0000000000 --- a/resources/web/guide/swiper/core/loop/index.js +++ /dev/null @@ -1,8 +0,0 @@ -import loopCreate from './loopCreate.js'; -import loopFix from './loopFix.js'; -import loopDestroy from './loopDestroy.js'; -export default { - loopCreate, - loopFix, - loopDestroy -}; \ No newline at end of file diff --git a/resources/web/guide/swiper/core/loop/loopCreate.js b/resources/web/guide/swiper/core/loop/loopCreate.js deleted file mode 100644 index 69edf0aa2a..0000000000 --- a/resources/web/guide/swiper/core/loop/loopCreate.js +++ /dev/null @@ -1,59 +0,0 @@ -import { getDocument } from 'ssr-window'; -import $ from '../../shared/dom.js'; -export default function loopCreate() { - const swiper = this; - const document = getDocument(); - const { - params, - $wrapperEl - } = swiper; // Remove duplicated slides - - const $selector = $($wrapperEl.children()[0].parentNode); - $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove(); - let slides = $selector.children(`.${params.slideClass}`); - - if (params.loopFillGroupWithBlank) { - const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup; - - if (blankSlidesNum !== params.slidesPerGroup) { - for (let i = 0; i < blankSlidesNum; i += 1) { - const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`); - $selector.append(blankNode); - } - - slides = $selector.children(`.${params.slideClass}`); - } - } - - if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length; - swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10)); - swiper.loopedSlides += params.loopAdditionalSlides; - - if (swiper.loopedSlides > slides.length) { - swiper.loopedSlides = slides.length; - } - - const prependSlides = []; - const appendSlides = []; - slides.each((el, index) => { - const slide = $(el); - - if (index < swiper.loopedSlides) { - appendSlides.push(el); - } - - if (index < slides.length && index >= slides.length - swiper.loopedSlides) { - prependSlides.push(el); - } - - slide.attr('data-swiper-slide-index', index); - }); - - for (let i = 0; i < appendSlides.length; i += 1) { - $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); - } - - for (let i = prependSlides.length - 1; i >= 0; i -= 1) { - $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); - } -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/loop/loopDestroy.js b/resources/web/guide/swiper/core/loop/loopDestroy.js deleted file mode 100644 index 4c77968cec..0000000000 --- a/resources/web/guide/swiper/core/loop/loopDestroy.js +++ /dev/null @@ -1,10 +0,0 @@ -export default function loopDestroy() { - const swiper = this; - const { - $wrapperEl, - params, - slides - } = swiper; - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove(); - slides.removeAttr('data-swiper-slide-index'); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/loop/loopFix.js b/resources/web/guide/swiper/core/loop/loopFix.js deleted file mode 100644 index 16f332e633..0000000000 --- a/resources/web/guide/swiper/core/loop/loopFix.js +++ /dev/null @@ -1,41 +0,0 @@ -export default function loopFix() { - const swiper = this; - swiper.emit('beforeLoopFix'); - const { - activeIndex, - slides, - loopedSlides, - allowSlidePrev, - allowSlideNext, - snapGrid, - rtlTranslate: rtl - } = swiper; - let newIndex; - swiper.allowSlidePrev = true; - swiper.allowSlideNext = true; - const snapTranslate = -snapGrid[activeIndex]; - const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding - - if (activeIndex < loopedSlides) { - newIndex = slides.length - loopedSlides * 3 + activeIndex; - newIndex += loopedSlides; - const slideChanged = swiper.slideTo(newIndex, 0, false, true); - - if (slideChanged && diff !== 0) { - swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); - } - } else if (activeIndex >= slides.length - loopedSlides) { - // Fix For Positive Oversliding - newIndex = -slides.length + activeIndex + loopedSlides; - newIndex += loopedSlides; - const slideChanged = swiper.slideTo(newIndex, 0, false, true); - - if (slideChanged && diff !== 0) { - swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); - } - } - - swiper.allowSlidePrev = allowSlidePrev; - swiper.allowSlideNext = allowSlideNext; - swiper.emit('loopFix'); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/moduleExtendParams.js b/resources/web/guide/swiper/core/moduleExtendParams.js deleted file mode 100644 index 82cb57abcc..0000000000 --- a/resources/web/guide/swiper/core/moduleExtendParams.js +++ /dev/null @@ -1,38 +0,0 @@ -import { extend } from '../shared/utils.js'; -export default 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 (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) { - params[moduleParamName] = { - auto: true - }; - } - - if (!(moduleParamName in params && 'enabled' in moduleParams)) { - extend(allModulesParams, obj); - return; - } - - if (params[moduleParamName] === true) { - params[moduleParamName] = { - enabled: true - }; - } - - if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { - params[moduleParamName].enabled = true; - } - - if (!params[moduleParamName]) params[moduleParamName] = { - enabled: false - }; - extend(allModulesParams, obj); - }; -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/modules/observer/observer.js b/resources/web/guide/swiper/core/modules/observer/observer.js deleted file mode 100644 index 66a6374bdb..0000000000 --- a/resources/web/guide/swiper/core/modules/observer/observer.js +++ /dev/null @@ -1,75 +0,0 @@ -import { getWindow } from 'ssr-window'; -export default 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 (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: 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 = swiper.$el.parents(); - - for (let i = 0; i < containerParents.length; i += 1) { - attach(containerParents[i]); - } - } // Observe container - - - attach(swiper.$el[0], { - childList: swiper.params.observeSlideChildren - }); // Observe wrapper - - attach(swiper.$wrapperEl[0], { - 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); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/modules/resize/resize.js b/resources/web/guide/swiper/core/modules/resize/resize.js deleted file mode 100644 index 7538804e26..0000000000 --- a/resources/web/guide/swiper/core/modules/resize/resize.js +++ /dev/null @@ -1,68 +0,0 @@ -import { getWindow } from 'ssr-window'; -export default function Resize({ - swiper, - on, - emit -}) { - const window = getWindow(); - let observer = 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 => { - 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 (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); - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/slide/index.js b/resources/web/guide/swiper/core/slide/index.js deleted file mode 100644 index 105c438ee9..0000000000 --- a/resources/web/guide/swiper/core/slide/index.js +++ /dev/null @@ -1,16 +0,0 @@ -import slideTo from './slideTo.js'; -import slideToLoop from './slideToLoop.js'; -import slideNext from './slideNext.js'; -import slidePrev from './slidePrev.js'; -import slideReset from './slideReset.js'; -import slideToClosest from './slideToClosest.js'; -import slideToClickedSlide from './slideToClickedSlide.js'; -export default { - slideTo, - slideToLoop, - slideNext, - slidePrev, - slideReset, - slideToClosest, - slideToClickedSlide -}; \ No newline at end of file diff --git a/resources/web/guide/swiper/core/slide/slideNext.js b/resources/web/guide/swiper/core/slide/slideNext.js deleted file mode 100644 index b96bf6a025..0000000000 --- a/resources/web/guide/swiper/core/slide/slideNext.js +++ /dev/null @@ -1,26 +0,0 @@ -/* eslint no-unused-vars: "off" */ -export default function slideNext(speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - const { - animating, - enabled, - params - } = swiper; - if (!enabled) return swiper; - 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; - - if (params.loop) { - if (animating && params.loopPreventsSlide) return false; - swiper.loopFix(); // eslint-disable-next-line - - swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; - } - - return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/slide/slidePrev.js b/resources/web/guide/swiper/core/slide/slidePrev.js deleted file mode 100644 index 17f32256f5..0000000000 --- a/resources/web/guide/swiper/core/slide/slidePrev.js +++ /dev/null @@ -1,59 +0,0 @@ -/* eslint no-unused-vars: "off" */ -export default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - const { - params, - animating, - snapGrid, - slidesGrid, - rtlTranslate, - enabled - } = swiper; - if (!enabled) return swiper; - - if (params.loop) { - if (animating && params.loopPreventsSlide) return false; - swiper.loopFix(); // eslint-disable-next-line - - swiper._clientLeft = swiper.$wrapperEl[0].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)); - let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; - - if (typeof prevSnap === 'undefined' && params.cssMode) { - let prevSnapIndex; - snapGrid.forEach((snap, snapIndex) => { - if (normalizedTranslate >= snap) { - // prevSnap = snap; - prevSnapIndex = snapIndex; - } - }); - - if (typeof prevSnapIndex !== 'undefined') { - prevSnap = 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); - } - } - - return swiper.slideTo(prevIndex, speed, runCallbacks, internal); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/slide/slideReset.js b/resources/web/guide/swiper/core/slide/slideReset.js deleted file mode 100644 index d7c430a77a..0000000000 --- a/resources/web/guide/swiper/core/slide/slideReset.js +++ /dev/null @@ -1,5 +0,0 @@ -/* eslint no-unused-vars: "off" */ -export default function slideReset(speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/slide/slideTo.js b/resources/web/guide/swiper/core/slide/slideTo.js deleted file mode 100644 index 73a41cf0d0..0000000000 --- a/resources/web/guide/swiper/core/slide/slideTo.js +++ /dev/null @@ -1,189 +0,0 @@ -import { animateCSSModeScroll } from '../../shared/utils.js'; -export default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) { - if (typeof index !== 'number' && typeof index !== 'string') { - throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`); - } - - if (typeof index === 'string') { - /** - * The `index` argument converted from `string` to `number`. - * @type {number} - */ - const indexAsNumber = parseInt(index, 10); - /** - * Determines whether the `index` argument is a valid `number` - * after being converted from the `string` type. - * @type {boolean} - */ - - const isValidNumber = isFinite(indexAsNumber); - - if (!isValidNumber) { - throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`); - } // Knowing that the converted `index` is a valid number, - // we can update the original argument's value. - - - index = indexAsNumber; - } - - const swiper = this; - let slideIndex = index; - if (slideIndex < 0) slideIndex = 0; - const { - params, - snapGrid, - slidesGrid, - previousIndex, - activeIndex, - rtlTranslate: rtl, - wrapperEl, - enabled - } = swiper; - - if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) { - return false; - } - - 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; - - if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { - swiper.emit('beforeSlideChangeStart'); - } - - const translate = -snapGrid[snapIndex]; // Update progress - - swiper.updateProgress(translate); // 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 && translate < swiper.translate && translate < swiper.minTranslate()) { - return false; - } - - if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { - if ((activeIndex || 0) !== slideIndex) return false; - } - } - - let direction; - if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index - - if (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) { - const isVirtual = swiper.virtual && swiper.params.virtual.enabled; - - if (isVirtual) { - swiper.wrapperEl.style.scrollSnapType = 'none'; - swiper._immediateVirtual = true; - } - - wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; - - if (isVirtual) { - requestAnimationFrame(() => { - swiper.wrapperEl.style.scrollSnapType = ''; - swiper._swiperImmediateVirtual = 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; - } - - if (speed === 0) { - swiper.setTransition(0); - swiper.setTranslate(translate); - swiper.updateActiveIndex(slideIndex); - swiper.updateSlidesClasses(); - swiper.emit('beforeTransitionStart', speed, internal); - swiper.transitionStart(runCallbacks, direction); - swiper.transitionEnd(runCallbacks, direction); - } else { - swiper.setTransition(speed); - swiper.setTranslate(translate); - swiper.updateActiveIndex(slideIndex); - swiper.updateSlidesClasses(); - swiper.emit('beforeTransitionStart', speed, internal); - swiper.transitionStart(runCallbacks, direction); - - 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[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); - swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); - swiper.onSlideToWrapperTransitionEnd = null; - delete swiper.onSlideToWrapperTransitionEnd; - swiper.transitionEnd(runCallbacks, direction); - }; - } - - swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); - swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); - } - } - - return true; -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/slide/slideToClickedSlide.js b/resources/web/guide/swiper/core/slide/slideToClickedSlide.js deleted file mode 100644 index cda7da88ca..0000000000 --- a/resources/web/guide/swiper/core/slide/slideToClickedSlide.js +++ /dev/null @@ -1,39 +0,0 @@ -import $ from '../../shared/dom.js'; -import { nextTick } from '../../shared/utils.js'; -export default function slideToClickedSlide() { - const swiper = this; - const { - params, - $wrapperEl - } = swiper; - const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; - let slideToIndex = swiper.clickedIndex; - let realIndex; - - if (params.loop) { - if (swiper.animating) return; - realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10); - - if (params.centeredSlides) { - if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { - swiper.loopFix(); - slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index(); - nextTick(() => { - swiper.slideTo(slideToIndex); - }); - } else { - swiper.slideTo(slideToIndex); - } - } else if (slideToIndex > swiper.slides.length - slidesPerView) { - swiper.loopFix(); - slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index(); - nextTick(() => { - swiper.slideTo(slideToIndex); - }); - } else { - swiper.slideTo(slideToIndex); - } - } else { - swiper.slideTo(slideToIndex); - } -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/slide/slideToClosest.js b/resources/web/guide/swiper/core/slide/slideToClosest.js deleted file mode 100644 index bebfd224fd..0000000000 --- a/resources/web/guide/swiper/core/slide/slideToClosest.js +++ /dev/null @@ -1,32 +0,0 @@ -/* eslint no-unused-vars: "off" */ -export default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) { - const swiper = this; - 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); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/slide/slideToLoop.js b/resources/web/guide/swiper/core/slide/slideToLoop.js deleted file mode 100644 index 916522c431..0000000000 --- a/resources/web/guide/swiper/core/slide/slideToLoop.js +++ /dev/null @@ -1,10 +0,0 @@ -export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - let newIndex = index; - - if (swiper.params.loop) { - newIndex += swiper.loopedSlides; - } - - return swiper.slideTo(newIndex, speed, runCallbacks, internal); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/transition/index.js b/resources/web/guide/swiper/core/transition/index.js deleted file mode 100644 index 212e4ed538..0000000000 --- a/resources/web/guide/swiper/core/transition/index.js +++ /dev/null @@ -1,8 +0,0 @@ -import setTransition from './setTransition.js'; -import transitionStart from './transitionStart.js'; -import transitionEnd from './transitionEnd.js'; -export default { - setTransition, - transitionStart, - transitionEnd -}; \ No newline at end of file diff --git a/resources/web/guide/swiper/core/transition/setTransition.js b/resources/web/guide/swiper/core/transition/setTransition.js deleted file mode 100644 index df4afebf2e..0000000000 --- a/resources/web/guide/swiper/core/transition/setTransition.js +++ /dev/null @@ -1,9 +0,0 @@ -export default function setTransition(duration, byController) { - const swiper = this; - - if (!swiper.params.cssMode) { - swiper.$wrapperEl.transition(duration); - } - - swiper.emit('setTransition', duration, byController); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/transition/transitionEmit.js b/resources/web/guide/swiper/core/transition/transitionEmit.js deleted file mode 100644 index 089b8fe79b..0000000000 --- a/resources/web/guide/swiper/core/transition/transitionEmit.js +++ /dev/null @@ -1,33 +0,0 @@ -export default 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 && activeIndex !== previousIndex) { - if (dir === 'reset') { - swiper.emit(`slideResetTransition${step}`); - return; - } - - swiper.emit(`slideChangeTransition${step}`); - - if (dir === 'next') { - swiper.emit(`slideNextTransition${step}`); - } else { - swiper.emit(`slidePrevTransition${step}`); - } - } -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/transition/transitionEnd.js b/resources/web/guide/swiper/core/transition/transitionEnd.js deleted file mode 100644 index b34fbc5946..0000000000 --- a/resources/web/guide/swiper/core/transition/transitionEnd.js +++ /dev/null @@ -1,16 +0,0 @@ -import transitionEmit from './transitionEmit.js'; -export default 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' - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/transition/transitionStart.js b/resources/web/guide/swiper/core/transition/transitionStart.js deleted file mode 100644 index aa311125b3..0000000000 --- a/resources/web/guide/swiper/core/transition/transitionStart.js +++ /dev/null @@ -1,19 +0,0 @@ -import transitionEmit from './transitionEmit.js'; -export default 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' - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/translate/getTranslate.js b/resources/web/guide/swiper/core/translate/getTranslate.js deleted file mode 100644 index 4ade9fa29f..0000000000 --- a/resources/web/guide/swiper/core/translate/getTranslate.js +++ /dev/null @@ -1,22 +0,0 @@ -import { getTranslate } from '../../shared/utils.js'; -export default 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[0], axis); - if (rtl) currentTranslate = -currentTranslate; - return currentTranslate || 0; -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/translate/index.js b/resources/web/guide/swiper/core/translate/index.js deleted file mode 100644 index 5e962ecab2..0000000000 --- a/resources/web/guide/swiper/core/translate/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import getTranslate from './getTranslate.js'; -import setTranslate from './setTranslate.js'; -import minTranslate from './minTranslate.js'; -import maxTranslate from './maxTranslate.js'; -import translateTo from './translateTo.js'; -export default { - getTranslate, - setTranslate, - minTranslate, - maxTranslate, - translateTo -}; \ No newline at end of file diff --git a/resources/web/guide/swiper/core/translate/maxTranslate.js b/resources/web/guide/swiper/core/translate/maxTranslate.js deleted file mode 100644 index 4f2bbb9d72..0000000000 --- a/resources/web/guide/swiper/core/translate/maxTranslate.js +++ /dev/null @@ -1,3 +0,0 @@ -export default function maxTranslate() { - return -this.snapGrid[this.snapGrid.length - 1]; -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/translate/minTranslate.js b/resources/web/guide/swiper/core/translate/minTranslate.js deleted file mode 100644 index db06141760..0000000000 --- a/resources/web/guide/swiper/core/translate/minTranslate.js +++ /dev/null @@ -1,3 +0,0 @@ -export default function minTranslate() { - return -this.snapGrid[0]; -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/translate/setTranslate.js b/resources/web/guide/swiper/core/translate/setTranslate.js deleted file mode 100644 index c4c1fb52f2..0000000000 --- a/resources/web/guide/swiper/core/translate/setTranslate.js +++ /dev/null @@ -1,48 +0,0 @@ -export default function setTranslate(translate, byController) { - const swiper = this; - const { - rtlTranslate: rtl, - params, - $wrapperEl, - 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); - } - - if (params.cssMode) { - wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; - } else if (!params.virtualTranslate) { - $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`); - } - - swiper.previousTranslate = swiper.translate; - swiper.translate = swiper.isHorizontal() ? x : y; // 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); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/translate/translateTo.js b/resources/web/guide/swiper/core/translate/translateTo.js deleted file mode 100644 index f7fae3048c..0000000000 --- a/resources/web/guide/swiper/core/translate/translateTo.js +++ /dev/null @@ -1,85 +0,0 @@ -import { animateCSSModeScroll } from '../../shared/utils.js'; -export default 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[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); - swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); - swiper.onTranslateToWrapperTransitionEnd = null; - delete swiper.onTranslateToWrapperTransitionEnd; - - if (runCallbacks) { - swiper.emit('transitionEnd'); - } - }; - } - - swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); - swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); - } - } - - return true; -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/update/index.js b/resources/web/guide/swiper/core/update/index.js deleted file mode 100644 index 3191727ada..0000000000 --- a/resources/web/guide/swiper/core/update/index.js +++ /dev/null @@ -1,20 +0,0 @@ -import updateSize from './updateSize.js'; -import updateSlides from './updateSlides.js'; -import updateAutoHeight from './updateAutoHeight.js'; -import updateSlidesOffset from './updateSlidesOffset.js'; -import updateSlidesProgress from './updateSlidesProgress.js'; -import updateProgress from './updateProgress.js'; -import updateSlidesClasses from './updateSlidesClasses.js'; -import updateActiveIndex from './updateActiveIndex.js'; -import updateClickedSlide from './updateClickedSlide.js'; -export default { - updateSize, - updateSlides, - updateAutoHeight, - updateSlidesOffset, - updateSlidesProgress, - updateProgress, - updateSlidesClasses, - updateActiveIndex, - updateClickedSlide -}; \ No newline at end of file diff --git a/resources/web/guide/swiper/core/update/updateActiveIndex.js b/resources/web/guide/swiper/core/update/updateActiveIndex.js deleted file mode 100644 index 3f5b7f51c5..0000000000 --- a/resources/web/guide/swiper/core/update/updateActiveIndex.js +++ /dev/null @@ -1,70 +0,0 @@ -export default function updateActiveIndex(newActiveIndex) { - const swiper = this; - const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; - const { - slidesGrid, - snapGrid, - params, - activeIndex: previousIndex, - realIndex: previousRealIndex, - snapIndex: previousSnapIndex - } = swiper; - let activeIndex = newActiveIndex; - let snapIndex; - - if (typeof activeIndex === 'undefined') { - 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; - } - } - - 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) { - if (snapIndex !== previousSnapIndex) { - swiper.snapIndex = snapIndex; - swiper.emit('snapIndexChange'); - } - - return; - } // Get real index - - - const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10); - Object.assign(swiper, { - snapIndex, - realIndex, - previousIndex, - activeIndex - }); - swiper.emit('activeIndexChange'); - swiper.emit('snapIndexChange'); - - if (previousRealIndex !== realIndex) { - swiper.emit('realIndexChange'); - } - - if (swiper.initialized || swiper.params.runCallbacksOnInit) { - swiper.emit('slideChange'); - } -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/update/updateAutoHeight.js b/resources/web/guide/swiper/core/update/updateAutoHeight.js deleted file mode 100644 index eaa53c9f10..0000000000 --- a/resources/web/guide/swiper/core/update/updateAutoHeight.js +++ /dev/null @@ -1,49 +0,0 @@ -export default 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.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0]; - } - - return swiper.slides.eq(index)[0]; - }; // Find slides currently in view - - - if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { - if (swiper.params.centeredSlides) { - swiper.visibleSlides.each(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) swiper.$wrapperEl.css('height', `${newHeight}px`); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/update/updateClickedSlide.js b/resources/web/guide/swiper/core/update/updateClickedSlide.js deleted file mode 100644 index 6e910bd300..0000000000 --- a/resources/web/guide/swiper/core/update/updateClickedSlide.js +++ /dev/null @@ -1,36 +0,0 @@ -import $ from '../../shared/dom.js'; -export default function updateClickedSlide(e) { - const swiper = this; - const params = swiper.params; - const slide = $(e.target).closest(`.${params.slideClass}`)[0]; - 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).attr('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(); - } -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/update/updateProgress.js b/resources/web/guide/swiper/core/update/updateProgress.js deleted file mode 100644 index 4c06eac37b..0000000000 --- a/resources/web/guide/swiper/core/update/updateProgress.js +++ /dev/null @@ -1,50 +0,0 @@ -export default 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 - } = swiper; - const wasBeginning = isBeginning; - const wasEnd = isEnd; - - if (translatesDiff === 0) { - progress = 0; - isBeginning = true; - isEnd = true; - } else { - progress = (translate - swiper.minTranslate()) / translatesDiff; - isBeginning = progress <= 0; - isEnd = progress >= 1; - } - - Object.assign(swiper, { - progress, - 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); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/update/updateSize.js b/resources/web/guide/swiper/core/update/updateSize.js deleted file mode 100644 index 2e24aa8b98..0000000000 --- a/resources/web/guide/swiper/core/update/updateSize.js +++ /dev/null @@ -1,33 +0,0 @@ -export default 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[0].clientWidth; - } - - if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { - height = swiper.params.height; - } else { - height = $el[0].clientHeight; - } - - if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { - return; - } // Subtract paddings - - - width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10); - height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('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 - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/update/updateSlides.js b/resources/web/guide/swiper/core/update/updateSlides.js deleted file mode 100644 index 1d9bb70dde..0000000000 --- a/resources/web/guide/swiper/core/update/updateSlides.js +++ /dev/null @@ -1,309 +0,0 @@ -import { setCSSProperty } from '../../shared/utils.js'; -export default function updateSlides() { - const swiper = this; - - function getDirectionLabel(property) { - if (swiper.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]; - } - - function getDirectionPropertyValue(node, label) { - return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0); - } - - const params = swiper.params; - const { - $wrapperEl, - size: swiperSize, - rtlTranslate: rtl, - wrongRTL - } = swiper; - const isVirtual = swiper.virtual && params.virtual.enabled; - const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; - const slides = $wrapperEl.children(`.${swiper.params.slideClass}`); - 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; - 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; - } - - swiper.virtualSize = -spaceBetween; // reset margins - - if (rtl) slides.css({ - marginLeft: '', - marginBottom: '', - marginTop: '' - });else slides.css({ - marginRight: '', - marginBottom: '', - marginTop: '' - }); // reset cssMode offsets - - if (params.centeredSlides && params.cssMode) { - setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', ''); - setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', ''); - } - - const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; - - if (gridEnabled) { - swiper.grid.initSlides(slidesLength); - } // 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.eq(i); - - if (gridEnabled) { - swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel); - } - - if (slide.css('display') === 'none') continue; // eslint-disable-line - - if (params.slidesPerView === 'auto') { - if (shouldResetSlideSize) { - slides[i].style[getDirectionLabel('width')] = ``; - } - - const slideStyles = getComputedStyle(slide[0]); - const currentTransform = slide[0].style.transform; - const currentWebKitTransform = slide[0].style.webkitTransform; - - if (currentTransform) { - slide[0].style.transform = 'none'; - } - - if (currentWebKitTransform) { - slide[0].style.webkitTransform = 'none'; - } - - if (params.roundLengths) { - slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(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[0]; - slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); - } - } - - if (currentTransform) { - slide[0].style.transform = currentTransform; - } - - if (currentWebKitTransform) { - slide[0].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 (slides[i]) { - slides[i].style[getDirectionLabel('width')] = `${slideSize}px`; - } - } - - if (slides[i]) { - slides[i].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.css({ - width: `${swiper.virtualSize + params.spaceBetween}px` - }); - } - - if (params.setWrapperSize) { - $wrapperEl.css({ - [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px` - }); - } - - if (gridEnabled) { - swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel); - } // Remove last grid elements depending on width - - - if (!params.centeredSlides) { - const newSlidesGrid = []; - - for (let i = 0; i < snapGrid.length; i += 1) { - let slidesGridItem = snapGrid[i]; - if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); - - if (snapGrid[i] <= swiper.virtualSize - swiperSize) { - newSlidesGrid.push(slidesGridItem); - } - } - - snapGrid = newSlidesGrid; - - if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { - snapGrid.push(swiper.virtualSize - swiperSize); - } - } - - if (snapGrid.length === 0) snapGrid = [0]; - - if (params.spaceBetween !== 0) { - const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight'); - slides.filter((_, slideIndex) => { - if (!params.cssMode) return true; - - if (slideIndex === slides.length - 1) { - return false; - } - - return true; - }).css({ - [key]: `${spaceBetween}px` - }); - } - - if (params.centeredSlides && params.centeredSlidesBounds) { - let allSlidesSize = 0; - slidesSizesGrid.forEach(slideSizeValue => { - allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); - }); - allSlidesSize -= params.spaceBetween; - const maxSnap = allSlidesSize - swiperSize; - 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 + (params.spaceBetween ? params.spaceBetween : 0); - }); - allSlidesSize -= params.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(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); - setCSSProperty(swiper.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(); - } -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/update/updateSlidesClasses.js b/resources/web/guide/swiper/core/update/updateSlidesClasses.js deleted file mode 100644 index 06166d3510..0000000000 --- a/resources/web/guide/swiper/core/update/updateSlidesClasses.js +++ /dev/null @@ -1,64 +0,0 @@ -export default function updateSlidesClasses() { - const swiper = this; - const { - slides, - params, - $wrapperEl, - activeIndex, - realIndex - } = swiper; - const isVirtual = swiper.virtual && params.virtual.enabled; - slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`); - let activeSlide; - - if (isVirtual) { - activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`); - } else { - activeSlide = slides.eq(activeIndex); - } // Active classes - - - activeSlide.addClass(params.slideActiveClass); - - if (params.loop) { - // Duplicate to all looped slides - if (activeSlide.hasClass(params.slideDuplicateClass)) { - $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass); - } else { - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass); - } - } // Next Slide - - - let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass); - - if (params.loop && nextSlide.length === 0) { - nextSlide = slides.eq(0); - nextSlide.addClass(params.slideNextClass); - } // Prev Slide - - - let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass); - - if (params.loop && prevSlide.length === 0) { - prevSlide = slides.eq(-1); - prevSlide.addClass(params.slidePrevClass); - } - - if (params.loop) { - // Duplicate to all looped slides - if (nextSlide.hasClass(params.slideDuplicateClass)) { - $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass); - } else { - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass); - } - - if (prevSlide.hasClass(params.slideDuplicateClass)) { - $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass); - } else { - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass); - } - } - - swiper.emitSlidesClasses(); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/update/updateSlidesOffset.js b/resources/web/guide/swiper/core/update/updateSlidesOffset.js deleted file mode 100644 index 8856e955e0..0000000000 --- a/resources/web/guide/swiper/core/update/updateSlidesOffset.js +++ /dev/null @@ -1,8 +0,0 @@ -export default function updateSlidesOffset() { - const swiper = this; - const slides = swiper.slides; - - for (let i = 0; i < slides.length; i += 1) { - slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; - } -} \ No newline at end of file diff --git a/resources/web/guide/swiper/core/update/updateSlidesProgress.js b/resources/web/guide/swiper/core/update/updateSlidesProgress.js deleted file mode 100644 index f8bc772178..0000000000 --- a/resources/web/guide/swiper/core/update/updateSlidesProgress.js +++ /dev/null @@ -1,44 +0,0 @@ -import $ from '../../shared/dom.js'; -export default 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; // Visible Slides - - slides.removeClass(params.slideVisibleClass); - swiper.visibleSlidesIndexes = []; - swiper.visibleSlides = []; - - 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 + params.spaceBetween); - const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween); - const slideBefore = -(offsetCenter - slideOffset); - const slideAfter = slideBefore + 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); - slides.eq(i).addClass(params.slideVisibleClass); - } - - slide.progress = rtl ? -slideProgress : slideProgress; - slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; - } - - swiper.visibleSlides = $(swiper.visibleSlides); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/a11y/a11y.js b/resources/web/guide/swiper/modules/a11y/a11y.js deleted file mode 100644 index b8d6402564..0000000000 --- a/resources/web/guide/swiper/modules/a11y/a11y.js +++ /dev/null @@ -1,283 +0,0 @@ -import classesToSelector from '../../shared/classes-to-selector.js'; -import $ from '../../shared/dom.js'; -export default 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, - itemRoleDescriptionMessage: null, - slideRole: 'group' - } - }); - let liveRegion = null; - - function notify(message) { - const notification = liveRegion; - if (notification.length === 0) return; - notification.html(''); - notification.html(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.attr('tabIndex', '0'); - } - - function makeElNotFocusable($el) { - $el.attr('tabIndex', '-1'); - } - - function addElRole($el, role) { - $el.attr('role', role); - } - - function addElRoleDescription($el, description) { - $el.attr('aria-roledescription', description); - } - - function addElControls($el, controls) { - $el.attr('aria-controls', controls); - } - - function addElLabel($el, label) { - $el.attr('aria-label', label); - } - - function addElId($el, id) { - $el.attr('id', id); - } - - function addElLive($el, live) { - $el.attr('aria-live', live); - } - - function disableEl($el) { - $el.attr('aria-disabled', true); - } - - function enableEl($el) { - $el.attr('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.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) { - if (!(swiper.isEnd && !swiper.params.loop)) { - swiper.slideNext(); - } - - if (swiper.isEnd) { - notify(params.lastSlideMessage); - } else { - notify(params.nextSlideMessage); - } - } - - if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) { - if (!(swiper.isBeginning && !swiper.params.loop)) { - swiper.slidePrev(); - } - - if (swiper.isBeginning) { - notify(params.firstSlideMessage); - } else { - notify(params.prevSlideMessage); - } - } - - if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) { - $targetEl[0].click(); - } - } - - function updateNavigation() { - if (swiper.params.loop || !swiper.navigation) return; - const { - $nextEl, - $prevEl - } = swiper.navigation; - - if ($prevEl && $prevEl.length > 0) { - if (swiper.isBeginning) { - disableEl($prevEl); - makeElNotFocusable($prevEl); - } else { - enableEl($prevEl); - makeElFocusable($prevEl); - } - } - - if ($nextEl && $nextEl.length > 0) { - if (swiper.isEnd) { - disableEl($nextEl); - makeElNotFocusable($nextEl); - } else { - enableEl($nextEl); - makeElFocusable($nextEl); - } - } - } - - function hasPagination() { - return swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length; - } - - function updatePagination() { - const params = swiper.params.a11y; - - if (hasPagination()) { - swiper.pagination.bullets.each(bulletEl => { - const $bulletEl = $(bulletEl); - makeElFocusable($bulletEl); - - if (!swiper.params.pagination.renderBullet) { - addElRole($bulletEl, 'button'); - addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1)); - } - }); - } - } - - const initNavEl = ($el, wrapperId, message) => { - makeElFocusable($el); - - if ($el[0].tagName !== 'BUTTON') { - addElRole($el, 'button'); - $el.on('keydown', onEnterOrSpaceKey); - } - - addElLabel($el, message); - addElControls($el, wrapperId); - }; - - function 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); - } // Wrapper - - - const $wrapperEl = swiper.$wrapperEl; - const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`; - const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; - addElId($wrapperEl, wrapperId); - addElLive($wrapperEl, live); // Slide - - if (params.itemRoleDescriptionMessage) { - addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage); - } - - addElRole($(swiper.slides), params.slideRole); - const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length; - swiper.slides.each((slideEl, index) => { - const $slideEl = $(slideEl); - const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index; - const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); - addElLabel($slideEl, ariaLabelMessage); - }); // Navigation - - let $nextEl; - let $prevEl; - - if (swiper.navigation && swiper.navigation.$nextEl) { - $nextEl = swiper.navigation.$nextEl; - } - - if (swiper.navigation && swiper.navigation.$prevEl) { - $prevEl = swiper.navigation.$prevEl; - } - - if ($nextEl && $nextEl.length) { - initNavEl($nextEl, wrapperId, params.nextSlideMessage); - } - - if ($prevEl && $prevEl.length) { - initNavEl($prevEl, wrapperId, params.prevSlideMessage); - } // Pagination - - - if (hasPagination()) { - swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey); - } - } - - function destroy() { - if (liveRegion && liveRegion.length > 0) liveRegion.remove(); - let $nextEl; - let $prevEl; - - if (swiper.navigation && swiper.navigation.$nextEl) { - $nextEl = swiper.navigation.$nextEl; - } - - if (swiper.navigation && swiper.navigation.$prevEl) { - $prevEl = swiper.navigation.$prevEl; - } - - if ($nextEl) { - $nextEl.off('keydown', onEnterOrSpaceKey); - } - - if ($prevEl) { - $prevEl.off('keydown', onEnterOrSpaceKey); - } // Pagination - - - if (hasPagination()) { - swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey); - } - } - - on('beforeInit', () => { - liveRegion = $(``); - }); - on('afterInit', () => { - if (!swiper.params.a11y.enabled) return; - init(); - updateNavigation(); - }); - on('toEdge', () => { - if (!swiper.params.a11y.enabled) return; - updateNavigation(); - }); - on('fromEdge', () => { - 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(); - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/a11y/a11y.less b/resources/web/guide/swiper/modules/a11y/a11y.less deleted file mode 100644 index c5f9eec456..0000000000 --- a/resources/web/guide/swiper/modules/a11y/a11y.less +++ /dev/null @@ -1,9 +0,0 @@ -/* a11y */ -.swiper .swiper-notification { - position: absolute; - left: 0; - top: 0; - pointer-events: none; - opacity: 0; - z-index: -1000; -} diff --git a/resources/web/guide/swiper/modules/a11y/a11y.min.css b/resources/web/guide/swiper/modules/a11y/a11y.min.css deleted file mode 100644 index 78c39d57a6..0000000000 --- a/resources/web/guide/swiper/modules/a11y/a11y.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/a11y/a11y.scss b/resources/web/guide/swiper/modules/a11y/a11y.scss deleted file mode 100644 index c5f9eec456..0000000000 --- a/resources/web/guide/swiper/modules/a11y/a11y.scss +++ /dev/null @@ -1,9 +0,0 @@ -/* a11y */ -.swiper .swiper-notification { - position: absolute; - left: 0; - top: 0; - pointer-events: none; - opacity: 0; - z-index: -1000; -} diff --git a/resources/web/guide/swiper/modules/autoplay/autoplay.js b/resources/web/guide/swiper/modules/autoplay/autoplay.js deleted file mode 100644 index 0d7cd34241..0000000000 --- a/resources/web/guide/swiper/modules/autoplay/autoplay.js +++ /dev/null @@ -1,222 +0,0 @@ -/* eslint no-underscore-dangle: "off" */ - -/* eslint no-use-before-define: "off" */ -import { getDocument } from 'ssr-window'; -import { nextTick } from '../../shared/utils.js'; -export default function Autoplay({ - swiper, - extendParams, - on, - emit -}) { - let timeout; - swiper.autoplay = { - running: false, - paused: false - }; - extendParams({ - autoplay: { - enabled: false, - delay: 3000, - waitForTransition: true, - disableOnInteraction: true, - stopOnLastSlide: false, - reverseDirection: false, - pauseOnMouseEnter: false - } - }); - - function run() { - const $activeSlideEl = swiper.slides.eq(swiper.activeIndex); - let delay = swiper.params.autoplay.delay; - - if ($activeSlideEl.attr('data-swiper-autoplay')) { - delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay; - } - - clearTimeout(timeout); - timeout = nextTick(() => { - let autoplayResult; - - if (swiper.params.autoplay.reverseDirection) { - if (swiper.params.loop) { - swiper.loopFix(); - autoplayResult = swiper.slidePrev(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.isBeginning) { - autoplayResult = swiper.slidePrev(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.params.autoplay.stopOnLastSlide) { - autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); - emit('autoplay'); - } else { - stop(); - } - } else if (swiper.params.loop) { - swiper.loopFix(); - autoplayResult = swiper.slideNext(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.isEnd) { - autoplayResult = swiper.slideNext(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.params.autoplay.stopOnLastSlide) { - autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true); - emit('autoplay'); - } else { - stop(); - } - - if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) { - run(); - } - }, delay); - } - - function start() { - if (typeof timeout !== 'undefined') return false; - if (swiper.autoplay.running) return false; - swiper.autoplay.running = true; - emit('autoplayStart'); - run(); - return true; - } - - function stop() { - if (!swiper.autoplay.running) return false; - if (typeof timeout === 'undefined') return false; - - if (timeout) { - clearTimeout(timeout); - timeout = undefined; - } - - swiper.autoplay.running = false; - emit('autoplayStop'); - return true; - } - - function pause(speed) { - if (!swiper.autoplay.running) return; - if (swiper.autoplay.paused) return; - if (timeout) clearTimeout(timeout); - swiper.autoplay.paused = true; - - if (speed === 0 || !swiper.params.autoplay.waitForTransition) { - swiper.autoplay.paused = false; - run(); - } else { - ['transitionend', 'webkitTransitionEnd'].forEach(event => { - swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd); - }); - } - } - - function onVisibilityChange() { - const document = getDocument(); - - if (document.visibilityState === 'hidden' && swiper.autoplay.running) { - pause(); - } - - if (document.visibilityState === 'visible' && swiper.autoplay.paused) { - run(); - swiper.autoplay.paused = false; - } - } - - function onTransitionEnd(e) { - if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return; - if (e.target !== swiper.$wrapperEl[0]) return; - ['transitionend', 'webkitTransitionEnd'].forEach(event => { - swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd); - }); - swiper.autoplay.paused = false; - - if (!swiper.autoplay.running) { - stop(); - } else { - run(); - } - } - - function onMouseEnter() { - if (swiper.params.autoplay.disableOnInteraction) { - stop(); - } else { - pause(); - } - - ['transitionend', 'webkitTransitionEnd'].forEach(event => { - swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd); - }); - } - - function onMouseLeave() { - if (swiper.params.autoplay.disableOnInteraction) { - return; - } - - swiper.autoplay.paused = false; - run(); - } - - function attachMouseEvents() { - if (swiper.params.autoplay.pauseOnMouseEnter) { - swiper.$el.on('mouseenter', onMouseEnter); - swiper.$el.on('mouseleave', onMouseLeave); - } - } - - function detachMouseEvents() { - swiper.$el.off('mouseenter', onMouseEnter); - swiper.$el.off('mouseleave', onMouseLeave); - } - - on('init', () => { - if (swiper.params.autoplay.enabled) { - start(); - const document = getDocument(); - document.addEventListener('visibilitychange', onVisibilityChange); - attachMouseEvents(); - } - }); - on('beforeTransitionStart', (_s, speed, internal) => { - if (swiper.autoplay.running) { - if (internal || !swiper.params.autoplay.disableOnInteraction) { - swiper.autoplay.pause(speed); - } else { - stop(); - } - } - }); - on('sliderFirstMove', () => { - if (swiper.autoplay.running) { - if (swiper.params.autoplay.disableOnInteraction) { - stop(); - } else { - pause(); - } - } - }); - on('touchEnd', () => { - if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) { - run(); - } - }); - on('destroy', () => { - detachMouseEvents(); - - if (swiper.autoplay.running) { - stop(); - } - - const document = getDocument(); - document.removeEventListener('visibilitychange', onVisibilityChange); - }); - Object.assign(swiper.autoplay, { - pause, - run, - start, - stop - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/autoplay/autoplay.less b/resources/web/guide/swiper/modules/autoplay/autoplay.less deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/autoplay/autoplay.min.css b/resources/web/guide/swiper/modules/autoplay/autoplay.min.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/autoplay/autoplay.scss b/resources/web/guide/swiper/modules/autoplay/autoplay.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/controller/controller.js b/resources/web/guide/swiper/modules/controller/controller.js deleted file mode 100644 index 55b32f2002..0000000000 --- a/resources/web/guide/swiper/modules/controller/controller.js +++ /dev/null @@ -1,191 +0,0 @@ -/* eslint no-bitwise: ["error", { "allow": [">>"] }] */ -import { nextTick } from '../../shared/utils.js'; -export default 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; - } // xxx: for now i will just save one spline function to to - - - function getInterpolateFunction(c) { - if (!swiper.controller.spline) { - 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) { - // 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()); - 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) { - c.setTransition(duration, swiper); - - if (duration !== 0) { - c.transitionStart(); - - if (c.params.autoHeight) { - nextTick(() => { - c.updateAutoHeight(); - }); - } - - c.$wrapperEl.transitionEnd(() => { - if (!controlled) return; - - if (c.params.loop && swiper.params.controller.by === 'slide') { - c.loopFix(); - } - - 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', () => { - 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) return; - swiper.controller.setTranslate(translate, byController); - }); - on('setTransition', (_s, duration, byController) => { - if (!swiper.controller.control) return; - swiper.controller.setTransition(duration, byController); - }); - Object.assign(swiper.controller, { - setTranslate, - setTransition - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/controller/controller.less b/resources/web/guide/swiper/modules/controller/controller.less deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/controller/controller.min.css b/resources/web/guide/swiper/modules/controller/controller.min.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/controller/controller.scss b/resources/web/guide/swiper/modules/controller/controller.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/effect-cards/effect-cards.js b/resources/web/guide/swiper/modules/effect-cards/effect-cards.js deleted file mode 100644 index 7709bed9c4..0000000000 --- a/resources/web/guide/swiper/modules/effect-cards/effect-cards.js +++ /dev/null @@ -1,125 +0,0 @@ -import createShadow from '../../shared/create-shadow.js'; -import effectInit from '../../shared/effect-init.js'; -import effectTarget from '../../shared/effect-target.js'; -import effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js'; -export default function EffectCards({ - swiper, - extendParams, - on -}) { - extendParams({ - cardsEffect: { - slideShadows: true, - transformEl: null - } - }); - - const setTranslate = () => { - const { - slides, - activeIndex - } = swiper; - const params = swiper.params.cardsEffect; - const { - startTranslate, - isTouched - } = swiper.touchEventsData; - const currentTranslate = swiper.translate; - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - const slideProgress = $slideEl[0].progress; - const progress = Math.min(Math.max(slideProgress, -4), 4); - let offset = $slideEl[0].swiperSlideOffset; - - if (swiper.params.centeredSlides && !swiper.params.cssMode) { - swiper.$wrapperEl.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 = -2 * progress; - let tXAdd = 8 - Math.abs(progress) * 0.75; - const isSwipeToNext = (i === activeIndex || i === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; - const isSwipeToPrev = (i === activeIndex || i === 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 = `${-25 * subProgress * Math.abs(progress)}%`; - } - - if (progress < 0) { - // next - tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`; - } else if (progress > 0) { - // prev - tX = `calc(${tX}px + (-${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}`; - const transform = ` - translate3d(${tX}, ${tY}, ${tZ}px) - rotateZ(${rotate}deg) - scale(${scaleString}) - `; - - if (params.slideShadows) { - // Set shadows - let $shadowEl = $slideEl.find('.swiper-slide-shadow'); - - if ($shadowEl.length === 0) { - $shadowEl = createShadow(params, $slideEl); - } - - if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); - } - - $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(transform); - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.cardsEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl - }); - }; - - effectInit({ - effect: 'cards', - swiper, - on, - setTranslate, - setTransition, - perspective: () => true, - overwriteParams: () => ({ - watchSlidesProgress: true, - virtualTranslate: !swiper.params.cssMode - }) - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/effect-cards/effect-cards.less b/resources/web/guide/swiper/modules/effect-cards/effect-cards.less deleted file mode 100644 index ab9034258f..0000000000 --- a/resources/web/guide/swiper/modules/effect-cards/effect-cards.less +++ /dev/null @@ -1,8 +0,0 @@ -.swiper-cards { - overflow: visible; - .swiper-slide { - transform-origin: center bottom; - backface-visibility: hidden; - overflow: hidden; - } -} diff --git a/resources/web/guide/swiper/modules/effect-cards/effect-cards.min.css b/resources/web/guide/swiper/modules/effect-cards/effect-cards.min.css deleted file mode 100644 index 1769ef29bc..0000000000 --- a/resources/web/guide/swiper/modules/effect-cards/effect-cards.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/effect-cards/effect-cards.scss b/resources/web/guide/swiper/modules/effect-cards/effect-cards.scss deleted file mode 100644 index 32c4489f8f..0000000000 --- a/resources/web/guide/swiper/modules/effect-cards/effect-cards.scss +++ /dev/null @@ -1,7 +0,0 @@ -.swiper-cards { - overflow: visible; - .swiper-slide { - transform-origin: center bottom; - backface-visibility: hidden; - } -} diff --git a/resources/web/guide/swiper/modules/effect-coverflow/effect-coverflow.js b/resources/web/guide/swiper/modules/effect-coverflow/effect-coverflow.js deleted file mode 100644 index 7f182bb88e..0000000000 --- a/resources/web/guide/swiper/modules/effect-coverflow/effect-coverflow.js +++ /dev/null @@ -1,103 +0,0 @@ -import createShadow from '../../shared/create-shadow.js'; -import effectInit from '../../shared/effect-init.js'; -import effectTarget from '../../shared/effect-target.js'; -export default function EffectCoverflow({ - swiper, - extendParams, - on -}) { - extendParams({ - coverflowEffect: { - rotate: 50, - stretch: 0, - depth: 100, - scale: 1, - modifier: 1, - slideShadows: true, - transformEl: null - } - }); - - 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; // Each slide offset from center - - for (let i = 0, length = slides.length; i < length; i += 1) { - const $slideEl = slides.eq(i); - const slideSize = slidesSizesGrid[i]; - const slideOffset = $slideEl[0].swiperSlideOffset; - const offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * 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(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`; - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(slideTransform); - $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; - - if (params.slideShadows) { - // Set shadows - let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); - let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); - - if ($shadowBeforeEl.length === 0) { - $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top'); - } - - if ($shadowAfterEl.length === 0) { - $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom'); - } - - if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; - if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; - } - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.coverflowEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - }; - - effectInit({ - effect: 'coverflow', - swiper, - on, - setTranslate, - setTransition, - perspective: () => true, - overwriteParams: () => ({ - watchSlidesProgress: true - }) - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/effect-coverflow/effect-coverflow.less b/resources/web/guide/swiper/modules/effect-coverflow/effect-coverflow.less deleted file mode 100644 index ac504bf1a6..0000000000 --- a/resources/web/guide/swiper/modules/effect-coverflow/effect-coverflow.less +++ /dev/null @@ -1,2 +0,0 @@ -.swiper-coverflow { -} diff --git a/resources/web/guide/swiper/modules/effect-coverflow/effect-coverflow.min.css b/resources/web/guide/swiper/modules/effect-coverflow/effect-coverflow.min.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/effect-coverflow/effect-coverflow.scss b/resources/web/guide/swiper/modules/effect-coverflow/effect-coverflow.scss deleted file mode 100644 index ac504bf1a6..0000000000 --- a/resources/web/guide/swiper/modules/effect-coverflow/effect-coverflow.scss +++ /dev/null @@ -1,2 +0,0 @@ -.swiper-coverflow { -} diff --git a/resources/web/guide/swiper/modules/effect-creative/effect-creative.js b/resources/web/guide/swiper/modules/effect-creative/effect-creative.js deleted file mode 100644 index cc0542be7c..0000000000 --- a/resources/web/guide/swiper/modules/effect-creative/effect-creative.js +++ /dev/null @@ -1,154 +0,0 @@ -import createShadow from '../../shared/create-shadow.js'; -import effectInit from '../../shared/effect-init.js'; -import effectTarget from '../../shared/effect-target.js'; -import effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js'; -export default function EffectCreative({ - swiper, - extendParams, - on -}) { - extendParams({ - creativeEffect: { - transformEl: null, - 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; - - if (isCenteredSlides) { - const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; - $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`); - } - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - const slideProgress = $slideEl[0].progress; - const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress); - let originalProgress = progress; - - if (!isCenteredSlides) { - originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress); - } - - const offset = $slideEl[0].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) => { - r[index] = data.rotate[index] * Math.abs(progress * multiplier); - }); - $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; - const translateString = t.join(', '); - const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${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.children('.swiper-slide-shadow'); - - if ($shadowEl.length === 0 && data.shadow) { - $shadowEl = createShadow(params, $slideEl); - } - - if ($shadowEl.length) { - const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; - $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); - } - } - - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(transform).css({ - opacity: opacityString - }); - - if (data.origin) { - $targetEl.css('transform-origin', data.origin); - } - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.creativeEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl, - allSlides: true - }); - }; - - effectInit({ - effect: 'creative', - swiper, - on, - setTranslate, - setTransition, - perspective: () => swiper.params.creativeEffect.perspective, - overwriteParams: () => ({ - watchSlidesProgress: true, - virtualTranslate: !swiper.params.cssMode - }) - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/effect-creative/effect-creative.less b/resources/web/guide/swiper/modules/effect-creative/effect-creative.less deleted file mode 100644 index b893cad5c8..0000000000 --- a/resources/web/guide/swiper/modules/effect-creative/effect-creative.less +++ /dev/null @@ -1,7 +0,0 @@ -.swiper-creative { - .swiper-slide { - backface-visibility: hidden; - overflow: hidden; - transition-property: transform, opacity, height; - } -} diff --git a/resources/web/guide/swiper/modules/effect-creative/effect-creative.min.css b/resources/web/guide/swiper/modules/effect-creative/effect-creative.min.css deleted file mode 100644 index 404da2c284..0000000000 --- a/resources/web/guide/swiper/modules/effect-creative/effect-creative.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/effect-creative/effect-creative.scss b/resources/web/guide/swiper/modules/effect-creative/effect-creative.scss deleted file mode 100644 index b893cad5c8..0000000000 --- a/resources/web/guide/swiper/modules/effect-creative/effect-creative.scss +++ /dev/null @@ -1,7 +0,0 @@ -.swiper-creative { - .swiper-slide { - backface-visibility: hidden; - overflow: hidden; - transition-property: transform, opacity, height; - } -} diff --git a/resources/web/guide/swiper/modules/effect-cube/effect-cube.js b/resources/web/guide/swiper/modules/effect-cube/effect-cube.js deleted file mode 100644 index f15389331c..0000000000 --- a/resources/web/guide/swiper/modules/effect-cube/effect-cube.js +++ /dev/null @@ -1,180 +0,0 @@ -import $ from '../../shared/dom.js'; -import effectInit from '../../shared/effect-init.js'; -export default function EffectCube({ - swiper, - extendParams, - on -}) { - extendParams({ - cubeEffect: { - slideShadows: true, - shadow: true, - shadowOffset: 20, - shadowScale: 0.94 - } - }); - - const setTranslate = () => { - const { - $el, - $wrapperEl, - slides, - width: swiperWidth, - height: swiperHeight, - rtlTranslate: rtl, - size: swiperSize, - browser - } = 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 = $wrapperEl.find('.swiper-cube-shadow'); - - if ($cubeShadowEl.length === 0) { - $cubeShadowEl = $('
'); - $wrapperEl.append($cubeShadowEl); - } - - $cubeShadowEl.css({ - height: `${swiperWidth}px` - }); - } else { - $cubeShadowEl = $el.find('.swiper-cube-shadow'); - - if ($cubeShadowEl.length === 0) { - $cubeShadowEl = $('
'); - $el.append($cubeShadowEl); - } - } - } - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - let slideIndex = i; - - if (isVirtual) { - slideIndex = parseInt($slideEl.attr('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[0].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(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${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.transform(transform); - - if (params.slideShadows) { - // Set shadows - let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); - let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); - - if (shadowBefore.length === 0) { - shadowBefore = $(`
`); - $slideEl.append(shadowBefore); - } - - if (shadowAfter.length === 0) { - shadowAfter = $(`
`); - $slideEl.append(shadowAfter); - } - - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - } - - $wrapperEl.css({ - '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`, - 'transform-origin': `50% 50% -${swiperSize / 2}px` - }); - - if (params.shadow) { - if (isHorizontal) { - $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) 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.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`); - } - } - - const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0; - $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`); - }; - - const setTransition = duration => { - const { - $el, - slides - } = swiper; - slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - - if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { - $el.find('.swiper-cube-shadow').transition(duration); - } - }; - - effectInit({ - effect: 'cube', - swiper, - on, - setTranslate, - setTransition, - perspective: () => true, - overwriteParams: () => ({ - slidesPerView: 1, - slidesPerGroup: 1, - watchSlidesProgress: true, - resistanceRatio: 0, - spaceBetween: 0, - centeredSlides: false, - virtualTranslate: true - }) - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/effect-cube/effect-cube.less b/resources/web/guide/swiper/modules/effect-cube/effect-cube.less deleted file mode 100644 index ae4c92cb31..0000000000 --- a/resources/web/guide/swiper/modules/effect-cube/effect-cube.less +++ /dev/null @@ -1,59 +0,0 @@ -.swiper-cube { - overflow: visible; - .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, - .swiper-slide-next + .swiper-slide { - pointer-events: auto; - visibility: visible; - } - .swiper-slide-shadow-top, - .swiper-slide-shadow-bottom, - .swiper-slide-shadow-left, - .swiper-slide-shadow-right { - z-index: 0; - backface-visibility: hidden; - } - .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; - -webkit-filter: blur(50px); - filter: blur(50px); - } - } -} diff --git a/resources/web/guide/swiper/modules/effect-cube/effect-cube.min.css b/resources/web/guide/swiper/modules/effect-cube/effect-cube.min.css deleted file mode 100644 index 103dcee2b5..0000000000 --- a/resources/web/guide/swiper/modules/effect-cube/effect-cube.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-next+.swiper-slide,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.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)} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/effect-cube/effect-cube.scss b/resources/web/guide/swiper/modules/effect-cube/effect-cube.scss deleted file mode 100644 index ae4c92cb31..0000000000 --- a/resources/web/guide/swiper/modules/effect-cube/effect-cube.scss +++ /dev/null @@ -1,59 +0,0 @@ -.swiper-cube { - overflow: visible; - .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, - .swiper-slide-next + .swiper-slide { - pointer-events: auto; - visibility: visible; - } - .swiper-slide-shadow-top, - .swiper-slide-shadow-bottom, - .swiper-slide-shadow-left, - .swiper-slide-shadow-right { - z-index: 0; - backface-visibility: hidden; - } - .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; - -webkit-filter: blur(50px); - filter: blur(50px); - } - } -} diff --git a/resources/web/guide/swiper/modules/effect-fade/effect-fade.js b/resources/web/guide/swiper/modules/effect-fade/effect-fade.js deleted file mode 100644 index 5ac9bcbdcf..0000000000 --- a/resources/web/guide/swiper/modules/effect-fade/effect-fade.js +++ /dev/null @@ -1,70 +0,0 @@ -import effectInit from '../../shared/effect-init.js'; -import effectTarget from '../../shared/effect-target.js'; -import effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js'; -export default function EffectFade({ - swiper, - extendParams, - on -}) { - extendParams({ - fadeEffect: { - crossFade: false, - transformEl: null - } - }); - - const setTranslate = () => { - const { - slides - } = swiper; - const params = swiper.params.fadeEffect; - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = swiper.slides.eq(i); - const offset = $slideEl[0].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[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0); - const $targetEl = effectTarget(params, $slideEl); - $targetEl.css({ - opacity: slideOpacity - }).transform(`translate3d(${tx}px, ${ty}px, 0px)`); - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.fadeEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl, - allSlides: true - }); - }; - - effectInit({ - effect: 'fade', - swiper, - on, - setTranslate, - setTransition, - overwriteParams: () => ({ - slidesPerView: 1, - slidesPerGroup: 1, - watchSlidesProgress: true, - spaceBetween: 0, - virtualTranslate: !swiper.params.cssMode - }) - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/effect-fade/effect-fade.less b/resources/web/guide/swiper/modules/effect-fade/effect-fade.less deleted file mode 100644 index bb059dd354..0000000000 --- a/resources/web/guide/swiper/modules/effect-fade/effect-fade.less +++ /dev/null @@ -1,20 +0,0 @@ -.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 { - &, - & .swiper-slide-active { - pointer-events: auto; - } - } -} diff --git a/resources/web/guide/swiper/modules/effect-fade/effect-fade.min.css b/resources/web/guide/swiper/modules/effect-fade/effect-fade.min.css deleted file mode 100644 index ec1d7bfd82..0000000000 --- a/resources/web/guide/swiper/modules/effect-fade/effect-fade.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/effect-fade/effect-fade.scss b/resources/web/guide/swiper/modules/effect-fade/effect-fade.scss deleted file mode 100644 index bb059dd354..0000000000 --- a/resources/web/guide/swiper/modules/effect-fade/effect-fade.scss +++ /dev/null @@ -1,20 +0,0 @@ -.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 { - &, - & .swiper-slide-active { - pointer-events: auto; - } - } -} diff --git a/resources/web/guide/swiper/modules/effect-flip/effect-flip.js b/resources/web/guide/swiper/modules/effect-flip/effect-flip.js deleted file mode 100644 index e923008176..0000000000 --- a/resources/web/guide/swiper/modules/effect-flip/effect-flip.js +++ /dev/null @@ -1,102 +0,0 @@ -import createShadow from '../../shared/create-shadow.js'; -import effectInit from '../../shared/effect-init.js'; -import effectTarget from '../../shared/effect-target.js'; -import effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js'; -export default function EffectFlip({ - swiper, - extendParams, - on -}) { - extendParams({ - flipEffect: { - slideShadows: true, - limitRotation: true, - transformEl: null - } - }); - - const setTranslate = () => { - const { - slides, - rtlTranslate: rtl - } = swiper; - const params = swiper.params.flipEffect; - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - let progress = $slideEl[0].progress; - - if (swiper.params.flipEffect.limitRotation) { - progress = Math.max(Math.min($slideEl[0].progress, 1), -1); - } - - const offset = $slideEl[0].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[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length; - - if (params.slideShadows) { - // Set shadows - let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); - let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); - - if (shadowBefore.length === 0) { - shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top'); - } - - if (shadowAfter.length === 0) { - shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); - } - - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - - const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(transform); - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.flipEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl - }); - }; - - effectInit({ - effect: 'flip', - swiper, - on, - setTranslate, - setTransition, - perspective: () => true, - overwriteParams: () => ({ - slidesPerView: 1, - slidesPerGroup: 1, - watchSlidesProgress: true, - spaceBetween: 0, - virtualTranslate: !swiper.params.cssMode - }) - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/effect-flip/effect-flip.less b/resources/web/guide/swiper/modules/effect-flip/effect-flip.less deleted file mode 100644 index f200173bdd..0000000000 --- a/resources/web/guide/swiper/modules/effect-flip/effect-flip.less +++ /dev/null @@ -1,24 +0,0 @@ -.swiper-flip { - overflow: visible; - .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; - } - } - .swiper-slide-shadow-top, - .swiper-slide-shadow-bottom, - .swiper-slide-shadow-left, - .swiper-slide-shadow-right { - z-index: 0; - backface-visibility: hidden; - } -} diff --git a/resources/web/guide/swiper/modules/effect-flip/effect-flip.min.css b/resources/web/guide/swiper/modules/effect-flip/effect-flip.min.css deleted file mode 100644 index ae2ed654e0..0000000000 --- a/resources/web/guide/swiper/modules/effect-flip/effect-flip.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/effect-flip/effect-flip.scss b/resources/web/guide/swiper/modules/effect-flip/effect-flip.scss deleted file mode 100644 index f200173bdd..0000000000 --- a/resources/web/guide/swiper/modules/effect-flip/effect-flip.scss +++ /dev/null @@ -1,24 +0,0 @@ -.swiper-flip { - overflow: visible; - .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; - } - } - .swiper-slide-shadow-top, - .swiper-slide-shadow-bottom, - .swiper-slide-shadow-left, - .swiper-slide-shadow-right { - z-index: 0; - backface-visibility: hidden; - } -} diff --git a/resources/web/guide/swiper/modules/free-mode/free-mode.js b/resources/web/guide/swiper/modules/free-mode/free-mode.js deleted file mode 100644 index 83b00af846..0000000000 --- a/resources/web/guide/swiper/modules/free-mode/free-mode.js +++ /dev/null @@ -1,245 +0,0 @@ -import { now } from '../../shared/utils.js'; -export default 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 onTouchMove() { - 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 - }) { - 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; - $wrapperEl.transitionEnd(() => { - if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; - emit('momentumBounce'); - swiper.setTransition(params.speed); - setTimeout(() => { - swiper.setTranslate(afterBouncePosition); - $wrapperEl.transitionEnd(() => { - 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; - $wrapperEl.transitionEnd(() => { - 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) { - swiper.updateProgress(); - swiper.updateActiveIndex(); - swiper.updateSlidesClasses(); - } - } - - Object.assign(swiper, { - freeMode: { - onTouchMove, - onTouchEnd - } - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/free-mode/free-mode.less b/resources/web/guide/swiper/modules/free-mode/free-mode.less deleted file mode 100644 index 9c289eb769..0000000000 --- a/resources/web/guide/swiper/modules/free-mode/free-mode.less +++ /dev/null @@ -1,4 +0,0 @@ -.swiper-free-mode > .swiper-wrapper { - transition-timing-function: ease-out; - margin: 0 auto; -} diff --git a/resources/web/guide/swiper/modules/free-mode/free-mode.min.css b/resources/web/guide/swiper/modules/free-mode/free-mode.min.css deleted file mode 100644 index ecc8120383..0000000000 --- a/resources/web/guide/swiper/modules/free-mode/free-mode.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/free-mode/free-mode.scss b/resources/web/guide/swiper/modules/free-mode/free-mode.scss deleted file mode 100644 index 9c289eb769..0000000000 --- a/resources/web/guide/swiper/modules/free-mode/free-mode.scss +++ /dev/null @@ -1,4 +0,0 @@ -.swiper-free-mode > .swiper-wrapper { - transition-timing-function: ease-out; - margin: 0 auto; -} diff --git a/resources/web/guide/swiper/modules/grid/grid.js b/resources/web/guide/swiper/modules/grid/grid.js deleted file mode 100644 index 853cb9b0e1..0000000000 --- a/resources/web/guide/swiper/modules/grid/grid.js +++ /dev/null @@ -1,116 +0,0 @@ -export default function Grid({ - swiper, - extendParams -}) { - extendParams({ - grid: { - rows: 1, - fill: 'column' - } - }); - let slidesNumberEvenToRows; - let slidesPerRow; - let numFullColumns; - - const initSlides = slidesLength => { - const { - slidesPerView - } = swiper.params; - const { - rows, - fill - } = swiper.params.grid; - slidesPerRow = slidesNumberEvenToRows / rows; - 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); - } - }; - - const updateSlide = (i, slide, slidesLength, getDirectionLabel) => { - const { - slidesPerGroup, - spaceBetween - } = swiper.params; - const { - rows, - fill - } = swiper.params.grid; // 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.css({ - '-webkit-order': newSlideOrderIndex, - 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.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : ''); - }; - - const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => { - const { - spaceBetween, - centeredSlides, - roundLengths - } = swiper.params; - const { - rows - } = swiper.params.grid; - swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; - swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; - swiper.$wrapperEl.css({ - [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px` - }); - - if (centeredSlides) { - snapGrid.splice(0, snapGrid.length); - 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.push(...newSlidesGrid); - } - }; - - swiper.grid = { - initSlides, - updateSlide, - updateWrapperSize - }; -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/grid/grid.less b/resources/web/guide/swiper/modules/grid/grid.less deleted file mode 100644 index 136cb654c1..0000000000 --- a/resources/web/guide/swiper/modules/grid/grid.less +++ /dev/null @@ -1,7 +0,0 @@ -.swiper-grid > .swiper-wrapper { - flex-wrap: wrap; -} -.swiper-grid-column > .swiper-wrapper { - flex-wrap: wrap; - flex-direction: column; -} diff --git a/resources/web/guide/swiper/modules/grid/grid.min.css b/resources/web/guide/swiper/modules/grid/grid.min.css deleted file mode 100644 index 7d5f8f9226..0000000000 --- a/resources/web/guide/swiper/modules/grid/grid.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/grid/grid.scss b/resources/web/guide/swiper/modules/grid/grid.scss deleted file mode 100644 index 136cb654c1..0000000000 --- a/resources/web/guide/swiper/modules/grid/grid.scss +++ /dev/null @@ -1,7 +0,0 @@ -.swiper-grid > .swiper-wrapper { - flex-wrap: wrap; -} -.swiper-grid-column > .swiper-wrapper { - flex-wrap: wrap; - flex-direction: column; -} diff --git a/resources/web/guide/swiper/modules/hash-navigation/hash-navigation.js b/resources/web/guide/swiper/modules/hash-navigation/hash-navigation.js deleted file mode 100644 index 50556c7f3d..0000000000 --- a/resources/web/guide/swiper/modules/hash-navigation/hash-navigation.js +++ /dev/null @@ -1,96 +0,0 @@ -import { getWindow, getDocument } from 'ssr-window'; -import $ from '../../shared/dom.js'; -export default function HashNavigation({ - swiper, - extendParams, - emit, - on -}) { - let initialized = false; - const document = getDocument(); - const window = getWindow(); - extendParams({ - hashNavigation: { - enabled: false, - replaceState: false, - watchState: false - } - }); - - const onHashChange = () => { - emit('hashChange'); - const newHash = document.location.hash.replace('#', ''); - const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash'); - - if (newHash !== activeSlideHash) { - const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index(); - if (typeof newIndex === 'undefined') return; - swiper.slideTo(newIndex); - } - }; - - const setHash = () => { - if (!initialized || !swiper.params.hashNavigation.enabled) return; - - if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { - window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''); - emit('hashSet'); - } else { - const slide = swiper.slides.eq(swiper.activeIndex); - const hash = slide.attr('data-hash') || slide.attr('data-history'); - document.location.hash = hash || ''; - 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; - - for (let i = 0, length = swiper.slides.length; i < length; i += 1) { - const slide = swiper.slides.eq(i); - const slideHash = slide.attr('data-hash') || slide.attr('data-history'); - - if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) { - const index = slide.index(); - swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true); - } - } - } - - if (swiper.params.hashNavigation.watchState) { - $(window).on('hashchange', onHashChange); - } - }; - - const destroy = () => { - if (swiper.params.hashNavigation.watchState) { - $(window).off('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(); - } - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/hash-navigation/hash-navigation.less b/resources/web/guide/swiper/modules/hash-navigation/hash-navigation.less deleted file mode 100644 index eafcdd6f56..0000000000 --- a/resources/web/guide/swiper/modules/hash-navigation/hash-navigation.less +++ /dev/null @@ -1,2 +0,0 @@ -@import url('../../swiper-vars.less'); - diff --git a/resources/web/guide/swiper/modules/hash-navigation/hash-navigation.min.css b/resources/web/guide/swiper/modules/hash-navigation/hash-navigation.min.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/hash-navigation/hash-navigation.scss b/resources/web/guide/swiper/modules/hash-navigation/hash-navigation.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/history/history.js b/resources/web/guide/swiper/modules/history/history.js deleted file mode 100644 index 84c59dd303..0000000000 --- a/resources/web/guide/swiper/modules/history/history.js +++ /dev/null @@ -1,150 +0,0 @@ -import { getWindow } from 'ssr-window'; -export default function History({ - swiper, - extendParams, - on -}) { - extendParams({ - history: { - enabled: false, - root: '', - replaceState: false, - key: 'slides' - } - }); - 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.slides.eq(index); - let value = slugify(slide.attr('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}/${value}`; - } else if (!location.pathname.includes(key)) { - value = `${key}/${value}`; - } - - 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.eq(i); - const slideHistory = slugify(slide.attr('data-history')); - - if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) { - const index = slide.index(); - swiper.slideTo(index, speed, runCallbacks); - } - } - } else { - swiper.slideTo(0, speed, runCallbacks); - } - }; - - const setHistoryPopState = () => { - paths = getPathValues(swiper.params.url); - scrollToSlide(swiper.params.speed, swiper.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) 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); - } - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/history/history.less b/resources/web/guide/swiper/modules/history/history.less deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/history/history.min.css b/resources/web/guide/swiper/modules/history/history.min.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/history/history.scss b/resources/web/guide/swiper/modules/history/history.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/keyboard/keyboard.js b/resources/web/guide/swiper/modules/keyboard/keyboard.js deleted file mode 100644 index bb24e7e463..0000000000 --- a/resources/web/guide/swiper/modules/keyboard/keyboard.js +++ /dev/null @@ -1,131 +0,0 @@ -/* eslint-disable consistent-return */ -import { getWindow, getDocument } from 'ssr-window'; -import $ from '../../shared/dom.js'; -export default function Keyboard({ - swiper, - extendParams, - on, - emit -}) { - const document = getDocument(); - const window = getWindow(); - swiper.keyboard = { - enabled: false - }; - extendParams({ - keyboard: { - enabled: false, - onlyInViewport: true, - pageUpDown: true - } - }); - - 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.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 (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) { - return undefined; - } - - const $el = swiper.$el; - const swiperWidth = $el[0].clientWidth; - const swiperHeight = $el[0].clientHeight; - const windowWidth = window.innerWidth; - const windowHeight = window.innerHeight; - const swiperOffset = swiper.$el.offset(); - if (rtl) swiperOffset.left -= swiper.$el[0].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; - } - - 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(); - if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); - } else { - if (isPageUp || isPageDown || isArrowUp || isArrowDown) { - if (e.preventDefault) e.preventDefault();else e.returnValue = false; - } - - if (isPageDown || isArrowDown) swiper.slideNext(); - if (isPageUp || isArrowUp) swiper.slidePrev(); - } - - emit('keyPress', kc); - return undefined; - } - - function enable() { - if (swiper.keyboard.enabled) return; - $(document).on('keydown', handle); - swiper.keyboard.enabled = true; - } - - function disable() { - if (!swiper.keyboard.enabled) return; - $(document).off('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 - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/keyboard/keyboard.less b/resources/web/guide/swiper/modules/keyboard/keyboard.less deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/keyboard/keyboard.min.css b/resources/web/guide/swiper/modules/keyboard/keyboard.min.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/keyboard/keyboard.scss b/resources/web/guide/swiper/modules/keyboard/keyboard.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/lazy/lazy.js b/resources/web/guide/swiper/modules/lazy/lazy.js deleted file mode 100644 index cfba3111b0..0000000000 --- a/resources/web/guide/swiper/modules/lazy/lazy.js +++ /dev/null @@ -1,283 +0,0 @@ -import { getWindow } from 'ssr-window'; -import $ from '../../shared/dom.js'; -export default function Lazy({ - swiper, - extendParams, - on, - emit -}) { - extendParams({ - lazy: { - checkInView: false, - enabled: false, - loadPrevNext: false, - loadPrevNextAmount: 1, - loadOnTransitionStart: false, - scrollingElement: '', - elementClass: 'swiper-lazy', - loadingClass: 'swiper-lazy-loading', - loadedClass: 'swiper-lazy-loaded', - preloaderClass: 'swiper-lazy-preloader' - } - }); - swiper.lazy = {}; - let scrollHandlerAttached = false; - let initialImageLoaded = false; - - function loadInSlide(index, loadInDuplicate = true) { - const params = swiper.params.lazy; - if (typeof index === 'undefined') return; - if (swiper.slides.length === 0) return; - const isVirtual = swiper.virtual && swiper.params.virtual.enabled; - const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`) : swiper.slides.eq(index); - const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`); - - if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) { - $images.push($slideEl[0]); - } - - if ($images.length === 0) return; - $images.each(imageEl => { - const $imageEl = $(imageEl); - $imageEl.addClass(params.loadingClass); - const background = $imageEl.attr('data-background'); - const src = $imageEl.attr('data-src'); - const srcset = $imageEl.attr('data-srcset'); - const sizes = $imageEl.attr('data-sizes'); - const $pictureEl = $imageEl.parent('picture'); - swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => { - if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return; - - if (background) { - $imageEl.css('background-image', `url("${background}")`); - $imageEl.removeAttr('data-background'); - } else { - if (srcset) { - $imageEl.attr('srcset', srcset); - $imageEl.removeAttr('data-srcset'); - } - - if (sizes) { - $imageEl.attr('sizes', sizes); - $imageEl.removeAttr('data-sizes'); - } - - if ($pictureEl.length) { - $pictureEl.children('source').each(sourceEl => { - const $source = $(sourceEl); - - if ($source.attr('data-srcset')) { - $source.attr('srcset', $source.attr('data-srcset')); - $source.removeAttr('data-srcset'); - } - }); - } - - if (src) { - $imageEl.attr('src', src); - $imageEl.removeAttr('data-src'); - } - } - - $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); - $slideEl.find(`.${params.preloaderClass}`).remove(); - - if (swiper.params.loop && loadInDuplicate) { - const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index'); - - if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) { - const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`); - loadInSlide(originalSlide.index(), false); - } else { - const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`); - loadInSlide(duplicatedSlide.index(), false); - } - } - - emit('lazyImageReady', $slideEl[0], $imageEl[0]); - - if (swiper.params.autoHeight) { - swiper.updateAutoHeight(); - } - }); - emit('lazyImageLoad', $slideEl[0], $imageEl[0]); - }); - } - - function load() { - const { - $wrapperEl, - params: swiperParams, - slides, - activeIndex - } = swiper; - const isVirtual = swiper.virtual && swiperParams.virtual.enabled; - const params = swiperParams.lazy; - let slidesPerView = swiperParams.slidesPerView; - - if (slidesPerView === 'auto') { - slidesPerView = 0; - } - - function slideExist(index) { - if (isVirtual) { - if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) { - return true; - } - } else if (slides[index]) return true; - - return false; - } - - function slideIndex(slideEl) { - if (isVirtual) { - return $(slideEl).attr('data-swiper-slide-index'); - } - - return $(slideEl).index(); - } - - if (!initialImageLoaded) initialImageLoaded = true; - - if (swiper.params.watchSlidesProgress) { - $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => { - const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index(); - loadInSlide(index); - }); - } else if (slidesPerView > 1) { - for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) { - if (slideExist(i)) loadInSlide(i); - } - } else { - loadInSlide(activeIndex); - } - - if (params.loadPrevNext) { - if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) { - const amount = params.loadPrevNextAmount; - const spv = slidesPerView; - const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); - const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides - - for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) { - if (slideExist(i)) loadInSlide(i); - } // Prev Slides - - - for (let i = minIndex; i < activeIndex; i += 1) { - if (slideExist(i)) loadInSlide(i); - } - } else { - const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`); - if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide)); - const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`); - if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide)); - } - } - } - - function checkInViewOnLoad() { - const window = getWindow(); - if (!swiper || swiper.destroyed) return; - const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window); - const isWindow = $scrollElement[0] === window; - const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth; - const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight; - const swiperOffset = swiper.$el.offset(); - const { - rtlTranslate: rtl - } = swiper; - let inView = false; - if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft; - const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]]; - - for (let i = 0; i < swiperCoord.length; i += 1) { - const point = swiperCoord[i]; - - if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) { - if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line - - inView = true; - } - } - - const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? { - passive: true, - capture: false - } : false; - - if (inView) { - load(); - $scrollElement.off('scroll', checkInViewOnLoad, passiveListener); - } else if (!scrollHandlerAttached) { - scrollHandlerAttached = true; - $scrollElement.on('scroll', checkInViewOnLoad, passiveListener); - } - } - - on('beforeInit', () => { - if (swiper.params.lazy.enabled && swiper.params.preloadImages) { - swiper.params.preloadImages = false; - } - }); - on('init', () => { - if (swiper.params.lazy.enabled) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - }); - on('scroll', () => { - if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) { - load(); - } - }); - on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => { - if (swiper.params.lazy.enabled) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - }); - on('transitionStart', () => { - if (swiper.params.lazy.enabled) { - if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - } - }); - on('transitionEnd', () => { - if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - }); - on('slideChange', () => { - const { - lazy, - cssMode, - watchSlidesProgress, - touchReleaseOnEdges, - resistanceRatio - } = swiper.params; - - if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) { - load(); - } - }); - Object.assign(swiper.lazy, { - load, - loadInSlide - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/lazy/lazy.less b/resources/web/guide/swiper/modules/lazy/lazy.less deleted file mode 100644 index caaf125617..0000000000 --- a/resources/web/guide/swiper/modules/lazy/lazy.less +++ /dev/null @@ -1,34 +0,0 @@ -/* Preloader */ -:root { - /* - --swiper-preloader-color: var(--swiper-theme-color); - */ -} -.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%; - animation: swiper-preloader-spin 1s infinite linear; - box-sizing: border-box; - border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); - border-radius: 50%; - border-top-color: transparent; -} - -.swiper-lazy-preloader-white { - --swiper-preloader-color: #fff; -} -.swiper-lazy-preloader-black { - --swiper-preloader-color: #000; -} -@keyframes swiper-preloader-spin { - 100% { - transform: rotate(360deg); - } -} diff --git a/resources/web/guide/swiper/modules/lazy/lazy.min.css b/resources/web/guide/swiper/modules/lazy/lazy.min.css deleted file mode 100644 index e73cca095c..0000000000 --- a/resources/web/guide/swiper/modules/lazy/lazy.min.css +++ /dev/null @@ -1 +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%;animation:swiper-preloader-spin 1s infinite linear;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/lazy/lazy.scss b/resources/web/guide/swiper/modules/lazy/lazy.scss deleted file mode 100644 index caaf125617..0000000000 --- a/resources/web/guide/swiper/modules/lazy/lazy.scss +++ /dev/null @@ -1,34 +0,0 @@ -/* Preloader */ -:root { - /* - --swiper-preloader-color: var(--swiper-theme-color); - */ -} -.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%; - animation: swiper-preloader-spin 1s infinite linear; - box-sizing: border-box; - border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); - border-radius: 50%; - border-top-color: transparent; -} - -.swiper-lazy-preloader-white { - --swiper-preloader-color: #fff; -} -.swiper-lazy-preloader-black { - --swiper-preloader-color: #000; -} -@keyframes swiper-preloader-spin { - 100% { - transform: rotate(360deg); - } -} diff --git a/resources/web/guide/swiper/modules/manipulation/manipulation.js b/resources/web/guide/swiper/modules/manipulation/manipulation.js deleted file mode 100644 index c4b176b733..0000000000 --- a/resources/web/guide/swiper/modules/manipulation/manipulation.js +++ /dev/null @@ -1,16 +0,0 @@ -import appendSlide from './methods/appendSlide.js'; -import prependSlide from './methods/prependSlide.js'; -import addSlide from './methods/addSlide.js'; -import removeSlide from './methods/removeSlide.js'; -import removeAllSlides from './methods/removeAllSlides.js'; -export default 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) - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/manipulation/manipulation.less b/resources/web/guide/swiper/modules/manipulation/manipulation.less deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/manipulation/manipulation.min.css b/resources/web/guide/swiper/modules/manipulation/manipulation.min.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/manipulation/manipulation.scss b/resources/web/guide/swiper/modules/manipulation/manipulation.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/manipulation/methods/addSlide.js b/resources/web/guide/swiper/modules/manipulation/methods/addSlide.js deleted file mode 100644 index 6b830084d5..0000000000 --- a/resources/web/guide/swiper/modules/manipulation/methods/addSlide.js +++ /dev/null @@ -1,64 +0,0 @@ -export default function addSlide(index, slides) { - const swiper = this; - const { - $wrapperEl, - params, - activeIndex - } = swiper; - let activeIndexBuffer = activeIndex; - - if (params.loop) { - activeIndexBuffer -= swiper.loopedSlides; - swiper.loopDestroy(); - swiper.slides = $wrapperEl.children(`.${params.slideClass}`); - } - - 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.eq(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]) $wrapperEl.append(slides[i]); - } - - newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; - } else { - $wrapperEl.append(slides); - } - - for (let i = 0; i < slidesBuffer.length; i += 1) { - $wrapperEl.append(slidesBuffer[i]); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - swiper.update(); - } - - if (params.loop) { - swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); - } else { - swiper.slideTo(newActiveIndex, 0, false); - } -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/manipulation/methods/appendSlide.js b/resources/web/guide/swiper/modules/manipulation/methods/appendSlide.js deleted file mode 100644 index 9a649af2a9..0000000000 --- a/resources/web/guide/swiper/modules/manipulation/methods/appendSlide.js +++ /dev/null @@ -1,27 +0,0 @@ -export default function appendSlide(slides) { - const swiper = this; - const { - $wrapperEl, - params - } = swiper; - - if (params.loop) { - swiper.loopDestroy(); - } - - if (typeof slides === 'object' && 'length' in slides) { - for (let i = 0; i < slides.length; i += 1) { - if (slides[i]) $wrapperEl.append(slides[i]); - } - } else { - $wrapperEl.append(slides); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - swiper.update(); - } -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/manipulation/methods/prependSlide.js b/resources/web/guide/swiper/modules/manipulation/methods/prependSlide.js deleted file mode 100644 index 2195621a3e..0000000000 --- a/resources/web/guide/swiper/modules/manipulation/methods/prependSlide.js +++ /dev/null @@ -1,34 +0,0 @@ -export default function prependSlide(slides) { - const swiper = this; - const { - params, - $wrapperEl, - activeIndex - } = swiper; - - if (params.loop) { - swiper.loopDestroy(); - } - - let newActiveIndex = activeIndex + 1; - - if (typeof slides === 'object' && 'length' in slides) { - for (let i = 0; i < slides.length; i += 1) { - if (slides[i]) $wrapperEl.prepend(slides[i]); - } - - newActiveIndex = activeIndex + slides.length; - } else { - $wrapperEl.prepend(slides); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - swiper.update(); - } - - swiper.slideTo(newActiveIndex, 0, false); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/manipulation/methods/removeAllSlides.js b/resources/web/guide/swiper/modules/manipulation/methods/removeAllSlides.js deleted file mode 100644 index f24e494c48..0000000000 --- a/resources/web/guide/swiper/modules/manipulation/methods/removeAllSlides.js +++ /dev/null @@ -1,10 +0,0 @@ -export default function removeAllSlides() { - const swiper = this; - const slidesIndexes = []; - - for (let i = 0; i < swiper.slides.length; i += 1) { - slidesIndexes.push(i); - } - - swiper.removeSlide(slidesIndexes); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/manipulation/methods/removeSlide.js b/resources/web/guide/swiper/modules/manipulation/methods/removeSlide.js deleted file mode 100644 index 2cf6373175..0000000000 --- a/resources/web/guide/swiper/modules/manipulation/methods/removeSlide.js +++ /dev/null @@ -1,47 +0,0 @@ -export default function removeSlide(slidesIndexes) { - const swiper = this; - const { - params, - $wrapperEl, - activeIndex - } = swiper; - let activeIndexBuffer = activeIndex; - - if (params.loop) { - activeIndexBuffer -= swiper.loopedSlides; - swiper.loopDestroy(); - swiper.slides = $wrapperEl.children(`.${params.slideClass}`); - } - - 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.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex -= 1; - } - - newActiveIndex = Math.max(newActiveIndex, 0); - } else { - indexToRemove = slidesIndexes; - if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex -= 1; - newActiveIndex = Math.max(newActiveIndex, 0); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - swiper.update(); - } - - if (params.loop) { - swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); - } else { - swiper.slideTo(newActiveIndex, 0, false); - } -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/mousewheel/mousewheel.js b/resources/web/guide/swiper/modules/mousewheel/mousewheel.js deleted file mode 100644 index 4907c564e1..0000000000 --- a/resources/web/guide/swiper/modules/mousewheel/mousewheel.js +++ /dev/null @@ -1,422 +0,0 @@ -/* eslint-disable consistent-return */ -import { getWindow } from 'ssr-window'; -import $ from '../../shared/dom.js'; -import { now, nextTick } from '../../shared/utils.js'; -export default 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 - } - }); - 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; - const params = swiper.params.mousewheel; - - if (swiper.params.cssMode) { - e.preventDefault(); - } - - let target = swiper.$el; - - if (swiper.params.mousewheel.eventsTarget !== 'container') { - target = $(swiper.params.mousewheel.eventsTarget); - } - - if (!swiper.mouseEntered && !target[0].contains(e.target) && !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; - - if (swiper.params.loop) { - swiper.loopFix(); - } - - 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.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(() => { - 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(() => { - 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.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions - - if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true; - } - } - - if (e.preventDefault) e.preventDefault();else e.returnValue = false; - return false; - } - - function events(method) { - let target = swiper.$el; - - if (swiper.params.mousewheel.eventsTarget !== 'container') { - target = $(swiper.params.mousewheel.eventsTarget); - } - - target[method]('mouseenter', handleMouseEnter); - target[method]('mouseleave', handleMouseLeave); - target[method]('wheel', handle); - } - - function enable() { - if (swiper.params.cssMode) { - swiper.wrapperEl.removeEventListener('wheel', handle); - return true; - } - - if (swiper.mousewheel.enabled) return false; - events('on'); - 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('off'); - 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 - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/mousewheel/mousewheel.less b/resources/web/guide/swiper/modules/mousewheel/mousewheel.less deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/mousewheel/mousewheel.min.css b/resources/web/guide/swiper/modules/mousewheel/mousewheel.min.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/mousewheel/mousewheel.scss b/resources/web/guide/swiper/modules/mousewheel/mousewheel.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/navigation/navigation.js b/resources/web/guide/swiper/modules/navigation/navigation.js deleted file mode 100644 index bfe98802c9..0000000000 --- a/resources/web/guide/swiper/modules/navigation/navigation.js +++ /dev/null @@ -1,185 +0,0 @@ -import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js'; -import $ from '../../shared/dom.js'; -export default function Navigation({ - swiper, - extendParams, - on, - emit -}) { - extendParams({ - navigation: { - nextEl: null, - prevEl: null, - hideOnClick: false, - disabledClass: 'swiper-button-disabled', - hiddenClass: 'swiper-button-hidden', - lockClass: 'swiper-button-lock' - } - }); - swiper.navigation = { - nextEl: null, - $nextEl: null, - prevEl: null, - $prevEl: null - }; - - function getEl(el) { - let $el; - - if (el) { - $el = $(el); - - if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) { - $el = swiper.$el.find(el); - } - } - - return $el; - } - - function toggleEl($el, disabled) { - const params = swiper.params.navigation; - - if ($el && $el.length > 0) { - $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass); - if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled; - - if (swiper.params.watchOverflow && swiper.enabled) { - $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); - } - } - } - - function update() { - // Update Navigation Buttons - if (swiper.params.loop) return; - const { - $nextEl, - $prevEl - } = swiper.navigation; - toggleEl($prevEl, swiper.isBeginning); - toggleEl($nextEl, swiper.isEnd); - } - - function onPrevClick(e) { - e.preventDefault(); - if (swiper.isBeginning && !swiper.params.loop) return; - swiper.slidePrev(); - } - - function onNextClick(e) { - e.preventDefault(); - if (swiper.isEnd && !swiper.params.loop) return; - swiper.slideNext(); - } - - 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; - const $nextEl = getEl(params.nextEl); - const $prevEl = getEl(params.prevEl); - - if ($nextEl && $nextEl.length > 0) { - $nextEl.on('click', onNextClick); - } - - if ($prevEl && $prevEl.length > 0) { - $prevEl.on('click', onPrevClick); - } - - Object.assign(swiper.navigation, { - $nextEl, - nextEl: $nextEl && $nextEl[0], - $prevEl, - prevEl: $prevEl && $prevEl[0] - }); - - if (!swiper.enabled) { - if ($nextEl) $nextEl.addClass(params.lockClass); - if ($prevEl) $prevEl.addClass(params.lockClass); - } - } - - function destroy() { - const { - $nextEl, - $prevEl - } = swiper.navigation; - - if ($nextEl && $nextEl.length) { - $nextEl.off('click', onNextClick); - $nextEl.removeClass(swiper.params.navigation.disabledClass); - } - - if ($prevEl && $prevEl.length) { - $prevEl.off('click', onPrevClick); - $prevEl.removeClass(swiper.params.navigation.disabledClass); - } - } - - on('init', () => { - init(); - update(); - }); - on('toEdge fromEdge lock unlock', () => { - update(); - }); - on('destroy', () => { - destroy(); - }); - on('enable disable', () => { - const { - $nextEl, - $prevEl - } = swiper.navigation; - - if ($nextEl) { - $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass); - } - - if ($prevEl) { - $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass); - } - }); - on('click', (_s, e) => { - const { - $nextEl, - $prevEl - } = swiper.navigation; - const targetEl = e.target; - - if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) { - if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; - let isHidden; - - if ($nextEl) { - isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass); - } else if ($prevEl) { - isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass); - } - - if (isHidden === true) { - emit('navigationShow'); - } else { - emit('navigationHide'); - } - - if ($nextEl) { - $nextEl.toggleClass(swiper.params.navigation.hiddenClass); - } - - if ($prevEl) { - $prevEl.toggleClass(swiper.params.navigation.hiddenClass); - } - } - }); - Object.assign(swiper.navigation, { - update, - init, - destroy - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/navigation/navigation.less b/resources/web/guide/swiper/modules/navigation/navigation.less deleted file mode 100644 index 84c535fe7f..0000000000 --- a/resources/web/guide/swiper/modules/navigation/navigation.less +++ /dev/null @@ -1,55 +0,0 @@ -@import url('../../swiper-vars.less'); - -:root { - --swiper-navigation-size: 44px; - /* - --swiper-navigation-color: var(--swiper-theme-color); - */ -} -.swiper-button-prev, -.swiper-button-next { - position: absolute; - top: 50%; - width: calc(var(--swiper-navigation-size) / 44 * 27); - height: var(--swiper-navigation-size); - margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); - 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; - } - &:after { - font-family: swiper-icons; - font-size: var(--swiper-navigation-size); - text-transform: none !important; - letter-spacing: 0; - text-transform: none; - font-variant: initial; - line-height: 1; - } -} -.swiper-button-prev, -.swiper-rtl .swiper-button-next { - &:after { - content: 'prev'; - } - left: 10px; - right: auto; -} -.swiper-button-next, -.swiper-rtl .swiper-button-prev { - &:after { - content: 'next'; - } - right: 10px; - left: auto; -} -.swiper-button-lock { - display: none; -} diff --git a/resources/web/guide/swiper/modules/navigation/navigation.min.css b/resources/web/guide/swiper/modules/navigation/navigation.min.css deleted file mode 100644 index 41446eb392..0000000000 --- a/resources/web/guide/swiper/modules/navigation/navigation.min.css +++ /dev/null @@ -1 +0,0 @@ -:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;text-transform:none;font-variant:initial;line-height:1}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-button-lock{display:none} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/navigation/navigation.scss b/resources/web/guide/swiper/modules/navigation/navigation.scss deleted file mode 100644 index b84d59c231..0000000000 --- a/resources/web/guide/swiper/modules/navigation/navigation.scss +++ /dev/null @@ -1,56 +0,0 @@ -@import '../../swiper-vars.scss'; - -:root { - --swiper-navigation-size: 44px; - /* - --swiper-navigation-color: var(--swiper-theme-color); - */ -} -.swiper-button-prev, -.swiper-button-next { - position: absolute; - top: 50%; - width: calc(var(--swiper-navigation-size) / 44 * 27); - height: var(--swiper-navigation-size); - margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); - 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; - } - &:after { - font-family: swiper-icons; - font-size: var(--swiper-navigation-size); - text-transform: none !important; - letter-spacing: 0; - text-transform: none; - font-variant: initial; - line-height: 1; - } -} -.swiper-button-prev, -.swiper-rtl .swiper-button-next { - &:after { - content: 'prev'; - } - left: 10px; - right: auto; -} -.swiper-button-next, -.swiper-rtl .swiper-button-prev { - &:after { - content: 'next'; - } - right: 10px; - left: auto; -} - -.swiper-button-lock { - display: none; -} diff --git a/resources/web/guide/swiper/modules/pagination/pagination.js b/resources/web/guide/swiper/modules/pagination/pagination.js deleted file mode 100644 index 58c28738ad..0000000000 --- a/resources/web/guide/swiper/modules/pagination/pagination.js +++ /dev/null @@ -1,410 +0,0 @@ -import $ from '../../shared/dom.js'; -import classesToSelector from '../../shared/classes-to-selector.js'; -import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js'; -export default 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` - } - }); - swiper.pagination = { - el: null, - $el: null, - bullets: [] - }; - let bulletSize; - let dynamicBulletIndex = 0; - - function isPaginationDisabled() { - return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0; - } - - function setSideBullets($bulletEl, position) { - const { - bulletActiveClass - } = swiper.params.pagination; - $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`); - } - - function update() { - // Render || Update Pagination bullets/items - const rtl = swiper.rtl; - const params = swiper.params.pagination; - if (isPaginationDisabled()) return; - const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; - const $el = swiper.pagination.$el; // Current/Total - - let current; - const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; - - if (swiper.params.loop) { - current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); - - if (current > slidesLength - 1 - swiper.loopedSlides * 2) { - current -= slidesLength - swiper.loopedSlides * 2; - } - - if (current > total - 1) current -= total; - if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current; - } else if (typeof swiper.snapIndex !== 'undefined') { - current = swiper.snapIndex; - } else { - 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 = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true); - $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`); - - if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { - dynamicBulletIndex += current - swiper.previousIndex; - - if (dynamicBulletIndex > params.dynamicMainBullets - 1) { - dynamicBulletIndex = params.dynamicMainBullets - 1; - } else if (dynamicBulletIndex < 0) { - dynamicBulletIndex = 0; - } - } - - firstIndex = current - dynamicBulletIndex; - lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); - midIndex = (lastIndex + firstIndex) / 2; - } - - bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' ')); - - if ($el.length > 1) { - bullets.each(bullet => { - const $bullet = $(bullet); - const bulletIndex = $bullet.index(); - - if (bulletIndex === current) { - $bullet.addClass(params.bulletActiveClass); - } - - if (params.dynamicBullets) { - if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { - $bullet.addClass(`${params.bulletActiveClass}-main`); - } - - if (bulletIndex === firstIndex) { - setSideBullets($bullet, 'prev'); - } - - if (bulletIndex === lastIndex) { - setSideBullets($bullet, 'next'); - } - } - }); - } else { - const $bullet = bullets.eq(current); - const bulletIndex = $bullet.index(); - $bullet.addClass(params.bulletActiveClass); - - if (params.dynamicBullets) { - const $firstDisplayedBullet = bullets.eq(firstIndex); - const $lastDisplayedBullet = bullets.eq(lastIndex); - - for (let i = firstIndex; i <= lastIndex; i += 1) { - bullets.eq(i).addClass(`${params.bulletActiveClass}-main`); - } - - if (swiper.params.loop) { - if (bulletIndex >= bullets.length - params.dynamicMainBullets) { - for (let i = params.dynamicMainBullets; i >= 0; i -= 1) { - bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`); - } - - bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`); - } else { - setSideBullets($firstDisplayedBullet, 'prev'); - setSideBullets($lastDisplayedBullet, 'next'); - } - } else { - 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.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`); - } - } - - if (params.type === 'fraction') { - $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1)); - $el.find(classesToSelector(params.totalClass)).text(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; - } - - $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed); - } - - if (params.type === 'custom' && params.renderCustom) { - $el.html(params.renderCustom(swiper, current + 1, total)); - emit('paginationRender', $el[0]); - } else { - emit('paginationUpdate', $el[0]); - } - - if (swiper.params.watchOverflow && swiper.enabled) { - $el[swiper.isLocked ? 'addClass' : 'removeClass'](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.slides.length; - const $el = swiper.pagination.$el; - let paginationHTML = ''; - - if (params.type === 'bullets') { - let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; - - if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) { - numberOfBullets = slidesLength; - } - - for (let i = 0; i < numberOfBullets; i += 1) { - if (params.renderBullet) { - paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); - } else { - paginationHTML += `<${params.bulletElement} class="${params.bulletClass}">`; - } - } - - $el.html(paginationHTML); - swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass)); - } - - if (params.type === 'fraction') { - if (params.renderFraction) { - paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); - } else { - paginationHTML = `` + ' / ' + ``; - } - - $el.html(paginationHTML); - } - - if (params.type === 'progressbar') { - if (params.renderProgressbar) { - paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); - } else { - paginationHTML = ``; - } - - $el.html(paginationHTML); - } - - if (params.type !== 'custom') { - emit('paginationRender', swiper.pagination.$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 = $(params.el); - if ($el.length === 0) return; - - if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) { - $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper - - if ($el.length > 1) { - $el = $el.filter(el => { - if ($(el).parents('.swiper')[0] !== swiper.el) return false; - return true; - }); - } - } - - if (params.type === 'bullets' && params.clickable) { - $el.addClass(params.clickableClass); - } - - $el.addClass(params.modifierClass + params.type); - $el.addClass(params.modifierClass + swiper.params.direction); - - if (params.type === 'bullets' && params.dynamicBullets) { - $el.addClass(`${params.modifierClass}${params.type}-dynamic`); - dynamicBulletIndex = 0; - - if (params.dynamicMainBullets < 1) { - params.dynamicMainBullets = 1; - } - } - - if (params.type === 'progressbar' && params.progressbarOpposite) { - $el.addClass(params.progressbarOppositeClass); - } - - if (params.clickable) { - $el.on('click', classesToSelector(params.bulletClass), function onClick(e) { - e.preventDefault(); - let index = $(this).index() * swiper.params.slidesPerGroup; - if (swiper.params.loop) index += swiper.loopedSlides; - swiper.slideTo(index); - }); - } - - Object.assign(swiper.pagination, { - $el, - el: $el[0] - }); - - if (!swiper.enabled) { - $el.addClass(params.lockClass); - } - } - - function destroy() { - const params = swiper.params.pagination; - if (isPaginationDisabled()) return; - const $el = swiper.pagination.$el; - $el.removeClass(params.hiddenClass); - $el.removeClass(params.modifierClass + params.type); - $el.removeClass(params.modifierClass + swiper.params.direction); - if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass); - - if (params.clickable) { - $el.off('click', classesToSelector(params.bulletClass)); - } - } - - on('init', () => { - init(); - render(); - update(); - }); - on('activeIndexChange', () => { - if (swiper.params.loop) { - update(); - } else if (typeof swiper.snapIndex === 'undefined') { - update(); - } - }); - on('snapIndexChange', () => { - if (!swiper.params.loop) { - update(); - } - }); - on('slidesLengthChange', () => { - if (swiper.params.loop) { - render(); - update(); - } - }); - on('snapGridLengthChange', () => { - if (!swiper.params.loop) { - render(); - update(); - } - }); - on('destroy', () => { - destroy(); - }); - on('enable disable', () => { - const { - $el - } = swiper.pagination; - - if ($el) { - $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass); - } - }); - on('lock unlock', () => { - update(); - }); - on('click', (_s, e) => { - const targetEl = e.target; - const { - $el - } = swiper.pagination; - - if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(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.hasClass(swiper.params.pagination.hiddenClass); - - if (isHidden === true) { - emit('paginationShow'); - } else { - emit('paginationHide'); - } - - $el.toggleClass(swiper.params.pagination.hiddenClass); - } - }); - Object.assign(swiper.pagination, { - render, - update, - init, - destroy - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/pagination/pagination.less b/resources/web/guide/swiper/modules/pagination/pagination.less deleted file mode 100644 index b245ae6833..0000000000 --- a/resources/web/guide/swiper/modules/pagination/pagination.less +++ /dev/null @@ -1,163 +0,0 @@ -@import url('../../swiper-vars.less'); - -:root { - /* - --swiper-pagination-color: var(--swiper-theme-color); - --swiper-pagination-bullet-size: 8px; - --swiper-pagination-bullet-width: 8px; - --swiper-pagination-bullet-height: 8px; - --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; - } -} -/* Common Styles */ -.swiper-pagination-fraction, -.swiper-pagination-custom, -.swiper-horizontal > .swiper-pagination-bullets, -.swiper-pagination-bullets.swiper-pagination-horizontal { - bottom: 10px; - 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: 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: 10px; - 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; -} -/* Progress */ -.swiper-pagination-progressbar { - background: 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: 4px; - left: 0; - top: 0; - } - .swiper-vertical > &, - &.swiper-pagination-vertical, - .swiper-horizontal > &.swiper-pagination-progressbar-opposite, - &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { - width: 4px; - height: 100%; - left: 0; - top: 0; - } -} -.swiper-pagination-lock { - display: none; -} diff --git a/resources/web/guide/swiper/modules/pagination/pagination.min.css b/resources/web/guide/swiper/modules/pagination/pagination.min.css deleted file mode 100644 index cb5e95b159..0000000000 --- a/resources/web/guide/swiper/modules/pagination/pagination.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.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(.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{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:50%;background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance: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-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.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:.2s transform,.2s 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:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-progressbar{background:rgba(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-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.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{width:4px;height:100%;left:0;top:0}.swiper-pagination-lock{display:none} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/pagination/pagination.scss b/resources/web/guide/swiper/modules/pagination/pagination.scss deleted file mode 100644 index e24b29ae3e..0000000000 --- a/resources/web/guide/swiper/modules/pagination/pagination.scss +++ /dev/null @@ -1,163 +0,0 @@ -@import '../../swiper-vars.scss'; - -:root { - /* - --swiper-pagination-color: var(--swiper-theme-color); - --swiper-pagination-bullet-size: 8px; - --swiper-pagination-bullet-width: 8px; - --swiper-pagination-bullet-height: 8px; - --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; - } -} -/* Common Styles */ -.swiper-pagination-fraction, -.swiper-pagination-custom, -.swiper-horizontal > .swiper-pagination-bullets, -.swiper-pagination-bullets.swiper-pagination-horizontal { - bottom: 10px; - 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: 50%; - background: var(--swiper-pagination-bullet-inactive-color, #000); - opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); - @at-root 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: 10px; - 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; -} -/* Progress */ -.swiper-pagination-progressbar { - background: 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: 4px; - left: 0; - top: 0; - } - .swiper-vertical > &, - &.swiper-pagination-vertical, - .swiper-horizontal > &.swiper-pagination-progressbar-opposite, - &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { - width: 4px; - height: 100%; - left: 0; - top: 0; - } -} -.swiper-pagination-lock { - display: none; -} diff --git a/resources/web/guide/swiper/modules/parallax/parallax.js b/resources/web/guide/swiper/modules/parallax/parallax.js deleted file mode 100644 index 05b2bc86e9..0000000000 --- a/resources/web/guide/swiper/modules/parallax/parallax.js +++ /dev/null @@ -1,114 +0,0 @@ -import $ from '../../shared/dom.js'; -export default function Parallax({ - swiper, - extendParams, - on -}) { - extendParams({ - parallax: { - enabled: false - } - }); - - const setTransform = (el, progress) => { - const { - rtl - } = swiper; - const $el = $(el); - const rtlFactor = rtl ? -1 : 1; - const p = $el.attr('data-swiper-parallax') || '0'; - let x = $el.attr('data-swiper-parallax-x'); - let y = $el.attr('data-swiper-parallax-y'); - const scale = $el.attr('data-swiper-parallax-scale'); - const opacity = $el.attr('data-swiper-parallax-opacity'); - - 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[0].style.opacity = currentOpacity; - } - - if (typeof scale === 'undefined' || scale === null) { - $el.transform(`translate3d(${x}, ${y}, 0px)`); - } else { - const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); - $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`); - } - }; - - const setTranslate = () => { - const { - $el, - slides, - progress, - snapGrid - } = swiper; - $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => { - setTransform(el, progress); - }); - slides.each((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).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => { - setTransform(el, slideProgress); - }); - }); - }; - - const setTransition = (duration = swiper.params.speed) => { - const { - $el - } = swiper; - $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => { - const $parallaxEl = $(parallaxEl); - let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration; - if (duration === 0) parallaxDuration = 0; - $parallaxEl.transition(parallaxDuration); - }); - }; - - 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); - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/parallax/parallax.less b/resources/web/guide/swiper/modules/parallax/parallax.less deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/parallax/parallax.min.css b/resources/web/guide/swiper/modules/parallax/parallax.min.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/parallax/parallax.scss b/resources/web/guide/swiper/modules/parallax/parallax.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/scrollbar/scrollbar.js b/resources/web/guide/swiper/modules/scrollbar/scrollbar.js deleted file mode 100644 index 9d1cd011d8..0000000000 --- a/resources/web/guide/swiper/modules/scrollbar/scrollbar.js +++ /dev/null @@ -1,361 +0,0 @@ -import { getDocument } from 'ssr-window'; -import $ from '../../shared/dom.js'; -import { nextTick } from '../../shared/utils.js'; -import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js'; -export default 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' - } - }); - swiper.scrollbar = { - el: null, - dragEl: null, - $el: null, - $dragEl: null - }; - - function setTranslate() { - if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; - const { - scrollbar, - rtlTranslate: rtl, - progress - } = swiper; - const { - $dragEl, - $el - } = scrollbar; - const params = swiper.params.scrollbar; - 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.transform(`translate3d(${newPos}px, 0, 0)`); - $dragEl[0].style.width = `${newSize}px`; - } else { - $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`); - $dragEl[0].style.height = `${newSize}px`; - } - - if (params.hide) { - clearTimeout(timeout); - $el[0].style.opacity = 1; - timeout = setTimeout(() => { - $el[0].style.opacity = 0; - $el.transition(400); - }, 1000); - } - } - - function setTransition(duration) { - if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; - swiper.scrollbar.$dragEl.transition(duration); - } - - function updateSize() { - if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; - const { - scrollbar - } = swiper; - const { - $dragEl, - $el - } = scrollbar; - $dragEl[0].style.width = ''; - $dragEl[0].style.height = ''; - trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].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[0].style.width = `${dragSize}px`; - } else { - $dragEl[0].style.height = `${dragSize}px`; - } - - if (divider >= 1) { - $el[0].style.display = 'none'; - } else { - $el[0].style.display = ''; - } - - if (swiper.params.scrollbar.hide) { - $el[0].style.opacity = 0; - } - - if (swiper.params.watchOverflow && swiper.enabled) { - scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass); - } - } - - function getPointerPosition(e) { - if (swiper.isHorizontal()) { - return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX; - } - - return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY; - } - - function setDragPosition(e) { - const { - scrollbar, - rtlTranslate: rtl - } = swiper; - const { - $el - } = scrollbar; - let positionRatio; - positionRatio = (getPointerPosition(e) - $el.offset()[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[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; - e.preventDefault(); - e.stopPropagation(); - $wrapperEl.transition(100); - $dragEl.transition(100); - setDragPosition(e); - clearTimeout(dragTimeout); - $el.transition(0); - - if (params.hide) { - $el.css('opacity', 1); - } - - if (swiper.params.cssMode) { - swiper.$wrapperEl.css('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.preventDefault();else e.returnValue = false; - setDragPosition(e); - $wrapperEl.transition(0); - $el.transition(0); - $dragEl.transition(0); - 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.css('scroll-snap-type', ''); - $wrapperEl.transition(''); - } - - if (params.hide) { - clearTimeout(dragTimeout); - dragTimeout = nextTick(() => { - $el.css('opacity', 0); - $el.transition(400); - }, 1000); - } - - emit('scrollbarDragEnd', e); - - if (params.snapOnRelease) { - swiper.slideToClosest(); - } - } - - function events(method) { - const { - scrollbar, - touchEventsTouch, - touchEventsDesktop, - params, - support - } = swiper; - const $el = scrollbar.$el; - const target = $el[0]; - const activeListener = support.passiveListener && params.passiveListeners ? { - passive: false, - capture: false - } : false; - const passiveListener = support.passiveListener && params.passiveListeners ? { - passive: true, - capture: false - } : false; - if (!target) return; - const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; - - if (!support.touch) { - target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener); - document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener); - document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener); - } else { - target[eventMethod](touchEventsTouch.start, onDragStart, activeListener); - target[eventMethod](touchEventsTouch.move, onDragMove, activeListener); - target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener); - } - } - - function enableDraggable() { - if (!swiper.params.scrollbar.el) return; - events('on'); - } - - function disableDraggable() { - if (!swiper.params.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 = $(params.el); - - if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) { - $el = $swiperEl.find(params.el); - } - - let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`); - - if ($dragEl.length === 0) { - $dragEl = $(`
`); - $el.append($dragEl); - } - - Object.assign(scrollbar, { - $el, - el: $el[0], - $dragEl, - dragEl: $dragEl[0] - }); - - if (params.draggable) { - enableDraggable(); - } - - if ($el) { - $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass); - } - } - - function destroy() { - disableDraggable(); - } - - on('init', () => { - init(); - updateSize(); - setTranslate(); - }); - on('update resize observerUpdate lock unlock', () => { - updateSize(); - }); - on('setTranslate', () => { - setTranslate(); - }); - on('setTransition', (_s, duration) => { - setTransition(duration); - }); - on('enable disable', () => { - const { - $el - } = swiper.scrollbar; - - if ($el) { - $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass); - } - }); - on('destroy', () => { - destroy(); - }); - Object.assign(swiper.scrollbar, { - updateSize, - setTranslate, - init, - destroy - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/scrollbar/scrollbar.less b/resources/web/guide/swiper/modules/scrollbar/scrollbar.less deleted file mode 100644 index e6f133b1d2..0000000000 --- a/resources/web/guide/swiper/modules/scrollbar/scrollbar.less +++ /dev/null @@ -1,38 +0,0 @@ -/* Scrollbar */ -.swiper-scrollbar { - border-radius: 10px; - position: relative; - -ms-touch-action: none; - background: rgba(0, 0, 0, 0.1); - .swiper-horizontal > & { - position: absolute; - left: 1%; - bottom: 3px; - z-index: 50; - height: 5px; - width: 98%; - } - .swiper-vertical > & { - position: absolute; - right: 3px; - top: 1%; - z-index: 50; - width: 5px; - height: 98%; - } -} -.swiper-scrollbar-drag { - height: 100%; - width: 100%; - position: relative; - background: rgba(0, 0, 0, 0.5); - border-radius: 10px; - left: 0; - top: 0; -} -.swiper-scrollbar-cursor-drag { - cursor: move; -} -.swiper-scrollbar-lock { - display: none; -} diff --git a/resources/web/guide/swiper/modules/scrollbar/scrollbar.min.css b/resources/web/guide/swiper/modules/scrollbar/scrollbar.min.css deleted file mode 100644 index 09c1fba0f6..0000000000 --- a/resources/web/guide/swiper/modules/scrollbar/scrollbar.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/scrollbar/scrollbar.scss b/resources/web/guide/swiper/modules/scrollbar/scrollbar.scss deleted file mode 100644 index e6f133b1d2..0000000000 --- a/resources/web/guide/swiper/modules/scrollbar/scrollbar.scss +++ /dev/null @@ -1,38 +0,0 @@ -/* Scrollbar */ -.swiper-scrollbar { - border-radius: 10px; - position: relative; - -ms-touch-action: none; - background: rgba(0, 0, 0, 0.1); - .swiper-horizontal > & { - position: absolute; - left: 1%; - bottom: 3px; - z-index: 50; - height: 5px; - width: 98%; - } - .swiper-vertical > & { - position: absolute; - right: 3px; - top: 1%; - z-index: 50; - width: 5px; - height: 98%; - } -} -.swiper-scrollbar-drag { - height: 100%; - width: 100%; - position: relative; - background: rgba(0, 0, 0, 0.5); - border-radius: 10px; - left: 0; - top: 0; -} -.swiper-scrollbar-cursor-drag { - cursor: move; -} -.swiper-scrollbar-lock { - display: none; -} diff --git a/resources/web/guide/swiper/modules/thumbs/thumbs.js b/resources/web/guide/swiper/modules/thumbs/thumbs.js deleted file mode 100644 index 75e6b82e66..0000000000 --- a/resources/web/guide/swiper/modules/thumbs/thumbs.js +++ /dev/null @@ -1,204 +0,0 @@ -import { isObject } from '../../shared/utils.js'; -import $ from '../../shared/dom.js'; -export default 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 onThumbClick() { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) return; - const clickedIndex = thumbsSwiper.clickedIndex; - const clickedSlide = thumbsSwiper.clickedSlide; - if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return; - if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; - let slideToIndex; - - if (thumbsSwiper.params.loop) { - slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10); - } else { - slideToIndex = clickedIndex; - } - - if (swiper.params.loop) { - let currentIndex = swiper.activeIndex; - - if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) { - swiper.loopFix(); // eslint-disable-next-line - - swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; - currentIndex = swiper.activeIndex; - } - - const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); - const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); - if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex; - } - - 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) { - 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 - }); - } 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.addClass(swiper.params.thumbs.thumbsContainerClass); - swiper.thumbs.swiper.on('tap', onThumbClick); - return true; - } - - function update(initial) { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) 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) { - let currentThumbsIndex = thumbsSwiper.activeIndex; - let newThumbsIndex; - let direction; - - if (thumbsSwiper.params.loop) { - if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) { - thumbsSwiper.loopFix(); // eslint-disable-next-line - - thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft; - currentThumbsIndex = thumbsSwiper.activeIndex; - } // Find actual thumbs index to slide to - - - const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index(); - const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index(); - - if (typeof prevThumbsIndex === 'undefined') { - newThumbsIndex = nextThumbsIndex; - } else if (typeof nextThumbsIndex === 'undefined') { - newThumbsIndex = prevThumbsIndex; - } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) { - newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex; - } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { - newThumbsIndex = nextThumbsIndex; - } else { - newThumbsIndex = prevThumbsIndex; - } - - 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) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1; - } - - thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); - } - } // 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.removeClass(thumbActiveClass); - - if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { - for (let i = 0; i < thumbsToActivate; i += 1) { - thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass); - } - } else { - for (let i = 0; i < thumbsToActivate; i += 1) { - thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass); - } - } - } - - on('beforeInit', () => { - const { - thumbs - } = swiper.params; - if (!thumbs || !thumbs.swiper) return; - init(); - update(true); - }); - on('slideChange update resize observerUpdate', () => { - if (!swiper.thumbs.swiper) return; - update(); - }); - on('setTransition', (_s, duration) => { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) return; - thumbsSwiper.setTransition(duration); - }); - on('beforeDestroy', () => { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) return; - - if (swiperCreated && thumbsSwiper) { - thumbsSwiper.destroy(); - } - }); - Object.assign(swiper.thumbs, { - init, - update - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/thumbs/thumbs.less b/resources/web/guide/swiper/modules/thumbs/thumbs.less deleted file mode 100644 index 9eaa1b3c04..0000000000 --- a/resources/web/guide/swiper/modules/thumbs/thumbs.less +++ /dev/null @@ -1,5 +0,0 @@ -.swiper-thumbs { - .swiper-slide-thumb-active { - // Styles for active thumb slide - } -} diff --git a/resources/web/guide/swiper/modules/thumbs/thumbs.min.css b/resources/web/guide/swiper/modules/thumbs/thumbs.min.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/guide/swiper/modules/thumbs/thumbs.scss b/resources/web/guide/swiper/modules/thumbs/thumbs.scss deleted file mode 100644 index 9eaa1b3c04..0000000000 --- a/resources/web/guide/swiper/modules/thumbs/thumbs.scss +++ /dev/null @@ -1,5 +0,0 @@ -.swiper-thumbs { - .swiper-slide-thumb-active { - // Styles for active thumb slide - } -} diff --git a/resources/web/guide/swiper/modules/virtual/virtual.js b/resources/web/guide/swiper/modules/virtual/virtual.js deleted file mode 100644 index 15dd1d745e..0000000000 --- a/resources/web/guide/swiper/modules/virtual/virtual.js +++ /dev/null @@ -1,291 +0,0 @@ -import $ from '../../shared/dom.js'; -import { setCSSProperty } from '../../shared/utils.js'; -export default function Virtual({ - swiper, - extendParams, - on -}) { - extendParams({ - virtual: { - enabled: false, - slides: [], - cache: true, - renderSlide: null, - renderExternal: null, - renderExternalUpdate: true, - addSlidesBefore: 0, - addSlidesAfter: 0 - } - }); - let cssModeTimeout; - swiper.virtual = { - cache: {}, - from: undefined, - to: undefined, - slides: [], - offset: 0, - slidesGrid: [] - }; - - function renderSlide(slide, index) { - const params = swiper.params.virtual; - - if (params.cache && swiper.virtual.cache[index]) { - return swiper.virtual.cache[index]; - } - - const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`
${slide}
`); - if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index); - if (params.cache) swiper.virtual.cache[index] = $slideEl; - return $slideEl; - } - - function update(force) { - const { - slidesPerView, - slidesPerGroup, - centeredSlides - } = swiper.params; - const { - addSlidesBefore, - addSlidesAfter - } = swiper.params.virtual; - const { - from: previousFrom, - to: previousTo, - slides, - slidesGrid: previousSlidesGrid, - offset: previousOffset - } = swiper.virtual; - - if (!swiper.params.cssMode) { - swiper.updateActiveIndex(); - } - - const activeIndex = swiper.activeIndex || 0; - let offsetProp; - if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; - let slidesAfter; - let slidesBefore; - - if (centeredSlides) { - slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; - slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; - } else { - slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; - slidesBefore = slidesPerGroup + addSlidesBefore; - } - - const from = Math.max((activeIndex || 0) - slidesBefore, 0); - const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1); - const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); - Object.assign(swiper.virtual, { - from, - to, - offset, - slidesGrid: swiper.slidesGrid - }); - - function onRendered() { - swiper.updateSlides(); - swiper.updateProgress(); - swiper.updateSlidesClasses(); - - if (swiper.lazy && swiper.params.lazy.enabled) { - swiper.lazy.load(); - } - } - - if (previousFrom === from && previousTo === to && !force) { - if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { - swiper.slides.css(offsetProp, `${offset}px`); - } - - swiper.updateProgress(); - 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(); - } - - return; - } - - const prependIndexes = []; - const appendIndexes = []; - - if (force) { - swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove(); - } else { - for (let i = previousFrom; i <= previousTo; i += 1) { - if (i < from || i > to) { - swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove(); - } - } - } - - for (let i = 0; i < slides.length; i += 1) { - if (i >= from && i <= to) { - if (typeof previousTo === 'undefined' || force) { - appendIndexes.push(i); - } else { - if (i > previousTo) appendIndexes.push(i); - if (i < previousFrom) prependIndexes.push(i); - } - } - } - - appendIndexes.forEach(index => { - swiper.$wrapperEl.append(renderSlide(slides[index], index)); - }); - prependIndexes.sort((a, b) => b - a).forEach(index => { - swiper.$wrapperEl.prepend(renderSlide(slides[index], index)); - }); - swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}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.attr('data-swiper-slide-index'); - - if (cachedElIndex) { - $cachedEl.attr('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) { - swiper.virtual.slides.splice(slidesIndexes[i], 1); - - if (swiper.params.virtual.cache) { - delete swiper.virtual.cache[slidesIndexes[i]]; - } - - if (slidesIndexes[i] < activeIndex) activeIndex -= 1; - activeIndex = Math.max(activeIndex, 0); - } - } else { - swiper.virtual.slides.splice(slidesIndexes, 1); - - if (swiper.params.virtual.cache) { - delete swiper.virtual.cache[slidesIndexes]; - } - - 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; - swiper.virtual.slides = swiper.params.virtual.slides; - swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); - swiper.params.watchSlidesProgress = true; - swiper.originalParams.watchSlidesProgress = true; - - if (!swiper.params.initialSlide) { - update(); - } - }); - 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 - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/virtual/virtual.less b/resources/web/guide/swiper/modules/virtual/virtual.less deleted file mode 100644 index e209999a1e..0000000000 --- a/resources/web/guide/swiper/modules/virtual/virtual.less +++ /dev/null @@ -1,17 +0,0 @@ -.swiper-virtual.swiper-css-mode { - .swiper-wrapper::after { - content: ''; - position: absolute; - left: 0; - top: 0; - pointer-events: none; - } - &.swiper-horizontal .swiper-wrapper::after { - height: 1px; - width: var(--swiper-virtual-size); - } - &.swiper-vertical .swiper-wrapper::after { - width: 1px; - height: var(--swiper-virtual-size); - } -} diff --git a/resources/web/guide/swiper/modules/virtual/virtual.min.css b/resources/web/guide/swiper/modules/virtual/virtual.min.css deleted file mode 100644 index f6bde7380b..0000000000 --- a/resources/web/guide/swiper/modules/virtual/virtual.min.css +++ /dev/null @@ -1 +0,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)} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/virtual/virtual.scss b/resources/web/guide/swiper/modules/virtual/virtual.scss deleted file mode 100644 index e209999a1e..0000000000 --- a/resources/web/guide/swiper/modules/virtual/virtual.scss +++ /dev/null @@ -1,17 +0,0 @@ -.swiper-virtual.swiper-css-mode { - .swiper-wrapper::after { - content: ''; - position: absolute; - left: 0; - top: 0; - pointer-events: none; - } - &.swiper-horizontal .swiper-wrapper::after { - height: 1px; - width: var(--swiper-virtual-size); - } - &.swiper-vertical .swiper-wrapper::after { - width: 1px; - height: var(--swiper-virtual-size); - } -} diff --git a/resources/web/guide/swiper/modules/zoom/zoom.js b/resources/web/guide/swiper/modules/zoom/zoom.js deleted file mode 100644 index 2c352efc6f..0000000000 --- a/resources/web/guide/swiper/modules/zoom/zoom.js +++ /dev/null @@ -1,612 +0,0 @@ -import { getWindow } from 'ssr-window'; -import $ from '../../shared/dom.js'; -import { getTranslate } from '../../shared/utils.js'; -export default function Zoom({ - swiper, - extendParams, - on, - emit -}) { - const window = getWindow(); - extendParams({ - zoom: { - enabled: false, - maxRatio: 3, - minRatio: 1, - toggle: true, - containerClass: 'swiper-zoom-container', - zoomedSlideClass: 'swiper-slide-zoomed' - } - }); - swiper.zoom = { - enabled: false - }; - let currentScale = 1; - let isScaling = false; - let gesturesEnabled; - let fakeGestureTouched; - let fakeGestureMoved; - const gesture = { - $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 ? gesture.$imageEl[0] : undefined; - const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined; - emit('zoomChange', value, imageEl, slideEl); - } - - scale = value; - } - - }); - - function getDistanceBetweenTouches(e) { - if (e.targetTouches.length < 2) return 1; - const x1 = e.targetTouches[0].pageX; - const y1 = e.targetTouches[0].pageY; - const x2 = e.targetTouches[1].pageX; - const y2 = e.targetTouches[1].pageY; - const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); - return distance; - } // Events - - - function onGestureStart(e) { - const support = swiper.support; - const params = swiper.params.zoom; - fakeGestureTouched = false; - fakeGestureMoved = false; - - if (!support.gestures) { - if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) { - return; - } - - fakeGestureTouched = true; - gesture.scaleStart = getDistanceBetweenTouches(e); - } - - if (!gesture.$slideEl || !gesture.$slideEl.length) { - gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`); - if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); - gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target'); - gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); - gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; - - if (gesture.$imageWrapEl.length === 0) { - gesture.$imageEl = undefined; - return; - } - } - - if (gesture.$imageEl) { - gesture.$imageEl.transition(0); - } - - isScaling = true; - } - - function onGestureChange(e) { - const support = swiper.support; - const params = swiper.params.zoom; - const zoom = swiper.zoom; - - if (!support.gestures) { - if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) { - return; - } - - fakeGestureMoved = true; - gesture.scaleMove = getDistanceBetweenTouches(e); - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0) { - if (e.type === 'gesturechange') onGestureStart(e); - return; - } - - if (support.gestures) { - zoom.scale = e.scale * currentScale; - } else { - 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.transform(`translate3d(0,0,0) scale(${zoom.scale})`); - } - - function onGestureEnd(e) { - const device = swiper.device; - const support = swiper.support; - const params = swiper.params.zoom; - const zoom = swiper.zoom; - - if (!support.gestures) { - if (!fakeGestureTouched || !fakeGestureMoved) { - return; - } - - if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) { - return; - } - - fakeGestureTouched = false; - fakeGestureMoved = false; - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; - zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); - gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`); - currentScale = zoom.scale; - isScaling = false; - if (zoom.scale === 1) gesture.$slideEl = undefined; - } - - function onTouchStart(e) { - const device = swiper.device; - if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; - if (image.isTouched) return; - if (device.android && e.cancelable) e.preventDefault(); - image.isTouched = true; - image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; - image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; - } - - function onTouchMove(e) { - const zoom = swiper.zoom; - if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; - swiper.allowClick = false; - if (!image.isTouched || !gesture.$slideEl) return; - - if (!image.isMoved) { - image.width = gesture.$imageEl[0].offsetWidth; - image.height = gesture.$imageEl[0].offsetHeight; - image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0; - image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0; - gesture.slideWidth = gesture.$slideEl[0].offsetWidth; - gesture.slideHeight = gesture.$slideEl[0].offsetHeight; - gesture.$imageWrapEl.transition(0); - } // Define if we need image drag - - - const scaledWidth = image.width * zoom.scale; - const scaledHeight = image.height * zoom.scale; - if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; - 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 = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - - 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; - 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; - return; - } - } - - if (e.cancelable) { - e.preventDefault(); - } - - e.stopPropagation(); - image.isMoved = true; - image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX; - image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY; - - 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.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); - } - - function onTouchEnd() { - const zoom = swiper.zoom; - if (!gesture.$imageEl || gesture.$imageEl.length === 0) 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.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); - } - - function onTransitionEnd() { - const zoom = swiper.zoom; - - if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) { - if (gesture.$imageEl) { - gesture.$imageEl.transform('translate3d(0,0,0) scale(1)'); - } - - if (gesture.$imageWrapEl) { - gesture.$imageWrapEl.transform('translate3d(0,0,0)'); - } - - zoom.scale = 1; - currentScale = 1; - gesture.$slideEl = undefined; - gesture.$imageEl = undefined; - gesture.$imageWrapEl = undefined; - } - } - - 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}`); - } - - if (!gesture.$slideEl) { - if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { - gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); - } else { - gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); - } - } - - gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target'); - gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return; - - if (swiper.params.cssMode) { - swiper.wrapperEl.style.overflow = 'hidden'; - swiper.wrapperEl.style.touchAction = 'none'; - } - - gesture.$slideEl.addClass(`${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.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX; - touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY; - } else { - touchX = image.touchesStart.x; - touchY = image.touchesStart.y; - } - - zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; - currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; - - if (e) { - slideWidth = gesture.$slideEl[0].offsetWidth; - slideHeight = gesture.$slideEl[0].offsetHeight; - offsetX = gesture.$slideEl.offset().left + window.scrollX; - offsetY = gesture.$slideEl.offset().top + window.scrollY; - diffX = offsetX + slideWidth / 2 - touchX; - diffY = offsetY + slideHeight / 2 - touchY; - imageWidth = gesture.$imageEl[0].offsetWidth; - imageHeight = gesture.$imageEl[0].offsetHeight; - 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; - 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; - } - - gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`); - gesture.$imageEl.transition(300).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 = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); - } else { - gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); - } - - gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target'); - gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return; - - if (swiper.params.cssMode) { - swiper.wrapperEl.style.overflow = ''; - swiper.wrapperEl.style.touchAction = ''; - } - - zoom.scale = 1; - currentScale = 1; - gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); - gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); - gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`); - gesture.$slideEl = undefined; - } // 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 support = swiper.support; - const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? { - passive: true, - capture: false - } : false; - const activeListenerWithCapture = support.passiveListener ? { - passive: false, - capture: true - } : true; - return { - passiveListener, - activeListenerWithCapture - }; - } - - function getSlideSelector() { - return `.${swiper.params.slideClass}`; - } - - function toggleGestures(method) { - const { - passiveListener - } = getListeners(); - const slideSelector = getSlideSelector(); - swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener); - swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener); - swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener); - } - - function enableGestures() { - if (gesturesEnabled) return; - gesturesEnabled = true; - toggleGestures('on'); - } - - function disableGestures() { - if (!gesturesEnabled) return; - gesturesEnabled = false; - toggleGestures('off'); - } // Attach/Detach Events - - - function enable() { - const zoom = swiper.zoom; - if (zoom.enabled) return; - zoom.enabled = true; - const support = swiper.support; - const { - passiveListener, - activeListenerWithCapture - } = getListeners(); - const slideSelector = getSlideSelector(); // Scale image - - if (support.gestures) { - swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener); - swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener); - } else if (swiper.touchEvents.start === 'touchstart') { - swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener); - swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture); - swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener); - - if (swiper.touchEvents.cancel) { - swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener); - } - } // Move image - - - swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture); - } - - function disable() { - const zoom = swiper.zoom; - if (!zoom.enabled) return; - const support = swiper.support; - zoom.enabled = false; - const { - passiveListener, - activeListenerWithCapture - } = getListeners(); - const slideSelector = getSlideSelector(); // Scale image - - if (support.gestures) { - swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener); - swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener); - } else if (swiper.touchEvents.start === 'touchstart') { - swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener); - swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture); - swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener); - - if (swiper.touchEvents.cancel) { - swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener); - } - } // Move image - - - swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, 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(e); - }); - 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 - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/zoom/zoom.less b/resources/web/guide/swiper/modules/zoom/zoom.less deleted file mode 100644 index fdbea05c57..0000000000 --- a/resources/web/guide/swiper/modules/zoom/zoom.less +++ /dev/null @@ -1,20 +0,0 @@ -.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; - } -} - -.swiper-slide-zoomed { - cursor: move; -} diff --git a/resources/web/guide/swiper/modules/zoom/zoom.min.css b/resources/web/guide/swiper/modules/zoom/zoom.min.css deleted file mode 100644 index f40e5818d1..0000000000 --- a/resources/web/guide/swiper/modules/zoom/zoom.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move} \ No newline at end of file diff --git a/resources/web/guide/swiper/modules/zoom/zoom.scss b/resources/web/guide/swiper/modules/zoom/zoom.scss deleted file mode 100644 index fdbea05c57..0000000000 --- a/resources/web/guide/swiper/modules/zoom/zoom.scss +++ /dev/null @@ -1,20 +0,0 @@ -.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; - } -} - -.swiper-slide-zoomed { - cursor: move; -} diff --git a/resources/web/guide/swiper/node_modules/dom7/LICENSE b/resources/web/guide/swiper/node_modules/dom7/LICENSE deleted file mode 100644 index e7e872c2b2..0000000000 --- a/resources/web/guide/swiper/node_modules/dom7/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 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/resources/web/guide/swiper/node_modules/dom7/README.md b/resources/web/guide/swiper/node_modules/dom7/README.md deleted file mode 100644 index 8b28ad2abf..0000000000 --- a/resources/web/guide/swiper/node_modules/dom7/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# Dom7 - -### Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API - -Dom7 - is the default DOM manipulation library built-in [Framework7](https://framework7.io). It utilizes most edge and high-performance methods for DOM manipulation. You don’t need to learn something new, its usage is very simple because it has the same syntax as well known jQuery library with support of the most popular and widely used methods and jQuery-like chaining. - -See [Framework7 Dom7](https://framework7.io/docs/dom7.html) documentation for usage examples and available methods. - -## Installation - -Dom7 can be installed with NPM: - -``` -npm install dom7 --save -``` - -## Usage - -```js -// import Dom7 and methods you need -import { $, addClass, removeClass, toggleClass, on } from 'dom7'; - -// install methods -$.fn.addClass = addClass; -$.fn.removeClass = removeClass; -$.fn.toggleClass = toggleClass; -$.fn.on = on; - -// use -$('p').addClass('custom-paragraph'); - -$('p').on('click', function() { - $(this).toggleClass('custom-paragraph'); -}); -``` - -## Documentation - -See [full documenation here](https://framework7.io/docs/dom7.html) - -## Contribution - -Yes please! See the [contributing guidelines](https://github.com/nolimits4web/dom7/blob/master/CONTRIBUTING.md) for details. - -## Licence - -This project is licensed under the terms of the [MIT license](https://github.com/nolimits4web/dom7/blob/master/LICENSE). diff --git a/resources/web/guide/swiper/node_modules/dom7/dom7.d.ts b/resources/web/guide/swiper/node_modules/dom7/dom7.d.ts deleted file mode 100644 index 1815f3dcd7..0000000000 --- a/resources/web/guide/swiper/node_modules/dom7/dom7.d.ts +++ /dev/null @@ -1,628 +0,0 @@ -export interface Dom7Array { - /* ====== DEFAULT ARRAY METHODS ====== */ - /** - * Gets or sets the length of the array. This is a number one higher than the highest element defined in an array. - */ - length: number; - - /** - * Removes the last element from an array and returns it. - */ - pop(): Element | undefined; - /** - * Appends new elements to an array, and returns the new length of the array. - * @param items New elements of the Array. - */ - push(...items: Element[]): number; - /** - * Combines two or more arrays. - * @param items Additional items to add to the end of array1. - */ - concat(...items: ConcatArray[]): Element[]; - /** - * Combines two or more arrays. - * @param items Additional items to add to the end of array1. - */ - concat(...items: (Element | ConcatArray)[]): Element[]; - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - /** - * Reverses the elements in an Array. - */ - reverse(): Element[]; - /** - * Removes the first element from an array and returns it. - */ - shift(): Element | undefined; - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. This is exclusive of the element at the index 'end'. - */ - slice(start?: number, end?: number): Element[]; - /** - * Sorts an array. - * @param compareFn Function used to determine the order of the elements. It is expected to return - * a negative value if first argument is less than second argument, zero if they're equal and a positive - * value otherwise. If omitted, the elements are sorted in ascending, ASCII character order. - * ```ts - * [11,2,22,1].sort((a, b) => a - b) - * ``` - */ - sort(compareFn?: (a: Element, b: Element) => number): this; - /** - * Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements. - * @param start The zero-based location in the array from which to start removing elements. - * @param deleteCount The number of elements to remove. - */ - splice(start: number, deleteCount?: number): Element[]; - /** - * Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements. - * @param start The zero-based location in the array from which to start removing elements. - * @param deleteCount The number of elements to remove. - * @param items Elements to insert into the array in place of the deleted elements. - */ - splice(start: number, deleteCount: number, ...items: Element[]): Element[]; - /** - * Inserts new elements at the start of an array. - * @param items Elements to insert at the start of the Array. - */ - unshift(...items: Element[]): number; - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0. - */ - indexOf(searchElement: Element, fromIndex?: number): number; - /** - * Returns the index of the last occurrence of a specified value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at the last index in the array. - */ - lastIndexOf(searchElement: Element, fromIndex?: number): number; - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in the array until the callbackfn returns a value - * which is coercible to the Boolean value false, or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every( - callbackfn: (value: Element, index: number, array: Element[]) => unknown, - thisArg?: any, - ): boolean; - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls - * the callbackfn function for each element in the array until the callbackfn returns a value - * which is coercible to the Boolean value true, or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some( - callbackfn: (value: Element, index: number, array: Element[]) => unknown, - thisArg?: any, - ): boolean; - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - forEach( - callbackfn: (value: Element, index: number, array: Element[]) => void, - thisArg?: any, - ): void; - /** - * Calls a defined callback function on each element of an array, and returns an array that contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - map( - callbackfn: (value: Element, index: number, array: Element[]) => U, - thisArg?: any, - ): U[]; - - /* ====== DOM7 ARRAY METHODS ====== */ - - /** Retrieve one of the elements matched by the Dom7Array object (jQuery syntax). **/ - [index: number]: Element; - - // CLASSES - /** Add class to elements */ - addClass(className: string): Dom7Array; - /** Remove specified class */ - removeClass(className: string): Dom7Array; - /** Determine whether any of the matched elements are assigned the given class */ - hasClass(className: string): Dom7Array; - /** Remove (if class is present) or add (if not) one or more classes from each element in the set of matched elements */ - toggleClass(className: string): Dom7Array; - - // ATTRIBUTES AND PROPERTIES - /** Get property value */ - prop(propName: string): any; - /** Set single property value */ - prop(propName: string, propValue: any): Dom7Array; - /** Set multiple properties */ - prop(propertiesObject: any): Dom7Array; - /** Get attribute value */ - attr(attrName: string): string; - /** Set single attribute value */ - attr(attrName: string, attrValue: string): Dom7Array; - /** Set multiple attributes */ - attr(attributesObject: any): Dom7Array; - /** Remove specified attribute */ - removeAttr(attrName: string): Dom7Array; - /** Get the current value of the first element in the set of matched elements */ - val(): any; - /** Set the value of every matched element */ - val(newValue: any): Dom7Array; - - // DATA - /** Store arbitrary data associated with the matched elements */ - data(key: string, value: any): Dom7Array; - /** Return the value at the named data store for the first element in the collection, as set by data(key, value) or by an HTML5 data-* attribute */ - data(key: string): any; - /** Remove specified data */ - removeData(key: string): void; - /** Returns element's data set (set of data- attributes) as plain Object */ - dataset(): any; - - // CSS TRASFORMS, TRANSITIONS - /** Adds prefixed CSS transform property */ - transform(CSSTransformString: string): Dom7Array; - /** Set CSS transition-duration property to collection */ - transition(transitionDuration: number): Dom7Array; - - // EVENTS - /** Add event handler function to one or more events to the selected elements */ - on( - eventName: string, - handler: (event: Event) => void, - useCapture?: boolean, - ): Dom7Array; - /** Live/delegated event handler */ - on( - eventName: string, - delegatedTarget: string, - handler: (event: Event) => void, - useCapture?: boolean, - ): Dom7Array; - /** Add event handler function to one or more events to the selected elements that will be executed only once */ - once( - eventName: string, - handler: (event: Event) => void, - useCapture?: boolean, - ): Dom7Array; - /** Live/delegated event handler that will be executed only once */ - once( - eventName: string, - delegatedTarget: string, - handler: (event: Event) => void, - useCapture?: boolean, - ): Dom7Array; - /** Remove event handler */ - off( - eventName: string, - handler: (event: Event) => void, - useCapture?: boolean, - ): Dom7Array; - /** Remove live/delegated event handler */ - off( - eventName: string, - delegatedTarget: string, - handler: (event: Event) => void, - useCapture?: boolean, - ): Dom7Array; - /** Execute all handlers added to the matched elements for the specified event */ - trigger(eventName: string, eventData?: any): Dom7Array; - /** Adds transitionEnd event handler to collection */ - transitionEnd(callback: () => void): Dom7Array; - /** Adds animationEnd event handler to collection */ - animationEnd(callback: () => void): Dom7Array; - - // STYLES - /** Get the current computed width for the first element in the set of matched elements */ - width(): number; - /** Set width for the first element in the set of matched elements */ - width(value: string | number): Dom7Array; - /** Get the current computed width for the first element in the set of matched elements, including padding and border, and margin (if includeMargin is true) */ - outerWidth(includeMargin?: boolean): number; - /** Set width for the first element in the set of matched elements, including padding and border, and margin (if includeMargin is true) */ - outerWidth(value: string | number): Dom7Array; - /** Get the current computed height for the first element in the set of matched elements */ - height(): number; - /** Set height for the first element in the set of matched elements */ - height(value: string | number): Dom7Array; - /** Get the current computed height for the first element in the set of matched elements, including padding and border, and margin (if includeMargin is true) */ - outerHeight(includeMargin?: boolean): number; - /** Set height for the first element in the set of matched elements, including padding and border, and margin (if includeMargin is true) */ - outerHeight(value: string | number): Dom7Array; - /** Get the current coordinates of the first element relative to the document */ - offset(): { top: number; left: number }; - /** Set the coordinates of the first element relative to the document */ - offset(value: string | number): Dom7Array; - /** Set "display:none" to the matched elements */ - hide(): void; - /** Set "display:block" to the matched elements */ - show(): void; - /** Get value of specified CSS property for the first element */ - css(property: string): string | number; - /** Set specified CSS property to the matched elements */ - css(property: string, value: string | number): Dom7Array; - /** Set multiple CSS properties to the matched elements */ - css(propertiesObject: any): Dom7Array; - - // SCROLL - /** Get scrollTop position of element */ - scrollTop(): number; - /** Set scrollTop "position" with animation during "duration" (in ms). Scroll top position will be set immediately if duration is not specified. If you have specified "callback" function, then it will be executed after scrolling completed */ - scrollTop( - position: number, - duration?: number, - callback?: () => void, - ): Dom7Array; - /** Get scrollLeft position of element */ - scrollLeft(): number; - /** Set scrollLeft "position" with animation during "duration" (in ms). Scroll left postion will be set immediately if duration is not specified. If you have specified "callback" function, then it will be executed after scrolling completed */ - scrollLeft( - position: number, - duration?: number, - callback?: () => void, - ): Dom7Array; - /** Set scroll left and scroll top with animation during "duration" (in ms). Scroll postion will be set immediately if duration is not specified. If you have specified "callback" function, then it will be executed after scrolling completed */ - scrollTo( - left: number, - top: number, - duration?: number, - callback?: () => void, - ): Dom7Array; - - // DOM MANIPULATION - /** Add HTML element to the set of matched elements */ - add(html: string): Dom7Array; - /** Create a new Dom7Array collection with elements added to the set of matched elements */ - add(...elements: Array): Dom7Array; - /** Iterate over collection, executing a callback function for each matched element */ - each(callback: (element: any, index: number) => void): Dom7Array; - /** Get the HTML contents of the first element in the set of matched elements */ - html(): string; - /** Set the HTML contents of every matched element */ - html(newInnerHTML: string): Dom7Array; - /** Get the text contents of the first element in the set of matched elements */ - text(): string; - /** Set the text contents of every matched element */ - text(newTextContent: string): Dom7Array; - /** `.is(CSSSelector)` : - * Check the current matched set of elements against CSS selector - * - * `.is(HTMLElement)` : - * Check the current matched set of elements against HTML element or Dom7Array collection - * */ - is(CSSSelector: string | Element | Dom7Array): boolean; - /** Return the position of the first element within the Dom7Array collection relative to its sibling elements */ - index(): number; - /** Reduce the set of matched elements to the one at the specified index */ - eq(index: number): Dom7Array; - /** `.append(HTMLString)` : - * Insert content, specified by the parameter, to the end of each element in the set of matched elements - * - * `.append(HTMLElement)` : - * Insert specified HTML element to the end of element in the set of matched elements - * */ - append(element: string | Element | Dom7Array): Dom7Array; - /** Insert content/elements, to the end of element specified in parameter */ - appendTo(element: string | Element | Dom7Array): Dom7Array; - /** `.prepend(newHTML)` : - * Insert content, specified by the parameter, to the beginning of each element in the set of matched elements - * - * `.prepend(HTMLElement)` : - * Insert specified HTML element to the beginning of element in the set of matched elements - * */ - prepend(element: string | Element | Dom7Array): Dom7Array; - /** Insert content/elements, to the beginning of element specified in parameter */ - prependTo(element: string | Element | Dom7Array): Dom7Array; - /** Insert every element in the set of matched elements before the target. Target could be specified as CSS selector or HTML element or Dom7Array collection */ - insertBefore(element: string | Element | Dom7Array): Dom7Array; - /** Insert every element in the set of matched elements after the target. Target could be specified as CSS selector or HTML element or Dom7Array collection */ - insertAfter(element: string | Element | Dom7Array): Dom7Array; - /** Get the immediately following sibling of each element in the set of matched elements. If a selector is provided, it retrieves the next sibling only if it matches that selector */ - next(selector?: string): Dom7Array; - /** Get all following siblings of each element in the set of matched elements, optionally filtered by a selector */ - nextAll(selector?: string): Dom7Array; - /** Get the immediately preceding sibling of each element in the set of matched elements, optionally filtered by a selector */ - prev(selector?: string): Dom7Array; - /** Get all preceding siblings of each element in the set of matched elements, optionally filtered by a selector */ - prevAll(selector?: string): Dom7Array; - /** Get the siblings of each element in the set of matched elements, optionally filtered by a selector */ - siblings(selector?: string): Dom7Array; - /** Get the first parent of each element in the current set of matched elements, optionally filtered by a selector */ - parent(selector?: string): Dom7Array; - /** Get the ancestors of each element in the current set of matched elements, optionally filtered by a selector */ - parents(selector?: string): Dom7Array; - /** For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree */ - closest(selector?: string): Dom7Array; - /** Get the descendants of each element in the current set of matched elements, filtered by a selector */ - find(selector?: string): Dom7Array; - /** Get the children of each element in the set of matched elements, optionally filtered by a selector */ - children(selector?: string): Dom7Array; - /** Filter collection of elements */ - filter(callback: (element: any, index: number) => boolean): Dom7Array; - /** Remove/detach matched elements from the Dom */ - remove(): Dom7Array; - /** Remove all child nodes of the set of matched elements from the DOM. Alias for `.html('')` */ - empty(): Dom7Array; - - // SHORTCUTS - /** Trigger "click" event on collection */ - click(): Dom7Array; - /** Add "click" event handler to collection */ - click(handler: (event: Event) => void): Dom7Array; - /** Trigger "blur" event on collection */ - blur(): Dom7Array; - /** Add "blur" event handler to collection */ - blur(handler: (event: Event) => void): Dom7Array; - /** Trigger "focus" event on collection */ - focus(): Dom7Array; - /** Add "focus" event handler to collection */ - focus(handler: (event: Event) => void): Dom7Array; - /** Trigger "focusin" event on collection */ - focusin(): Dom7Array; - /** Add "focusin" event handler to collection */ - focusin(handler: (event: Event) => void): Dom7Array; - /** Trigger "focusout" event on collection */ - focusout(): Dom7Array; - /** Add "focusout" event handler to collection */ - focusout(handler: (event: Event) => void): Dom7Array; - /** Trigger "keyup" event on collection */ - keyup(): Dom7Array; - /** Add "keyup" event handler to collection */ - keyup(handler: (event: Event) => void): Dom7Array; - /** Trigger "keydown" event on collection */ - keydown(): Dom7Array; - /** Add "keydown" event handler to collection */ - keydown(handler: (event: Event) => void): Dom7Array; - /** Trigger "keypress" event on collection */ - keypress(): Dom7Array; - /** Add "keypress" event handler to collection */ - keypress(handler: (event: Event) => void): Dom7Array; - /** Trigger "submit" event on collection */ - submit(): Dom7Array; - /** Add "submit" event handler to collection */ - submit(handler: (event: Event) => void): Dom7Array; - /** Trigger "change" event on collection */ - change(): Dom7Array; - /** Add "change" event handler to collection */ - change(handler: (event: Event) => void): Dom7Array; - /** Trigger "mousedown" event on collection */ - mousedown(): Dom7Array; - /** Add "mousedown" event handler to collection */ - mousedown(handler: (event: Event) => void): Dom7Array; - /** Trigger "mousemove" event on collection */ - mousemove(): Dom7Array; - /** Add "mousemove" event handler to collection */ - mousemove(handler: (event: Event) => void): Dom7Array; - /** Trigger "mouseup" event on collection */ - mouseup(): Dom7Array; - /** Add "mouseup" event handler to collection */ - mouseup(handler: (event: Event) => void): Dom7Array; - /** Trigger "mouseenter" event on collection */ - mouseenter(): Dom7Array; - /** Add "mouseenter" event handler to collection */ - mouseenter(handler: (event: Event) => void): Dom7Array; - /** Trigger "mouseleave" event on collection */ - mouseleave(): Dom7Array; - /** Add "mouseleave" event handler to collection */ - mouseleave(handler: (event: Event) => void): Dom7Array; - /** Trigger "mouseout" event on collection */ - mouseout(): Dom7Array; - /** Add "mouseout" event handler to collection */ - mouseout(handler: (event: Event) => void): Dom7Array; - /** Trigger "mouseover" event on collection */ - mouseover(): Dom7Array; - /** Add "mouseover" event handler to collection */ - mouseover(handler: (event: Event) => void): Dom7Array; - /** Trigger "touchstart" event on collection */ - touchstart(): Dom7Array; - /** Add "touchstart" event handler to collection */ - touchstart(handler: (event: Event) => void): Dom7Array; - /** Trigger "touchend" event on collection */ - touchend(): Dom7Array; - /** Add "touchend" event handler to collection */ - touchend(handler: (event: Event) => void): Dom7Array; - /** Trigger "touchmove" event on collection */ - touchmove(): Dom7Array; - /** Add "touchmove" event handler to collection */ - touchmove(handler: (event: Event) => void): Dom7Array; - /** Add "resize" event handler to collection */ - resize(handler: (event: Event) => void): Dom7Array; - /** Add "scroll" event handler to collection */ - scroll(handler: (event: Event) => void): Dom7Array; - /** Perform a custom animation of a set of CSS properties */ - animate(properties: any, parameters: any): Dom7Array; -} - -export interface Dom7 { - (): Dom7Array; - (selector: string, context?: Element | Dom7Array): Dom7Array; - (element: Element): Dom7Array; - (element: Document): Dom7Array; - (elementArray: Element[]): Dom7Array; - (event: EventTarget): Dom7Array; - fn: any; -} - -declare const Dom7: Dom7; - -declare const add: () => void; -declare const addClass: () => void; -declare const animate: () => void; -declare const animationEnd: () => void; -declare const append: () => void; -declare const appendTo: () => void; -declare const attr: () => void; -declare const blur: () => void; -declare const change: () => void; -declare const children: () => void; -declare const click: () => void; -declare const closest: () => void; -declare const css: () => void; -declare const data: () => void; -declare const dataset: () => void; -declare const detach: () => void; -declare const each: () => void; -declare const empty: () => void; -declare const eq: () => void; -declare const filter: () => void; -declare const find: () => void; -declare const focus: () => void; -declare const focusin: () => void; -declare const focusout: () => void; -declare const hasClass: () => void; -declare const height: () => void; -declare const hide: () => void; -declare const html: () => void; -declare const insertAfter: () => void; -declare const insertBefore: () => void; -declare const is: () => void; -declare const keydown: () => void; -declare const keypress: () => void; -declare const keyup: () => void; -declare const mousedown: () => void; -declare const mouseenter: () => void; -declare const mouseleave: () => void; -declare const mousemove: () => void; -declare const mouseout: () => void; -declare const mouseover: () => void; -declare const mouseup: () => void; -declare const next: () => void; -declare const nextAll: () => void; -declare const off: () => void; -declare const offset: () => void; -declare const on: () => void; -declare const once: () => void; -declare const outerHeight: () => void; -declare const outerWidth: () => void; -declare const parent: () => void; -declare const parents: () => void; -declare const prepend: () => void; -declare const prependTo: () => void; -declare const prev: () => void; -declare const prevAll: () => void; -declare const prop: () => void; -declare const remove: () => void; -declare const removeAttr: () => void; -declare const removeClass: () => void; -declare const removeData: () => void; -declare const resize: () => void; -declare const scroll: () => void; -declare const scrollLeft: () => void; -declare const scrollTo: () => void; -declare const scrollTop: () => void; -declare const show: () => void; -declare const siblings: () => void; -declare const stop: () => void; -declare const styles: () => void; -declare const submit: () => void; -declare const text: () => void; -declare const toggleClass: () => void; -declare const touchend: () => void; -declare const touchmove: () => void; -declare const touchstart: () => void; -declare const transform: () => void; -declare const transition: () => void; -declare const transitionEnd: () => void; -declare const trigger: () => void; -declare const val: () => void; -declare const value: () => void; -declare const width: () => void; - -export { - Dom7 as $, - add, - addClass, - animate, - animationEnd, - append, - appendTo, - attr, - blur, - change, - children, - click, - closest, - css, - data, - dataset, - detach, - each, - empty, - eq, - filter, - find, - focus, - focusin, - focusout, - hasClass, - height, - hide, - html, - insertAfter, - insertBefore, - is, - keydown, - keypress, - keyup, - mousedown, - mouseenter, - mouseleave, - mousemove, - mouseout, - mouseover, - mouseup, - next, - nextAll, - off, - offset, - on, - once, - outerHeight, - outerWidth, - parent, - parents, - prepend, - prependTo, - prev, - prevAll, - prop, - remove, - removeAttr, - removeClass, - removeData, - resize, - scroll, - scrollLeft, - scrollTo, - scrollTop, - show, - siblings, - stop, - styles, - submit, - text, - toggleClass, - touchend, - touchmove, - touchstart, - transform, - transition, - transitionEnd, - trigger, - val, - value, - width, -}; -export default Dom7; diff --git a/resources/web/guide/swiper/node_modules/dom7/dom7.esm.js b/resources/web/guide/swiper/node_modules/dom7/dom7.esm.js deleted file mode 100644 index 96a5881ef3..0000000000 --- a/resources/web/guide/swiper/node_modules/dom7/dom7.esm.js +++ /dev/null @@ -1,1478 +0,0 @@ -/** - * Dom7 4.0.1 - * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API - * https://framework7.io/docs/dom7.html - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: October 27, 2021 - */ -import { getWindow, getDocument } from 'ssr-window'; - -/* eslint-disable no-proto */ -function makeReactive(obj) { - const proto = obj.__proto__; - Object.defineProperty(obj, '__proto__', { - get() { - return proto; - }, - - set(value) { - proto.__proto__ = value; - } - - }); -} - -class Dom7 extends Array { - constructor(items) { - super(...(items || [])); - makeReactive(this); - } - -} - -function arrayFlat(arr = []) { - const res = []; - arr.forEach(el => { - if (Array.isArray(el)) { - res.push(...arrayFlat(el)); - } else { - res.push(el); - } - }); - return res; -} -function arrayFilter(arr, callback) { - return Array.prototype.filter.call(arr, callback); -} -function arrayUnique(arr) { - const uniqueArray = []; - - for (let i = 0; i < arr.length; i += 1) { - if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]); - } - - return uniqueArray; -} -function toCamelCase(string) { - return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase()); -} - -// eslint-disable-next-line - -function qsa(selector, context) { - if (typeof selector !== 'string') { - return [selector]; - } - - const a = []; - const res = context.querySelectorAll(selector); - - for (let i = 0; i < res.length; i += 1) { - a.push(res[i]); - } - - return a; -} - -function $(selector, context) { - const window = getWindow(); - const document = getDocument(); - let arr = []; - - if (!context && selector instanceof Dom7) { - return selector; - } - - if (!selector) { - return new Dom7(arr); - } - - if (typeof selector === 'string') { - const html = selector.trim(); - - if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { - let toCreate = 'div'; - if (html.indexOf(' c.split(' '))); - this.forEach(el => { - el.classList.add(...classNames); - }); - return this; -} - -function removeClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - this.forEach(el => { - el.classList.remove(...classNames); - }); - return this; -} - -function toggleClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - this.forEach(el => { - classNames.forEach(className => { - el.classList.toggle(className); - }); - }); -} - -function hasClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - return arrayFilter(this, el => { - return classNames.filter(className => el.classList.contains(className)).length > 0; - }).length > 0; -} - -function attr(attrs, value) { - if (arguments.length === 1 && typeof attrs === 'string') { - // Get attr - if (this[0]) return this[0].getAttribute(attrs); - return undefined; - } // Set attrs - - - for (let i = 0; i < this.length; i += 1) { - if (arguments.length === 2) { - // String - this[i].setAttribute(attrs, value); - } else { - // Object - for (const attrName in attrs) { - this[i][attrName] = attrs[attrName]; - this[i].setAttribute(attrName, attrs[attrName]); - } - } - } - - return this; -} - -function removeAttr(attr) { - for (let i = 0; i < this.length; i += 1) { - this[i].removeAttribute(attr); - } - - return this; -} - -function prop(props, value) { - if (arguments.length === 1 && typeof props === 'string') { - // Get prop - if (this[0]) return this[0][props]; - } else { - // Set props - for (let i = 0; i < this.length; i += 1) { - if (arguments.length === 2) { - // String - this[i][props] = value; - } else { - // Object - for (const propName in props) { - this[i][propName] = props[propName]; - } - } - } - - return this; - } - - return this; -} - -function data(key, value) { - let el; - - if (typeof value === 'undefined') { - el = this[0]; - if (!el) return undefined; // Get value - - if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) { - return el.dom7ElementDataStorage[key]; - } - - const dataKey = el.getAttribute(`data-${key}`); - - if (dataKey) { - return dataKey; - } - - return undefined; - } // Set value - - - for (let i = 0; i < this.length; i += 1) { - el = this[i]; - if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {}; - el.dom7ElementDataStorage[key] = value; - } - - return this; -} - -function removeData(key) { - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) { - el.dom7ElementDataStorage[key] = null; - delete el.dom7ElementDataStorage[key]; - } - } -} - -function dataset() { - const el = this[0]; - if (!el) return undefined; - const dataset = {}; // eslint-disable-line - - if (el.dataset) { - for (const dataKey in el.dataset) { - dataset[dataKey] = el.dataset[dataKey]; - } - } else { - for (let i = 0; i < el.attributes.length; i += 1) { - const attr = el.attributes[i]; - - if (attr.name.indexOf('data-') >= 0) { - dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value; - } - } - } - - for (const key in dataset) { - if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1; - } - - return dataset; -} - -function val(value) { - if (typeof value === 'undefined') { - // get value - const el = this[0]; - if (!el) return undefined; - - if (el.multiple && el.nodeName.toLowerCase() === 'select') { - const values = []; - - for (let i = 0; i < el.selectedOptions.length; i += 1) { - values.push(el.selectedOptions[i].value); - } - - return values; - } - - return el.value; - } // set value - - - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') { - for (let j = 0; j < el.options.length; j += 1) { - el.options[j].selected = value.indexOf(el.options[j].value) >= 0; - } - } else { - el.value = value; - } - } - - return this; -} - -function value(value) { - return this.val(value); -} - -function transform(transform) { - for (let i = 0; i < this.length; i += 1) { - this[i].style.transform = transform; - } - - return this; -} - -function transition(duration) { - for (let i = 0; i < this.length; i += 1) { - this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration; - } - - return this; -} - -function on(...args) { - let [eventType, targetSelector, listener, capture] = args; - - if (typeof args[1] === 'function') { - [eventType, listener, capture] = args; - targetSelector = undefined; - } - - if (!capture) capture = false; - - function handleLiveEvent(e) { - const target = e.target; - if (!target) return; - const eventData = e.target.dom7EventData || []; - - if (eventData.indexOf(e) < 0) { - eventData.unshift(e); - } - - if ($(target).is(targetSelector)) listener.apply(target, eventData);else { - const parents = $(target).parents(); // eslint-disable-line - - for (let k = 0; k < parents.length; k += 1) { - if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData); - } - } - } - - function handleEvent(e) { - const eventData = e && e.target ? e.target.dom7EventData || [] : []; - - if (eventData.indexOf(e) < 0) { - eventData.unshift(e); - } - - listener.apply(this, eventData); - } - - const events = eventType.split(' '); - let j; - - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (!targetSelector) { - for (j = 0; j < events.length; j += 1) { - const event = events[j]; - if (!el.dom7Listeners) el.dom7Listeners = {}; - if (!el.dom7Listeners[event]) el.dom7Listeners[event] = []; - el.dom7Listeners[event].push({ - listener, - proxyListener: handleEvent - }); - el.addEventListener(event, handleEvent, capture); - } - } else { - // Live events - for (j = 0; j < events.length; j += 1) { - const event = events[j]; - if (!el.dom7LiveListeners) el.dom7LiveListeners = {}; - if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = []; - el.dom7LiveListeners[event].push({ - listener, - proxyListener: handleLiveEvent - }); - el.addEventListener(event, handleLiveEvent, capture); - } - } - } - - return this; -} - -function off(...args) { - let [eventType, targetSelector, listener, capture] = args; - - if (typeof args[1] === 'function') { - [eventType, listener, capture] = args; - targetSelector = undefined; - } - - if (!capture) capture = false; - const events = eventType.split(' '); - - for (let i = 0; i < events.length; i += 1) { - const event = events[i]; - - for (let j = 0; j < this.length; j += 1) { - const el = this[j]; - let handlers; - - if (!targetSelector && el.dom7Listeners) { - handlers = el.dom7Listeners[event]; - } else if (targetSelector && el.dom7LiveListeners) { - handlers = el.dom7LiveListeners[event]; - } - - if (handlers && handlers.length) { - for (let k = handlers.length - 1; k >= 0; k -= 1) { - const handler = handlers[k]; - - if (listener && handler.listener === listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } else if (!listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } - } - } - } - } - - return this; -} - -function once(...args) { - const dom = this; - let [eventName, targetSelector, listener, capture] = args; - - if (typeof args[1] === 'function') { - [eventName, listener, capture] = args; - targetSelector = undefined; - } - - function onceHandler(...eventArgs) { - listener.apply(this, eventArgs); - dom.off(eventName, targetSelector, onceHandler, capture); - - if (onceHandler.dom7proxy) { - delete onceHandler.dom7proxy; - } - } - - onceHandler.dom7proxy = listener; - return dom.on(eventName, targetSelector, onceHandler, capture); -} - -function trigger(...args) { - const window = getWindow(); - const events = args[0].split(' '); - const eventData = args[1]; - - for (let i = 0; i < events.length; i += 1) { - const event = events[i]; - - for (let j = 0; j < this.length; j += 1) { - const el = this[j]; - - if (window.CustomEvent) { - const evt = new window.CustomEvent(event, { - detail: eventData, - bubbles: true, - cancelable: true - }); - el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0); - el.dispatchEvent(evt); - el.dom7EventData = []; - delete el.dom7EventData; - } - } - } - - return this; -} - -function transitionEnd(callback) { - const dom = this; - - function fireCallBack(e) { - if (e.target !== this) return; - callback.call(this, e); - dom.off('transitionend', fireCallBack); - } - - if (callback) { - dom.on('transitionend', fireCallBack); - } - - return this; -} - -function animationEnd(callback) { - const dom = this; - - function fireCallBack(e) { - if (e.target !== this) return; - callback.call(this, e); - dom.off('animationend', fireCallBack); - } - - if (callback) { - dom.on('animationend', fireCallBack); - } - - return this; -} - -function width() { - const window = getWindow(); - - if (this[0] === window) { - return window.innerWidth; - } - - if (this.length > 0) { - return parseFloat(this.css('width')); - } - - return null; -} - -function outerWidth(includeMargins) { - if (this.length > 0) { - if (includeMargins) { - const styles = this.styles(); - return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left')); - } - - return this[0].offsetWidth; - } - - return null; -} - -function height() { - const window = getWindow(); - - if (this[0] === window) { - return window.innerHeight; - } - - if (this.length > 0) { - return parseFloat(this.css('height')); - } - - return null; -} - -function outerHeight(includeMargins) { - if (this.length > 0) { - if (includeMargins) { - const styles = this.styles(); - return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom')); - } - - return this[0].offsetHeight; - } - - return null; -} - -function offset() { - if (this.length > 0) { - const window = getWindow(); - const document = getDocument(); - const el = this[0]; - 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 - }; - } - - return null; -} - -function hide() { - for (let i = 0; i < this.length; i += 1) { - this[i].style.display = 'none'; - } - - return this; -} - -function show() { - const window = getWindow(); - - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (el.style.display === 'none') { - el.style.display = ''; - } - - if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') { - // Still not visible - el.style.display = 'block'; - } - } - - return this; -} - -function styles() { - const window = getWindow(); - if (this[0]) return window.getComputedStyle(this[0], null); - return {}; -} - -function css(props, value) { - const window = getWindow(); - let i; - - if (arguments.length === 1) { - if (typeof props === 'string') { - // .css('width') - if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props); - } else { - // .css({ width: '100px' }) - for (i = 0; i < this.length; i += 1) { - for (const prop in props) { - this[i].style[prop] = props[prop]; - } - } - - return this; - } - } - - if (arguments.length === 2 && typeof props === 'string') { - // .css('width', '100px') - for (i = 0; i < this.length; i += 1) { - this[i].style[props] = value; - } - - return this; - } - - return this; -} - -function each(callback) { - if (!callback) return this; - this.forEach((el, index) => { - callback.apply(el, [el, index]); - }); - return this; -} - -function filter(callback) { - const result = arrayFilter(this, callback); - return $(result); -} - -function html(html) { - if (typeof html === 'undefined') { - return this[0] ? this[0].innerHTML : null; - } - - for (let i = 0; i < this.length; i += 1) { - this[i].innerHTML = html; - } - - return this; -} - -function text(text) { - if (typeof text === 'undefined') { - return this[0] ? this[0].textContent.trim() : null; - } - - for (let i = 0; i < this.length; i += 1) { - this[i].textContent = text; - } - - return this; -} - -function is(selector) { - const window = getWindow(); - const document = getDocument(); - const el = this[0]; - let compareWith; - let i; - if (!el || typeof selector === 'undefined') return false; - - if (typeof selector === 'string') { - if (el.matches) return el.matches(selector); - if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector); - if (el.msMatchesSelector) return el.msMatchesSelector(selector); - compareWith = $(selector); - - for (i = 0; i < compareWith.length; i += 1) { - if (compareWith[i] === el) return true; - } - - return false; - } - - if (selector === document) { - return el === document; - } - - if (selector === window) { - return el === window; - } - - if (selector.nodeType || selector instanceof Dom7) { - compareWith = selector.nodeType ? [selector] : selector; - - for (i = 0; i < compareWith.length; i += 1) { - if (compareWith[i] === el) return true; - } - - return false; - } - - return false; -} - -function index() { - let child = this[0]; - 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 eq(index) { - if (typeof index === 'undefined') return this; - const length = this.length; - - if (index > length - 1) { - return $([]); - } - - if (index < 0) { - const returnIndex = length + index; - if (returnIndex < 0) return $([]); - return $([this[returnIndex]]); - } - - return $([this[index]]); -} - -function append(...els) { - let newChild; - const document = getDocument(); - - for (let k = 0; k < els.length; k += 1) { - newChild = els[k]; - - for (let i = 0; i < this.length; i += 1) { - if (typeof newChild === 'string') { - const tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - - while (tempDiv.firstChild) { - this[i].appendChild(tempDiv.firstChild); - } - } else if (newChild instanceof Dom7) { - for (let j = 0; j < newChild.length; j += 1) { - this[i].appendChild(newChild[j]); - } - } else { - this[i].appendChild(newChild); - } - } - } - - return this; -} - -function appendTo(parent) { - $(parent).append(this); - return this; -} - -function prepend(newChild) { - const document = getDocument(); - let i; - let j; - - for (i = 0; i < this.length; i += 1) { - if (typeof newChild === 'string') { - const tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - - for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) { - this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); - } - } else if (newChild instanceof Dom7) { - for (j = 0; j < newChild.length; j += 1) { - this[i].insertBefore(newChild[j], this[i].childNodes[0]); - } - } else { - this[i].insertBefore(newChild, this[i].childNodes[0]); - } - } - - return this; -} - -function prependTo(parent) { - $(parent).prepend(this); - return this; -} - -function insertBefore(selector) { - const before = $(selector); - - for (let i = 0; i < this.length; i += 1) { - if (before.length === 1) { - before[0].parentNode.insertBefore(this[i], before[0]); - } else if (before.length > 1) { - for (let j = 0; j < before.length; j += 1) { - before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]); - } - } - } -} - -function insertAfter(selector) { - const after = $(selector); - - for (let i = 0; i < this.length; i += 1) { - if (after.length === 1) { - after[0].parentNode.insertBefore(this[i], after[0].nextSibling); - } else if (after.length > 1) { - for (let j = 0; j < after.length; j += 1) { - after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling); - } - } - } -} - -function next(selector) { - if (this.length > 0) { - if (selector) { - if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { - return $([this[0].nextElementSibling]); - } - - return $([]); - } - - if (this[0].nextElementSibling) return $([this[0].nextElementSibling]); - return $([]); - } - - return $([]); -} - -function nextAll(selector) { - const nextEls = []; - let el = this[0]; - if (!el) return $([]); - - while (el.nextElementSibling) { - const next = el.nextElementSibling; // eslint-disable-line - - if (selector) { - if ($(next).is(selector)) nextEls.push(next); - } else nextEls.push(next); - - el = next; - } - - return $(nextEls); -} - -function prev(selector) { - if (this.length > 0) { - const el = this[0]; - - if (selector) { - if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { - return $([el.previousElementSibling]); - } - - return $([]); - } - - if (el.previousElementSibling) return $([el.previousElementSibling]); - return $([]); - } - - return $([]); -} - -function prevAll(selector) { - const prevEls = []; - let el = this[0]; - if (!el) return $([]); - - while (el.previousElementSibling) { - const prev = el.previousElementSibling; // eslint-disable-line - - if (selector) { - if ($(prev).is(selector)) prevEls.push(prev); - } else prevEls.push(prev); - - el = prev; - } - - return $(prevEls); -} - -function siblings(selector) { - return this.nextAll(selector).add(this.prevAll(selector)); -} - -function parent(selector) { - const parents = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - if (this[i].parentNode !== null) { - if (selector) { - if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode); - } else { - parents.push(this[i].parentNode); - } - } - } - - return $(parents); -} - -function parents(selector) { - const parents = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - let parent = this[i].parentNode; // eslint-disable-line - - while (parent) { - if (selector) { - if ($(parent).is(selector)) parents.push(parent); - } else { - parents.push(parent); - } - - parent = parent.parentNode; - } - } - - return $(parents); -} - -function closest(selector) { - let closest = this; // eslint-disable-line - - if (typeof selector === 'undefined') { - return $([]); - } - - if (!closest.is(selector)) { - closest = closest.parents(selector).eq(0); - } - - return closest; -} - -function find(selector) { - const foundElements = []; - - for (let i = 0; i < this.length; i += 1) { - const found = this[i].querySelectorAll(selector); - - for (let j = 0; j < found.length; j += 1) { - foundElements.push(found[j]); - } - } - - return $(foundElements); -} - -function children(selector) { - const children = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - const childNodes = this[i].children; - - for (let j = 0; j < childNodes.length; j += 1) { - if (!selector || $(childNodes[j]).is(selector)) { - children.push(childNodes[j]); - } - } - } - - return $(children); -} - -function remove() { - for (let i = 0; i < this.length; i += 1) { - if (this[i].parentNode) this[i].parentNode.removeChild(this[i]); - } - - return this; -} - -function detach() { - return this.remove(); -} - -function add(...els) { - const dom = this; - let i; - let j; - - for (i = 0; i < els.length; i += 1) { - const toAdd = $(els[i]); - - for (j = 0; j < toAdd.length; j += 1) { - dom.push(toAdd[j]); - } - } - - return dom; -} - -function empty() { - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (el.nodeType === 1) { - for (let j = 0; j < el.childNodes.length; j += 1) { - if (el.childNodes[j].parentNode) { - el.childNodes[j].parentNode.removeChild(el.childNodes[j]); - } - } - - el.textContent = ''; - } - } - - return this; -} - -// eslint-disable-next-line - -function scrollTo(...args) { - const window = getWindow(); - let [left, top, duration, easing, callback] = args; - - if (args.length === 4 && typeof easing === 'function') { - callback = easing; - [left, top, duration, callback, easing] = args; - } - - if (typeof easing === 'undefined') easing = 'swing'; - return this.each(function animate() { - const el = this; - let currentTop; - let currentLeft; - let maxTop; - let maxLeft; - let newTop; - let newLeft; - let scrollTop; // eslint-disable-line - - let scrollLeft; // eslint-disable-line - - let animateTop = top > 0 || top === 0; - let animateLeft = left > 0 || left === 0; - - if (typeof easing === 'undefined') { - easing = 'swing'; - } - - if (animateTop) { - currentTop = el.scrollTop; - - if (!duration) { - el.scrollTop = top; - } - } - - if (animateLeft) { - currentLeft = el.scrollLeft; - - if (!duration) { - el.scrollLeft = left; - } - } - - if (!duration) return; - - if (animateTop) { - maxTop = el.scrollHeight - el.offsetHeight; - newTop = Math.max(Math.min(top, maxTop), 0); - } - - if (animateLeft) { - maxLeft = el.scrollWidth - el.offsetWidth; - newLeft = Math.max(Math.min(left, maxLeft), 0); - } - - let startTime = null; - if (animateTop && newTop === currentTop) animateTop = false; - if (animateLeft && newLeft === currentLeft) animateLeft = false; - - function render(time = new Date().getTime()) { - if (startTime === null) { - startTime = time; - } - - const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); - const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2; - let done; - if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop); - if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft); - - if (animateTop && newTop > currentTop && scrollTop >= newTop) { - el.scrollTop = newTop; - done = true; - } - - if (animateTop && newTop < currentTop && scrollTop <= newTop) { - el.scrollTop = newTop; - done = true; - } - - if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) { - el.scrollLeft = newLeft; - done = true; - } - - if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) { - el.scrollLeft = newLeft; - done = true; - } - - if (done) { - if (callback) callback(); - return; - } - - if (animateTop) el.scrollTop = scrollTop; - if (animateLeft) el.scrollLeft = scrollLeft; - window.requestAnimationFrame(render); - } - - window.requestAnimationFrame(render); - }); -} // scrollTop(top, duration, easing, callback) { - - -function scrollTop(...args) { - let [top, duration, easing, callback] = args; - - if (args.length === 3 && typeof easing === 'function') { - [top, duration, callback, easing] = args; - } - - const dom = this; - - if (typeof top === 'undefined') { - if (dom.length > 0) return dom[0].scrollTop; - return null; - } - - return dom.scrollTo(undefined, top, duration, easing, callback); -} - -function scrollLeft(...args) { - let [left, duration, easing, callback] = args; - - if (args.length === 3 && typeof easing === 'function') { - [left, duration, callback, easing] = args; - } - - const dom = this; - - if (typeof left === 'undefined') { - if (dom.length > 0) return dom[0].scrollLeft; - return null; - } - - return dom.scrollTo(left, undefined, duration, easing, callback); -} - -// eslint-disable-next-line - -function animate(initialProps, initialParams) { - const window = getWindow(); - const els = this; - const a = { - props: Object.assign({}, initialProps), - params: Object.assign({ - duration: 300, - easing: 'swing' // or 'linear' - - /* Callbacks - begin(elements) - complete(elements) - progress(elements, complete, remaining, start, tweenValue) - */ - - }, initialParams), - elements: els, - animating: false, - que: [], - - easingProgress(easing, progress) { - if (easing === 'swing') { - return 0.5 - Math.cos(progress * Math.PI) / 2; - } - - if (typeof easing === 'function') { - return easing(progress); - } - - return progress; - }, - - stop() { - if (a.frameId) { - window.cancelAnimationFrame(a.frameId); - } - - a.animating = false; - a.elements.each(el => { - const element = el; - delete element.dom7AnimateInstance; - }); - a.que = []; - }, - - done(complete) { - a.animating = false; - a.elements.each(el => { - const element = el; - delete element.dom7AnimateInstance; - }); - if (complete) complete(els); - - if (a.que.length > 0) { - const que = a.que.shift(); - a.animate(que[0], que[1]); - } - }, - - animate(props, params) { - if (a.animating) { - a.que.push([props, params]); - return a; - } - - const elements = []; // Define & Cache Initials & Units - - a.elements.each((el, index) => { - let initialFullValue; - let initialValue; - let unit; - let finalValue; - let finalFullValue; - if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a; - elements[index] = { - container: el - }; - Object.keys(props).forEach(prop => { - initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.'); - initialValue = parseFloat(initialFullValue); - unit = initialFullValue.replace(initialValue, ''); - finalValue = parseFloat(props[prop]); - finalFullValue = props[prop] + unit; - elements[index][prop] = { - initialFullValue, - initialValue, - unit, - finalValue, - finalFullValue, - currentValue: initialValue - }; - }); - }); - let startTime = null; - let time; - let elementsDone = 0; - let propsDone = 0; - let done; - let began = false; - a.animating = true; - - function render() { - time = new Date().getTime(); - let progress; - let easeProgress; // let el; - - if (!began) { - began = true; - if (params.begin) params.begin(els); - } - - if (startTime === null) { - startTime = time; - } - - if (params.progress) { - // eslint-disable-next-line - params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime); - } - - elements.forEach(element => { - const el = element; - if (done || el.done) return; - Object.keys(props).forEach(prop => { - if (done || el.done) return; - progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0); - easeProgress = a.easingProgress(params.easing, progress); - const { - initialValue, - finalValue, - unit - } = el[prop]; - el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue); - const currentValue = el[prop].currentValue; - - if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) { - el.container.style[prop] = finalValue + unit; - propsDone += 1; - - if (propsDone === Object.keys(props).length) { - el.done = true; - elementsDone += 1; - } - - if (elementsDone === elements.length) { - done = true; - } - } - - if (done) { - a.done(params.complete); - return; - } - - el.container.style[prop] = currentValue + unit; - }); - }); - if (done) return; // Then call - - a.frameId = window.requestAnimationFrame(render); - } - - a.frameId = window.requestAnimationFrame(render); - return a; - } - - }; - - if (a.elements.length === 0) { - return els; - } - - let animateInstance; - - for (let i = 0; i < a.elements.length; i += 1) { - if (a.elements[i].dom7AnimateInstance) { - animateInstance = a.elements[i].dom7AnimateInstance; - } else a.elements[i].dom7AnimateInstance = a; - } - - if (!animateInstance) { - animateInstance = a; - } - - if (initialProps === 'stop') { - animateInstance.stop(); - } else { - animateInstance.animate(a.props, a.params); - } - - return els; -} - -function stop() { - const els = this; - - for (let i = 0; i < els.length; i += 1) { - if (els[i].dom7AnimateInstance) { - els[i].dom7AnimateInstance.stop(); - } - } -} - -const noTrigger = 'resize scroll'.split(' '); - -function shortcut(name) { - function eventHandler(...args) { - if (typeof args[0] === 'undefined') { - for (let i = 0; i < this.length; i += 1) { - if (noTrigger.indexOf(name) < 0) { - if (name in this[i]) this[i][name]();else { - $(this[i]).trigger(name); - } - } - } - - return this; - } - - return this.on(name, ...args); - } - - return eventHandler; -} - -const click = shortcut('click'); -const blur = shortcut('blur'); -const focus = shortcut('focus'); -const focusin = shortcut('focusin'); -const focusout = shortcut('focusout'); -const keyup = shortcut('keyup'); -const keydown = shortcut('keydown'); -const keypress = shortcut('keypress'); -const submit = shortcut('submit'); -const change = shortcut('change'); -const mousedown = shortcut('mousedown'); -const mousemove = shortcut('mousemove'); -const mouseup = shortcut('mouseup'); -const mouseenter = shortcut('mouseenter'); -const mouseleave = shortcut('mouseleave'); -const mouseout = shortcut('mouseout'); -const mouseover = shortcut('mouseover'); -const touchstart = shortcut('touchstart'); -const touchend = shortcut('touchend'); -const touchmove = shortcut('touchmove'); -const resize = shortcut('resize'); -const scroll = shortcut('scroll'); - -export default $; -export { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width }; diff --git a/resources/web/guide/swiper/node_modules/dom7/dom7.js b/resources/web/guide/swiper/node_modules/dom7/dom7.js deleted file mode 100644 index 4327572706..0000000000 --- a/resources/web/guide/swiper/node_modules/dom7/dom7.js +++ /dev/null @@ -1,1768 +0,0 @@ -/** - * Dom7 4.0.1 - * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API - * https://framework7.io/docs/dom7.html - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: October 27, 2021 - */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Dom7 = factory()); -}(this, (function () { 'use strict'; - - /** - * SSR Window 4.0.0 - * Better handling for window object in SSR environment - * https://github.com/nolimits4web/ssr-window - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: August 25, 2021 - */ - - /* eslint-disable no-param-reassign */ - function isObject(obj) { - return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; - } - - function extend(target = {}, src = {}) { - Object.keys(src).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; - } - - /* eslint-disable no-proto */ - function makeReactive(obj) { - const proto = obj.__proto__; - Object.defineProperty(obj, '__proto__', { - get() { - return proto; - }, - - set(value) { - proto.__proto__ = value; - } - - }); - } - - class Dom7 extends Array { - constructor(items) { - super(...(items || [])); - makeReactive(this); - } - - } - - function arrayFlat(arr = []) { - const res = []; - arr.forEach(el => { - if (Array.isArray(el)) { - res.push(...arrayFlat(el)); - } else { - res.push(el); - } - }); - return res; - } - function arrayFilter(arr, callback) { - return Array.prototype.filter.call(arr, callback); - } - function arrayUnique(arr) { - const uniqueArray = []; - - for (let i = 0; i < arr.length; i += 1) { - if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]); - } - - return uniqueArray; - } - function toCamelCase(string) { - return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase()); - } - - // eslint-disable-next-line - - function qsa(selector, context) { - if (typeof selector !== 'string') { - return [selector]; - } - - const a = []; - const res = context.querySelectorAll(selector); - - for (let i = 0; i < res.length; i += 1) { - a.push(res[i]); - } - - return a; - } - - function $(selector, context) { - const window = getWindow(); - const document = getDocument(); - let arr = []; - - if (!context && selector instanceof Dom7) { - return selector; - } - - if (!selector) { - return new Dom7(arr); - } - - if (typeof selector === 'string') { - const html = selector.trim(); - - if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { - let toCreate = 'div'; - if (html.indexOf(' c.split(' '))); - this.forEach(el => { - el.classList.add(...classNames); - }); - return this; - } - - function removeClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - this.forEach(el => { - el.classList.remove(...classNames); - }); - return this; - } - - function toggleClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - this.forEach(el => { - classNames.forEach(className => { - el.classList.toggle(className); - }); - }); - } - - function hasClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - return arrayFilter(this, el => { - return classNames.filter(className => el.classList.contains(className)).length > 0; - }).length > 0; - } - - function attr(attrs, value) { - if (arguments.length === 1 && typeof attrs === 'string') { - // Get attr - if (this[0]) return this[0].getAttribute(attrs); - return undefined; - } // Set attrs - - - for (let i = 0; i < this.length; i += 1) { - if (arguments.length === 2) { - // String - this[i].setAttribute(attrs, value); - } else { - // Object - for (const attrName in attrs) { - this[i][attrName] = attrs[attrName]; - this[i].setAttribute(attrName, attrs[attrName]); - } - } - } - - return this; - } - - function removeAttr(attr) { - for (let i = 0; i < this.length; i += 1) { - this[i].removeAttribute(attr); - } - - return this; - } - - function prop(props, value) { - if (arguments.length === 1 && typeof props === 'string') { - // Get prop - if (this[0]) return this[0][props]; - } else { - // Set props - for (let i = 0; i < this.length; i += 1) { - if (arguments.length === 2) { - // String - this[i][props] = value; - } else { - // Object - for (const propName in props) { - this[i][propName] = props[propName]; - } - } - } - - return this; - } - - return this; - } - - function data(key, value) { - let el; - - if (typeof value === 'undefined') { - el = this[0]; - if (!el) return undefined; // Get value - - if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) { - return el.dom7ElementDataStorage[key]; - } - - const dataKey = el.getAttribute(`data-${key}`); - - if (dataKey) { - return dataKey; - } - - return undefined; - } // Set value - - - for (let i = 0; i < this.length; i += 1) { - el = this[i]; - if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {}; - el.dom7ElementDataStorage[key] = value; - } - - return this; - } - - function removeData(key) { - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) { - el.dom7ElementDataStorage[key] = null; - delete el.dom7ElementDataStorage[key]; - } - } - } - - function dataset() { - const el = this[0]; - if (!el) return undefined; - const dataset = {}; // eslint-disable-line - - if (el.dataset) { - for (const dataKey in el.dataset) { - dataset[dataKey] = el.dataset[dataKey]; - } - } else { - for (let i = 0; i < el.attributes.length; i += 1) { - const attr = el.attributes[i]; - - if (attr.name.indexOf('data-') >= 0) { - dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value; - } - } - } - - for (const key in dataset) { - if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1; - } - - return dataset; - } - - function val(value) { - if (typeof value === 'undefined') { - // get value - const el = this[0]; - if (!el) return undefined; - - if (el.multiple && el.nodeName.toLowerCase() === 'select') { - const values = []; - - for (let i = 0; i < el.selectedOptions.length; i += 1) { - values.push(el.selectedOptions[i].value); - } - - return values; - } - - return el.value; - } // set value - - - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') { - for (let j = 0; j < el.options.length; j += 1) { - el.options[j].selected = value.indexOf(el.options[j].value) >= 0; - } - } else { - el.value = value; - } - } - - return this; - } - - function value(value) { - return this.val(value); - } - - function transform(transform) { - for (let i = 0; i < this.length; i += 1) { - this[i].style.transform = transform; - } - - return this; - } - - function transition(duration) { - for (let i = 0; i < this.length; i += 1) { - this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration; - } - - return this; - } - - function on(...args) { - let [eventType, targetSelector, listener, capture] = args; - - if (typeof args[1] === 'function') { - [eventType, listener, capture] = args; - targetSelector = undefined; - } - - if (!capture) capture = false; - - function handleLiveEvent(e) { - const target = e.target; - if (!target) return; - const eventData = e.target.dom7EventData || []; - - if (eventData.indexOf(e) < 0) { - eventData.unshift(e); - } - - if ($(target).is(targetSelector)) listener.apply(target, eventData);else { - const parents = $(target).parents(); // eslint-disable-line - - for (let k = 0; k < parents.length; k += 1) { - if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData); - } - } - } - - function handleEvent(e) { - const eventData = e && e.target ? e.target.dom7EventData || [] : []; - - if (eventData.indexOf(e) < 0) { - eventData.unshift(e); - } - - listener.apply(this, eventData); - } - - const events = eventType.split(' '); - let j; - - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (!targetSelector) { - for (j = 0; j < events.length; j += 1) { - const event = events[j]; - if (!el.dom7Listeners) el.dom7Listeners = {}; - if (!el.dom7Listeners[event]) el.dom7Listeners[event] = []; - el.dom7Listeners[event].push({ - listener, - proxyListener: handleEvent - }); - el.addEventListener(event, handleEvent, capture); - } - } else { - // Live events - for (j = 0; j < events.length; j += 1) { - const event = events[j]; - if (!el.dom7LiveListeners) el.dom7LiveListeners = {}; - if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = []; - el.dom7LiveListeners[event].push({ - listener, - proxyListener: handleLiveEvent - }); - el.addEventListener(event, handleLiveEvent, capture); - } - } - } - - return this; - } - - function off(...args) { - let [eventType, targetSelector, listener, capture] = args; - - if (typeof args[1] === 'function') { - [eventType, listener, capture] = args; - targetSelector = undefined; - } - - if (!capture) capture = false; - const events = eventType.split(' '); - - for (let i = 0; i < events.length; i += 1) { - const event = events[i]; - - for (let j = 0; j < this.length; j += 1) { - const el = this[j]; - let handlers; - - if (!targetSelector && el.dom7Listeners) { - handlers = el.dom7Listeners[event]; - } else if (targetSelector && el.dom7LiveListeners) { - handlers = el.dom7LiveListeners[event]; - } - - if (handlers && handlers.length) { - for (let k = handlers.length - 1; k >= 0; k -= 1) { - const handler = handlers[k]; - - if (listener && handler.listener === listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } else if (!listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } - } - } - } - } - - return this; - } - - function once(...args) { - const dom = this; - let [eventName, targetSelector, listener, capture] = args; - - if (typeof args[1] === 'function') { - [eventName, listener, capture] = args; - targetSelector = undefined; - } - - function onceHandler(...eventArgs) { - listener.apply(this, eventArgs); - dom.off(eventName, targetSelector, onceHandler, capture); - - if (onceHandler.dom7proxy) { - delete onceHandler.dom7proxy; - } - } - - onceHandler.dom7proxy = listener; - return dom.on(eventName, targetSelector, onceHandler, capture); - } - - function trigger(...args) { - const window = getWindow(); - const events = args[0].split(' '); - const eventData = args[1]; - - for (let i = 0; i < events.length; i += 1) { - const event = events[i]; - - for (let j = 0; j < this.length; j += 1) { - const el = this[j]; - - if (window.CustomEvent) { - const evt = new window.CustomEvent(event, { - detail: eventData, - bubbles: true, - cancelable: true - }); - el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0); - el.dispatchEvent(evt); - el.dom7EventData = []; - delete el.dom7EventData; - } - } - } - - return this; - } - - function transitionEnd(callback) { - const dom = this; - - function fireCallBack(e) { - if (e.target !== this) return; - callback.call(this, e); - dom.off('transitionend', fireCallBack); - } - - if (callback) { - dom.on('transitionend', fireCallBack); - } - - return this; - } - - function animationEnd(callback) { - const dom = this; - - function fireCallBack(e) { - if (e.target !== this) return; - callback.call(this, e); - dom.off('animationend', fireCallBack); - } - - if (callback) { - dom.on('animationend', fireCallBack); - } - - return this; - } - - function width() { - const window = getWindow(); - - if (this[0] === window) { - return window.innerWidth; - } - - if (this.length > 0) { - return parseFloat(this.css('width')); - } - - return null; - } - - function outerWidth(includeMargins) { - if (this.length > 0) { - if (includeMargins) { - const styles = this.styles(); - return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left')); - } - - return this[0].offsetWidth; - } - - return null; - } - - function height() { - const window = getWindow(); - - if (this[0] === window) { - return window.innerHeight; - } - - if (this.length > 0) { - return parseFloat(this.css('height')); - } - - return null; - } - - function outerHeight(includeMargins) { - if (this.length > 0) { - if (includeMargins) { - const styles = this.styles(); - return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom')); - } - - return this[0].offsetHeight; - } - - return null; - } - - function offset() { - if (this.length > 0) { - const window = getWindow(); - const document = getDocument(); - const el = this[0]; - 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 - }; - } - - return null; - } - - function hide() { - for (let i = 0; i < this.length; i += 1) { - this[i].style.display = 'none'; - } - - return this; - } - - function show() { - const window = getWindow(); - - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (el.style.display === 'none') { - el.style.display = ''; - } - - if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') { - // Still not visible - el.style.display = 'block'; - } - } - - return this; - } - - function styles() { - const window = getWindow(); - if (this[0]) return window.getComputedStyle(this[0], null); - return {}; - } - - function css(props, value) { - const window = getWindow(); - let i; - - if (arguments.length === 1) { - if (typeof props === 'string') { - // .css('width') - if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props); - } else { - // .css({ width: '100px' }) - for (i = 0; i < this.length; i += 1) { - for (const prop in props) { - this[i].style[prop] = props[prop]; - } - } - - return this; - } - } - - if (arguments.length === 2 && typeof props === 'string') { - // .css('width', '100px') - for (i = 0; i < this.length; i += 1) { - this[i].style[props] = value; - } - - return this; - } - - return this; - } - - function each(callback) { - if (!callback) return this; - this.forEach((el, index) => { - callback.apply(el, [el, index]); - }); - return this; - } - - function filter(callback) { - const result = arrayFilter(this, callback); - return $(result); - } - - function html(html) { - if (typeof html === 'undefined') { - return this[0] ? this[0].innerHTML : null; - } - - for (let i = 0; i < this.length; i += 1) { - this[i].innerHTML = html; - } - - return this; - } - - function text(text) { - if (typeof text === 'undefined') { - return this[0] ? this[0].textContent.trim() : null; - } - - for (let i = 0; i < this.length; i += 1) { - this[i].textContent = text; - } - - return this; - } - - function is(selector) { - const window = getWindow(); - const document = getDocument(); - const el = this[0]; - let compareWith; - let i; - if (!el || typeof selector === 'undefined') return false; - - if (typeof selector === 'string') { - if (el.matches) return el.matches(selector); - if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector); - if (el.msMatchesSelector) return el.msMatchesSelector(selector); - compareWith = $(selector); - - for (i = 0; i < compareWith.length; i += 1) { - if (compareWith[i] === el) return true; - } - - return false; - } - - if (selector === document) { - return el === document; - } - - if (selector === window) { - return el === window; - } - - if (selector.nodeType || selector instanceof Dom7) { - compareWith = selector.nodeType ? [selector] : selector; - - for (i = 0; i < compareWith.length; i += 1) { - if (compareWith[i] === el) return true; - } - - return false; - } - - return false; - } - - function index() { - let child = this[0]; - 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 eq(index) { - if (typeof index === 'undefined') return this; - const length = this.length; - - if (index > length - 1) { - return $([]); - } - - if (index < 0) { - const returnIndex = length + index; - if (returnIndex < 0) return $([]); - return $([this[returnIndex]]); - } - - return $([this[index]]); - } - - function append(...els) { - let newChild; - const document = getDocument(); - - for (let k = 0; k < els.length; k += 1) { - newChild = els[k]; - - for (let i = 0; i < this.length; i += 1) { - if (typeof newChild === 'string') { - const tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - - while (tempDiv.firstChild) { - this[i].appendChild(tempDiv.firstChild); - } - } else if (newChild instanceof Dom7) { - for (let j = 0; j < newChild.length; j += 1) { - this[i].appendChild(newChild[j]); - } - } else { - this[i].appendChild(newChild); - } - } - } - - return this; - } - - function appendTo(parent) { - $(parent).append(this); - return this; - } - - function prepend(newChild) { - const document = getDocument(); - let i; - let j; - - for (i = 0; i < this.length; i += 1) { - if (typeof newChild === 'string') { - const tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - - for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) { - this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); - } - } else if (newChild instanceof Dom7) { - for (j = 0; j < newChild.length; j += 1) { - this[i].insertBefore(newChild[j], this[i].childNodes[0]); - } - } else { - this[i].insertBefore(newChild, this[i].childNodes[0]); - } - } - - return this; - } - - function prependTo(parent) { - $(parent).prepend(this); - return this; - } - - function insertBefore(selector) { - const before = $(selector); - - for (let i = 0; i < this.length; i += 1) { - if (before.length === 1) { - before[0].parentNode.insertBefore(this[i], before[0]); - } else if (before.length > 1) { - for (let j = 0; j < before.length; j += 1) { - before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]); - } - } - } - } - - function insertAfter(selector) { - const after = $(selector); - - for (let i = 0; i < this.length; i += 1) { - if (after.length === 1) { - after[0].parentNode.insertBefore(this[i], after[0].nextSibling); - } else if (after.length > 1) { - for (let j = 0; j < after.length; j += 1) { - after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling); - } - } - } - } - - function next(selector) { - if (this.length > 0) { - if (selector) { - if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { - return $([this[0].nextElementSibling]); - } - - return $([]); - } - - if (this[0].nextElementSibling) return $([this[0].nextElementSibling]); - return $([]); - } - - return $([]); - } - - function nextAll(selector) { - const nextEls = []; - let el = this[0]; - if (!el) return $([]); - - while (el.nextElementSibling) { - const next = el.nextElementSibling; // eslint-disable-line - - if (selector) { - if ($(next).is(selector)) nextEls.push(next); - } else nextEls.push(next); - - el = next; - } - - return $(nextEls); - } - - function prev(selector) { - if (this.length > 0) { - const el = this[0]; - - if (selector) { - if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { - return $([el.previousElementSibling]); - } - - return $([]); - } - - if (el.previousElementSibling) return $([el.previousElementSibling]); - return $([]); - } - - return $([]); - } - - function prevAll(selector) { - const prevEls = []; - let el = this[0]; - if (!el) return $([]); - - while (el.previousElementSibling) { - const prev = el.previousElementSibling; // eslint-disable-line - - if (selector) { - if ($(prev).is(selector)) prevEls.push(prev); - } else prevEls.push(prev); - - el = prev; - } - - return $(prevEls); - } - - function siblings(selector) { - return this.nextAll(selector).add(this.prevAll(selector)); - } - - function parent(selector) { - const parents = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - if (this[i].parentNode !== null) { - if (selector) { - if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode); - } else { - parents.push(this[i].parentNode); - } - } - } - - return $(parents); - } - - function parents(selector) { - const parents = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - let parent = this[i].parentNode; // eslint-disable-line - - while (parent) { - if (selector) { - if ($(parent).is(selector)) parents.push(parent); - } else { - parents.push(parent); - } - - parent = parent.parentNode; - } - } - - return $(parents); - } - - function closest(selector) { - let closest = this; // eslint-disable-line - - if (typeof selector === 'undefined') { - return $([]); - } - - if (!closest.is(selector)) { - closest = closest.parents(selector).eq(0); - } - - return closest; - } - - function find(selector) { - const foundElements = []; - - for (let i = 0; i < this.length; i += 1) { - const found = this[i].querySelectorAll(selector); - - for (let j = 0; j < found.length; j += 1) { - foundElements.push(found[j]); - } - } - - return $(foundElements); - } - - function children(selector) { - const children = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - const childNodes = this[i].children; - - for (let j = 0; j < childNodes.length; j += 1) { - if (!selector || $(childNodes[j]).is(selector)) { - children.push(childNodes[j]); - } - } - } - - return $(children); - } - - function remove() { - for (let i = 0; i < this.length; i += 1) { - if (this[i].parentNode) this[i].parentNode.removeChild(this[i]); - } - - return this; - } - - function detach() { - return this.remove(); - } - - function add(...els) { - const dom = this; - let i; - let j; - - for (i = 0; i < els.length; i += 1) { - const toAdd = $(els[i]); - - for (j = 0; j < toAdd.length; j += 1) { - dom.push(toAdd[j]); - } - } - - return dom; - } - - function empty() { - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (el.nodeType === 1) { - for (let j = 0; j < el.childNodes.length; j += 1) { - if (el.childNodes[j].parentNode) { - el.childNodes[j].parentNode.removeChild(el.childNodes[j]); - } - } - - el.textContent = ''; - } - } - - return this; - } - - var methods = /*#__PURE__*/Object.freeze({ - __proto__: null, - addClass: addClass, - removeClass: removeClass, - toggleClass: toggleClass, - hasClass: hasClass, - attr: attr, - removeAttr: removeAttr, - prop: prop, - data: data, - removeData: removeData, - dataset: dataset, - val: val, - value: value, - transform: transform, - transition: transition, - on: on, - off: off, - once: once, - trigger: trigger, - transitionEnd: transitionEnd, - animationEnd: animationEnd, - width: width, - outerWidth: outerWidth, - height: height, - outerHeight: outerHeight, - offset: offset, - hide: hide, - show: show, - styles: styles, - css: css, - each: each, - filter: filter, - html: html, - text: text, - is: is, - index: index, - eq: eq, - append: append, - appendTo: appendTo, - prepend: prepend, - prependTo: prependTo, - insertBefore: insertBefore, - insertAfter: insertAfter, - next: next, - nextAll: nextAll, - prev: prev, - prevAll: prevAll, - siblings: siblings, - parent: parent, - parents: parents, - closest: closest, - find: find, - children: children, - remove: remove, - detach: detach, - add: add, - empty: empty - }); - - // eslint-disable-next-line - - function scrollTo(...args) { - const window = getWindow(); - let [left, top, duration, easing, callback] = args; - - if (args.length === 4 && typeof easing === 'function') { - callback = easing; - [left, top, duration, callback, easing] = args; - } - - if (typeof easing === 'undefined') easing = 'swing'; - return this.each(function animate() { - const el = this; - let currentTop; - let currentLeft; - let maxTop; - let maxLeft; - let newTop; - let newLeft; - let scrollTop; // eslint-disable-line - - let scrollLeft; // eslint-disable-line - - let animateTop = top > 0 || top === 0; - let animateLeft = left > 0 || left === 0; - - if (typeof easing === 'undefined') { - easing = 'swing'; - } - - if (animateTop) { - currentTop = el.scrollTop; - - if (!duration) { - el.scrollTop = top; - } - } - - if (animateLeft) { - currentLeft = el.scrollLeft; - - if (!duration) { - el.scrollLeft = left; - } - } - - if (!duration) return; - - if (animateTop) { - maxTop = el.scrollHeight - el.offsetHeight; - newTop = Math.max(Math.min(top, maxTop), 0); - } - - if (animateLeft) { - maxLeft = el.scrollWidth - el.offsetWidth; - newLeft = Math.max(Math.min(left, maxLeft), 0); - } - - let startTime = null; - if (animateTop && newTop === currentTop) animateTop = false; - if (animateLeft && newLeft === currentLeft) animateLeft = false; - - function render(time = new Date().getTime()) { - if (startTime === null) { - startTime = time; - } - - const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); - const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2; - let done; - if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop); - if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft); - - if (animateTop && newTop > currentTop && scrollTop >= newTop) { - el.scrollTop = newTop; - done = true; - } - - if (animateTop && newTop < currentTop && scrollTop <= newTop) { - el.scrollTop = newTop; - done = true; - } - - if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) { - el.scrollLeft = newLeft; - done = true; - } - - if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) { - el.scrollLeft = newLeft; - done = true; - } - - if (done) { - if (callback) callback(); - return; - } - - if (animateTop) el.scrollTop = scrollTop; - if (animateLeft) el.scrollLeft = scrollLeft; - window.requestAnimationFrame(render); - } - - window.requestAnimationFrame(render); - }); - } // scrollTop(top, duration, easing, callback) { - - - function scrollTop(...args) { - let [top, duration, easing, callback] = args; - - if (args.length === 3 && typeof easing === 'function') { - [top, duration, callback, easing] = args; - } - - const dom = this; - - if (typeof top === 'undefined') { - if (dom.length > 0) return dom[0].scrollTop; - return null; - } - - return dom.scrollTo(undefined, top, duration, easing, callback); - } - - function scrollLeft(...args) { - let [left, duration, easing, callback] = args; - - if (args.length === 3 && typeof easing === 'function') { - [left, duration, callback, easing] = args; - } - - const dom = this; - - if (typeof left === 'undefined') { - if (dom.length > 0) return dom[0].scrollLeft; - return null; - } - - return dom.scrollTo(left, undefined, duration, easing, callback); - } - - var scroll$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - scrollTo: scrollTo, - scrollTop: scrollTop, - scrollLeft: scrollLeft - }); - - // eslint-disable-next-line - - function animate(initialProps, initialParams) { - const window = getWindow(); - const els = this; - const a = { - props: Object.assign({}, initialProps), - params: Object.assign({ - duration: 300, - easing: 'swing' // or 'linear' - - /* Callbacks - begin(elements) - complete(elements) - progress(elements, complete, remaining, start, tweenValue) - */ - - }, initialParams), - elements: els, - animating: false, - que: [], - - easingProgress(easing, progress) { - if (easing === 'swing') { - return 0.5 - Math.cos(progress * Math.PI) / 2; - } - - if (typeof easing === 'function') { - return easing(progress); - } - - return progress; - }, - - stop() { - if (a.frameId) { - window.cancelAnimationFrame(a.frameId); - } - - a.animating = false; - a.elements.each(el => { - const element = el; - delete element.dom7AnimateInstance; - }); - a.que = []; - }, - - done(complete) { - a.animating = false; - a.elements.each(el => { - const element = el; - delete element.dom7AnimateInstance; - }); - if (complete) complete(els); - - if (a.que.length > 0) { - const que = a.que.shift(); - a.animate(que[0], que[1]); - } - }, - - animate(props, params) { - if (a.animating) { - a.que.push([props, params]); - return a; - } - - const elements = []; // Define & Cache Initials & Units - - a.elements.each((el, index) => { - let initialFullValue; - let initialValue; - let unit; - let finalValue; - let finalFullValue; - if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a; - elements[index] = { - container: el - }; - Object.keys(props).forEach(prop => { - initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.'); - initialValue = parseFloat(initialFullValue); - unit = initialFullValue.replace(initialValue, ''); - finalValue = parseFloat(props[prop]); - finalFullValue = props[prop] + unit; - elements[index][prop] = { - initialFullValue, - initialValue, - unit, - finalValue, - finalFullValue, - currentValue: initialValue - }; - }); - }); - let startTime = null; - let time; - let elementsDone = 0; - let propsDone = 0; - let done; - let began = false; - a.animating = true; - - function render() { - time = new Date().getTime(); - let progress; - let easeProgress; // let el; - - if (!began) { - began = true; - if (params.begin) params.begin(els); - } - - if (startTime === null) { - startTime = time; - } - - if (params.progress) { - // eslint-disable-next-line - params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime); - } - - elements.forEach(element => { - const el = element; - if (done || el.done) return; - Object.keys(props).forEach(prop => { - if (done || el.done) return; - progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0); - easeProgress = a.easingProgress(params.easing, progress); - const { - initialValue, - finalValue, - unit - } = el[prop]; - el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue); - const currentValue = el[prop].currentValue; - - if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) { - el.container.style[prop] = finalValue + unit; - propsDone += 1; - - if (propsDone === Object.keys(props).length) { - el.done = true; - elementsDone += 1; - } - - if (elementsDone === elements.length) { - done = true; - } - } - - if (done) { - a.done(params.complete); - return; - } - - el.container.style[prop] = currentValue + unit; - }); - }); - if (done) return; // Then call - - a.frameId = window.requestAnimationFrame(render); - } - - a.frameId = window.requestAnimationFrame(render); - return a; - } - - }; - - if (a.elements.length === 0) { - return els; - } - - let animateInstance; - - for (let i = 0; i < a.elements.length; i += 1) { - if (a.elements[i].dom7AnimateInstance) { - animateInstance = a.elements[i].dom7AnimateInstance; - } else a.elements[i].dom7AnimateInstance = a; - } - - if (!animateInstance) { - animateInstance = a; - } - - if (initialProps === 'stop') { - animateInstance.stop(); - } else { - animateInstance.animate(a.props, a.params); - } - - return els; - } - - function stop() { - const els = this; - - for (let i = 0; i < els.length; i += 1) { - if (els[i].dom7AnimateInstance) { - els[i].dom7AnimateInstance.stop(); - } - } - } - - var animate$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - animate: animate, - stop: stop - }); - - const noTrigger = 'resize scroll'.split(' '); - - function shortcut(name) { - function eventHandler(...args) { - if (typeof args[0] === 'undefined') { - for (let i = 0; i < this.length; i += 1) { - if (noTrigger.indexOf(name) < 0) { - if (name in this[i]) this[i][name]();else { - $(this[i]).trigger(name); - } - } - } - - return this; - } - - return this.on(name, ...args); - } - - return eventHandler; - } - - const click = shortcut('click'); - const blur = shortcut('blur'); - const focus = shortcut('focus'); - const focusin = shortcut('focusin'); - const focusout = shortcut('focusout'); - const keyup = shortcut('keyup'); - const keydown = shortcut('keydown'); - const keypress = shortcut('keypress'); - const submit = shortcut('submit'); - const change = shortcut('change'); - const mousedown = shortcut('mousedown'); - const mousemove = shortcut('mousemove'); - const mouseup = shortcut('mouseup'); - const mouseenter = shortcut('mouseenter'); - const mouseleave = shortcut('mouseleave'); - const mouseout = shortcut('mouseout'); - const mouseover = shortcut('mouseover'); - const touchstart = shortcut('touchstart'); - const touchend = shortcut('touchend'); - const touchmove = shortcut('touchmove'); - const resize = shortcut('resize'); - const scroll = shortcut('scroll'); - - var shortcuts = /*#__PURE__*/Object.freeze({ - __proto__: null, - click: click, - blur: blur, - focus: focus, - focusin: focusin, - focusout: focusout, - keyup: keyup, - keydown: keydown, - keypress: keypress, - submit: submit, - change: change, - mousedown: mousedown, - mousemove: mousemove, - mouseup: mouseup, - mouseenter: mouseenter, - mouseleave: mouseleave, - mouseout: mouseout, - mouseover: mouseover, - touchstart: touchstart, - touchend: touchend, - touchmove: touchmove, - resize: resize, - scroll: scroll - }); - - [methods, scroll$1, animate$1, shortcuts].forEach(group => { - Object.keys(group).forEach(methodName => { - $.fn[methodName] = group[methodName]; - }); - }); - - return $; - -}))); -//# sourceMappingURL=dom7.js.map diff --git a/resources/web/guide/swiper/node_modules/dom7/dom7.js.map b/resources/web/guide/swiper/node_modules/dom7/dom7.js.map deleted file mode 100644 index 50290dca01..0000000000 --- a/resources/web/guide/swiper/node_modules/dom7/dom7.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"dom7.js","sources":["../node_modules/ssr-window/ssr-window.esm.js","../src/dom7-class.js","../src/utils.js","../src/$.js","../src/methods.js","../src/scroll.js","../src/animate.js","../src/shortcuts.js","../src/dom7.bundle.js"],"sourcesContent":["/**\n * SSR Window 4.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: August 25, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n set(value) {\n proto.__proto__ = value;\n },\n });\n}\nclass Dom7 extends Array {\n constructor(items) {\n super(...(items || []));\n\n makeReactive(this);\n }\n}\nexport default Dom7;\n","export function arrayFlat(arr = []) {\n const res = [];\n arr.forEach((el) => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nexport function arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nexport function arrayUnique(arr) {\n const uniqueArray = [];\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n return uniqueArray;\n}\nexport function toCamelCase(string) {\n return string\n .toLowerCase()\n .replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n","// eslint-disable-next-line\nimport { getWindow, getDocument } from 'ssr-window';\nimport Dom7 from './dom7-class';\nimport { arrayUnique } from './utils';\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n const a = [];\n const res = context.querySelectorAll(selector);\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n if (!selector) {\n return new Dom7(arr);\n }\n if (typeof selector === 'string') {\n const html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach((el) => {\n el.classList.add(...classNames);\n });\n return this;\n}\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map((c) => c.split(' ')));\n this.forEach((el) => {\n el.classList.remove(...classNames);\n });\n return this;\n}\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map((c) => c.split(' ')));\n this.forEach((el) => {\n classNames.forEach((className) => {\n el.classList.toggle(className);\n });\n });\n}\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map((c) => c.split(' ')));\n return (\n arrayFilter(this, (el) => {\n return (\n classNames.filter((className) => el.classList.contains(className))\n .length > 0\n );\n }).length > 0\n );\n}\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n }\n\n // Set attrs\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n return this;\n}\nfunction data(key, value) {\n let el;\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined;\n // Get value\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n\n // Set value\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n}\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;\n else if (dataset[key] === 'true') dataset[key] = true;\n else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n return dataset;\n}\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n return values;\n }\n return el.value;\n }\n\n // set value\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (\n Array.isArray(value) &&\n el.multiple &&\n el.nodeName.toLowerCase() === 'select'\n ) {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n return this;\n}\nfunction value(value) {\n return this.val(value);\n}\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration =\n typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n return this;\n}\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) listener.apply(target, eventData);\n else {\n const parents = $(target).parents(); // eslint-disable-line\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector))\n listener.apply(parents[k], eventData);\n }\n }\n }\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n const events = eventType.split(' ');\n let j;\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n return this;\n}\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n const events = eventType.split(' ');\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (\n listener &&\n handler.listener &&\n handler.listener.dom7proxy &&\n handler.listener.dom7proxy === listener\n ) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n return this;\n}\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n const dom = this;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n return this;\n}\nfunction animationEnd(callback) {\n const dom = this;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n return this;\n}\nfunction width() {\n const window = getWindow();\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return (\n this[0].offsetWidth +\n parseFloat(styles.getPropertyValue('margin-right')) +\n parseFloat(styles.getPropertyValue('margin-left'))\n );\n }\n return this[0].offsetWidth;\n }\n return null;\n}\nfunction height() {\n const window = getWindow();\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return (\n this[0].offsetHeight +\n parseFloat(styles.getPropertyValue('margin-top')) +\n parseFloat(styles.getPropertyValue('margin-bottom'))\n );\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft,\n };\n }\n\n return null;\n}\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n return this;\n}\nfunction show() {\n const window = getWindow();\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n if (\n window.getComputedStyle(el, null).getPropertyValue('display') === 'none'\n ) {\n // Still not visible\n el.style.display = 'block';\n }\n }\n return this;\n}\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n const window = getWindow();\n let i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0])\n return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n if (selector === document) {\n return el === document;\n }\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n return false;\n}\nfunction index() {\n let child = this[0];\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n if (index > length - 1) {\n return $([]);\n }\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n return $([this[index]]);\n}\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n}\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\nfunction insertBefore(selector) {\n const before = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\nfunction insertAfter(selector) {\n const after = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(\n this[i].cloneNode(true),\n after[j].nextSibling,\n );\n }\n }\n }\n}\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (\n this[0].nextElementSibling &&\n $(this[0].nextElementSibling).is(selector)\n ) {\n return $([this[0].nextElementSibling]);\n }\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n return $([]);\n}\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return $(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n if (selector) {\n if (\n el.previousElementSibling &&\n $(el.previousElementSibling).is(selector)\n ) {\n return $([el.previousElementSibling]);\n }\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n return $([]);\n}\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return $(prevEls);\n}\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector))\n parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(parents);\n}\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(parents);\n}\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return $([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n const foundElements = [];\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return $(foundElements);\n}\nfunction children(selector) {\n const children = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return $(children);\n}\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n}\nfunction detach() {\n return this.remove();\n}\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n return dom;\n}\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n el.textContent = '';\n }\n }\n return this;\n}\n\nexport {\n addClass,\n removeClass,\n toggleClass,\n hasClass,\n attr,\n removeAttr,\n prop,\n data,\n removeData,\n dataset,\n val,\n value,\n transform,\n transition,\n on,\n off,\n once,\n trigger,\n transitionEnd,\n animationEnd,\n width,\n outerWidth,\n height,\n outerHeight,\n offset,\n hide,\n show,\n styles,\n css,\n each,\n filter,\n html,\n text,\n is,\n index,\n eq,\n append,\n appendTo,\n prepend,\n prependTo,\n insertBefore,\n insertAfter,\n next,\n nextAll,\n prev,\n prevAll,\n siblings,\n parent,\n parents,\n closest,\n find,\n children,\n remove,\n detach,\n add,\n empty,\n};\n","// eslint-disable-next-line\nimport { getWindow } from 'ssr-window';\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n if (typeof easing === 'undefined') easing = 'swing';\n\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n let scrollLeft; // eslint-disable-line\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n if (animateTop) {\n currentTop = el.scrollTop;\n if (!duration) {\n el.scrollTop = top;\n }\n }\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n if (!duration) return;\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress =\n easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop)\n scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft)\n scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n window.requestAnimationFrame(render);\n });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nexport { scrollTo, scrollTop, scrollLeft };\n","// eslint-disable-next-line\nimport { getWindow } from 'ssr-window';\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign(\n {\n duration: 300,\n easing: 'swing', // or 'linear'\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n },\n initialParams,\n ),\n\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each((el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done(complete) {\n a.animating = false;\n a.elements.each((el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n const elements = [];\n\n // Define & Cache Initials & Units\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n elements[index] = {\n container: el,\n };\n Object.keys(props).forEach((prop) => {\n initialFullValue = window\n .getComputedStyle(el, null)\n .getPropertyValue(prop)\n .replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue,\n };\n });\n });\n\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress;\n // let el;\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n if (startTime === null) {\n startTime = time;\n }\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(\n els,\n Math.max(Math.min((time - startTime) / params.duration, 1), 0),\n startTime + params.duration - time < 0\n ? 0\n : startTime + params.duration - time,\n startTime,\n );\n }\n\n elements.forEach((element) => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach((prop) => {\n if (done || el.done) return;\n progress = Math.max(\n Math.min((time - startTime) / params.duration, 1),\n 0,\n );\n easeProgress = a.easingProgress(params.easing, progress);\n const { initialValue, finalValue, unit } = el[prop];\n el[prop].currentValue =\n initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (\n (finalValue > initialValue && currentValue >= finalValue) ||\n (finalValue < initialValue && currentValue <= finalValue)\n ) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n if (done) {\n a.done(params.complete);\n return;\n }\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return;\n // Then call\n a.frameId = window.requestAnimationFrame(render);\n }\n a.frameId = window.requestAnimationFrame(render);\n return a;\n },\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nexport { animate, stop };\n","import $ from './$';\n\nconst noTrigger = 'resize scroll'.split(' ');\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();\n else {\n $(this[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return this.on(name, ...args);\n }\n return eventHandler;\n}\nexport const click = shortcut('click');\nexport const blur = shortcut('blur');\nexport const focus = shortcut('focus');\nexport const focusin = shortcut('focusin');\nexport const focusout = shortcut('focusout');\nexport const keyup = shortcut('keyup');\nexport const keydown = shortcut('keydown');\nexport const keypress = shortcut('keypress');\nexport const submit = shortcut('submit');\nexport const change = shortcut('change');\nexport const mousedown = shortcut('mousedown');\nexport const mousemove = shortcut('mousemove');\nexport const mouseup = shortcut('mouseup');\nexport const mouseenter = shortcut('mouseenter');\nexport const mouseleave = shortcut('mouseleave');\nexport const mouseout = shortcut('mouseout');\nexport const mouseover = shortcut('mouseover');\nexport const touchstart = shortcut('touchstart');\nexport const touchend = shortcut('touchend');\nexport const touchmove = shortcut('touchmove');\nexport const resize = shortcut('resize');\nexport const scroll = shortcut('scroll');\n","import $ from './$';\nimport * as methods from './methods';\nimport * as scroll from './scroll';\nimport * as animate from './animate';\nimport * as shortcuts from './shortcuts';\n\n[methods, scroll, animate, shortcuts].forEach((group) => {\n Object.keys(group).forEach((methodName) => {\n $.fn[methodName] = group[methodName];\n });\n});\n\nexport default $;\n"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","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","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","makeReactive","proto","__proto__","defineProperty","get","set","value","Dom7","Array","items","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","arrayUnique","uniqueArray","i","indexOf","toCamelCase","string","toLowerCase","replace","match","group","toUpperCase","qsa","selector","context","a","$","html","trim","toCreate","tempParent","innerHTML","nodeType","fn","addClass","classes","classNames","map","c","split","classList","add","removeClass","remove","toggleClass","className","toggle","hasClass","contains","attr","attrs","arguments","getAttribute","undefined","attrName","removeAttr","removeAttribute","prop","props","propName","data","dom7ElementDataStorage","dataKey","removeData","dataset","attributes","name","parseFloat","val","multiple","values","selectedOptions","j","options","selected","transform","transition","duration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","events","event","dom7Listeners","proxyListener","dom7LiveListeners","off","handlers","handler","splice","dom7proxy","once","dom","eventName","onceHandler","eventArgs","trigger","evt","detail","bubbles","cancelable","dataIndex","dispatchEvent","transitionEnd","fireCallBack","animationEnd","width","innerWidth","css","outerWidth","includeMargins","styles","offsetWidth","height","innerHeight","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","hide","display","show","each","index","result","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","firstChild","appendChild","appendTo","parent","prepend","insertBefore","prependTo","before","parentNode","cloneNode","insertAfter","after","nextSibling","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","siblings","closest","find","foundElements","found","removeChild","detach","toAdd","empty","scrollTo","easing","animate","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","Math","max","min","scrollWidth","startTime","render","time","getTime","progress","easeProgress","cos","PI","done","initialProps","initialParams","assign","params","elements","animating","que","easingProgress","stop","frameId","element","dom7AnimateInstance","complete","shift","initialFullValue","initialValue","unit","finalValue","finalFullValue","container","currentValue","elementsDone","propsDone","began","begin","animateInstance","noTrigger","shortcut","eventHandler","click","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","methods","shortcuts","methodName"],"mappings":";;;;;;;;;;;;;;;;;IAAA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IACA;IACA,SAASA,QAAT,CAAkBC,GAAlB,EAAuB;IACnB,SAAQA,GAAG,KAAK,IAAR,IACJ,OAAOA,GAAP,KAAe,QADX,IAEJ,iBAAiBA,GAFb,IAGJA,GAAG,CAACC,WAAJ,KAAoBC,MAHxB;IAIH;;IACD,SAASC,MAAT,CAAgBC,MAAM,GAAG,EAAzB,EAA6BC,GAAG,GAAG,EAAnC,EAAuC;IACnCH,EAAAA,MAAM,CAACI,IAAP,CAAYD,GAAZ,EAAiBE,OAAjB,CAA0BC,GAAD,IAAS;IAC9B,QAAI,OAAOJ,MAAM,CAACI,GAAD,CAAb,KAAuB,WAA3B,EACIJ,MAAM,CAACI,GAAD,CAAN,GAAcH,GAAG,CAACG,GAAD,CAAjB,CADJ,KAEK,IAAIT,QAAQ,CAACM,GAAG,CAACG,GAAD,CAAJ,CAAR,IACLT,QAAQ,CAACK,MAAM,CAACI,GAAD,CAAP,CADH,IAELN,MAAM,CAACI,IAAP,CAAYD,GAAG,CAACG,GAAD,CAAf,EAAsBC,MAAtB,GAA+B,CAF9B,EAEiC;IAClCN,MAAAA,MAAM,CAACC,MAAM,CAACI,GAAD,CAAP,EAAcH,GAAG,CAACG,GAAD,CAAjB,CAAN;IACH;IACJ,GARD;IASH;;IAED,MAAME,WAAW,GAAG;IAChBC,EAAAA,IAAI,EAAE,EADU;;IAEhBC,EAAAA,gBAAgB,GAAG,EAFH;;IAGhBC,EAAAA,mBAAmB,GAAG,EAHN;;IAIhBC,EAAAA,aAAa,EAAE;IACXC,IAAAA,IAAI,GAAG,EADI;;IAEXC,IAAAA,QAAQ,EAAE;IAFC,GAJC;;IAQhBC,EAAAA,aAAa,GAAG;IACZ,WAAO,IAAP;IACH,GAVe;;IAWhBC,EAAAA,gBAAgB,GAAG;IACf,WAAO,EAAP;IACH,GAbe;;IAchBC,EAAAA,cAAc,GAAG;IACb,WAAO,IAAP;IACH,GAhBe;;IAiBhBC,EAAAA,WAAW,GAAG;IACV,WAAO;IACHC,MAAAA,SAAS,GAAG;;IADT,KAAP;IAGH,GArBe;;IAsBhBC,EAAAA,aAAa,GAAG;IACZ,WAAO;IACHC,MAAAA,QAAQ,EAAE,EADP;IAEHC,MAAAA,UAAU,EAAE,EAFT;IAGHC,MAAAA,KAAK,EAAE,EAHJ;;IAIHC,MAAAA,YAAY,GAAG,EAJZ;;IAKHC,MAAAA,oBAAoB,GAAG;IACnB,eAAO,EAAP;IACH;;IAPE,KAAP;IASH,GAhCe;;IAiChBC,EAAAA,eAAe,GAAG;IACd,WAAO,EAAP;IACH,GAnCe;;IAoChBC,EAAAA,UAAU,GAAG;IACT,WAAO,IAAP;IACH,GAtCe;;IAuChBC,EAAAA,QAAQ,EAAE;IACNC,IAAAA,IAAI,EAAE,EADA;IAENC,IAAAA,IAAI,EAAE,EAFA;IAGNC,IAAAA,QAAQ,EAAE,EAHJ;IAINC,IAAAA,IAAI,EAAE,EAJA;IAKNC,IAAAA,MAAM,EAAE,EALF;IAMNC,IAAAA,QAAQ,EAAE,EANJ;IAONC,IAAAA,QAAQ,EAAE,EAPJ;IAQNC,IAAAA,MAAM,EAAE;IARF;IAvCM,CAApB;;IAkDA,SAASC,WAAT,GAAuB;IACnB,QAAMC,GAAG,GAAG,OAAOC,QAAP,KAAoB,WAApB,GAAkCA,QAAlC,GAA6C,EAAzD;IACAtC,EAAAA,MAAM,CAACqC,GAAD,EAAM9B,WAAN,CAAN;IACA,SAAO8B,GAAP;IACH;;IAED,MAAME,SAAS,GAAG;IACdD,EAAAA,QAAQ,EAAE/B,WADI;IAEdiC,EAAAA,SAAS,EAAE;IACPC,IAAAA,SAAS,EAAE;IADJ,GAFG;IAKdd,EAAAA,QAAQ,EAAE;IACNC,IAAAA,IAAI,EAAE,EADA;IAENC,IAAAA,IAAI,EAAE,EAFA;IAGNC,IAAAA,QAAQ,EAAE,EAHJ;IAINC,IAAAA,IAAI,EAAE,EAJA;IAKNC,IAAAA,MAAM,EAAE,EALF;IAMNC,IAAAA,QAAQ,EAAE,EANJ;IAONC,IAAAA,QAAQ,EAAE,EAPJ;IAQNC,IAAAA,MAAM,EAAE;IARF,GALI;IAedO,EAAAA,OAAO,EAAE;IACLC,IAAAA,YAAY,GAAG,EADV;;IAELC,IAAAA,SAAS,GAAG,EAFP;;IAGLC,IAAAA,EAAE,GAAG,EAHA;;IAILC,IAAAA,IAAI,GAAG;;IAJF,GAfK;IAqBdC,EAAAA,WAAW,EAAE,SAASA,WAAT,GAAuB;IAChC,WAAO,IAAP;IACH,GAvBa;;IAwBdtC,EAAAA,gBAAgB,GAAG,EAxBL;;IAyBdC,EAAAA,mBAAmB,GAAG,EAzBR;;IA0BdsC,EAAAA,gBAAgB,GAAG;IACf,WAAO;IACHC,MAAAA,gBAAgB,GAAG;IACf,eAAO,EAAP;IACH;;IAHE,KAAP;IAKH,GAhCa;;IAiCdC,EAAAA,KAAK,GAAG,EAjCM;;IAkCdC,EAAAA,IAAI,GAAG,EAlCO;;IAmCdC,EAAAA,MAAM,EAAE,EAnCM;;IAoCdC,EAAAA,UAAU,GAAG,EApCC;;IAqCdC,EAAAA,YAAY,GAAG,EArCD;;IAsCdC,EAAAA,UAAU,GAAG;IACT,WAAO,EAAP;IACH,GAxCa;;IAyCdC,EAAAA,qBAAqB,CAACC,QAAD,EAAW;IAC5B,QAAI,OAAOJ,UAAP,KAAsB,WAA1B,EAAuC;IACnCI,MAAAA,QAAQ;IACR,aAAO,IAAP;IACH;;IACD,WAAOJ,UAAU,CAACI,QAAD,EAAW,CAAX,CAAjB;IACH,GA/Ca;;IAgDdC,EAAAA,oBAAoB,CAACC,EAAD,EAAK;IACrB,QAAI,OAAON,UAAP,KAAsB,WAA1B,EAAuC;IACnC;IACH;;IACDC,IAAAA,YAAY,CAACK,EAAD,CAAZ;IACH;;IArDa,CAAlB;;IAuDA,SAASC,SAAT,GAAqB;IACjB,QAAMC,GAAG,GAAG,OAAOC,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EAArD;IACA9D,EAAAA,MAAM,CAAC6D,GAAD,EAAMtB,SAAN,CAAN;IACA,SAAOsB,GAAP;IACH;;ICjJD;IACA,SAASE,YAAT,CAAsBlE,GAAtB,EAA2B;IACzB,QAAMmE,KAAK,GAAGnE,GAAG,CAACoE,SAAlB;IACAlE,EAAAA,MAAM,CAACmE,cAAP,CAAsBrE,GAAtB,EAA2B,WAA3B,EAAwC;IACtCsE,IAAAA,GAAG,GAAG;IACJ,aAAOH,KAAP;IACD,KAHqC;;IAItCI,IAAAA,GAAG,CAACC,KAAD,EAAQ;IACTL,MAAAA,KAAK,CAACC,SAAN,GAAkBI,KAAlB;IACD;;IANqC,GAAxC;IAQD;;IACD,MAAMC,IAAN,SAAmBC,KAAnB,CAAyB;IACvBzE,EAAAA,WAAW,CAAC0E,KAAD,EAAQ;IACjB,UAAM,IAAIA,KAAK,IAAI,EAAb,CAAN;IAEAT,IAAAA,YAAY,CAAC,IAAD,CAAZ;IACD;;IALsB;;ICZlB,SAASU,SAAT,CAAmBC,GAAG,GAAG,EAAzB,EAA6B;IAClC,QAAMC,GAAG,GAAG,EAAZ;IACAD,EAAAA,GAAG,CAACtE,OAAJ,CAAawE,EAAD,IAAQ;IAClB,QAAIL,KAAK,CAACM,OAAN,CAAcD,EAAd,CAAJ,EAAuB;IACrBD,MAAAA,GAAG,CAACG,IAAJ,CAAS,GAAGL,SAAS,CAACG,EAAD,CAArB;IACD,KAFD,MAEO;IACLD,MAAAA,GAAG,CAACG,IAAJ,CAASF,EAAT;IACD;IACF,GAND;IAOA,SAAOD,GAAP;IACD;IACM,SAASI,WAAT,CAAqBL,GAArB,EAA0BjB,QAA1B,EAAoC;IACzC,SAAOc,KAAK,CAACS,SAAN,CAAgBC,MAAhB,CAAuBC,IAAvB,CAA4BR,GAA5B,EAAiCjB,QAAjC,CAAP;IACD;IACM,SAAS0B,WAAT,CAAqBT,GAArB,EAA0B;IAC/B,QAAMU,WAAW,GAAG,EAApB;;IACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGX,GAAG,CAACpE,MAAxB,EAAgC+E,CAAC,IAAI,CAArC,EAAwC;IACtC,QAAID,WAAW,CAACE,OAAZ,CAAoBZ,GAAG,CAACW,CAAD,CAAvB,MAAgC,CAAC,CAArC,EAAwCD,WAAW,CAACN,IAAZ,CAAiBJ,GAAG,CAACW,CAAD,CAApB;IACzC;;IACD,SAAOD,WAAP;IACD;IACM,SAASG,WAAT,CAAqBC,MAArB,EAA6B;IAClC,SAAOA,MAAM,CACVC,WADI,GAEJC,OAFI,CAEI,OAFJ,EAEa,CAACC,KAAD,EAAQC,KAAR,KAAkBA,KAAK,CAACC,WAAN,EAF/B,CAAP;IAGD;;ICzBD;;IAKA,SAASC,GAAT,CAAaC,QAAb,EAAuBC,OAAvB,EAAgC;IAC9B,MAAI,OAAOD,QAAP,KAAoB,QAAxB,EAAkC;IAChC,WAAO,CAACA,QAAD,CAAP;IACD;;IACD,QAAME,CAAC,GAAG,EAAV;IACA,QAAMtB,GAAG,GAAGqB,OAAO,CAACjF,gBAAR,CAAyBgF,QAAzB,CAAZ;;IACA,OAAK,IAAIV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGV,GAAG,CAACrE,MAAxB,EAAgC+E,CAAC,IAAI,CAArC,EAAwC;IACtCY,IAAAA,CAAC,CAACnB,IAAF,CAAOH,GAAG,CAACU,CAAD,CAAV;IACD;;IACD,SAAOY,CAAP;IACD;;IAED,SAASC,CAAT,CAAWH,QAAX,EAAqBC,OAArB,EAA8B;IAC5B,QAAMlC,MAAM,GAAGF,SAAS,EAAxB;IACA,QAAMtB,QAAQ,GAAGF,WAAW,EAA5B;IACA,MAAIsC,GAAG,GAAG,EAAV;;IACA,MAAI,CAACsB,OAAD,IAAYD,QAAQ,YAAYzB,IAApC,EAA0C;IACxC,WAAOyB,QAAP;IACD;;IACD,MAAI,CAACA,QAAL,EAAe;IACb,WAAO,IAAIzB,IAAJ,CAASI,GAAT,CAAP;IACD;;IACD,MAAI,OAAOqB,QAAP,KAAoB,QAAxB,EAAkC;IAChC,UAAMI,IAAI,GAAGJ,QAAQ,CAACK,IAAT,EAAb;;IACA,QAAID,IAAI,CAACb,OAAL,CAAa,GAAb,KAAqB,CAArB,IAA0Ba,IAAI,CAACb,OAAL,CAAa,GAAb,KAAqB,CAAnD,EAAsD;IACpD,UAAIe,QAAQ,GAAG,KAAf;IACA,UAAIF,IAAI,CAACb,OAAL,CAAa,KAAb,MAAwB,CAA5B,EAA+Be,QAAQ,GAAG,IAAX;IAC/B,UAAIF,IAAI,CAACb,OAAL,CAAa,KAAb,MAAwB,CAA5B,EAA+Be,QAAQ,GAAG,OAAX;IAC/B,UAAIF,IAAI,CAACb,OAAL,CAAa,KAAb,MAAwB,CAAxB,IAA6Ba,IAAI,CAACb,OAAL,CAAa,KAAb,MAAwB,CAAzD,EACEe,QAAQ,GAAG,IAAX;IACF,UAAIF,IAAI,CAACb,OAAL,CAAa,QAAb,MAA2B,CAA/B,EAAkCe,QAAQ,GAAG,OAAX;IAClC,UAAIF,IAAI,CAACb,OAAL,CAAa,SAAb,MAA4B,CAAhC,EAAmCe,QAAQ,GAAG,QAAX;IACnC,YAAMC,UAAU,GAAGhE,QAAQ,CAACnB,aAAT,CAAuBkF,QAAvB,CAAnB;IACAC,MAAAA,UAAU,CAACC,SAAX,GAAuBJ,IAAvB;;IACA,WAAK,IAAId,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiB,UAAU,CAACjF,UAAX,CAAsBf,MAA1C,EAAkD+E,CAAC,IAAI,CAAvD,EAA0D;IACxDX,QAAAA,GAAG,CAACI,IAAJ,CAASwB,UAAU,CAACjF,UAAX,CAAsBgE,CAAtB,CAAT;IACD;IACF,KAbD,MAaO;IACLX,MAAAA,GAAG,GAAGoB,GAAG,CAACC,QAAQ,CAACK,IAAT,EAAD,EAAkBJ,OAAO,IAAI1D,QAA7B,CAAT;IACD,KAjB+B;;IAmBjC,GAnBD,MAmBO,IACLyD,QAAQ,CAACS,QAAT,IACAT,QAAQ,KAAKjC,MADb,IAEAiC,QAAQ,KAAKzD,QAHR,EAIL;IACAoC,IAAAA,GAAG,CAACI,IAAJ,CAASiB,QAAT;IACD,GANM,MAMA,IAAIxB,KAAK,CAACM,OAAN,CAAckB,QAAd,CAAJ,EAA6B;IAClC,QAAIA,QAAQ,YAAYzB,IAAxB,EAA8B,OAAOyB,QAAP;IAC9BrB,IAAAA,GAAG,GAAGqB,QAAN;IACD;;IACD,SAAO,IAAIzB,IAAJ,CAASa,WAAW,CAACT,GAAD,CAApB,CAAP;IACD;;IAEDwB,CAAC,CAACO,EAAF,GAAOnC,IAAI,CAACU,SAAZ;;IC3DA;;IAMA,SAAS0B,QAAT,CAAkB,GAAGC,OAArB,EAA8B;IAC5B,QAAMC,UAAU,GAAGnC,SAAS,CAACkC,OAAO,CAACE,GAAR,CAAaC,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQ,GAAR,CAAnB,CAAD,CAA5B;IACA,OAAK3G,OAAL,CAAcwE,EAAD,IAAQ;IACnBA,IAAAA,EAAE,CAACoC,SAAH,CAAaC,GAAb,CAAiB,GAAGL,UAApB;IACD,GAFD;IAGA,SAAO,IAAP;IACD;;IACD,SAASM,WAAT,CAAqB,GAAGP,OAAxB,EAAiC;IAC/B,QAAMC,UAAU,GAAGnC,SAAS,CAACkC,OAAO,CAACE,GAAR,CAAaC,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQ,GAAR,CAAnB,CAAD,CAA5B;IACA,OAAK3G,OAAL,CAAcwE,EAAD,IAAQ;IACnBA,IAAAA,EAAE,CAACoC,SAAH,CAAaG,MAAb,CAAoB,GAAGP,UAAvB;IACD,GAFD;IAGA,SAAO,IAAP;IACD;;IACD,SAASQ,WAAT,CAAqB,GAAGT,OAAxB,EAAiC;IAC/B,QAAMC,UAAU,GAAGnC,SAAS,CAACkC,OAAO,CAACE,GAAR,CAAaC,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQ,GAAR,CAAnB,CAAD,CAA5B;IACA,OAAK3G,OAAL,CAAcwE,EAAD,IAAQ;IACnBgC,IAAAA,UAAU,CAACxG,OAAX,CAAoBiH,SAAD,IAAe;IAChCzC,MAAAA,EAAE,CAACoC,SAAH,CAAaM,MAAb,CAAoBD,SAApB;IACD,KAFD;IAGD,GAJD;IAKD;;IACD,SAASE,QAAT,CAAkB,GAAGZ,OAArB,EAA8B;IAC5B,QAAMC,UAAU,GAAGnC,SAAS,CAACkC,OAAO,CAACE,GAAR,CAAaC,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQ,GAAR,CAAnB,CAAD,CAA5B;IACA,SACEhC,WAAW,CAAC,IAAD,EAAQH,EAAD,IAAQ;IACxB,WACEgC,UAAU,CAAC3B,MAAX,CAAmBoC,SAAD,IAAezC,EAAE,CAACoC,SAAH,CAAaQ,QAAb,CAAsBH,SAAtB,CAAjC,EACG/G,MADH,GACY,CAFd;IAID,GALU,CAAX,CAKGA,MALH,GAKY,CANd;IAQD;;IACD,SAASmH,IAAT,CAAcC,KAAd,EAAqBrD,KAArB,EAA4B;IAC1B,MAAIsD,SAAS,CAACrH,MAAV,KAAqB,CAArB,IAA0B,OAAOoH,KAAP,KAAiB,QAA/C,EAAyD;IACvD;IACA,QAAI,KAAK,CAAL,CAAJ,EAAa,OAAO,KAAK,CAAL,EAAQE,YAAR,CAAqBF,KAArB,CAAP;IACb,WAAOG,SAAP;IACD,GALyB;;;IAQ1B,OAAK,IAAIxC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,QAAIsC,SAAS,CAACrH,MAAV,KAAqB,CAAzB,EAA4B;IAC1B;IACA,WAAK+E,CAAL,EAAQ9D,YAAR,CAAqBmG,KAArB,EAA4BrD,KAA5B;IACD,KAHD,MAGO;IACL;IACA,WAAK,MAAMyD,QAAX,IAAuBJ,KAAvB,EAA8B;IAC5B,aAAKrC,CAAL,EAAQyC,QAAR,IAAoBJ,KAAK,CAACI,QAAD,CAAzB;IACA,aAAKzC,CAAL,EAAQ9D,YAAR,CAAqBuG,QAArB,EAA+BJ,KAAK,CAACI,QAAD,CAApC;IACD;IACF;IACF;;IACD,SAAO,IAAP;IACD;;IACD,SAASC,UAAT,CAAoBN,IAApB,EAA0B;IACxB,OAAK,IAAIpC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,SAAKA,CAAL,EAAQ2C,eAAR,CAAwBP,IAAxB;IACD;;IACD,SAAO,IAAP;IACD;;IACD,SAASQ,IAAT,CAAcC,KAAd,EAAqB7D,KAArB,EAA4B;IAC1B,MAAIsD,SAAS,CAACrH,MAAV,KAAqB,CAArB,IAA0B,OAAO4H,KAAP,KAAiB,QAA/C,EAAyD;IACvD;IACA,QAAI,KAAK,CAAL,CAAJ,EAAa,OAAO,KAAK,CAAL,EAAQA,KAAR,CAAP;IACd,GAHD,MAGO;IACL;IACA,SAAK,IAAI7C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,UAAIsC,SAAS,CAACrH,MAAV,KAAqB,CAAzB,EAA4B;IAC1B;IACA,aAAK+E,CAAL,EAAQ6C,KAAR,IAAiB7D,KAAjB;IACD,OAHD,MAGO;IACL;IACA,aAAK,MAAM8D,QAAX,IAAuBD,KAAvB,EAA8B;IAC5B,eAAK7C,CAAL,EAAQ8C,QAAR,IAAoBD,KAAK,CAACC,QAAD,CAAzB;IACD;IACF;IACF;;IACD,WAAO,IAAP;IACD;;IACD,SAAO,IAAP;IACD;;IACD,SAASC,IAAT,CAAc/H,GAAd,EAAmBgE,KAAnB,EAA0B;IACxB,MAAIO,EAAJ;;IACA,MAAI,OAAOP,KAAP,KAAiB,WAArB,EAAkC;IAChCO,IAAAA,EAAE,GAAG,KAAK,CAAL,CAAL;IACA,QAAI,CAACA,EAAL,EAAS,OAAOiD,SAAP,CAFuB;;IAIhC,QAAIjD,EAAE,CAACyD,sBAAH,IAA6BhI,GAAG,IAAIuE,EAAE,CAACyD,sBAA3C,EAAmE;IACjE,aAAOzD,EAAE,CAACyD,sBAAH,CAA0BhI,GAA1B,CAAP;IACD;;IAED,UAAMiI,OAAO,GAAG1D,EAAE,CAACgD,YAAH,CAAiB,QAAOvH,GAAI,EAA5B,CAAhB;;IACA,QAAIiI,OAAJ,EAAa;IACX,aAAOA,OAAP;IACD;;IACD,WAAOT,SAAP;IACD,GAfuB;;;IAkBxB,OAAK,IAAIxC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvCT,IAAAA,EAAE,GAAG,KAAKS,CAAL,CAAL;IACA,QAAI,CAACT,EAAE,CAACyD,sBAAR,EAAgCzD,EAAE,CAACyD,sBAAH,GAA4B,EAA5B;IAChCzD,IAAAA,EAAE,CAACyD,sBAAH,CAA0BhI,GAA1B,IAAiCgE,KAAjC;IACD;;IACD,SAAO,IAAP;IACD;;IACD,SAASkE,UAAT,CAAoBlI,GAApB,EAAyB;IACvB,OAAK,IAAIgF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,UAAMT,EAAE,GAAG,KAAKS,CAAL,CAAX;;IACA,QAAIT,EAAE,CAACyD,sBAAH,IAA6BzD,EAAE,CAACyD,sBAAH,CAA0BhI,GAA1B,CAAjC,EAAiE;IAC/DuE,MAAAA,EAAE,CAACyD,sBAAH,CAA0BhI,GAA1B,IAAiC,IAAjC;IACA,aAAOuE,EAAE,CAACyD,sBAAH,CAA0BhI,GAA1B,CAAP;IACD;IACF;IACF;;IACD,SAASmI,OAAT,GAAmB;IACjB,QAAM5D,EAAE,GAAG,KAAK,CAAL,CAAX;IACA,MAAI,CAACA,EAAL,EAAS,OAAOiD,SAAP;IACT,QAAMW,OAAO,GAAG,EAAhB,CAHiB;;IAIjB,MAAI5D,EAAE,CAAC4D,OAAP,EAAgB;IACd,SAAK,MAAMF,OAAX,IAAsB1D,EAAE,CAAC4D,OAAzB,EAAkC;IAChCA,MAAAA,OAAO,CAACF,OAAD,CAAP,GAAmB1D,EAAE,CAAC4D,OAAH,CAAWF,OAAX,CAAnB;IACD;IACF,GAJD,MAIO;IACL,SAAK,IAAIjD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGT,EAAE,CAAC6D,UAAH,CAAcnI,MAAlC,EAA0C+E,CAAC,IAAI,CAA/C,EAAkD;IAChD,YAAMoC,IAAI,GAAG7C,EAAE,CAAC6D,UAAH,CAAcpD,CAAd,CAAb;;IACA,UAAIoC,IAAI,CAACiB,IAAL,CAAUpD,OAAV,CAAkB,OAAlB,KAA8B,CAAlC,EAAqC;IACnCkD,QAAAA,OAAO,CAACjD,WAAW,CAACkC,IAAI,CAACiB,IAAL,CAAU3B,KAAV,CAAgB,OAAhB,EAAyB,CAAzB,CAAD,CAAZ,CAAP,GAAoDU,IAAI,CAACpD,KAAzD;IACD;IACF;IACF;;IACD,OAAK,MAAMhE,GAAX,IAAkBmI,OAAlB,EAA2B;IACzB,QAAIA,OAAO,CAACnI,GAAD,CAAP,KAAiB,OAArB,EAA8BmI,OAAO,CAACnI,GAAD,CAAP,GAAe,KAAf,CAA9B,KACK,IAAImI,OAAO,CAACnI,GAAD,CAAP,KAAiB,MAArB,EAA6BmI,OAAO,CAACnI,GAAD,CAAP,GAAe,IAAf,CAA7B,KACA,IAAIsI,UAAU,CAACH,OAAO,CAACnI,GAAD,CAAR,CAAV,KAA6BmI,OAAO,CAACnI,GAAD,CAAP,GAAe,CAAhD,EAAmDmI,OAAO,CAACnI,GAAD,CAAP,IAAgB,CAAhB;IACzD;;IACD,SAAOmI,OAAP;IACD;;IACD,SAASI,GAAT,CAAavE,KAAb,EAAoB;IAClB,MAAI,OAAOA,KAAP,KAAiB,WAArB,EAAkC;IAChC;IACA,UAAMO,EAAE,GAAG,KAAK,CAAL,CAAX;IACA,QAAI,CAACA,EAAL,EAAS,OAAOiD,SAAP;;IACT,QAAIjD,EAAE,CAACiE,QAAH,IAAejE,EAAE,CAAC/D,QAAH,CAAY4E,WAAZ,OAA8B,QAAjD,EAA2D;IACzD,YAAMqD,MAAM,GAAG,EAAf;;IACA,WAAK,IAAIzD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGT,EAAE,CAACmE,eAAH,CAAmBzI,MAAvC,EAA+C+E,CAAC,IAAI,CAApD,EAAuD;IACrDyD,QAAAA,MAAM,CAAChE,IAAP,CAAYF,EAAE,CAACmE,eAAH,CAAmB1D,CAAnB,EAAsBhB,KAAlC;IACD;;IACD,aAAOyE,MAAP;IACD;;IACD,WAAOlE,EAAE,CAACP,KAAV;IACD,GAbiB;;;IAgBlB,OAAK,IAAIgB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,UAAMT,EAAE,GAAG,KAAKS,CAAL,CAAX;;IACA,QACEd,KAAK,CAACM,OAAN,CAAcR,KAAd,KACAO,EAAE,CAACiE,QADH,IAEAjE,EAAE,CAAC/D,QAAH,CAAY4E,WAAZ,OAA8B,QAHhC,EAIE;IACA,WAAK,IAAIuD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGpE,EAAE,CAACqE,OAAH,CAAW3I,MAA/B,EAAuC0I,CAAC,IAAI,CAA5C,EAA+C;IAC7CpE,QAAAA,EAAE,CAACqE,OAAH,CAAWD,CAAX,EAAcE,QAAd,GAAyB7E,KAAK,CAACiB,OAAN,CAAcV,EAAE,CAACqE,OAAH,CAAWD,CAAX,EAAc3E,KAA5B,KAAsC,CAA/D;IACD;IACF,KARD,MAQO;IACLO,MAAAA,EAAE,CAACP,KAAH,GAAWA,KAAX;IACD;IACF;;IACD,SAAO,IAAP;IACD;;IACD,SAASA,KAAT,CAAeA,KAAf,EAAsB;IACpB,SAAO,KAAKuE,GAAL,CAASvE,KAAT,CAAP;IACD;;IACD,SAAS8E,SAAT,CAAmBA,SAAnB,EAA8B;IAC5B,OAAK,IAAI9D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,SAAKA,CAAL,EAAQ/D,KAAR,CAAc6H,SAAd,GAA0BA,SAA1B;IACD;;IACD,SAAO,IAAP;IACD;;IACD,SAASC,UAAT,CAAoBC,QAApB,EAA8B;IAC5B,OAAK,IAAIhE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,SAAKA,CAAL,EAAQ/D,KAAR,CAAcgI,kBAAd,GACE,OAAOD,QAAP,KAAoB,QAApB,GAAgC,GAAEA,QAAS,IAA3C,GAAiDA,QADnD;IAED;;IACD,SAAO,IAAP;IACD;;IACD,SAASE,EAAT,CAAY,GAAGC,IAAf,EAAqB;IACnB,MAAI,CAACC,SAAD,EAAYC,cAAZ,EAA4BC,QAA5B,EAAsCC,OAAtC,IAAiDJ,IAArD;;IACA,MAAI,OAAOA,IAAI,CAAC,CAAD,CAAX,KAAmB,UAAvB,EAAmC;IACjC,KAACC,SAAD,EAAYE,QAAZ,EAAsBC,OAAtB,IAAiCJ,IAAjC;IACAE,IAAAA,cAAc,GAAG7B,SAAjB;IACD;;IACD,MAAI,CAAC+B,OAAL,EAAcA,OAAO,GAAG,KAAV;;IAEd,WAASC,eAAT,CAAyBC,CAAzB,EAA4B;IAC1B,UAAM7J,MAAM,GAAG6J,CAAC,CAAC7J,MAAjB;IACA,QAAI,CAACA,MAAL,EAAa;IACb,UAAM8J,SAAS,GAAGD,CAAC,CAAC7J,MAAF,CAAS+J,aAAT,IAA0B,EAA5C;;IACA,QAAID,SAAS,CAACzE,OAAV,CAAkBwE,CAAlB,IAAuB,CAA3B,EAA8B;IAC5BC,MAAAA,SAAS,CAACE,OAAV,CAAkBH,CAAlB;IACD;;IACD,QAAI5D,CAAC,CAACjG,MAAD,CAAD,CAAUiK,EAAV,CAAaR,cAAb,CAAJ,EAAkCC,QAAQ,CAACQ,KAAT,CAAelK,MAAf,EAAuB8J,SAAvB,EAAlC,KACK;IACH,YAAMK,OAAO,GAAGlE,CAAC,CAACjG,MAAD,CAAD,CAAUmK,OAAV,EAAhB,CADG;;IAEH,WAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,OAAO,CAAC9J,MAA5B,EAAoC+J,CAAC,IAAI,CAAzC,EAA4C;IAC1C,YAAInE,CAAC,CAACkE,OAAO,CAACC,CAAD,CAAR,CAAD,CAAcH,EAAd,CAAiBR,cAAjB,CAAJ,EACEC,QAAQ,CAACQ,KAAT,CAAeC,OAAO,CAACC,CAAD,CAAtB,EAA2BN,SAA3B;IACH;IACF;IACF;;IACD,WAASO,WAAT,CAAqBR,CAArB,EAAwB;IACtB,UAAMC,SAAS,GAAGD,CAAC,IAAIA,CAAC,CAAC7J,MAAP,GAAgB6J,CAAC,CAAC7J,MAAF,CAAS+J,aAAT,IAA0B,EAA1C,GAA+C,EAAjE;;IACA,QAAID,SAAS,CAACzE,OAAV,CAAkBwE,CAAlB,IAAuB,CAA3B,EAA8B;IAC5BC,MAAAA,SAAS,CAACE,OAAV,CAAkBH,CAAlB;IACD;;IACDH,IAAAA,QAAQ,CAACQ,KAAT,CAAe,IAAf,EAAqBJ,SAArB;IACD;;IACD,QAAMQ,MAAM,GAAGd,SAAS,CAAC1C,KAAV,CAAgB,GAAhB,CAAf;IACA,MAAIiC,CAAJ;;IACA,OAAK,IAAI3D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,UAAMT,EAAE,GAAG,KAAKS,CAAL,CAAX;;IACA,QAAI,CAACqE,cAAL,EAAqB;IACnB,WAAKV,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGuB,MAAM,CAACjK,MAAvB,EAA+B0I,CAAC,IAAI,CAApC,EAAuC;IACrC,cAAMwB,KAAK,GAAGD,MAAM,CAACvB,CAAD,CAApB;IACA,YAAI,CAACpE,EAAE,CAAC6F,aAAR,EAAuB7F,EAAE,CAAC6F,aAAH,GAAmB,EAAnB;IACvB,YAAI,CAAC7F,EAAE,CAAC6F,aAAH,CAAiBD,KAAjB,CAAL,EAA8B5F,EAAE,CAAC6F,aAAH,CAAiBD,KAAjB,IAA0B,EAA1B;IAC9B5F,QAAAA,EAAE,CAAC6F,aAAH,CAAiBD,KAAjB,EAAwB1F,IAAxB,CAA6B;IAC3B6E,UAAAA,QAD2B;IAE3Be,UAAAA,aAAa,EAAEJ;IAFY,SAA7B;IAIA1F,QAAAA,EAAE,CAACnE,gBAAH,CAAoB+J,KAApB,EAA2BF,WAA3B,EAAwCV,OAAxC;IACD;IACF,KAXD,MAWO;IACL;IACA,WAAKZ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGuB,MAAM,CAACjK,MAAvB,EAA+B0I,CAAC,IAAI,CAApC,EAAuC;IACrC,cAAMwB,KAAK,GAAGD,MAAM,CAACvB,CAAD,CAApB;IACA,YAAI,CAACpE,EAAE,CAAC+F,iBAAR,EAA2B/F,EAAE,CAAC+F,iBAAH,GAAuB,EAAvB;IAC3B,YAAI,CAAC/F,EAAE,CAAC+F,iBAAH,CAAqBH,KAArB,CAAL,EAAkC5F,EAAE,CAAC+F,iBAAH,CAAqBH,KAArB,IAA8B,EAA9B;IAClC5F,QAAAA,EAAE,CAAC+F,iBAAH,CAAqBH,KAArB,EAA4B1F,IAA5B,CAAiC;IAC/B6E,UAAAA,QAD+B;IAE/Be,UAAAA,aAAa,EAAEb;IAFgB,SAAjC;IAIAjF,QAAAA,EAAE,CAACnE,gBAAH,CAAoB+J,KAApB,EAA2BX,eAA3B,EAA4CD,OAA5C;IACD;IACF;IACF;;IACD,SAAO,IAAP;IACD;;IACD,SAASgB,GAAT,CAAa,GAAGpB,IAAhB,EAAsB;IACpB,MAAI,CAACC,SAAD,EAAYC,cAAZ,EAA4BC,QAA5B,EAAsCC,OAAtC,IAAiDJ,IAArD;;IACA,MAAI,OAAOA,IAAI,CAAC,CAAD,CAAX,KAAmB,UAAvB,EAAmC;IACjC,KAACC,SAAD,EAAYE,QAAZ,EAAsBC,OAAtB,IAAiCJ,IAAjC;IACAE,IAAAA,cAAc,GAAG7B,SAAjB;IACD;;IACD,MAAI,CAAC+B,OAAL,EAAcA,OAAO,GAAG,KAAV;IAEd,QAAMW,MAAM,GAAGd,SAAS,CAAC1C,KAAV,CAAgB,GAAhB,CAAf;;IACA,OAAK,IAAI1B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkF,MAAM,CAACjK,MAA3B,EAAmC+E,CAAC,IAAI,CAAxC,EAA2C;IACzC,UAAMmF,KAAK,GAAGD,MAAM,CAAClF,CAAD,CAApB;;IACA,SAAK,IAAI2D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK1I,MAAzB,EAAiC0I,CAAC,IAAI,CAAtC,EAAyC;IACvC,YAAMpE,EAAE,GAAG,KAAKoE,CAAL,CAAX;IACA,UAAI6B,QAAJ;;IACA,UAAI,CAACnB,cAAD,IAAmB9E,EAAE,CAAC6F,aAA1B,EAAyC;IACvCI,QAAAA,QAAQ,GAAGjG,EAAE,CAAC6F,aAAH,CAAiBD,KAAjB,CAAX;IACD,OAFD,MAEO,IAAId,cAAc,IAAI9E,EAAE,CAAC+F,iBAAzB,EAA4C;IACjDE,QAAAA,QAAQ,GAAGjG,EAAE,CAAC+F,iBAAH,CAAqBH,KAArB,CAAX;IACD;;IACD,UAAIK,QAAQ,IAAIA,QAAQ,CAACvK,MAAzB,EAAiC;IAC/B,aAAK,IAAI+J,CAAC,GAAGQ,QAAQ,CAACvK,MAAT,GAAkB,CAA/B,EAAkC+J,CAAC,IAAI,CAAvC,EAA0CA,CAAC,IAAI,CAA/C,EAAkD;IAChD,gBAAMS,OAAO,GAAGD,QAAQ,CAACR,CAAD,CAAxB;;IACA,cAAIV,QAAQ,IAAImB,OAAO,CAACnB,QAAR,KAAqBA,QAArC,EAA+C;IAC7C/E,YAAAA,EAAE,CAAClE,mBAAH,CAAuB8J,KAAvB,EAA8BM,OAAO,CAACJ,aAAtC,EAAqDd,OAArD;IACAiB,YAAAA,QAAQ,CAACE,MAAT,CAAgBV,CAAhB,EAAmB,CAAnB;IACD,WAHD,MAGO,IACLV,QAAQ,IACRmB,OAAO,CAACnB,QADR,IAEAmB,OAAO,CAACnB,QAAR,CAAiBqB,SAFjB,IAGAF,OAAO,CAACnB,QAAR,CAAiBqB,SAAjB,KAA+BrB,QAJ1B,EAKL;IACA/E,YAAAA,EAAE,CAAClE,mBAAH,CAAuB8J,KAAvB,EAA8BM,OAAO,CAACJ,aAAtC,EAAqDd,OAArD;IACAiB,YAAAA,QAAQ,CAACE,MAAT,CAAgBV,CAAhB,EAAmB,CAAnB;IACD,WARM,MAQA,IAAI,CAACV,QAAL,EAAe;IACpB/E,YAAAA,EAAE,CAAClE,mBAAH,CAAuB8J,KAAvB,EAA8BM,OAAO,CAACJ,aAAtC,EAAqDd,OAArD;IACAiB,YAAAA,QAAQ,CAACE,MAAT,CAAgBV,CAAhB,EAAmB,CAAnB;IACD;IACF;IACF;IACF;IACF;;IACD,SAAO,IAAP;IACD;;IACD,SAASY,IAAT,CAAc,GAAGzB,IAAjB,EAAuB;IACrB,QAAM0B,GAAG,GAAG,IAAZ;IACA,MAAI,CAACC,SAAD,EAAYzB,cAAZ,EAA4BC,QAA5B,EAAsCC,OAAtC,IAAiDJ,IAArD;;IACA,MAAI,OAAOA,IAAI,CAAC,CAAD,CAAX,KAAmB,UAAvB,EAAmC;IACjC,KAAC2B,SAAD,EAAYxB,QAAZ,EAAsBC,OAAtB,IAAiCJ,IAAjC;IACAE,IAAAA,cAAc,GAAG7B,SAAjB;IACD;;IACD,WAASuD,WAAT,CAAqB,GAAGC,SAAxB,EAAmC;IACjC1B,IAAAA,QAAQ,CAACQ,KAAT,CAAe,IAAf,EAAqBkB,SAArB;IACAH,IAAAA,GAAG,CAACN,GAAJ,CAAQO,SAAR,EAAmBzB,cAAnB,EAAmC0B,WAAnC,EAAgDxB,OAAhD;;IACA,QAAIwB,WAAW,CAACJ,SAAhB,EAA2B;IACzB,aAAOI,WAAW,CAACJ,SAAnB;IACD;IACF;;IACDI,EAAAA,WAAW,CAACJ,SAAZ,GAAwBrB,QAAxB;IACA,SAAOuB,GAAG,CAAC3B,EAAJ,CAAO4B,SAAP,EAAkBzB,cAAlB,EAAkC0B,WAAlC,EAA+CxB,OAA/C,CAAP;IACD;;IACD,SAAS0B,OAAT,CAAiB,GAAG9B,IAApB,EAA0B;IACxB,QAAM1F,MAAM,GAAGF,SAAS,EAAxB;IACA,QAAM2G,MAAM,GAAGf,IAAI,CAAC,CAAD,CAAJ,CAAQzC,KAAR,CAAc,GAAd,CAAf;IACA,QAAMgD,SAAS,GAAGP,IAAI,CAAC,CAAD,CAAtB;;IACA,OAAK,IAAInE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkF,MAAM,CAACjK,MAA3B,EAAmC+E,CAAC,IAAI,CAAxC,EAA2C;IACzC,UAAMmF,KAAK,GAAGD,MAAM,CAAClF,CAAD,CAApB;;IACA,SAAK,IAAI2D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK1I,MAAzB,EAAiC0I,CAAC,IAAI,CAAtC,EAAyC;IACvC,YAAMpE,EAAE,GAAG,KAAKoE,CAAL,CAAX;;IACA,UAAIlF,MAAM,CAACf,WAAX,EAAwB;IACtB,cAAMwI,GAAG,GAAG,IAAIzH,MAAM,CAACf,WAAX,CAAuByH,KAAvB,EAA8B;IACxCgB,UAAAA,MAAM,EAAEzB,SADgC;IAExC0B,UAAAA,OAAO,EAAE,IAF+B;IAGxCC,UAAAA,UAAU,EAAE;IAH4B,SAA9B,CAAZ;IAKA9G,QAAAA,EAAE,CAACoF,aAAH,GAAmBR,IAAI,CAACvE,MAAL,CAAY,CAACmD,IAAD,EAAOuD,SAAP,KAAqBA,SAAS,GAAG,CAA7C,CAAnB;IACA/G,QAAAA,EAAE,CAACgH,aAAH,CAAiBL,GAAjB;IACA3G,QAAAA,EAAE,CAACoF,aAAH,GAAmB,EAAnB;IACA,eAAOpF,EAAE,CAACoF,aAAV;IACD;IACF;IACF;;IACD,SAAO,IAAP;IACD;;IACD,SAAS6B,aAAT,CAAuBpI,QAAvB,EAAiC;IAC/B,QAAMyH,GAAG,GAAG,IAAZ;;IACA,WAASY,YAAT,CAAsBhC,CAAtB,EAAyB;IACvB,QAAIA,CAAC,CAAC7J,MAAF,KAAa,IAAjB,EAAuB;IACvBwD,IAAAA,QAAQ,CAACyB,IAAT,CAAc,IAAd,EAAoB4E,CAApB;IACAoB,IAAAA,GAAG,CAACN,GAAJ,CAAQ,eAAR,EAAyBkB,YAAzB;IACD;;IACD,MAAIrI,QAAJ,EAAc;IACZyH,IAAAA,GAAG,CAAC3B,EAAJ,CAAO,eAAP,EAAwBuC,YAAxB;IACD;;IACD,SAAO,IAAP;IACD;;IACD,SAASC,YAAT,CAAsBtI,QAAtB,EAAgC;IAC9B,QAAMyH,GAAG,GAAG,IAAZ;;IACA,WAASY,YAAT,CAAsBhC,CAAtB,EAAyB;IACvB,QAAIA,CAAC,CAAC7J,MAAF,KAAa,IAAjB,EAAuB;IACvBwD,IAAAA,QAAQ,CAACyB,IAAT,CAAc,IAAd,EAAoB4E,CAApB;IACAoB,IAAAA,GAAG,CAACN,GAAJ,CAAQ,cAAR,EAAwBkB,YAAxB;IACD;;IACD,MAAIrI,QAAJ,EAAc;IACZyH,IAAAA,GAAG,CAAC3B,EAAJ,CAAO,cAAP,EAAuBuC,YAAvB;IACD;;IACD,SAAO,IAAP;IACD;;IACD,SAASE,KAAT,GAAiB;IACf,QAAMlI,MAAM,GAAGF,SAAS,EAAxB;;IACA,MAAI,KAAK,CAAL,MAAYE,MAAhB,EAAwB;IACtB,WAAOA,MAAM,CAACmI,UAAd;IACD;;IAED,MAAI,KAAK3L,MAAL,GAAc,CAAlB,EAAqB;IACnB,WAAOqI,UAAU,CAAC,KAAKuD,GAAL,CAAS,OAAT,CAAD,CAAjB;IACD;;IAED,SAAO,IAAP;IACD;;IACD,SAASC,UAAT,CAAoBC,cAApB,EAAoC;IAClC,MAAI,KAAK9L,MAAL,GAAc,CAAlB,EAAqB;IACnB,QAAI8L,cAAJ,EAAoB;IAClB,YAAMC,MAAM,GAAG,KAAKA,MAAL,EAAf;IACA,aACE,KAAK,CAAL,EAAQC,WAAR,GACA3D,UAAU,CAAC0D,MAAM,CAACpJ,gBAAP,CAAwB,cAAxB,CAAD,CADV,GAEA0F,UAAU,CAAC0D,MAAM,CAACpJ,gBAAP,CAAwB,aAAxB,CAAD,CAHZ;IAKD;;IACD,WAAO,KAAK,CAAL,EAAQqJ,WAAf;IACD;;IACD,SAAO,IAAP;IACD;;IACD,SAASC,MAAT,GAAkB;IAChB,QAAMzI,MAAM,GAAGF,SAAS,EAAxB;;IACA,MAAI,KAAK,CAAL,MAAYE,MAAhB,EAAwB;IACtB,WAAOA,MAAM,CAAC0I,WAAd;IACD;;IAED,MAAI,KAAKlM,MAAL,GAAc,CAAlB,EAAqB;IACnB,WAAOqI,UAAU,CAAC,KAAKuD,GAAL,CAAS,QAAT,CAAD,CAAjB;IACD;;IAED,SAAO,IAAP;IACD;;IACD,SAASO,WAAT,CAAqBL,cAArB,EAAqC;IACnC,MAAI,KAAK9L,MAAL,GAAc,CAAlB,EAAqB;IACnB,QAAI8L,cAAJ,EAAoB;IAClB,YAAMC,MAAM,GAAG,KAAKA,MAAL,EAAf;IACA,aACE,KAAK,CAAL,EAAQK,YAAR,GACA/D,UAAU,CAAC0D,MAAM,CAACpJ,gBAAP,CAAwB,YAAxB,CAAD,CADV,GAEA0F,UAAU,CAAC0D,MAAM,CAACpJ,gBAAP,CAAwB,eAAxB,CAAD,CAHZ;IAKD;;IACD,WAAO,KAAK,CAAL,EAAQyJ,YAAf;IACD;;IACD,SAAO,IAAP;IACD;;IACD,SAASC,MAAT,GAAkB;IAChB,MAAI,KAAKrM,MAAL,GAAc,CAAlB,EAAqB;IACnB,UAAMwD,MAAM,GAAGF,SAAS,EAAxB;IACA,UAAMtB,QAAQ,GAAGF,WAAW,EAA5B;IACA,UAAMwC,EAAE,GAAG,KAAK,CAAL,CAAX;IACA,UAAMgI,GAAG,GAAGhI,EAAE,CAACiI,qBAAH,EAAZ;IACA,UAAMrM,IAAI,GAAG8B,QAAQ,CAAC9B,IAAtB;IACA,UAAMsM,SAAS,GAAGlI,EAAE,CAACkI,SAAH,IAAgBtM,IAAI,CAACsM,SAArB,IAAkC,CAApD;IACA,UAAMC,UAAU,GAAGnI,EAAE,CAACmI,UAAH,IAAiBvM,IAAI,CAACuM,UAAtB,IAAoC,CAAvD;IACA,UAAMC,SAAS,GAAGpI,EAAE,KAAKd,MAAP,GAAgBA,MAAM,CAACmJ,OAAvB,GAAiCrI,EAAE,CAACoI,SAAtD;IACA,UAAME,UAAU,GAAGtI,EAAE,KAAKd,MAAP,GAAgBA,MAAM,CAACqJ,OAAvB,GAAiCvI,EAAE,CAACsI,UAAvD;IACA,WAAO;IACLE,MAAAA,GAAG,EAAER,GAAG,CAACQ,GAAJ,GAAUJ,SAAV,GAAsBF,SADtB;IAELO,MAAAA,IAAI,EAAET,GAAG,CAACS,IAAJ,GAAWH,UAAX,GAAwBH;IAFzB,KAAP;IAID;;IAED,SAAO,IAAP;IACD;;IACD,SAASO,IAAT,GAAgB;IACd,OAAK,IAAIjI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,SAAKA,CAAL,EAAQ/D,KAAR,CAAciM,OAAd,GAAwB,MAAxB;IACD;;IACD,SAAO,IAAP;IACD;;IACD,SAASC,IAAT,GAAgB;IACd,QAAM1J,MAAM,GAAGF,SAAS,EAAxB;;IACA,OAAK,IAAIyB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,UAAMT,EAAE,GAAG,KAAKS,CAAL,CAAX;;IACA,QAAIT,EAAE,CAACtD,KAAH,CAASiM,OAAT,KAAqB,MAAzB,EAAiC;IAC/B3I,MAAAA,EAAE,CAACtD,KAAH,CAASiM,OAAT,GAAmB,EAAnB;IACD;;IACD,QACEzJ,MAAM,CAACd,gBAAP,CAAwB4B,EAAxB,EAA4B,IAA5B,EAAkC3B,gBAAlC,CAAmD,SAAnD,MAAkE,MADpE,EAEE;IACA;IACA2B,MAAAA,EAAE,CAACtD,KAAH,CAASiM,OAAT,GAAmB,OAAnB;IACD;IACF;;IACD,SAAO,IAAP;IACD;;IACD,SAASlB,MAAT,GAAkB;IAChB,QAAMvI,MAAM,GAAGF,SAAS,EAAxB;IACA,MAAI,KAAK,CAAL,CAAJ,EAAa,OAAOE,MAAM,CAACd,gBAAP,CAAwB,KAAK,CAAL,CAAxB,EAAiC,IAAjC,CAAP;IACb,SAAO,EAAP;IACD;;IACD,SAASkJ,GAAT,CAAahE,KAAb,EAAoB7D,KAApB,EAA2B;IACzB,QAAMP,MAAM,GAAGF,SAAS,EAAxB;IACA,MAAIyB,CAAJ;;IACA,MAAIsC,SAAS,CAACrH,MAAV,KAAqB,CAAzB,EAA4B;IAC1B,QAAI,OAAO4H,KAAP,KAAiB,QAArB,EAA+B;IAC7B;IACA,UAAI,KAAK,CAAL,CAAJ,EACE,OAAOpE,MAAM,CAACd,gBAAP,CAAwB,KAAK,CAAL,CAAxB,EAAiC,IAAjC,EAAuCC,gBAAvC,CAAwDiF,KAAxD,CAAP;IACH,KAJD,MAIO;IACL;IACA,WAAK7C,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,KAAK/E,MAArB,EAA6B+E,CAAC,IAAI,CAAlC,EAAqC;IACnC,aAAK,MAAM4C,IAAX,IAAmBC,KAAnB,EAA0B;IACxB,eAAK7C,CAAL,EAAQ/D,KAAR,CAAc2G,IAAd,IAAsBC,KAAK,CAACD,IAAD,CAA3B;IACD;IACF;;IACD,aAAO,IAAP;IACD;IACF;;IACD,MAAIN,SAAS,CAACrH,MAAV,KAAqB,CAArB,IAA0B,OAAO4H,KAAP,KAAiB,QAA/C,EAAyD;IACvD;IACA,SAAK7C,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,KAAK/E,MAArB,EAA6B+E,CAAC,IAAI,CAAlC,EAAqC;IACnC,WAAKA,CAAL,EAAQ/D,KAAR,CAAc4G,KAAd,IAAuB7D,KAAvB;IACD;;IACD,WAAO,IAAP;IACD;;IACD,SAAO,IAAP;IACD;;IACD,SAASoJ,IAAT,CAAchK,QAAd,EAAwB;IACtB,MAAI,CAACA,QAAL,EAAe,OAAO,IAAP;IACf,OAAKrD,OAAL,CAAa,CAACwE,EAAD,EAAK8I,KAAL,KAAe;IAC1BjK,IAAAA,QAAQ,CAAC0G,KAAT,CAAevF,EAAf,EAAmB,CAACA,EAAD,EAAK8I,KAAL,CAAnB;IACD,GAFD;IAGA,SAAO,IAAP;IACD;;IACD,SAASzI,MAAT,CAAgBxB,QAAhB,EAA0B;IACxB,QAAMkK,MAAM,GAAG5I,WAAW,CAAC,IAAD,EAAOtB,QAAP,CAA1B;IACA,SAAOyC,CAAC,CAACyH,MAAD,CAAR;IACD;;IACD,SAASxH,IAAT,CAAcA,IAAd,EAAoB;IAClB,MAAI,OAAOA,IAAP,KAAgB,WAApB,EAAiC;IAC/B,WAAO,KAAK,CAAL,IAAU,KAAK,CAAL,EAAQI,SAAlB,GAA8B,IAArC;IACD;;IAED,OAAK,IAAIlB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,SAAKA,CAAL,EAAQkB,SAAR,GAAoBJ,IAApB;IACD;;IACD,SAAO,IAAP;IACD;;IACD,SAASyH,IAAT,CAAcA,IAAd,EAAoB;IAClB,MAAI,OAAOA,IAAP,KAAgB,WAApB,EAAiC;IAC/B,WAAO,KAAK,CAAL,IAAU,KAAK,CAAL,EAAQC,WAAR,CAAoBzH,IAApB,EAAV,GAAuC,IAA9C;IACD;;IAED,OAAK,IAAIf,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,SAAKA,CAAL,EAAQwI,WAAR,GAAsBD,IAAtB;IACD;;IACD,SAAO,IAAP;IACD;;IACD,SAAS1D,EAAT,CAAYnE,QAAZ,EAAsB;IACpB,QAAMjC,MAAM,GAAGF,SAAS,EAAxB;IACA,QAAMtB,QAAQ,GAAGF,WAAW,EAA5B;IACA,QAAMwC,EAAE,GAAG,KAAK,CAAL,CAAX;IACA,MAAIkJ,WAAJ;IACA,MAAIzI,CAAJ;IACA,MAAI,CAACT,EAAD,IAAO,OAAOmB,QAAP,KAAoB,WAA/B,EAA4C,OAAO,KAAP;;IAC5C,MAAI,OAAOA,QAAP,KAAoB,QAAxB,EAAkC;IAChC,QAAInB,EAAE,CAACmJ,OAAP,EAAgB,OAAOnJ,EAAE,CAACmJ,OAAH,CAAWhI,QAAX,CAAP;IAChB,QAAInB,EAAE,CAACoJ,qBAAP,EAA8B,OAAOpJ,EAAE,CAACoJ,qBAAH,CAAyBjI,QAAzB,CAAP;IAC9B,QAAInB,EAAE,CAACqJ,iBAAP,EAA0B,OAAOrJ,EAAE,CAACqJ,iBAAH,CAAqBlI,QAArB,CAAP;IAE1B+H,IAAAA,WAAW,GAAG5H,CAAC,CAACH,QAAD,CAAf;;IACA,SAAKV,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGyI,WAAW,CAACxN,MAA5B,EAAoC+E,CAAC,IAAI,CAAzC,EAA4C;IAC1C,UAAIyI,WAAW,CAACzI,CAAD,CAAX,KAAmBT,EAAvB,EAA2B,OAAO,IAAP;IAC5B;;IACD,WAAO,KAAP;IACD;;IACD,MAAImB,QAAQ,KAAKzD,QAAjB,EAA2B;IACzB,WAAOsC,EAAE,KAAKtC,QAAd;IACD;;IACD,MAAIyD,QAAQ,KAAKjC,MAAjB,EAAyB;IACvB,WAAOc,EAAE,KAAKd,MAAd;IACD;;IAED,MAAIiC,QAAQ,CAACS,QAAT,IAAqBT,QAAQ,YAAYzB,IAA7C,EAAmD;IACjDwJ,IAAAA,WAAW,GAAG/H,QAAQ,CAACS,QAAT,GAAoB,CAACT,QAAD,CAApB,GAAiCA,QAA/C;;IACA,SAAKV,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGyI,WAAW,CAACxN,MAA5B,EAAoC+E,CAAC,IAAI,CAAzC,EAA4C;IAC1C,UAAIyI,WAAW,CAACzI,CAAD,CAAX,KAAmBT,EAAvB,EAA2B,OAAO,IAAP;IAC5B;;IACD,WAAO,KAAP;IACD;;IACD,SAAO,KAAP;IACD;;IACD,SAAS8I,KAAT,GAAiB;IACf,MAAIQ,KAAK,GAAG,KAAK,CAAL,CAAZ;IACA,MAAI7I,CAAJ;;IACA,MAAI6I,KAAJ,EAAW;IACT7I,IAAAA,CAAC,GAAG,CAAJ,CADS;;IAGT,WAAO,CAAC6I,KAAK,GAAGA,KAAK,CAACC,eAAf,MAAoC,IAA3C,EAAiD;IAC/C,UAAID,KAAK,CAAC1H,QAAN,KAAmB,CAAvB,EAA0BnB,CAAC,IAAI,CAAL;IAC3B;;IACD,WAAOA,CAAP;IACD;;IACD,SAAOwC,SAAP;IACD;;IACD,SAASuG,EAAT,CAAYV,KAAZ,EAAmB;IACjB,MAAI,OAAOA,KAAP,KAAiB,WAArB,EAAkC,OAAO,IAAP;IAClC,QAAMpN,MAAM,GAAG,KAAKA,MAApB;;IACA,MAAIoN,KAAK,GAAGpN,MAAM,GAAG,CAArB,EAAwB;IACtB,WAAO4F,CAAC,CAAC,EAAD,CAAR;IACD;;IACD,MAAIwH,KAAK,GAAG,CAAZ,EAAe;IACb,UAAMW,WAAW,GAAG/N,MAAM,GAAGoN,KAA7B;IACA,QAAIW,WAAW,GAAG,CAAlB,EAAqB,OAAOnI,CAAC,CAAC,EAAD,CAAR;IACrB,WAAOA,CAAC,CAAC,CAAC,KAAKmI,WAAL,CAAD,CAAD,CAAR;IACD;;IACD,SAAOnI,CAAC,CAAC,CAAC,KAAKwH,KAAL,CAAD,CAAD,CAAR;IACD;;IACD,SAASY,MAAT,CAAgB,GAAGC,GAAnB,EAAwB;IACtB,MAAIC,QAAJ;IACA,QAAMlM,QAAQ,GAAGF,WAAW,EAA5B;;IAEA,OAAK,IAAIiI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkE,GAAG,CAACjO,MAAxB,EAAgC+J,CAAC,IAAI,CAArC,EAAwC;IACtCmE,IAAAA,QAAQ,GAAGD,GAAG,CAAClE,CAAD,CAAd;;IACA,SAAK,IAAIhF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,UAAI,OAAOmJ,QAAP,KAAoB,QAAxB,EAAkC;IAChC,cAAMC,OAAO,GAAGnM,QAAQ,CAACnB,aAAT,CAAuB,KAAvB,CAAhB;IACAsN,QAAAA,OAAO,CAAClI,SAAR,GAAoBiI,QAApB;;IACA,eAAOC,OAAO,CAACC,UAAf,EAA2B;IACzB,eAAKrJ,CAAL,EAAQsJ,WAAR,CAAoBF,OAAO,CAACC,UAA5B;IACD;IACF,OAND,MAMO,IAAIF,QAAQ,YAAYlK,IAAxB,EAA8B;IACnC,aAAK,IAAI0E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwF,QAAQ,CAAClO,MAA7B,EAAqC0I,CAAC,IAAI,CAA1C,EAA6C;IAC3C,eAAK3D,CAAL,EAAQsJ,WAAR,CAAoBH,QAAQ,CAACxF,CAAD,CAA5B;IACD;IACF,OAJM,MAIA;IACL,aAAK3D,CAAL,EAAQsJ,WAAR,CAAoBH,QAApB;IACD;IACF;IACF;;IAED,SAAO,IAAP;IACD;;IACD,SAASI,QAAT,CAAkBC,MAAlB,EAA0B;IACxB3I,EAAAA,CAAC,CAAC2I,MAAD,CAAD,CAAUP,MAAV,CAAiB,IAAjB;IACA,SAAO,IAAP;IACD;;IACD,SAASQ,OAAT,CAAiBN,QAAjB,EAA2B;IACzB,QAAMlM,QAAQ,GAAGF,WAAW,EAA5B;IACA,MAAIiD,CAAJ;IACA,MAAI2D,CAAJ;;IACA,OAAK3D,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,KAAK/E,MAArB,EAA6B+E,CAAC,IAAI,CAAlC,EAAqC;IACnC,QAAI,OAAOmJ,QAAP,KAAoB,QAAxB,EAAkC;IAChC,YAAMC,OAAO,GAAGnM,QAAQ,CAACnB,aAAT,CAAuB,KAAvB,CAAhB;IACAsN,MAAAA,OAAO,CAAClI,SAAR,GAAoBiI,QAApB;;IACA,WAAKxF,CAAC,GAAGyF,OAAO,CAACpN,UAAR,CAAmBf,MAAnB,GAA4B,CAArC,EAAwC0I,CAAC,IAAI,CAA7C,EAAgDA,CAAC,IAAI,CAArD,EAAwD;IACtD,aAAK3D,CAAL,EAAQ0J,YAAR,CAAqBN,OAAO,CAACpN,UAAR,CAAmB2H,CAAnB,CAArB,EAA4C,KAAK3D,CAAL,EAAQhE,UAAR,CAAmB,CAAnB,CAA5C;IACD;IACF,KAND,MAMO,IAAImN,QAAQ,YAAYlK,IAAxB,EAA8B;IACnC,WAAK0E,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGwF,QAAQ,CAAClO,MAAzB,EAAiC0I,CAAC,IAAI,CAAtC,EAAyC;IACvC,aAAK3D,CAAL,EAAQ0J,YAAR,CAAqBP,QAAQ,CAACxF,CAAD,CAA7B,EAAkC,KAAK3D,CAAL,EAAQhE,UAAR,CAAmB,CAAnB,CAAlC;IACD;IACF,KAJM,MAIA;IACL,WAAKgE,CAAL,EAAQ0J,YAAR,CAAqBP,QAArB,EAA+B,KAAKnJ,CAAL,EAAQhE,UAAR,CAAmB,CAAnB,CAA/B;IACD;IACF;;IACD,SAAO,IAAP;IACD;;IACD,SAAS2N,SAAT,CAAmBH,MAAnB,EAA2B;IACzB3I,EAAAA,CAAC,CAAC2I,MAAD,CAAD,CAAUC,OAAV,CAAkB,IAAlB;IACA,SAAO,IAAP;IACD;;IACD,SAASC,YAAT,CAAsBhJ,QAAtB,EAAgC;IAC9B,QAAMkJ,MAAM,GAAG/I,CAAC,CAACH,QAAD,CAAhB;;IACA,OAAK,IAAIV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,QAAI4J,MAAM,CAAC3O,MAAP,KAAkB,CAAtB,EAAyB;IACvB2O,MAAAA,MAAM,CAAC,CAAD,CAAN,CAAUC,UAAV,CAAqBH,YAArB,CAAkC,KAAK1J,CAAL,CAAlC,EAA2C4J,MAAM,CAAC,CAAD,CAAjD;IACD,KAFD,MAEO,IAAIA,MAAM,CAAC3O,MAAP,GAAgB,CAApB,EAAuB;IAC5B,WAAK,IAAI0I,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiG,MAAM,CAAC3O,MAA3B,EAAmC0I,CAAC,IAAI,CAAxC,EAA2C;IACzCiG,QAAAA,MAAM,CAACjG,CAAD,CAAN,CAAUkG,UAAV,CAAqBH,YAArB,CAAkC,KAAK1J,CAAL,EAAQ8J,SAAR,CAAkB,IAAlB,CAAlC,EAA2DF,MAAM,CAACjG,CAAD,CAAjE;IACD;IACF;IACF;IACF;;IACD,SAASoG,WAAT,CAAqBrJ,QAArB,EAA+B;IAC7B,QAAMsJ,KAAK,GAAGnJ,CAAC,CAACH,QAAD,CAAf;;IACA,OAAK,IAAIV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,QAAIgK,KAAK,CAAC/O,MAAN,KAAiB,CAArB,EAAwB;IACtB+O,MAAAA,KAAK,CAAC,CAAD,CAAL,CAASH,UAAT,CAAoBH,YAApB,CAAiC,KAAK1J,CAAL,CAAjC,EAA0CgK,KAAK,CAAC,CAAD,CAAL,CAASC,WAAnD;IACD,KAFD,MAEO,IAAID,KAAK,CAAC/O,MAAN,GAAe,CAAnB,EAAsB;IAC3B,WAAK,IAAI0I,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqG,KAAK,CAAC/O,MAA1B,EAAkC0I,CAAC,IAAI,CAAvC,EAA0C;IACxCqG,QAAAA,KAAK,CAACrG,CAAD,CAAL,CAASkG,UAAT,CAAoBH,YAApB,CACE,KAAK1J,CAAL,EAAQ8J,SAAR,CAAkB,IAAlB,CADF,EAEEE,KAAK,CAACrG,CAAD,CAAL,CAASsG,WAFX;IAID;IACF;IACF;IACF;;IACD,SAASC,IAAT,CAAcxJ,QAAd,EAAwB;IACtB,MAAI,KAAKzF,MAAL,GAAc,CAAlB,EAAqB;IACnB,QAAIyF,QAAJ,EAAc;IACZ,UACE,KAAK,CAAL,EAAQyJ,kBAAR,IACAtJ,CAAC,CAAC,KAAK,CAAL,EAAQsJ,kBAAT,CAAD,CAA8BtF,EAA9B,CAAiCnE,QAAjC,CAFF,EAGE;IACA,eAAOG,CAAC,CAAC,CAAC,KAAK,CAAL,EAAQsJ,kBAAT,CAAD,CAAR;IACD;;IACD,aAAOtJ,CAAC,CAAC,EAAD,CAAR;IACD;;IAED,QAAI,KAAK,CAAL,EAAQsJ,kBAAZ,EAAgC,OAAOtJ,CAAC,CAAC,CAAC,KAAK,CAAL,EAAQsJ,kBAAT,CAAD,CAAR;IAChC,WAAOtJ,CAAC,CAAC,EAAD,CAAR;IACD;;IACD,SAAOA,CAAC,CAAC,EAAD,CAAR;IACD;;IACD,SAASuJ,OAAT,CAAiB1J,QAAjB,EAA2B;IACzB,QAAM2J,OAAO,GAAG,EAAhB;IACA,MAAI9K,EAAE,GAAG,KAAK,CAAL,CAAT;IACA,MAAI,CAACA,EAAL,EAAS,OAAOsB,CAAC,CAAC,EAAD,CAAR;;IACT,SAAOtB,EAAE,CAAC4K,kBAAV,EAA8B;IAC5B,UAAMD,IAAI,GAAG3K,EAAE,CAAC4K,kBAAhB,CAD4B;;IAE5B,QAAIzJ,QAAJ,EAAc;IACZ,UAAIG,CAAC,CAACqJ,IAAD,CAAD,CAAQrF,EAAR,CAAWnE,QAAX,CAAJ,EAA0B2J,OAAO,CAAC5K,IAAR,CAAayK,IAAb;IAC3B,KAFD,MAEOG,OAAO,CAAC5K,IAAR,CAAayK,IAAb;;IACP3K,IAAAA,EAAE,GAAG2K,IAAL;IACD;;IACD,SAAOrJ,CAAC,CAACwJ,OAAD,CAAR;IACD;;IACD,SAASC,IAAT,CAAc5J,QAAd,EAAwB;IACtB,MAAI,KAAKzF,MAAL,GAAc,CAAlB,EAAqB;IACnB,UAAMsE,EAAE,GAAG,KAAK,CAAL,CAAX;;IACA,QAAImB,QAAJ,EAAc;IACZ,UACEnB,EAAE,CAACgL,sBAAH,IACA1J,CAAC,CAACtB,EAAE,CAACgL,sBAAJ,CAAD,CAA6B1F,EAA7B,CAAgCnE,QAAhC,CAFF,EAGE;IACA,eAAOG,CAAC,CAAC,CAACtB,EAAE,CAACgL,sBAAJ,CAAD,CAAR;IACD;;IACD,aAAO1J,CAAC,CAAC,EAAD,CAAR;IACD;;IAED,QAAItB,EAAE,CAACgL,sBAAP,EAA+B,OAAO1J,CAAC,CAAC,CAACtB,EAAE,CAACgL,sBAAJ,CAAD,CAAR;IAC/B,WAAO1J,CAAC,CAAC,EAAD,CAAR;IACD;;IACD,SAAOA,CAAC,CAAC,EAAD,CAAR;IACD;;IACD,SAAS2J,OAAT,CAAiB9J,QAAjB,EAA2B;IACzB,QAAM+J,OAAO,GAAG,EAAhB;IACA,MAAIlL,EAAE,GAAG,KAAK,CAAL,CAAT;IACA,MAAI,CAACA,EAAL,EAAS,OAAOsB,CAAC,CAAC,EAAD,CAAR;;IACT,SAAOtB,EAAE,CAACgL,sBAAV,EAAkC;IAChC,UAAMD,IAAI,GAAG/K,EAAE,CAACgL,sBAAhB,CADgC;;IAEhC,QAAI7J,QAAJ,EAAc;IACZ,UAAIG,CAAC,CAACyJ,IAAD,CAAD,CAAQzF,EAAR,CAAWnE,QAAX,CAAJ,EAA0B+J,OAAO,CAAChL,IAAR,CAAa6K,IAAb;IAC3B,KAFD,MAEOG,OAAO,CAAChL,IAAR,CAAa6K,IAAb;;IACP/K,IAAAA,EAAE,GAAG+K,IAAL;IACD;;IACD,SAAOzJ,CAAC,CAAC4J,OAAD,CAAR;IACD;;IACD,SAASC,QAAT,CAAkBhK,QAAlB,EAA4B;IAC1B,SAAO,KAAK0J,OAAL,CAAa1J,QAAb,EAAuBkB,GAAvB,CAA2B,KAAK4I,OAAL,CAAa9J,QAAb,CAA3B,CAAP;IACD;;IACD,SAAS8I,MAAT,CAAgB9I,QAAhB,EAA0B;IACxB,QAAMqE,OAAO,GAAG,EAAhB,CADwB;;IAExB,OAAK,IAAI/E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,QAAI,KAAKA,CAAL,EAAQ6J,UAAR,KAAuB,IAA3B,EAAiC;IAC/B,UAAInJ,QAAJ,EAAc;IACZ,YAAIG,CAAC,CAAC,KAAKb,CAAL,EAAQ6J,UAAT,CAAD,CAAsBhF,EAAtB,CAAyBnE,QAAzB,CAAJ,EACEqE,OAAO,CAACtF,IAAR,CAAa,KAAKO,CAAL,EAAQ6J,UAArB;IACH,OAHD,MAGO;IACL9E,QAAAA,OAAO,CAACtF,IAAR,CAAa,KAAKO,CAAL,EAAQ6J,UAArB;IACD;IACF;IACF;;IACD,SAAOhJ,CAAC,CAACkE,OAAD,CAAR;IACD;;IACD,SAASA,OAAT,CAAiBrE,QAAjB,EAA2B;IACzB,QAAMqE,OAAO,GAAG,EAAhB,CADyB;;IAEzB,OAAK,IAAI/E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,QAAIwJ,MAAM,GAAG,KAAKxJ,CAAL,EAAQ6J,UAArB,CADuC;;IAEvC,WAAOL,MAAP,EAAe;IACb,UAAI9I,QAAJ,EAAc;IACZ,YAAIG,CAAC,CAAC2I,MAAD,CAAD,CAAU3E,EAAV,CAAanE,QAAb,CAAJ,EAA4BqE,OAAO,CAACtF,IAAR,CAAa+J,MAAb;IAC7B,OAFD,MAEO;IACLzE,QAAAA,OAAO,CAACtF,IAAR,CAAa+J,MAAb;IACD;;IACDA,MAAAA,MAAM,GAAGA,MAAM,CAACK,UAAhB;IACD;IACF;;IACD,SAAOhJ,CAAC,CAACkE,OAAD,CAAR;IACD;;IACD,SAAS4F,OAAT,CAAiBjK,QAAjB,EAA2B;IACzB,MAAIiK,OAAO,GAAG,IAAd,CADyB;;IAEzB,MAAI,OAAOjK,QAAP,KAAoB,WAAxB,EAAqC;IACnC,WAAOG,CAAC,CAAC,EAAD,CAAR;IACD;;IACD,MAAI,CAAC8J,OAAO,CAAC9F,EAAR,CAAWnE,QAAX,CAAL,EAA2B;IACzBiK,IAAAA,OAAO,GAAGA,OAAO,CAAC5F,OAAR,CAAgBrE,QAAhB,EAA0BqI,EAA1B,CAA6B,CAA7B,CAAV;IACD;;IACD,SAAO4B,OAAP;IACD;;IACD,SAASC,IAAT,CAAclK,QAAd,EAAwB;IACtB,QAAMmK,aAAa,GAAG,EAAtB;;IACA,OAAK,IAAI7K,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,UAAM8K,KAAK,GAAG,KAAK9K,CAAL,EAAQtE,gBAAR,CAAyBgF,QAAzB,CAAd;;IACA,SAAK,IAAIiD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmH,KAAK,CAAC7P,MAA1B,EAAkC0I,CAAC,IAAI,CAAvC,EAA0C;IACxCkH,MAAAA,aAAa,CAACpL,IAAd,CAAmBqL,KAAK,CAACnH,CAAD,CAAxB;IACD;IACF;;IACD,SAAO9C,CAAC,CAACgK,aAAD,CAAR;IACD;;IACD,SAAS9O,QAAT,CAAkB2E,QAAlB,EAA4B;IAC1B,QAAM3E,QAAQ,GAAG,EAAjB,CAD0B;;IAE1B,OAAK,IAAIiE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,UAAMhE,UAAU,GAAG,KAAKgE,CAAL,EAAQjE,QAA3B;;IAEA,SAAK,IAAI4H,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG3H,UAAU,CAACf,MAA/B,EAAuC0I,CAAC,IAAI,CAA5C,EAA+C;IAC7C,UAAI,CAACjD,QAAD,IAAaG,CAAC,CAAC7E,UAAU,CAAC2H,CAAD,CAAX,CAAD,CAAiBkB,EAAjB,CAAoBnE,QAApB,CAAjB,EAAgD;IAC9C3E,QAAAA,QAAQ,CAAC0D,IAAT,CAAczD,UAAU,CAAC2H,CAAD,CAAxB;IACD;IACF;IACF;;IACD,SAAO9C,CAAC,CAAC9E,QAAD,CAAR;IACD;;IACD,SAAS+F,MAAT,GAAkB;IAChB,OAAK,IAAI9B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,QAAI,KAAKA,CAAL,EAAQ6J,UAAZ,EAAwB,KAAK7J,CAAL,EAAQ6J,UAAR,CAAmBkB,WAAnB,CAA+B,KAAK/K,CAAL,CAA/B;IACzB;;IACD,SAAO,IAAP;IACD;;IACD,SAASgL,MAAT,GAAkB;IAChB,SAAO,KAAKlJ,MAAL,EAAP;IACD;;IACD,SAASF,GAAT,CAAa,GAAGsH,GAAhB,EAAqB;IACnB,QAAMrD,GAAG,GAAG,IAAZ;IACA,MAAI7F,CAAJ;IACA,MAAI2D,CAAJ;;IACA,OAAK3D,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGkJ,GAAG,CAACjO,MAApB,EAA4B+E,CAAC,IAAI,CAAjC,EAAoC;IAClC,UAAMiL,KAAK,GAAGpK,CAAC,CAACqI,GAAG,CAAClJ,CAAD,CAAJ,CAAf;;IACA,SAAK2D,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGsH,KAAK,CAAChQ,MAAtB,EAA8B0I,CAAC,IAAI,CAAnC,EAAsC;IACpCkC,MAAAA,GAAG,CAACpG,IAAJ,CAASwL,KAAK,CAACtH,CAAD,CAAd;IACD;IACF;;IACD,SAAOkC,GAAP;IACD;;IACD,SAASqF,KAAT,GAAiB;IACf,OAAK,IAAIlL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,UAAMT,EAAE,GAAG,KAAKS,CAAL,CAAX;;IACA,QAAIT,EAAE,CAAC4B,QAAH,KAAgB,CAApB,EAAuB;IACrB,WAAK,IAAIwC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGpE,EAAE,CAACvD,UAAH,CAAcf,MAAlC,EAA0C0I,CAAC,IAAI,CAA/C,EAAkD;IAChD,YAAIpE,EAAE,CAACvD,UAAH,CAAc2H,CAAd,EAAiBkG,UAArB,EAAiC;IAC/BtK,UAAAA,EAAE,CAACvD,UAAH,CAAc2H,CAAd,EAAiBkG,UAAjB,CAA4BkB,WAA5B,CAAwCxL,EAAE,CAACvD,UAAH,CAAc2H,CAAd,CAAxC;IACD;IACF;;IACDpE,MAAAA,EAAE,CAACiJ,WAAH,GAAiB,EAAjB;IACD;IACF;;IACD,SAAO,IAAP;IACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICnzBD;;IAGA,SAAS2C,QAAT,CAAkB,GAAGhH,IAArB,EAA2B;IACzB,QAAM1F,MAAM,GAAGF,SAAS,EAAxB;IACA,MAAI,CAACyJ,IAAD,EAAOD,GAAP,EAAY/D,QAAZ,EAAsBoH,MAAtB,EAA8BhN,QAA9B,IAA0C+F,IAA9C;;IACA,MAAIA,IAAI,CAAClJ,MAAL,KAAgB,CAAhB,IAAqB,OAAOmQ,MAAP,KAAkB,UAA3C,EAAuD;IACrDhN,IAAAA,QAAQ,GAAGgN,MAAX;IACA,KAACpD,IAAD,EAAOD,GAAP,EAAY/D,QAAZ,EAAsB5F,QAAtB,EAAgCgN,MAAhC,IAA0CjH,IAA1C;IACD;;IACD,MAAI,OAAOiH,MAAP,KAAkB,WAAtB,EAAmCA,MAAM,GAAG,OAAT;IAEnC,SAAO,KAAKhD,IAAL,CAAU,SAASiD,OAAT,GAAmB;IAClC,UAAM9L,EAAE,GAAG,IAAX;IACA,QAAI+L,UAAJ;IACA,QAAIC,WAAJ;IACA,QAAIC,MAAJ;IACA,QAAIC,OAAJ;IACA,QAAIC,MAAJ;IACA,QAAIC,OAAJ;IACA,QAAIhE,SAAJ,CARkC;;IASlC,QAAIE,UAAJ,CATkC;;IAUlC,QAAI+D,UAAU,GAAG7D,GAAG,GAAG,CAAN,IAAWA,GAAG,KAAK,CAApC;IACA,QAAI8D,WAAW,GAAG7D,IAAI,GAAG,CAAP,IAAYA,IAAI,KAAK,CAAvC;;IACA,QAAI,OAAOoD,MAAP,KAAkB,WAAtB,EAAmC;IACjCA,MAAAA,MAAM,GAAG,OAAT;IACD;;IACD,QAAIQ,UAAJ,EAAgB;IACdN,MAAAA,UAAU,GAAG/L,EAAE,CAACoI,SAAhB;;IACA,UAAI,CAAC3D,QAAL,EAAe;IACbzE,QAAAA,EAAE,CAACoI,SAAH,GAAeI,GAAf;IACD;IACF;;IACD,QAAI8D,WAAJ,EAAiB;IACfN,MAAAA,WAAW,GAAGhM,EAAE,CAACsI,UAAjB;;IACA,UAAI,CAAC7D,QAAL,EAAe;IACbzE,QAAAA,EAAE,CAACsI,UAAH,GAAgBG,IAAhB;IACD;IACF;;IACD,QAAI,CAAChE,QAAL,EAAe;;IACf,QAAI4H,UAAJ,EAAgB;IACdJ,MAAAA,MAAM,GAAGjM,EAAE,CAACuM,YAAH,GAAkBvM,EAAE,CAAC8H,YAA9B;IACAqE,MAAAA,MAAM,GAAGK,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASlE,GAAT,EAAcyD,MAAd,CAAT,EAAgC,CAAhC,CAAT;IACD;;IACD,QAAIK,WAAJ,EAAiB;IACfJ,MAAAA,OAAO,GAAGlM,EAAE,CAAC2M,WAAH,GAAiB3M,EAAE,CAAC0H,WAA9B;IACA0E,MAAAA,OAAO,GAAGI,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASjE,IAAT,EAAeyD,OAAf,CAAT,EAAkC,CAAlC,CAAV;IACD;;IACD,QAAIU,SAAS,GAAG,IAAhB;IACA,QAAIP,UAAU,IAAIF,MAAM,KAAKJ,UAA7B,EAAyCM,UAAU,GAAG,KAAb;IACzC,QAAIC,WAAW,IAAIF,OAAO,KAAKJ,WAA/B,EAA4CM,WAAW,GAAG,KAAd;;IAC5C,aAASO,MAAT,CAAgBC,IAAI,GAAG,IAAIvO,IAAJ,GAAWwO,OAAX,EAAvB,EAA6C;IAC3C,UAAIH,SAAS,KAAK,IAAlB,EAAwB;IACtBA,QAAAA,SAAS,GAAGE,IAAZ;IACD;;IACD,YAAME,QAAQ,GAAGR,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAAS,CAACI,IAAI,GAAGF,SAAR,IAAqBnI,QAA9B,EAAwC,CAAxC,CAAT,EAAqD,CAArD,CAAjB;IACA,YAAMwI,YAAY,GAChBpB,MAAM,KAAK,QAAX,GAAsBmB,QAAtB,GAAiC,MAAMR,IAAI,CAACU,GAAL,CAASF,QAAQ,GAAGR,IAAI,CAACW,EAAzB,IAA+B,CADxE;IAEA,UAAIC,IAAJ;IACA,UAAIf,UAAJ,EACEjE,SAAS,GAAG2D,UAAU,GAAGkB,YAAY,IAAId,MAAM,GAAGJ,UAAb,CAArC;IACF,UAAIO,WAAJ,EACEhE,UAAU,GAAG0D,WAAW,GAAGiB,YAAY,IAAIb,OAAO,GAAGJ,WAAd,CAAvC;;IACF,UAAIK,UAAU,IAAIF,MAAM,GAAGJ,UAAvB,IAAqC3D,SAAS,IAAI+D,MAAtD,EAA8D;IAC5DnM,QAAAA,EAAE,CAACoI,SAAH,GAAe+D,MAAf;IACAiB,QAAAA,IAAI,GAAG,IAAP;IACD;;IACD,UAAIf,UAAU,IAAIF,MAAM,GAAGJ,UAAvB,IAAqC3D,SAAS,IAAI+D,MAAtD,EAA8D;IAC5DnM,QAAAA,EAAE,CAACoI,SAAH,GAAe+D,MAAf;IACAiB,QAAAA,IAAI,GAAG,IAAP;IACD;;IACD,UAAId,WAAW,IAAIF,OAAO,GAAGJ,WAAzB,IAAwC1D,UAAU,IAAI8D,OAA1D,EAAmE;IACjEpM,QAAAA,EAAE,CAACsI,UAAH,GAAgB8D,OAAhB;IACAgB,QAAAA,IAAI,GAAG,IAAP;IACD;;IACD,UAAId,WAAW,IAAIF,OAAO,GAAGJ,WAAzB,IAAwC1D,UAAU,IAAI8D,OAA1D,EAAmE;IACjEpM,QAAAA,EAAE,CAACsI,UAAH,GAAgB8D,OAAhB;IACAgB,QAAAA,IAAI,GAAG,IAAP;IACD;;IAED,UAAIA,IAAJ,EAAU;IACR,YAAIvO,QAAJ,EAAcA,QAAQ;IACtB;IACD;;IACD,UAAIwN,UAAJ,EAAgBrM,EAAE,CAACoI,SAAH,GAAeA,SAAf;IAChB,UAAIkE,WAAJ,EAAiBtM,EAAE,CAACsI,UAAH,GAAgBA,UAAhB;IACjBpJ,MAAAA,MAAM,CAACN,qBAAP,CAA6BiO,MAA7B;IACD;;IACD3N,IAAAA,MAAM,CAACN,qBAAP,CAA6BiO,MAA7B;IACD,GA7EM,CAAP;IA8ED;;;IAED,SAASzE,SAAT,CAAmB,GAAGxD,IAAtB,EAA4B;IAC1B,MAAI,CAAC4D,GAAD,EAAM/D,QAAN,EAAgBoH,MAAhB,EAAwBhN,QAAxB,IAAoC+F,IAAxC;;IACA,MAAIA,IAAI,CAAClJ,MAAL,KAAgB,CAAhB,IAAqB,OAAOmQ,MAAP,KAAkB,UAA3C,EAAuD;IACrD,KAACrD,GAAD,EAAM/D,QAAN,EAAgB5F,QAAhB,EAA0BgN,MAA1B,IAAoCjH,IAApC;IACD;;IACD,QAAM0B,GAAG,GAAG,IAAZ;;IACA,MAAI,OAAOkC,GAAP,KAAe,WAAnB,EAAgC;IAC9B,QAAIlC,GAAG,CAAC5K,MAAJ,GAAa,CAAjB,EAAoB,OAAO4K,GAAG,CAAC,CAAD,CAAH,CAAO8B,SAAd;IACpB,WAAO,IAAP;IACD;;IACD,SAAO9B,GAAG,CAACsF,QAAJ,CAAa3I,SAAb,EAAwBuF,GAAxB,EAA6B/D,QAA7B,EAAuCoH,MAAvC,EAA+ChN,QAA/C,CAAP;IACD;;IACD,SAASyJ,UAAT,CAAoB,GAAG1D,IAAvB,EAA6B;IAC3B,MAAI,CAAC6D,IAAD,EAAOhE,QAAP,EAAiBoH,MAAjB,EAAyBhN,QAAzB,IAAqC+F,IAAzC;;IACA,MAAIA,IAAI,CAAClJ,MAAL,KAAgB,CAAhB,IAAqB,OAAOmQ,MAAP,KAAkB,UAA3C,EAAuD;IACrD,KAACpD,IAAD,EAAOhE,QAAP,EAAiB5F,QAAjB,EAA2BgN,MAA3B,IAAqCjH,IAArC;IACD;;IACD,QAAM0B,GAAG,GAAG,IAAZ;;IACA,MAAI,OAAOmC,IAAP,KAAgB,WAApB,EAAiC;IAC/B,QAAInC,GAAG,CAAC5K,MAAJ,GAAa,CAAjB,EAAoB,OAAO4K,GAAG,CAAC,CAAD,CAAH,CAAOgC,UAAd;IACpB,WAAO,IAAP;IACD;;IACD,SAAOhC,GAAG,CAACsF,QAAJ,CAAanD,IAAb,EAAmBxF,SAAnB,EAA8BwB,QAA9B,EAAwCoH,MAAxC,EAAgDhN,QAAhD,CAAP;IACD;;;;;;;;;ICnHD;;IAGA,SAASiN,OAAT,CAAiBuB,YAAjB,EAA+BC,aAA/B,EAA8C;IAC5C,QAAMpO,MAAM,GAAGF,SAAS,EAAxB;IACA,QAAM2K,GAAG,GAAG,IAAZ;IACA,QAAMtI,CAAC,GAAG;IACRiC,IAAAA,KAAK,EAAEnI,MAAM,CAACoS,MAAP,CAAc,EAAd,EAAkBF,YAAlB,CADC;IAERG,IAAAA,MAAM,EAAErS,MAAM,CAACoS,MAAP,CACN;IACE9I,MAAAA,QAAQ,EAAE,GADZ;IAEEoH,MAAAA,MAAM,EAAE,OAFV;;IAGE;IACR;IACA;IACA;IACA;;IAPM,KADM,EAUNyB,aAVM,CAFA;IAeRG,IAAAA,QAAQ,EAAE9D,GAfF;IAgBR+D,IAAAA,SAAS,EAAE,KAhBH;IAiBRC,IAAAA,GAAG,EAAE,EAjBG;;IAmBRC,IAAAA,cAAc,CAAC/B,MAAD,EAASmB,QAAT,EAAmB;IAC/B,UAAInB,MAAM,KAAK,OAAf,EAAwB;IACtB,eAAO,MAAMW,IAAI,CAACU,GAAL,CAASF,QAAQ,GAAGR,IAAI,CAACW,EAAzB,IAA+B,CAA5C;IACD;;IACD,UAAI,OAAOtB,MAAP,KAAkB,UAAtB,EAAkC;IAChC,eAAOA,MAAM,CAACmB,QAAD,CAAb;IACD;;IACD,aAAOA,QAAP;IACD,KA3BO;;IA4BRa,IAAAA,IAAI,GAAG;IACL,UAAIxM,CAAC,CAACyM,OAAN,EAAe;IACb5O,QAAAA,MAAM,CAACJ,oBAAP,CAA4BuC,CAAC,CAACyM,OAA9B;IACD;;IACDzM,MAAAA,CAAC,CAACqM,SAAF,GAAc,KAAd;IACArM,MAAAA,CAAC,CAACoM,QAAF,CAAW5E,IAAX,CAAiB7I,EAAD,IAAQ;IACtB,cAAM+N,OAAO,GAAG/N,EAAhB;IACA,eAAO+N,OAAO,CAACC,mBAAf;IACD,OAHD;IAIA3M,MAAAA,CAAC,CAACsM,GAAF,GAAQ,EAAR;IACD,KAtCO;;IAuCRP,IAAAA,IAAI,CAACa,QAAD,EAAW;IACb5M,MAAAA,CAAC,CAACqM,SAAF,GAAc,KAAd;IACArM,MAAAA,CAAC,CAACoM,QAAF,CAAW5E,IAAX,CAAiB7I,EAAD,IAAQ;IACtB,cAAM+N,OAAO,GAAG/N,EAAhB;IACA,eAAO+N,OAAO,CAACC,mBAAf;IACD,OAHD;IAIA,UAAIC,QAAJ,EAAcA,QAAQ,CAACtE,GAAD,CAAR;;IACd,UAAItI,CAAC,CAACsM,GAAF,CAAMjS,MAAN,GAAe,CAAnB,EAAsB;IACpB,cAAMiS,GAAG,GAAGtM,CAAC,CAACsM,GAAF,CAAMO,KAAN,EAAZ;IACA7M,QAAAA,CAAC,CAACyK,OAAF,CAAU6B,GAAG,CAAC,CAAD,CAAb,EAAkBA,GAAG,CAAC,CAAD,CAArB;IACD;IACF,KAlDO;;IAmDR7B,IAAAA,OAAO,CAACxI,KAAD,EAAQkK,MAAR,EAAgB;IACrB,UAAInM,CAAC,CAACqM,SAAN,EAAiB;IACfrM,QAAAA,CAAC,CAACsM,GAAF,CAAMzN,IAAN,CAAW,CAACoD,KAAD,EAAQkK,MAAR,CAAX;IACA,eAAOnM,CAAP;IACD;;IACD,YAAMoM,QAAQ,GAAG,EAAjB,CALqB;;IAQrBpM,MAAAA,CAAC,CAACoM,QAAF,CAAW5E,IAAX,CAAgB,CAAC7I,EAAD,EAAK8I,KAAL,KAAe;IAC7B,YAAIqF,gBAAJ;IACA,YAAIC,YAAJ;IACA,YAAIC,IAAJ;IACA,YAAIC,UAAJ;IACA,YAAIC,cAAJ;IAEA,YAAI,CAACvO,EAAE,CAACgO,mBAAR,EAA6B3M,CAAC,CAACoM,QAAF,CAAW3E,KAAX,EAAkBkF,mBAAlB,GAAwC3M,CAAxC;IAE7BoM,QAAAA,QAAQ,CAAC3E,KAAD,CAAR,GAAkB;IAChB0F,UAAAA,SAAS,EAAExO;IADK,SAAlB;IAGA7E,QAAAA,MAAM,CAACI,IAAP,CAAY+H,KAAZ,EAAmB9H,OAAnB,CAA4B6H,IAAD,IAAU;IACnC8K,UAAAA,gBAAgB,GAAGjP,MAAM,CACtBd,gBADgB,CACC4B,EADD,EACK,IADL,EAEhB3B,gBAFgB,CAECgF,IAFD,EAGhBvC,OAHgB,CAGR,GAHQ,EAGH,GAHG,CAAnB;IAIAsN,UAAAA,YAAY,GAAGrK,UAAU,CAACoK,gBAAD,CAAzB;IACAE,UAAAA,IAAI,GAAGF,gBAAgB,CAACrN,OAAjB,CAAyBsN,YAAzB,EAAuC,EAAvC,CAAP;IACAE,UAAAA,UAAU,GAAGvK,UAAU,CAACT,KAAK,CAACD,IAAD,CAAN,CAAvB;IACAkL,UAAAA,cAAc,GAAGjL,KAAK,CAACD,IAAD,CAAL,GAAcgL,IAA/B;IACAZ,UAAAA,QAAQ,CAAC3E,KAAD,CAAR,CAAgBzF,IAAhB,IAAwB;IACtB8K,YAAAA,gBADsB;IAEtBC,YAAAA,YAFsB;IAGtBC,YAAAA,IAHsB;IAItBC,YAAAA,UAJsB;IAKtBC,YAAAA,cALsB;IAMtBE,YAAAA,YAAY,EAAEL;IANQ,WAAxB;IAQD,SAjBD;IAkBD,OA9BD;IAgCA,UAAIxB,SAAS,GAAG,IAAhB;IACA,UAAIE,IAAJ;IACA,UAAI4B,YAAY,GAAG,CAAnB;IACA,UAAIC,SAAS,GAAG,CAAhB;IACA,UAAIvB,IAAJ;IACA,UAAIwB,KAAK,GAAG,KAAZ;IAEAvN,MAAAA,CAAC,CAACqM,SAAF,GAAc,IAAd;;IAEA,eAASb,MAAT,GAAkB;IAChBC,QAAAA,IAAI,GAAG,IAAIvO,IAAJ,GAAWwO,OAAX,EAAP;IACA,YAAIC,QAAJ;IACA,YAAIC,YAAJ,CAHgB;;IAKhB,YAAI,CAAC2B,KAAL,EAAY;IACVA,UAAAA,KAAK,GAAG,IAAR;IACA,cAAIpB,MAAM,CAACqB,KAAX,EAAkBrB,MAAM,CAACqB,KAAP,CAAalF,GAAb;IACnB;;IACD,YAAIiD,SAAS,KAAK,IAAlB,EAAwB;IACtBA,UAAAA,SAAS,GAAGE,IAAZ;IACD;;IACD,YAAIU,MAAM,CAACR,QAAX,EAAqB;IACnB;IACAQ,UAAAA,MAAM,CAACR,QAAP,CACErD,GADF,EAEE6C,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAAS,CAACI,IAAI,GAAGF,SAAR,IAAqBY,MAAM,CAAC/I,QAArC,EAA+C,CAA/C,CAAT,EAA4D,CAA5D,CAFF,EAGEmI,SAAS,GAAGY,MAAM,CAAC/I,QAAnB,GAA8BqI,IAA9B,GAAqC,CAArC,GACI,CADJ,GAEIF,SAAS,GAAGY,MAAM,CAAC/I,QAAnB,GAA8BqI,IALpC,EAMEF,SANF;IAQD;;IAEDa,QAAAA,QAAQ,CAACjS,OAAT,CAAkBuS,OAAD,IAAa;IAC5B,gBAAM/N,EAAE,GAAG+N,OAAX;IACA,cAAIX,IAAI,IAAIpN,EAAE,CAACoN,IAAf,EAAqB;IACrBjS,UAAAA,MAAM,CAACI,IAAP,CAAY+H,KAAZ,EAAmB9H,OAAnB,CAA4B6H,IAAD,IAAU;IACnC,gBAAI+J,IAAI,IAAIpN,EAAE,CAACoN,IAAf,EAAqB;IACrBJ,YAAAA,QAAQ,GAAGR,IAAI,CAACC,GAAL,CACTD,IAAI,CAACE,GAAL,CAAS,CAACI,IAAI,GAAGF,SAAR,IAAqBY,MAAM,CAAC/I,QAArC,EAA+C,CAA/C,CADS,EAET,CAFS,CAAX;IAIAwI,YAAAA,YAAY,GAAG5L,CAAC,CAACuM,cAAF,CAAiBJ,MAAM,CAAC3B,MAAxB,EAAgCmB,QAAhC,CAAf;IACA,kBAAM;IAAEoB,cAAAA,YAAF;IAAgBE,cAAAA,UAAhB;IAA4BD,cAAAA;IAA5B,gBAAqCrO,EAAE,CAACqD,IAAD,CAA7C;IACArD,YAAAA,EAAE,CAACqD,IAAD,CAAF,CAASoL,YAAT,GACEL,YAAY,GAAGnB,YAAY,IAAIqB,UAAU,GAAGF,YAAjB,CAD7B;IAEA,kBAAMK,YAAY,GAAGzO,EAAE,CAACqD,IAAD,CAAF,CAASoL,YAA9B;;IAEA,gBACGH,UAAU,GAAGF,YAAb,IAA6BK,YAAY,IAAIH,UAA9C,IACCA,UAAU,GAAGF,YAAb,IAA6BK,YAAY,IAAIH,UAFhD,EAGE;IACAtO,cAAAA,EAAE,CAACwO,SAAH,CAAa9R,KAAb,CAAmB2G,IAAnB,IAA2BiL,UAAU,GAAGD,IAAxC;IACAM,cAAAA,SAAS,IAAI,CAAb;;IACA,kBAAIA,SAAS,KAAKxT,MAAM,CAACI,IAAP,CAAY+H,KAAZ,EAAmB5H,MAArC,EAA6C;IAC3CsE,gBAAAA,EAAE,CAACoN,IAAH,GAAU,IAAV;IACAsB,gBAAAA,YAAY,IAAI,CAAhB;IACD;;IACD,kBAAIA,YAAY,KAAKjB,QAAQ,CAAC/R,MAA9B,EAAsC;IACpC0R,gBAAAA,IAAI,GAAG,IAAP;IACD;IACF;;IACD,gBAAIA,IAAJ,EAAU;IACR/L,cAAAA,CAAC,CAAC+L,IAAF,CAAOI,MAAM,CAACS,QAAd;IACA;IACD;;IACDjO,YAAAA,EAAE,CAACwO,SAAH,CAAa9R,KAAb,CAAmB2G,IAAnB,IAA2BoL,YAAY,GAAGJ,IAA1C;IACD,WA/BD;IAgCD,SAnCD;IAoCA,YAAIjB,IAAJ,EAAU,OA5DM;;IA8DhB/L,QAAAA,CAAC,CAACyM,OAAF,GAAY5O,MAAM,CAACN,qBAAP,CAA6BiO,MAA7B,CAAZ;IACD;;IACDxL,MAAAA,CAAC,CAACyM,OAAF,GAAY5O,MAAM,CAACN,qBAAP,CAA6BiO,MAA7B,CAAZ;IACA,aAAOxL,CAAP;IACD;;IAtKO,GAAV;;IAyKA,MAAIA,CAAC,CAACoM,QAAF,CAAW/R,MAAX,KAAsB,CAA1B,EAA6B;IAC3B,WAAOiO,GAAP;IACD;;IAED,MAAImF,eAAJ;;IACA,OAAK,IAAIrO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGY,CAAC,CAACoM,QAAF,CAAW/R,MAA/B,EAAuC+E,CAAC,IAAI,CAA5C,EAA+C;IAC7C,QAAIY,CAAC,CAACoM,QAAF,CAAWhN,CAAX,EAAcuN,mBAAlB,EAAuC;IACrCc,MAAAA,eAAe,GAAGzN,CAAC,CAACoM,QAAF,CAAWhN,CAAX,EAAcuN,mBAAhC;IACD,KAFD,MAEO3M,CAAC,CAACoM,QAAF,CAAWhN,CAAX,EAAcuN,mBAAd,GAAoC3M,CAApC;IACR;;IACD,MAAI,CAACyN,eAAL,EAAsB;IACpBA,IAAAA,eAAe,GAAGzN,CAAlB;IACD;;IAED,MAAIgM,YAAY,KAAK,MAArB,EAA6B;IAC3ByB,IAAAA,eAAe,CAACjB,IAAhB;IACD,GAFD,MAEO;IACLiB,IAAAA,eAAe,CAAChD,OAAhB,CAAwBzK,CAAC,CAACiC,KAA1B,EAAiCjC,CAAC,CAACmM,MAAnC;IACD;;IAED,SAAO7D,GAAP;IACD;;IAED,SAASkE,IAAT,GAAgB;IACd,QAAMlE,GAAG,GAAG,IAAZ;;IACA,OAAK,IAAIlJ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkJ,GAAG,CAACjO,MAAxB,EAAgC+E,CAAC,IAAI,CAArC,EAAwC;IACtC,QAAIkJ,GAAG,CAAClJ,CAAD,CAAH,CAAOuN,mBAAX,EAAgC;IAC9BrE,MAAAA,GAAG,CAAClJ,CAAD,CAAH,CAAOuN,mBAAP,CAA2BH,IAA3B;IACD;IACF;IACF;;;;;;;;IC3MD,MAAMkB,SAAS,GAAG,gBAAgB5M,KAAhB,CAAsB,GAAtB,CAAlB;;IACA,SAAS6M,QAAT,CAAkBlL,IAAlB,EAAwB;IACtB,WAASmL,YAAT,CAAsB,GAAGrK,IAAzB,EAA+B;IAC7B,QAAI,OAAOA,IAAI,CAAC,CAAD,CAAX,KAAmB,WAAvB,EAAoC;IAClC,WAAK,IAAInE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK/E,MAAzB,EAAiC+E,CAAC,IAAI,CAAtC,EAAyC;IACvC,YAAIsO,SAAS,CAACrO,OAAV,CAAkBoD,IAAlB,IAA0B,CAA9B,EAAiC;IAC/B,cAAIA,IAAI,IAAI,KAAKrD,CAAL,CAAZ,EAAqB,KAAKA,CAAL,EAAQqD,IAAR,IAArB,KACK;IACHxC,YAAAA,CAAC,CAAC,KAAKb,CAAL,CAAD,CAAD,CAAWiG,OAAX,CAAmB5C,IAAnB;IACD;IACF;IACF;;IACD,aAAO,IAAP;IACD;;IACD,WAAO,KAAKa,EAAL,CAAQb,IAAR,EAAc,GAAGc,IAAjB,CAAP;IACD;;IACD,SAAOqK,YAAP;IACD;;IACM,MAAMC,KAAK,GAAGF,QAAQ,CAAC,OAAD,CAAtB;IACA,MAAMhT,IAAI,GAAGgT,QAAQ,CAAC,MAAD,CAArB;IACA,MAAMG,KAAK,GAAGH,QAAQ,CAAC,OAAD,CAAtB;IACA,MAAMI,OAAO,GAAGJ,QAAQ,CAAC,SAAD,CAAxB;IACA,MAAMK,QAAQ,GAAGL,QAAQ,CAAC,UAAD,CAAzB;IACA,MAAMM,KAAK,GAAGN,QAAQ,CAAC,OAAD,CAAtB;IACA,MAAMO,OAAO,GAAGP,QAAQ,CAAC,SAAD,CAAxB;IACA,MAAMQ,QAAQ,GAAGR,QAAQ,CAAC,UAAD,CAAzB;IACA,MAAMS,MAAM,GAAGT,QAAQ,CAAC,QAAD,CAAvB;IACA,MAAMU,MAAM,GAAGV,QAAQ,CAAC,QAAD,CAAvB;IACA,MAAMW,SAAS,GAAGX,QAAQ,CAAC,WAAD,CAA1B;IACA,MAAMY,SAAS,GAAGZ,QAAQ,CAAC,WAAD,CAA1B;IACA,MAAMa,OAAO,GAAGb,QAAQ,CAAC,SAAD,CAAxB;IACA,MAAMc,UAAU,GAAGd,QAAQ,CAAC,YAAD,CAA3B;IACA,MAAMe,UAAU,GAAGf,QAAQ,CAAC,YAAD,CAA3B;IACA,MAAMgB,QAAQ,GAAGhB,QAAQ,CAAC,UAAD,CAAzB;IACA,MAAMiB,SAAS,GAAGjB,QAAQ,CAAC,WAAD,CAA1B;IACA,MAAMkB,UAAU,GAAGlB,QAAQ,CAAC,YAAD,CAA3B;IACA,MAAMmB,QAAQ,GAAGnB,QAAQ,CAAC,UAAD,CAAzB;IACA,MAAMoB,SAAS,GAAGpB,QAAQ,CAAC,WAAD,CAA1B;IACA,MAAMqB,MAAM,GAAGrB,QAAQ,CAAC,QAAD,CAAvB;IACA,MAAMsB,MAAM,GAAGtB,QAAQ,CAAC,QAAD,CAAvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICnCP,CAACuB,OAAD,EAAUD,QAAV,EAAkBxE,SAAlB,EAA2B0E,SAA3B,EAAsChV,OAAtC,CAA+CwF,KAAD,IAAW;IACvD7F,EAAAA,MAAM,CAACI,IAAP,CAAYyF,KAAZ,EAAmBxF,OAAnB,CAA4BiV,UAAD,IAAgB;IACzCnP,IAAAA,CAAC,CAACO,EAAF,CAAK4O,UAAL,IAAmBzP,KAAK,CAACyP,UAAD,CAAxB;IACD,GAFD;IAGD,CAJD;;;;;;;;"} \ No newline at end of file diff --git a/resources/web/guide/swiper/node_modules/dom7/dom7.min.js b/resources/web/guide/swiper/node_modules/dom7/dom7.min.js deleted file mode 100644 index f160069f42..0000000000 --- a/resources/web/guide/swiper/node_modules/dom7/dom7.min.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Dom7 4.0.1 - * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API - * https://framework7.io/docs/dom7.html - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: October 27, 2021 - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Dom7=e()}(this,(function(){"use strict";function t(t){return null!==t&&"object"==typeof t&&"constructor"in t&&t.constructor===Object}function e(n={},i={}){Object.keys(i).forEach((o=>{void 0===n[o]?n[o]=i[o]:t(i[o])&&t(n[o])&&Object.keys(i[o]).length>0&&e(n[o],i[o])}))}const n={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 t="undefined"!=typeof document?document:{};return e(t,n),t}const o={document:n,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:t=>"undefined"==typeof setTimeout?(t(),null):setTimeout(t,0),cancelAnimationFrame(t){"undefined"!=typeof setTimeout&&clearTimeout(t)}};function s(){const t="undefined"!=typeof window?window:{};return e(t,o),t}class r extends Array{constructor(t){super(...t||[]),function(t){const e=t.__proto__;Object.defineProperty(t,"__proto__",{get:()=>e,set(t){e.__proto__=t}})}(this)}}function l(t=[]){const e=[];return t.forEach((t=>{Array.isArray(t)?e.push(...l(t)):e.push(t)})),e}function h(t,e){return Array.prototype.filter.call(t,e)}function u(t,e){const n=s(),o=i();let l=[];if(!e&&t instanceof r)return t;if(!t)return new r(l);if("string"==typeof t){const n=t.trim();if(n.indexOf("<")>=0&&n.indexOf(">")>=0){let t="div";0===n.indexOf("t.split(" "))));return this.forEach((t=>{t.classList.add(...e)})),this},removeClass:function(...t){const e=l(t.map((t=>t.split(" "))));return this.forEach((t=>{t.classList.remove(...e)})),this},toggleClass:function(...t){const e=l(t.map((t=>t.split(" "))));this.forEach((t=>{e.forEach((e=>{t.classList.toggle(e)}))}))},hasClass:function(...t){const e=l(t.map((t=>t.split(" "))));return h(this,(t=>e.filter((e=>t.classList.contains(e))).length>0)).length>0},attr:function(t,e){if(1===arguments.length&&"string"==typeof t)return this[0]?this[0].getAttribute(t):void 0;for(let n=0;n=0&&(e[(n=o.name.split("data-")[1],n.toLowerCase().replace(/-(.)/g,((t,e)=>e.toUpperCase())))]=o.value)}var n;for(const t in e)"false"===e[t]?e[t]=!1:"true"===e[t]?e[t]=!0:parseFloat(e[t])===1*e[t]&&(e[t]*=1);return e},val:function(t){if(void 0===t){const t=this[0];if(!t)return;if(t.multiple&&"select"===t.nodeName.toLowerCase()){const e=[];for(let n=0;n=0;else n.value=t}return this},value:function(t){return this.val(t)},transform:function(t){for(let e=0;e=0;t-=1){const n=r[t];i&&n.listener===i||i&&n.listener&&n.listener.dom7proxy&&n.listener.dom7proxy===i?(s.removeEventListener(e,n.proxyListener,o),r.splice(t,1)):i||(s.removeEventListener(e,n.proxyListener,o),r.splice(t,1))}}}return this},once:function(...t){const e=this;let[n,i,o,s]=t;function r(...t){o.apply(this,t),e.off(n,i,r,s),r.dom7proxy&&delete r.dom7proxy}return"function"==typeof t[1]&&([n,o,s]=t,i=void 0),r.dom7proxy=o,e.on(n,i,r,s)},trigger:function(...t){const e=s(),n=t[0].split(" "),i=t[1];for(let o=0;oe>0)),o.dispatchEvent(n),o.dom7EventData=[],delete o.dom7EventData}}}return this},transitionEnd:function(t){const e=this;return t&&e.on("transitionend",(function n(i){i.target===this&&(t.call(this,i),e.off("transitionend",n))})),this},animationEnd:function(t){const e=this;return t&&e.on("animationend",(function n(i){i.target===this&&(t.call(this,i),e.off("animationend",n))})),this},width:function(){const t=s();return this[0]===t?t.innerWidth:this.length>0?parseFloat(this.css("width")):null},outerWidth:function(t){if(this.length>0){if(t){const t=this.styles();return this[0].offsetWidth+parseFloat(t.getPropertyValue("margin-right"))+parseFloat(t.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null},height:function(){const t=s();return this[0]===t?t.innerHeight:this.length>0?parseFloat(this.css("height")):null},outerHeight:function(t){if(this.length>0){if(t){const t=this.styles();return this[0].offsetHeight+parseFloat(t.getPropertyValue("margin-top"))+parseFloat(t.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null},offset:function(){if(this.length>0){const t=s(),e=i(),n=this[0],o=n.getBoundingClientRect(),r=e.body,l=n.clientTop||r.clientTop||0,h=n.clientLeft||r.clientLeft||0,u=n===t?t.scrollY:n.scrollTop,a=n===t?t.scrollX:n.scrollLeft;return{top:o.top+u-l,left:o.left+a-h}}return null},hide:function(){for(let t=0;t{t.apply(e,[e,n])})),this):this},filter:function(t){return u(h(this,t))},html:function(t){if(void 0===t)return this[0]?this[0].innerHTML:null;for(let e=0;ee-1)return u([]);if(t<0){const n=e+t;return u(n<0?[]:[this[n]])}return u([this[t]])},append:function(...t){let e;const n=i();for(let i=0;i=0;o-=1)this[n].insertBefore(i.childNodes[o],this[n].childNodes[0])}else if(t instanceof r)for(o=0;o1)for(let n=0;n1)for(let n=0;n0?t?this[0].nextElementSibling&&u(this[0].nextElementSibling).is(t)?u([this[0].nextElementSibling]):u([]):this[0].nextElementSibling?u([this[0].nextElementSibling]):u([]):u([])},nextAll:function(t){const e=[];let n=this[0];if(!n)return u([]);for(;n.nextElementSibling;){const i=n.nextElementSibling;t?u(i).is(t)&&e.push(i):e.push(i),n=i}return u(e)},prev:function(t){if(this.length>0){const e=this[0];return t?e.previousElementSibling&&u(e.previousElementSibling).is(t)?u([e.previousElementSibling]):u([]):e.previousElementSibling?u([e.previousElementSibling]):u([])}return u([])},prevAll:function(t){const e=[];let n=this[0];if(!n)return u([]);for(;n.previousElementSibling;){const i=n.previousElementSibling;t?u(i).is(t)&&e.push(i):e.push(i),n=i}return u(e)},siblings:function(t){return this.nextAll(t).add(this.prevAll(t))},parent:function(t){const e=[];for(let n=0;n0||0===i,g=n>0||0===n;if(void 0===r&&(r="swing"),m&&(s=t.scrollTop,o||(t.scrollTop=i)),g&&(h=t.scrollLeft,o||(t.scrollLeft=n)),!o)return;m&&(u=t.scrollHeight-t.offsetHeight,c=Math.max(Math.min(i,u),0)),g&&(a=t.scrollWidth-t.offsetWidth,f=Math.max(Math.min(n,a),0));let y=null;m&&c===s&&(m=!1),g&&f===h&&(g=!1),e.requestAnimationFrame((function n(i=(new Date).getTime()){null===y&&(y=i);const u=Math.max(Math.min((i-y)/o,1),0),a="linear"===r?u:.5-Math.cos(u*Math.PI)/2;let v;m&&(d=s+a*(c-s)),g&&(p=h+a*(f-h)),m&&c>s&&d>=c&&(t.scrollTop=c,v=!0),m&&ch&&p>=f&&(t.scrollLeft=f,v=!0),g&&f0?s[0].scrollTop:null:s.scrollTo(void 0,e,n,i,o)},scrollLeft:function(...t){let[e,n,i,o]=t;3===t.length&&"function"==typeof i&&([e,n,o,i]=t);const s=this;return void 0===e?s.length>0?s[0].scrollLeft:null:s.scrollTo(e,void 0,n,i,o)}});var f=Object.freeze({__proto__:null,animate:function(t,e){const n=s(),i=this,o={props:Object.assign({},t),params:Object.assign({duration:300,easing:"swing"},e),elements:i,animating:!1,que:[],easingProgress:(t,e)=>"swing"===t?.5-Math.cos(e*Math.PI)/2:"function"==typeof t?t(e):e,stop(){o.frameId&&n.cancelAnimationFrame(o.frameId),o.animating=!1,o.elements.each((t=>{delete t.dom7AnimateInstance})),o.que=[]},done(t){if(o.animating=!1,o.elements.each((t=>{delete t.dom7AnimateInstance})),t&&t(i),o.que.length>0){const t=o.que.shift();o.animate(t[0],t[1])}},animate(t,e){if(o.animating)return o.que.push([t,e]),o;const s=[];o.elements.each(((e,i)=>{let r,l,h,u,a;e.dom7AnimateInstance||(o.elements[i].dom7AnimateInstance=o),s[i]={container:e},Object.keys(t).forEach((o=>{r=n.getComputedStyle(e,null).getPropertyValue(o).replace(",","."),l=parseFloat(r),h=r.replace(l,""),u=parseFloat(t[o]),a=t[o]+h,s[i][o]={initialFullValue:r,initialValue:l,unit:h,finalValue:u,finalFullValue:a,currentValue:l}}))}));let r,l,h=null,u=0,a=0,c=!1;return o.animating=!0,o.frameId=n.requestAnimationFrame((function f(){let d,p;r=(new Date).getTime(),c||(c=!0,e.begin&&e.begin(i)),null===h&&(h=r),e.progress&&e.progress(i,Math.max(Math.min((r-h)/e.duration,1),0),h+e.duration-r<0?0:h+e.duration-r,h),s.forEach((n=>{const i=n;l||i.done||Object.keys(t).forEach((n=>{if(l||i.done)return;d=Math.max(Math.min((r-h)/e.duration,1),0),p=o.easingProgress(e.easing,d);const{initialValue:c,finalValue:f,unit:m}=i[n];i[n].currentValue=c+p*(f-c);const g=i[n].currentValue;(f>c&&g>=f||f{Object.keys(t).forEach((e=>{u.fn[e]=t[e]}))})),u})); -//# sourceMappingURL=dom7.min.js.map \ No newline at end of file diff --git a/resources/web/guide/swiper/node_modules/dom7/dom7.min.js.map b/resources/web/guide/swiper/node_modules/dom7/dom7.min.js.map deleted file mode 100644 index 426ac13c94..0000000000 --- a/resources/web/guide/swiper/node_modules/dom7/dom7.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../node_modules/ssr-window/ssr-window.esm.js","../src/dom7-class.js","../src/utils.js","../src/$.js","../src/methods.js","../src/scroll.js","../src/animate.js","../src/shortcuts.js","../src/dom7.bundle.js"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","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","Dom7","Array","items","super","proto","__proto__","defineProperty","get","set","value","makeReactive","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","$","selector","context","html","trim","indexOf","toCreate","tempParent","innerHTML","i","a","qsa","nodeType","uniqueArray","arrayUnique","fn","classes","classNames","map","c","split","classList","add","remove","className","toggle","contains","attrs","arguments","getAttribute","attrName","attr","removeAttribute","props","propName","dom7ElementDataStorage","dataKey","dataset","attributes","name","string","toLowerCase","replace","match","group","toUpperCase","parseFloat","multiple","values","selectedOptions","j","options","selected","val","transform","duration","transitionDuration","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","event","dom7LiveListeners","proxyListener","dom7Listeners","handlers","handler","dom7proxy","splice","dom","eventName","onceHandler","eventArgs","off","on","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","fireCallBack","innerWidth","css","includeMargins","styles","offsetWidth","innerHeight","offsetHeight","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","display","prop","index","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","returnIndex","els","newChild","tempDiv","firstChild","appendChild","parent","append","insertBefore","prepend","before","parentNode","cloneNode","after","nextSibling","nextElementSibling","nextEls","next","previousElementSibling","prevEls","prev","nextAll","prevAll","closest","eq","foundElements","found","removeChild","toAdd","easing","each","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","Math","max","min","scrollWidth","startTime","render","time","getTime","progress","easeProgress","cos","PI","done","scrollTo","initialProps","initialParams","assign","params","elements","animating","que","easingProgress","stop","frameId","dom7AnimateInstance","complete","shift","animate","initialFullValue","initialValue","unit","finalValue","finalFullValue","container","currentValue","elementsDone","propsDone","began","begin","element","animateInstance","noTrigger","shortcut","trigger","click","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","methods","methodName"],"mappings":"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","file":"dom7.min.js","sourcesContent":["/**\n * SSR Window 4.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: August 25, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n set(value) {\n proto.__proto__ = value;\n },\n });\n}\nclass Dom7 extends Array {\n constructor(items) {\n super(...(items || []));\n\n makeReactive(this);\n }\n}\nexport default Dom7;\n","export function arrayFlat(arr = []) {\n const res = [];\n arr.forEach((el) => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nexport function arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nexport function arrayUnique(arr) {\n const uniqueArray = [];\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n return uniqueArray;\n}\nexport function toCamelCase(string) {\n return string\n .toLowerCase()\n .replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n","// eslint-disable-next-line\nimport { getWindow, getDocument } from 'ssr-window';\nimport Dom7 from './dom7-class';\nimport { arrayUnique } from './utils';\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n const a = [];\n const res = context.querySelectorAll(selector);\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n if (!selector) {\n return new Dom7(arr);\n }\n if (typeof selector === 'string') {\n const html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach((el) => {\n el.classList.add(...classNames);\n });\n return this;\n}\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map((c) => c.split(' ')));\n this.forEach((el) => {\n el.classList.remove(...classNames);\n });\n return this;\n}\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map((c) => c.split(' ')));\n this.forEach((el) => {\n classNames.forEach((className) => {\n el.classList.toggle(className);\n });\n });\n}\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map((c) => c.split(' ')));\n return (\n arrayFilter(this, (el) => {\n return (\n classNames.filter((className) => el.classList.contains(className))\n .length > 0\n );\n }).length > 0\n );\n}\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n }\n\n // Set attrs\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n return this;\n}\nfunction data(key, value) {\n let el;\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined;\n // Get value\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n\n // Set value\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n}\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;\n else if (dataset[key] === 'true') dataset[key] = true;\n else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n return dataset;\n}\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n return values;\n }\n return el.value;\n }\n\n // set value\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (\n Array.isArray(value) &&\n el.multiple &&\n el.nodeName.toLowerCase() === 'select'\n ) {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n return this;\n}\nfunction value(value) {\n return this.val(value);\n}\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration =\n typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n return this;\n}\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) listener.apply(target, eventData);\n else {\n const parents = $(target).parents(); // eslint-disable-line\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector))\n listener.apply(parents[k], eventData);\n }\n }\n }\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n const events = eventType.split(' ');\n let j;\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n return this;\n}\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n const events = eventType.split(' ');\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (\n listener &&\n handler.listener &&\n handler.listener.dom7proxy &&\n handler.listener.dom7proxy === listener\n ) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n return this;\n}\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n const dom = this;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n return this;\n}\nfunction animationEnd(callback) {\n const dom = this;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n return this;\n}\nfunction width() {\n const window = getWindow();\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return (\n this[0].offsetWidth +\n parseFloat(styles.getPropertyValue('margin-right')) +\n parseFloat(styles.getPropertyValue('margin-left'))\n );\n }\n return this[0].offsetWidth;\n }\n return null;\n}\nfunction height() {\n const window = getWindow();\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return (\n this[0].offsetHeight +\n parseFloat(styles.getPropertyValue('margin-top')) +\n parseFloat(styles.getPropertyValue('margin-bottom'))\n );\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft,\n };\n }\n\n return null;\n}\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n return this;\n}\nfunction show() {\n const window = getWindow();\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n if (\n window.getComputedStyle(el, null).getPropertyValue('display') === 'none'\n ) {\n // Still not visible\n el.style.display = 'block';\n }\n }\n return this;\n}\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n const window = getWindow();\n let i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0])\n return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n if (selector === document) {\n return el === document;\n }\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n return false;\n}\nfunction index() {\n let child = this[0];\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n if (index > length - 1) {\n return $([]);\n }\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n return $([this[index]]);\n}\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n}\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\nfunction insertBefore(selector) {\n const before = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\nfunction insertAfter(selector) {\n const after = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(\n this[i].cloneNode(true),\n after[j].nextSibling,\n );\n }\n }\n }\n}\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (\n this[0].nextElementSibling &&\n $(this[0].nextElementSibling).is(selector)\n ) {\n return $([this[0].nextElementSibling]);\n }\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n return $([]);\n}\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return $(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n if (selector) {\n if (\n el.previousElementSibling &&\n $(el.previousElementSibling).is(selector)\n ) {\n return $([el.previousElementSibling]);\n }\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n return $([]);\n}\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return $(prevEls);\n}\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector))\n parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(parents);\n}\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(parents);\n}\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return $([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n const foundElements = [];\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return $(foundElements);\n}\nfunction children(selector) {\n const children = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return $(children);\n}\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n}\nfunction detach() {\n return this.remove();\n}\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n return dom;\n}\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n el.textContent = '';\n }\n }\n return this;\n}\n\nexport {\n addClass,\n removeClass,\n toggleClass,\n hasClass,\n attr,\n removeAttr,\n prop,\n data,\n removeData,\n dataset,\n val,\n value,\n transform,\n transition,\n on,\n off,\n once,\n trigger,\n transitionEnd,\n animationEnd,\n width,\n outerWidth,\n height,\n outerHeight,\n offset,\n hide,\n show,\n styles,\n css,\n each,\n filter,\n html,\n text,\n is,\n index,\n eq,\n append,\n appendTo,\n prepend,\n prependTo,\n insertBefore,\n insertAfter,\n next,\n nextAll,\n prev,\n prevAll,\n siblings,\n parent,\n parents,\n closest,\n find,\n children,\n remove,\n detach,\n add,\n empty,\n};\n","// eslint-disable-next-line\nimport { getWindow } from 'ssr-window';\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n if (typeof easing === 'undefined') easing = 'swing';\n\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n let scrollLeft; // eslint-disable-line\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n if (animateTop) {\n currentTop = el.scrollTop;\n if (!duration) {\n el.scrollTop = top;\n }\n }\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n if (!duration) return;\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress =\n easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop)\n scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft)\n scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n window.requestAnimationFrame(render);\n });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nexport { scrollTo, scrollTop, scrollLeft };\n","// eslint-disable-next-line\nimport { getWindow } from 'ssr-window';\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign(\n {\n duration: 300,\n easing: 'swing', // or 'linear'\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n },\n initialParams,\n ),\n\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each((el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done(complete) {\n a.animating = false;\n a.elements.each((el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n const elements = [];\n\n // Define & Cache Initials & Units\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n elements[index] = {\n container: el,\n };\n Object.keys(props).forEach((prop) => {\n initialFullValue = window\n .getComputedStyle(el, null)\n .getPropertyValue(prop)\n .replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue,\n };\n });\n });\n\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress;\n // let el;\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n if (startTime === null) {\n startTime = time;\n }\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(\n els,\n Math.max(Math.min((time - startTime) / params.duration, 1), 0),\n startTime + params.duration - time < 0\n ? 0\n : startTime + params.duration - time,\n startTime,\n );\n }\n\n elements.forEach((element) => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach((prop) => {\n if (done || el.done) return;\n progress = Math.max(\n Math.min((time - startTime) / params.duration, 1),\n 0,\n );\n easeProgress = a.easingProgress(params.easing, progress);\n const { initialValue, finalValue, unit } = el[prop];\n el[prop].currentValue =\n initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (\n (finalValue > initialValue && currentValue >= finalValue) ||\n (finalValue < initialValue && currentValue <= finalValue)\n ) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n if (done) {\n a.done(params.complete);\n return;\n }\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return;\n // Then call\n a.frameId = window.requestAnimationFrame(render);\n }\n a.frameId = window.requestAnimationFrame(render);\n return a;\n },\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nexport { animate, stop };\n","import $ from './$';\n\nconst noTrigger = 'resize scroll'.split(' ');\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();\n else {\n $(this[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return this.on(name, ...args);\n }\n return eventHandler;\n}\nexport const click = shortcut('click');\nexport const blur = shortcut('blur');\nexport const focus = shortcut('focus');\nexport const focusin = shortcut('focusin');\nexport const focusout = shortcut('focusout');\nexport const keyup = shortcut('keyup');\nexport const keydown = shortcut('keydown');\nexport const keypress = shortcut('keypress');\nexport const submit = shortcut('submit');\nexport const change = shortcut('change');\nexport const mousedown = shortcut('mousedown');\nexport const mousemove = shortcut('mousemove');\nexport const mouseup = shortcut('mouseup');\nexport const mouseenter = shortcut('mouseenter');\nexport const mouseleave = shortcut('mouseleave');\nexport const mouseout = shortcut('mouseout');\nexport const mouseover = shortcut('mouseover');\nexport const touchstart = shortcut('touchstart');\nexport const touchend = shortcut('touchend');\nexport const touchmove = shortcut('touchmove');\nexport const resize = shortcut('resize');\nexport const scroll = shortcut('scroll');\n","import $ from './$';\nimport * as methods from './methods';\nimport * as scroll from './scroll';\nimport * as animate from './animate';\nimport * as shortcuts from './shortcuts';\n\n[methods, scroll, animate, shortcuts].forEach((group) => {\n Object.keys(group).forEach((methodName) => {\n $.fn[methodName] = group[methodName];\n });\n});\n\nexport default $;\n"]} \ No newline at end of file diff --git a/resources/web/guide/swiper/node_modules/dom7/package.json b/resources/web/guide/swiper/node_modules/dom7/package.json deleted file mode 100644 index f171d6df4d..0000000000 --- a/resources/web/guide/swiper/node_modules/dom7/package.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "_from": "dom7@^4.0.1", - "_id": "dom7@4.0.1", - "_inBundle": false, - "_integrity": "sha512-y/RWjw3gK3qQnZz6IqDaIoqH6+xBhcB3Wsh5HFwl0abwuO/NAgbSB31ZbxtBDcuDe8jAX5NYUNDLTx4Ul48sIw==", - "_location": "/swiper/dom7", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "dom7@^4.0.1", - "name": "dom7", - "escapedName": "dom7", - "rawSpec": "^4.0.1", - "saveSpec": null, - "fetchSpec": "^4.0.1" - }, - "_requiredBy": [ - "/swiper" - ], - "_resolved": "https://registry.npmjs.org/dom7/-/dom7-4.0.1.tgz", - "_shasum": "821209df1bfdf97dd82b5156e50f7cb66b3f166c", - "_spec": "dom7@^4.0.1", - "_where": "C:\\Users\\Administrator\\node_modules\\swiper", - "author": { - "name": "Vladimir Kharlampidi" - }, - "bugs": { - "url": "https://github.com/nolimits4web/dom7/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ssr-window": "^4.0.0" - }, - "deprecated": false, - "description": "Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API", - "exports": { - ".": "./dom7.esm.js" - }, - "homepage": "https://framework7.io/docs/dom7.html", - "keywords": [ - "dom", - "dom7", - "jquery", - "mobile", - "framework7" - ], - "license": "MIT", - "main": "./dom7.esm.js", - "module": "./dom7.esm.js", - "name": "dom7", - "repository": { - "type": "git", - "url": "git+https://github.com/nolimits4web/dom7.git" - }, - "sideEffects": false, - "type": "module", - "types": "dom7.d.ts", - "version": "4.0.1" -} diff --git a/resources/web/guide/swiper/node_modules/ssr-window/LICENSE b/resources/web/guide/swiper/node_modules/ssr-window/LICENSE deleted file mode 100644 index 27267dbdc6..0000000000 --- a/resources/web/guide/swiper/node_modules/ssr-window/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2018 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/resources/web/guide/swiper/node_modules/ssr-window/README.md b/resources/web/guide/swiper/node_modules/ssr-window/README.md deleted file mode 100644 index f7c227a7e2..0000000000 --- a/resources/web/guide/swiper/node_modules/ssr-window/README.md +++ /dev/null @@ -1,59 +0,0 @@ -# SSR Window - -Better handling for `window` and `document` object in SSR environment. - -This library doesn't implement the DOM (like JSDOM), it just patches (or creates `window` and `document` objects) to avoid them to fail (throw errors) during server-side rendering. - -Was created for use in: - -- [Dom7](https://github.com/nolimits4web/dom7) -- [Swiper](https://github.com/nolimits4web/swiper) -- [Framework7](https://github.com/framework7io/framework7) - -## Installation - -Library available on NPM: - -``` -npm i ssr-window -``` - -## Usage - -```js -import { window, document } from 'ssr-window'; - -window.addEventListener('resize', () => {}); - -const div = document.querySelectorAll('div'); -``` - -## Extending - -If you rely on some window/document properties which are not included here, you can use `extend` helper to add them: - -```js -import { window, document, extend } from 'ssr-window'; - -// add window.navigator.language -extend(window, { - navigator: { - language: 'en', - }, -}); - -// add document.body -extend(document, { - body: { - /* ... */ - }, -}); -``` - -## Contribution - -Yes please! See the [contributing guidelines](https://github.com/nolimits4web/ssr-window/blob/master/CONTRIBUTING.md) for details. - -## Licence - -This project is licensed under the terms of the [MIT license](https://github.com/nolimits4web/ssr-window/blob/master/LICENSE). diff --git a/resources/web/guide/swiper/node_modules/ssr-window/package.json b/resources/web/guide/swiper/node_modules/ssr-window/package.json deleted file mode 100644 index 3ce129f8a3..0000000000 --- a/resources/web/guide/swiper/node_modules/ssr-window/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "_from": "ssr-window@^4.0.1", - "_id": "ssr-window@4.0.1", - "_inBundle": false, - "_integrity": "sha512-5q936lkCk5Lg5hM6tG8Nutdym4vNiuFSWorslTzOn71PWb3Wnx44q/k2Ryn1LWA1G4FtxMzjywUFOiOxPkVGrA==", - "_location": "/swiper/ssr-window", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ssr-window@^4.0.1", - "name": "ssr-window", - "escapedName": "ssr-window", - "rawSpec": "^4.0.1", - "saveSpec": null, - "fetchSpec": "^4.0.1" - }, - "_requiredBy": [ - "/swiper", - "/swiper/dom7" - ], - "_resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-4.0.1.tgz", - "_shasum": "514bf2ca81952f63fe88e8b0c623a23f90f7feb3", - "_spec": "ssr-window@^4.0.1", - "_where": "C:\\Users\\Administrator\\node_modules\\swiper", - "author": { - "name": "Vladimir Kharlampidi" - }, - "bugs": { - "url": "https://github.com/nolimits4web/ssr-window/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "Better handling for window object in SSR environment", - "exports": { - ".": "./ssr-window.esm.js" - }, - "homepage": "https://github.com/nolimits4web/ssr-window", - "keywords": [ - "ssr", - "window", - "document" - ], - "license": "MIT", - "main": "./ssr-window.esm.js", - "module": "./ssr-window.esm.js", - "name": "ssr-window", - "repository": { - "type": "git", - "url": "git+https://github.com/nolimits4web/ssr-window.git" - }, - "type": "module", - "typings": "types/ssr-window.d.ts", - "version": "4.0.1" -} diff --git a/resources/web/guide/swiper/node_modules/ssr-window/ssr-window.esm.js b/resources/web/guide/swiper/node_modules/ssr-window/ssr-window.esm.js deleted file mode 100644 index 4fe1a59911..0000000000 --- a/resources/web/guide/swiper/node_modules/ssr-window/ssr-window.esm.js +++ /dev/null @@ -1,148 +0,0 @@ -/** - * SSR Window 4.0.1 - * Better handling for window object in SSR environment - * https://github.com/nolimits4web/ssr-window - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: October 27, 2021 - */ -/* eslint-disable no-param-reassign */ -function isObject(obj) { - return (obj !== null && - typeof obj === 'object' && - 'constructor' in obj && - obj.constructor === Object); -} -function extend(target = {}, src = {}) { - Object.keys(src).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 { extend, getDocument, getWindow, ssrDocument, ssrWindow }; diff --git a/resources/web/guide/swiper/node_modules/ssr-window/ssr-window.umd.js b/resources/web/guide/swiper/node_modules/ssr-window/ssr-window.umd.js deleted file mode 100644 index a3bf9aa81a..0000000000 --- a/resources/web/guide/swiper/node_modules/ssr-window/ssr-window.umd.js +++ /dev/null @@ -1,163 +0,0 @@ -/** - * SSR Window 4.0.1 - * Better handling for window object in SSR environment - * https://github.com/nolimits4web/ssr-window - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: October 27, 2021 - */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ssrWindow = {})); -}(this, (function (exports) { 'use strict'; - - /* eslint-disable no-param-reassign */ - function isObject(obj) { - return (obj !== null && - typeof obj === 'object' && - 'constructor' in obj && - obj.constructor === Object); - } - function extend(target = {}, src = {}) { - Object.keys(src).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; - } - - exports.extend = extend; - exports.getDocument = getDocument; - exports.getWindow = getWindow; - exports.ssrDocument = ssrDocument; - exports.ssrWindow = ssrWindow; - - Object.defineProperty(exports, '__esModule', { value: true }); - -}))); -//# sourceMappingURL=ssr-window.umd.js.map diff --git a/resources/web/guide/swiper/node_modules/ssr-window/ssr-window.umd.js.map b/resources/web/guide/swiper/node_modules/ssr-window/ssr-window.umd.js.map deleted file mode 100644 index 712accd2e9..0000000000 --- a/resources/web/guide/swiper/node_modules/ssr-window/ssr-window.umd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ssr-window.umd.js.map","sources":["../src/extend.ts","../src/document.ts","../src/window.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":";;;;;;;;;;;;;;;;;IAAA;IACA,SAAS,QAAQ,CAAC,GAAG;QACnB,QACE,GAAG,KAAK,IAAI;YACZ,OAAO,GAAG,KAAK,QAAQ;YACvB,aAAa,IAAI,GAAG;YACpB,GAAG,CAAC,WAAW,KAAK,MAAM,EAC1B;IACJ,CAAC;IAED,SAAS,MAAM,CAAC,SAAc,EAAE,EAAE,MAAW,EAAE;QAC7C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG;YAC3B,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,WAAW;gBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;iBAC1D,IACH,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAChC;gBACA,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;aAC/B;SACF,CAAC,CAAC;IACL;;UCnBM,WAAW,GAAG;QAClB,IAAI,EAAE,EAAE;QACR,gBAAgB,MAAK;QACrB,mBAAmB,MAAK;QACxB,aAAa,EAAE;YACb,IAAI,MAAK;YACT,QAAQ,EAAE,EAAE;SACb;QACD,aAAa;YACX,OAAO,IAAI,CAAC;SACb;QACD,gBAAgB;YACd,OAAO,EAAE,CAAC;SACX;QACD,cAAc;YACZ,OAAO,IAAI,CAAC;SACb;QACD,WAAW;YACT,OAAO;gBACL,SAAS,MAAK;aACf,CAAC;SACH;QACD,aAAa;YACX,OAAO;gBACL,QAAQ,EAAE,EAAE;gBACZ,UAAU,EAAE,EAAE;gBACd,KAAK,EAAE,EAAE;gBACT,YAAY,MAAK;gBACjB,oBAAoB;oBAClB,OAAO,EAAE,CAAC;iBACX;aACF,CAAC;SACH;QACD,eAAe;YACb,OAAO,EAAE,CAAC;SACX;QACD,UAAU;YACR,OAAO,IAAI,CAAC;SACb;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,EAAE;SACX;MACD;IAEF,SAAS,WAAW;QAClB,MAAM,GAAG,GACP,OAAO,QAAQ,KAAK,WAAW,GAAG,QAAQ,GAAI,EAAe,CAAC;QAChE,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACzB,OAAO,GAAG,CAAC;IACb;;UCvDM,SAAS,GAAG;QAChB,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE;YACT,SAAS,EAAE,EAAE;SACd;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,EAAE;SACX;QACD,OAAO,EAAE;YACP,YAAY,MAAK;YACjB,SAAS,MAAK;YACd,EAAE,MAAK;YACP,IAAI,MAAK;SACV;QACD,WAAW,EAAE,SAAS,WAAW;YAC/B,OAAO,IAAI,CAAC;SACb;QACD,gBAAgB,MAAK;QACrB,mBAAmB,MAAK;QACxB,gBAAgB;YACd,OAAO;gBACL,gBAAgB;oBACd,OAAO,EAAE,CAAC;iBACX;aACF,CAAC;SACH;QACD,KAAK,MAAK;QACV,IAAI,MAAK;QACT,MAAM,EAAE,EAAE;QACV,UAAU,MAAK;QACf,YAAY,MAAK;QACjB,UAAU;YACR,OAAO,EAAE,CAAC;SACX;QACD,qBAAqB,CAAC,QAAQ;YAC5B,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;gBACrC,QAAQ,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC;aACb;YACD,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;SAChC;QACD,oBAAoB,CAAC,EAAE;YACrB,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;gBACrC,OAAO;aACR;YACD,YAAY,CAAC,EAAE,CAAC,CAAC;SAClB;MACD;IAEF,SAAS,SAAS;QAChB,MAAM,GAAG,GAAW,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAI,EAAa,CAAC;QAC5E,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACvB,OAAO,GAAG,CAAC;IACb;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/resources/web/guide/swiper/node_modules/ssr-window/ssr-window.umd.min.js b/resources/web/guide/swiper/node_modules/ssr-window/ssr-window.umd.min.js deleted file mode 100644 index c9fa6ec11d..0000000000 --- a/resources/web/guide/swiper/node_modules/ssr-window/ssr-window.umd.min.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * SSR Window 4.0.1 - * Better handling for window object in SSR environment - * https://github.com/nolimits4web/ssr-window - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: October 27, 2021 - */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ssrWindow={})}(this,(function(e){"use strict";function t(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function n(e={},o={}){Object.keys(o).forEach((i=>{void 0===e[i]?e[i]=o[i]:t(o[i])&&t(e[i])&&Object.keys(o[i]).length>0&&n(e[i],o[i])}))}const o={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:""}};const i={document:o,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)}};e.extend=n,e.getDocument=function(){const e="undefined"!=typeof document?document:{};return n(e,o),e},e.getWindow=function(){const e="undefined"!=typeof window?window:{};return n(e,i),e},e.ssrDocument=o,e.ssrWindow=i,Object.defineProperty(e,"__esModule",{value:!0})})); -//# sourceMappingURL=ssr-window.umd.min.js.map \ No newline at end of file diff --git a/resources/web/guide/swiper/node_modules/ssr-window/ssr-window.umd.min.js.map b/resources/web/guide/swiper/node_modules/ssr-window/ssr-window.umd.min.js.map deleted file mode 100644 index a3fe002c85..0000000000 --- a/resources/web/guide/swiper/node_modules/ssr-window/ssr-window.umd.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/extend.ts","../src/document.ts","../src/window.ts"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","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","ssrWindow","document","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","doc","win","window"],"mappings":";;;;;;;;;;;iPACA,SAASA,EAASC,GAChB,OACU,OAARA,GACe,iBAARA,GACP,gBAAiBA,GACjBA,EAAIC,cAAgBC,OAIxB,SAASC,EAAOC,EAAc,GAAIC,EAAW,IAC3CH,OAAOI,KAAKD,GAAKE,SAASC,SACG,IAAhBJ,EAAOI,GAAsBJ,EAAOI,GAAOH,EAAIG,GAExDT,EAASM,EAAIG,KACbT,EAASK,EAAOI,KAChBN,OAAOI,KAAKD,EAAIG,IAAMC,OAAS,GAE/BN,EAAOC,EAAOI,GAAMH,EAAIG,aChBxBE,EAAc,CAClBC,KAAM,GACNC,qBACAC,wBACAC,cAAe,CACbC,SACAC,SAAU,IAEZC,cAAa,IACJ,KAETC,iBAAgB,IACP,GAETC,eAAc,IACL,KAETC,YAAW,KACF,CACLC,gBAGJC,cAAa,KACJ,CACLC,SAAU,GACVC,WAAY,GACZC,MAAO,GACPC,iBACAC,qBAAoB,IACX,KAIbC,gBAAe,KACN,IAETC,WAAU,IACD,KAETC,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,WC9CNC,EAAY,CAChBC,SAAU9B,EACV+B,UAAW,CACTC,UAAW,IAEbZ,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEVK,QAAS,CACPC,iBACAC,cACAC,OACAC,UAEFC,YAAa,WACX,OAAOC,MAETrC,qBACAC,wBACAqC,iBAAgB,KACP,CACLC,iBAAgB,IACP,KAIbC,UACAC,SACAC,OAAQ,GACRC,eACAC,iBACAC,WAAU,KACD,IAETC,sBAAsBC,GACM,oBAAfJ,YACTI,IACO,MAEFJ,WAAWI,EAAU,GAE9BC,qBAAqBC,GACO,oBAAfN,YAGXC,aAAaK,8BDFjB,WACE,MAAMC,EACgB,oBAAbtB,SAA2BA,SAAY,GAEhD,OADArC,EAAO2D,EAAKpD,GACLoD,eCET,WACE,MAAMC,EAAgC,oBAAXC,OAAyBA,OAAU,GAE9D,OADA7D,EAAO4D,EAAKxB,GACLwB","file":"ssr-window.umd.min.js"} \ No newline at end of file diff --git a/resources/web/guide/swiper/node_modules/ssr-window/types/document.d.ts b/resources/web/guide/swiper/node_modules/ssr-window/types/document.d.ts deleted file mode 100644 index 63b28dec51..0000000000 --- a/resources/web/guide/swiper/node_modules/ssr-window/types/document.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -declare const ssrDocument: { - body: {}; - addEventListener(): void; - removeEventListener(): void; - activeElement: { - blur(): void; - nodeName: string; - }; - querySelector(): any; - querySelectorAll(): any[]; - getElementById(): any; - createEvent(): { - initEvent(): void; - }; - createElement(): { - children: any[]; - childNodes: any[]; - style: {}; - setAttribute(): void; - getElementsByTagName(): any[]; - }; - createElementNS(): {}; - importNode(): any; - location: { - hash: string; - host: string; - hostname: string; - href: string; - origin: string; - pathname: string; - protocol: string; - search: string; - }; -}; -declare function getDocument(): Document; -export { getDocument, ssrDocument }; diff --git a/resources/web/guide/swiper/node_modules/ssr-window/types/extend.d.ts b/resources/web/guide/swiper/node_modules/ssr-window/types/extend.d.ts deleted file mode 100644 index 5044ccf4a9..0000000000 --- a/resources/web/guide/swiper/node_modules/ssr-window/types/extend.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare function extend(target?: any, src?: any): void; -export default extend; diff --git a/resources/web/guide/swiper/node_modules/ssr-window/types/ssr-window.d.ts b/resources/web/guide/swiper/node_modules/ssr-window/types/ssr-window.d.ts deleted file mode 100644 index feb2e20ffb..0000000000 --- a/resources/web/guide/swiper/node_modules/ssr-window/types/ssr-window.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { getDocument, ssrDocument } from './document'; -import { getWindow, ssrWindow } from './window'; -import extend from './extend'; -export { getDocument, ssrDocument, getWindow, ssrWindow, extend }; diff --git a/resources/web/guide/swiper/node_modules/ssr-window/types/window.d.ts b/resources/web/guide/swiper/node_modules/ssr-window/types/window.d.ts deleted file mode 100644 index 734a96cbad..0000000000 --- a/resources/web/guide/swiper/node_modules/ssr-window/types/window.d.ts +++ /dev/null @@ -1,72 +0,0 @@ -/// -declare const ssrWindow: { - document: { - body: {}; - addEventListener(): void; - removeEventListener(): void; - activeElement: { - blur(): void; - nodeName: string; - }; - querySelector(): any; - querySelectorAll(): any[]; - getElementById(): any; - createEvent(): { - initEvent(): void; - }; - createElement(): { - children: any[]; - childNodes: any[]; - style: {}; - setAttribute(): void; - getElementsByTagName(): any[]; - }; - createElementNS(): {}; - importNode(): any; - location: { - hash: string; - host: string; - hostname: string; - href: string; - origin: string; - pathname: string; - protocol: string; - search: string; - }; - }; - navigator: { - userAgent: string; - }; - location: { - hash: string; - host: string; - hostname: string; - href: string; - origin: string; - pathname: string; - protocol: string; - search: string; - }; - history: { - replaceState(): void; - pushState(): void; - go(): void; - back(): void; - }; - CustomEvent: () => any; - addEventListener(): void; - removeEventListener(): void; - getComputedStyle(): { - getPropertyValue(): string; - }; - Image(): void; - Date(): void; - screen: {}; - setTimeout(): void; - clearTimeout(): void; - matchMedia(): {}; - requestAnimationFrame(callback: any): NodeJS.Timeout; - cancelAnimationFrame(id: any): void; -}; -declare function getWindow(): Window; -export { getWindow, ssrWindow }; diff --git a/resources/web/guide/swiper/package.json b/resources/web/guide/swiper/package.json deleted file mode 100644 index 30302966db..0000000000 --- a/resources/web/guide/swiper/package.json +++ /dev/null @@ -1,191 +0,0 @@ -{ - "_from": "swiper", - "_id": "swiper@7.2.0", - "_inBundle": false, - "_integrity": "sha512-CUL6Nvzcf3fU0b8dHaraYphgBT7l44PY1B6T8b+E12pim4DEcwFZDy/KZoIKrAnn+rfbayCmcksYmSDIP5nDHg==", - "_location": "/swiper", - "_phantomChildren": {}, - "_requested": { - "type": "tag", - "registry": true, - "raw": "swiper", - "name": "swiper", - "escapedName": "swiper", - "rawSpec": "", - "saveSpec": null, - "fetchSpec": "latest" - }, - "_requiredBy": [ - "#USER", - "/" - ], - "_resolved": "https://registry.npmjs.org/swiper/-/swiper-7.2.0.tgz", - "_shasum": "aae2bb7632798467abd5c1ab3e2441598a70dbd7", - "_spec": "swiper", - "_where": "C:\\Users\\Administrator", - "author": { - "name": "Vladimir Kharlampidi" - }, - "bugs": { - "url": "https://github.com/nolimits4web/swiper/issues" - }, - "bundleDependencies": false, - "dependencies": { - "dom7": "^4.0.1", - "ssr-window": "^4.0.1" - }, - "deprecated": false, - "description": "Most modern mobile touch slider and framework with hardware accelerated transitions", - "engines": { - "node": ">= 4.7.0" - }, - "exports": { - ".": "./swiper.esm.js", - "./core": "./swiper.esm.js", - "./bundle": "./swiper-bundle.esm.js", - "./css": "./swiper.min.css", - "./css/bundle": "./swiper-bundle.min.css", - "./css/a11y": "./modules/a11y/a11y.min.css", - "./css/autoplay": "./modules/autoplay/autoplay.min.css", - "./css/controller": "./modules/controller/controller.min.css", - "./css/effect-coverflow": "./modules/effect-coverflow/effect-coverflow.min.css", - "./css/effect-cube": "./modules/effect-cube/effect-cube.min.css", - "./css/effect-fade": "./modules/effect-fade/effect-fade.min.css", - "./css/effect-flip": "./modules/effect-flip/effect-flip.min.css", - "./css/effect-creative": "./modules/effect-creative/effect-creative.min.css", - "./css/effect-cards": "./modules/effect-cards/effect-cards.min.css", - "./css/free-mode": "./modules/free-mode/free-mode.min.css", - "./css/grid": "./modules/grid/grid.min.css", - "./css/hash-navigation": "./modules/hash-navigation/hash-navigation.min.css", - "./css/history": "./modules/history/history.min.css", - "./css/keyboard": "./modules/keyboard/keyboard.min.css", - "./css/lazy": "./modules/lazy/lazy.min.css", - "./css/manipulation": "./modules/manipulation/manipulation.min.css", - "./css/mousewheel": "./modules/mousewheel/mousewheel.min.css", - "./css/navigation": "./modules/navigation/navigation.min.css", - "./css/pagination": "./modules/pagination/pagination.min.css", - "./css/parallax": "./modules/parallax/parallax.min.css", - "./css/scrollbar": "./modules/scrollbar/scrollbar.min.css", - "./css/thumbs": "./modules/thumbs/thumbs.min.css", - "./css/virtual": "./modules/virtual/virtual.min.css", - "./css/zoom": "./modules/zoom/zoom.min.css", - "./less": "./swiper.less", - "./less/a11y": "./modules/a11y/a11y.less", - "./less/autoplay": "./modules/autoplay/autoplay.less", - "./less/controller": "./modules/controller/controller.less", - "./less/effect-coverflow": "./modules/effect-coverflow/effect-coverflow.less", - "./less/effect-cube": "./modules/effect-cube/effect-cube.less", - "./less/effect-fade": "./modules/effect-fade/effect-fade.less", - "./less/effect-flip": "./modules/effect-flip/effect-flip.less", - "./less/effect-creative": "./modules/effect-creative/effect-creative.less", - "./less/effect-cards": "./modules/effect-cards/effect-cards.less", - "./less/free-mode": "./modules/free-mode/free-mode.less", - "./less/grid": "./modules/grid/grid.less", - "./less/hash-navigation": "./modules/hash-navigation/hash-navigation.less", - "./less/history": "./modules/history/history.less", - "./less/keyboard": "./modules/keyboard/keyboard.less", - "./less/lazy": "./modules/lazy/lazy.less", - "./less/manipulation": "./modules/manipulation/manipulation.less", - "./less/mousewheel": "./modules/mousewheel/mousewheel.less", - "./less/navigation": "./modules/navigation/navigation.less", - "./less/pagination": "./modules/pagination/pagination.less", - "./less/parallax": "./modules/parallax/parallax.less", - "./less/scrollbar": "./modules/scrollbar/scrollbar.less", - "./less/thumbs": "./modules/thumbs/thumbs.less", - "./less/virtual": "./modules/virtual/virtual.less", - "./less/zoom": "./modules/zoom/zoom.less", - "./scss": "./swiper.scss", - "./scss/a11y": "./modules/a11y/a11y.scss", - "./scss/autoplay": "./modules/autoplay/autoplay.scss", - "./scss/controller": "./modules/controller/controller.scss", - "./scss/effect-coverflow": "./modules/effect-coverflow/effect-coverflow.scss", - "./scss/effect-cube": "./modules/effect-cube/effect-cube.scss", - "./scss/effect-fade": "./modules/effect-fade/effect-fade.scss", - "./scss/effect-flip": "./modules/effect-flip/effect-flip.scss", - "./scss/effect-creative": "./modules/effect-creative/effect-creative.scss", - "./scss/effect-cards": "./modules/effect-cards/effect-cards.scss", - "./scss/free-mode": "./modules/free-mode/free-mode.scss", - "./scss/grid": "./modules/grid/grid.scss", - "./scss/hash-navigation": "./modules/hash-navigation/hash-navigation.scss", - "./scss/history": "./modules/history/history.scss", - "./scss/keyboard": "./modules/keyboard/keyboard.scss", - "./scss/lazy": "./modules/lazy/lazy.scss", - "./scss/manipulation": "./modules/manipulation/manipulation.scss", - "./scss/mousewheel": "./modules/mousewheel/mousewheel.scss", - "./scss/navigation": "./modules/navigation/navigation.scss", - "./scss/pagination": "./modules/pagination/pagination.scss", - "./scss/parallax": "./modules/parallax/parallax.scss", - "./scss/scrollbar": "./modules/scrollbar/scrollbar.scss", - "./scss/thumbs": "./modules/thumbs/thumbs.scss", - "./scss/virtual": "./modules/virtual/virtual.scss", - "./scss/zoom": "./modules/zoom/zoom.scss", - "./angular": "./angular/fesm2015/swiper_angular.js", - "./react": "./react/swiper-react.js", - "./vue": "./vue/swiper-vue.js", - "./svelte": "./svelte/swiper-svelte.js", - "./types": "./types/index.d.ts", - "./package.json": "./package.json" - }, - "funding": [ - { - "type": "patreon", - "url": "https://www.patreon.com/swiperjs" - }, - { - "type": "open_collective", - "url": "http://opencollective.com/swiper" - } - ], - "homepage": "https://swiperjs.com", - "keywords": [ - "swiper", - "swipe", - "slider", - "touch", - "ios", - "mobile", - "cordova", - "phonegap", - "app", - "framework", - "framework7", - "carousel", - "gallery", - "plugin", - "react", - "vue", - "angular", - "svelte", - "slideshow" - ], - "license": "MIT", - "main": "./swiper.esm.js", - "module": "./swiper.esm.js", - "name": "swiper", - "repository": { - "type": "git", - "url": "git+https://github.com/nolimits4web/Swiper.git" - }, - "scripts": { - "postinstall": "node -e \"try{require('./postinstall')}catch(e){}\"" - }, - "type": "module", - "typesVersions": { - "*": { - "angular": [ - "angular/swiper_angular.d.ts" - ], - "react": [ - "react/swiper-react.d.ts" - ], - "svelte": [ - "svelte/swiper-svelte.d.ts" - ], - "vue": [ - "vue/swiper-vue.d.ts" - ] - } - }, - "typings": "swiper.d.ts", - "version": "7.2.0" -} diff --git a/resources/web/guide/swiper/postinstall.js b/resources/web/guide/swiper/postinstall.js deleted file mode 100644 index 90cce0b1f8..0000000000 --- a/resources/web/guide/swiper/postinstall.js +++ /dev/null @@ -1,36 +0,0 @@ -/* eslint-disable max-len -- for better formatting */ -var env = process.env; - -var ADBLOCK = is(env.ADBLOCK); -var COLOR = is(env.npm_config_color); -var DISABLE_OPENCOLLECTIVE = is(env.DISABLE_OPENCOLLECTIVE); -var SILENT = ['silent', 'error', 'warn'].indexOf(env.npm_config_loglevel) !== -1; -var OPEN_SOURCE_CONTRIBUTOR = is(env.OPEN_SOURCE_CONTRIBUTOR); - -// you could add a PR with an env variable for your CI detection -var CI = [ - 'BUILD_NUMBER', - 'CI', - 'CONTINUOUS_INTEGRATION', - 'DRONE', - 'RUN_ID' -].some(function (it) { return is(env[it]); }); - -var BANNER = '\u001b[35m\u001b[1mLove Swiper? Support Vladimir\'s work by donating or pledging: \u001B[0m\n' + -'\u001b[22m\u001b[39m\u001b[32m> On Patreon https://patreon.com/swiperjs \u001B[0m\n' + -'\u001b[22m\u001b[39m\u001b[32m> On Open Collective https://opencollective.com/swiper'; - -function is(it) { - return !!it && it !== '0' && it !== 'false'; -} - -function isBannerRequired() { - return !(ADBLOCK || CI || DISABLE_OPENCOLLECTIVE || SILENT || OPEN_SOURCE_CONTRIBUTOR); -} - -function showBanner() { - // eslint-disable-next-line no-console,no-control-regex -- output - console.log(COLOR ? BANNER : BANNER.replace(/\u001B\[\d+m/g, '')); -} - -if (isBannerRequired()) showBanner(); diff --git a/resources/web/guide/swiper/react/get-changed-params.js b/resources/web/guide/swiper/react/get-changed-params.js deleted file mode 100644 index d45ece48e8..0000000000 --- a/resources/web/guide/swiper/react/get-changed-params.js +++ /dev/null @@ -1,43 +0,0 @@ -import { paramsList } from './params-list.js'; -import { isObject } from './utils.js'; - -function getChangedParams(swiperParams, oldParams, children, oldChildren) { - const keys = []; - if (!oldParams) return keys; - - const addKey = key => { - if (keys.indexOf(key) < 0) keys.push(key); - }; - - const oldChildrenKeys = oldChildren.map(child => child.key); - const childrenKeys = children.map(child => child.key); - 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; -} - -export { getChangedParams }; \ No newline at end of file diff --git a/resources/web/guide/swiper/react/get-children.js b/resources/web/guide/swiper/react/get-children.js deleted file mode 100644 index 8e01a9f7a3..0000000000 --- a/resources/web/guide/swiper/react/get-children.js +++ /dev/null @@ -1,46 +0,0 @@ -import React from 'react'; - -function processChildren(c) { - const slides = []; - React.Children.toArray(c).forEach(child => { - if (child.type && child.type.displayName === 'SwiperSlide') { - 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 (child.type && child.type.displayName === 'SwiperSlide') { - 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 - }; -} - -export { getChildren }; \ No newline at end of file diff --git a/resources/web/guide/swiper/react/get-params.js b/resources/web/guide/swiper/react/get-params.js deleted file mode 100644 index 1ee41081d2..0000000000 --- a/resources/web/guide/swiper/react/get-params.js +++ /dev/null @@ -1,46 +0,0 @@ -import Swiper from 'swiper'; -import { isObject, extend } from './utils.js'; -import { paramsList } from './params-list.js'; - -function getParams(obj = {}) { - const params = { - on: {} - }; - const events = {}; - const passedParams = {}; - extend(params, Swiper.defaults); - extend(params, Swiper.extendedDefaults); - params._emitClasses = true; - params.init = false; - const rest = {}; - const allowedParams = paramsList.map(key => key.replace(/_/, '')); - Object.keys(obj).forEach(key => { - 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') { - events[`${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 - }; -} - -export { getParams }; \ No newline at end of file diff --git a/resources/web/guide/swiper/react/init-swiper.js b/resources/web/guide/swiper/react/init-swiper.js deleted file mode 100644 index aaf5568971..0000000000 --- a/resources/web/guide/swiper/react/init-swiper.js +++ /dev/null @@ -1,36 +0,0 @@ -import Swiper from 'swiper'; -import { needsNavigation, needsPagination, needsScrollbar } from './utils.js'; - -function initSwiper(swiperParams) { - return new Swiper(swiperParams); -} - -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); -} - -export { initSwiper, mountSwiper }; \ No newline at end of file diff --git a/resources/web/guide/swiper/react/loop.js b/resources/web/guide/swiper/react/loop.js deleted file mode 100644 index 962fe8de99..0000000000 --- a/resources/web/guide/swiper/react/loop.js +++ /dev/null @@ -1,78 +0,0 @@ -import React from 'react'; -import Swiper from 'swiper'; - -function calcLoopedSlides(slides, swiperParams) { - let slidesPerViewParams = swiperParams.slidesPerView; - - if (swiperParams.breakpoints) { - const breakpoint = Swiper.prototype.getBreakpoint(swiperParams.breakpoints); - const breakpointOnlyParams = breakpoint in swiperParams.breakpoints ? swiperParams.breakpoints[breakpoint] : undefined; - - if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) { - slidesPerViewParams = breakpointOnlyParams.slidesPerView; - } - } - - let loopedSlides = Math.ceil(parseFloat(swiperParams.loopedSlides || slidesPerViewParams, 10)); - loopedSlides += swiperParams.loopAdditionalSlides; - - if (loopedSlides > slides.length) { - loopedSlides = slides.length; - } - - return loopedSlides; -} - -function renderLoop(swiper, slides, swiperParams) { - const modifiedSlides = slides.map((child, index) => { - return /*#__PURE__*/React.cloneElement(child, { - swiper, - 'data-swiper-slide-index': index - }); - }); - - function duplicateSlide(child, index, position) { - return /*#__PURE__*/React.cloneElement(child, { - key: `${child.key}-duplicate-${index}-${position}`, - className: `${child.props.className || ''} ${swiperParams.slideDuplicateClass}` - }); - } - - if (swiperParams.loopFillGroupWithBlank) { - const blankSlidesNum = swiperParams.slidesPerGroup - modifiedSlides.length % swiperParams.slidesPerGroup; - - if (blankSlidesNum !== swiperParams.slidesPerGroup) { - for (let i = 0; i < blankSlidesNum; i += 1) { - const blankSlide = /*#__PURE__*/React.createElement("div", { - className: `${swiperParams.slideClass} ${swiperParams.slideBlankClass}` - }); - modifiedSlides.push(blankSlide); - } - } - } - - if (swiperParams.slidesPerView === 'auto' && !swiperParams.loopedSlides) { - swiperParams.loopedSlides = modifiedSlides.length; - } - - const loopedSlides = calcLoopedSlides(modifiedSlides, swiperParams); - const prependSlides = []; - const appendSlides = []; - modifiedSlides.forEach((child, index) => { - if (index < loopedSlides) { - appendSlides.push(duplicateSlide(child, index, 'prepend')); - } - - if (index < modifiedSlides.length && index >= modifiedSlides.length - loopedSlides) { - prependSlides.push(duplicateSlide(child, index, 'append')); - } - }); - - if (swiper) { - swiper.loopedSlides = loopedSlides; - } - - return [...prependSlides, ...modifiedSlides, ...appendSlides]; -} - -export { calcLoopedSlides, renderLoop }; \ No newline at end of file diff --git a/resources/web/guide/swiper/react/params-list.js b/resources/web/guide/swiper/react/params-list.js deleted file mode 100644 index 2d25f8f2d2..0000000000 --- a/resources/web/guide/swiper/react/params-list.js +++ /dev/null @@ -1,4 +0,0 @@ -/* underscore in name -> watch for changes */ -const paramsList = ['modules', 'init', '_direction', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_preloadImages', 'updateOnImagesReady', '_loop', '_loopAdditionalSlides', '_loopedSlides', '_loopFillGroupWithBlank', 'loopPreventsSlide', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideBlankClass', 'slideActiveClass', 'slideDuplicateActiveClass', 'slideVisibleClass', 'slideDuplicateClass', 'slideNextClass', 'slideDuplicateNextClass', 'slidePrevClass', 'slideDuplicatePrevClass', 'wrapperClass', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', // modules -'a11y', 'autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'lazy', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom']; -export { paramsList }; \ No newline at end of file diff --git a/resources/web/guide/swiper/react/swiper-react.d.ts b/resources/web/guide/swiper/react/swiper-react.d.ts deleted file mode 100644 index e8d2e73f61..0000000000 --- a/resources/web/guide/swiper/react/swiper-react.d.ts +++ /dev/null @@ -1,467 +0,0 @@ -import * as React from 'react'; - -import { SwiperOptions, Swiper as SwiperClass } from '../types/'; - -interface Swiper extends 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 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 mousewheel scroll - */ - onScroll?: (swiper: SwiperClass, event: WheelEvent) => void;/** - * Event will be fired in the beginning of lazy loading of image - */ - onLazyImageLoad?: (swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement) => void; - /** - * Event will be fired when lazy loading image will be loaded - */ - onLazyImageReady?: (swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement) => void;/** - * Event will be fired on key press - */ - onKeyPress?: (swiper: SwiperClass, keyCode: string) => 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 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 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;/** - * Event will be fired on zoom change - */ - onZoomChange?: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => 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 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 `touchstart` 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 `touchmove` 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 `touchmove` 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 `touchmove` event as an arguments. - */ - onSliderMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired when user release Swiper. Receives `touchend` event as an arguments. - */ - onTouchEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired when user click/tap on Swiper. Receives `touchend` event as an arguments. - */ - onClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired when user click/tap on Swiper. Receives `touchend` 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 `touchend` event as an arguments - */ - onDoubleTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired right after all inner images are loaded. updateOnImagesReady should be also enabled - */ - onImagesReady?: (swiper: SwiperClass) => 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; - isDuplicate: boolean; - isPrev: boolean; - isNext: boolean; -} - -interface SwiperSlide { - /** - * Slide tag - * - * @default 'div' - */ - tag?: string; - - /** - * Enables additional wrapper required for zoom mode - * - * @default false - */ - zoom?: 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 Swiper - extends Omit< - React.HTMLAttributes, - | 'onProgress' - | 'onClick' - | 'onTouchEnd' - | 'onTouchMove' - | 'onTouchStart' - | 'onTransitionEnd' - | 'onKeyPress' - | 'onDoubleClick' - | 'onScroll' - > {} -interface SwiperSlide extends React.HTMLAttributes {} - -declare const Swiper: React.FunctionComponent; -declare const SwiperSlide: React.VoidFunctionComponent; - -export { Swiper, SwiperSlide }; diff --git a/resources/web/guide/swiper/react/swiper-react.js b/resources/web/guide/swiper/react/swiper-react.js deleted file mode 100644 index 35bd813af6..0000000000 --- a/resources/web/guide/swiper/react/swiper-react.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Swiper React 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -import { Swiper } from './swiper.js'; -import { SwiperSlide } from './swiper-slide.js'; -export { Swiper, SwiperSlide }; \ No newline at end of file diff --git a/resources/web/guide/swiper/react/swiper-slide.js b/resources/web/guide/swiper/react/swiper-slide.js deleted file mode 100644 index 1cbab62040..0000000000 --- a/resources/web/guide/swiper/react/swiper-slide.js +++ /dev/null @@ -1,79 +0,0 @@ -function _extends() { _extends = Object.assign || 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); } - -import React, { useRef, useState, forwardRef } from 'react'; -import { uniqueClasses } from './utils.js'; -import { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js'; -const SwiperSlide = /*#__PURE__*/forwardRef(({ - tag: Tag = 'div', - children, - className = '', - swiper, - zoom, - virtualIndex, - ...rest -} = {}, externalRef) => { - const slideElRef = useRef(null); - const [slideClasses, setSlideClasses] = useState('swiper-slide'); - - function updateClasses(_s, el, classNames) { - if (el === slideElRef.current) { - setSlideClasses(classNames); - } - } - - useIsomorphicLayoutEffect(() => { - 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) { - setSlideClasses(swiper.getSlideClasses(slideElRef.current)); - } - }, [swiper]); - let slideData; - - if (typeof children === 'function') { - slideData = { - isActive: slideClasses.indexOf('swiper-slide-active') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-active') >= 0, - isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0, - isDuplicate: slideClasses.indexOf('swiper-slide-duplicate') >= 0, - isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-prev') >= 0, - isNext: slideClasses.indexOf('swiper-slide-next') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-next') >= 0 - }; - } - - const renderChildren = () => { - return typeof children === 'function' ? children(slideData) : children; - }; - - return /*#__PURE__*/React.createElement(Tag, _extends({ - ref: slideElRef, - className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`), - "data-swiper-slide-index": virtualIndex - }, rest), zoom ? /*#__PURE__*/React.createElement("div", { - className: "swiper-zoom-container", - "data-swiper-zoom": typeof zoom === 'number' ? zoom : undefined - }, renderChildren()) : renderChildren()); -}); -SwiperSlide.displayName = 'SwiperSlide'; -export { SwiperSlide }; \ No newline at end of file diff --git a/resources/web/guide/swiper/react/swiper.js b/resources/web/guide/swiper/react/swiper.js deleted file mode 100644 index 8e709e4899..0000000000 --- a/resources/web/guide/swiper/react/swiper.js +++ /dev/null @@ -1,202 +0,0 @@ -function _extends() { _extends = Object.assign || 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); } - -import React, { useRef, useState, useEffect, forwardRef } from 'react'; -import { getParams } from './get-params.js'; -import { initSwiper, mountSwiper } from './init-swiper.js'; -import { needsScrollbar, needsNavigation, needsPagination, uniqueClasses, extend } from './utils.js'; -import { renderLoop, calcLoopedSlides } from './loop.js'; -import { getChangedParams } from './get-changed-params.js'; -import { getChildren } from './get-children.js'; -import { updateSwiper } from './update-swiper.js'; -import { renderVirtual, updateOnVirtualData } from './virtual.js'; -import { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js'; -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); - } - - }); - - if (!swiperElRef.current) { - // init swiper - Object.assign(swiperParams.on, events); - eventsAssigned = true; - swiperRef.current = initSwiper(swiperParams); - - swiperRef.current.loopCreate = () => {}; - - swiperRef.current.loopDestroy = () => {}; - - if (swiperParams.loop) { - swiperRef.current.loopedSlides = calcLoopedSlides(slides, swiperParams); - } - - 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); - } - } // 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; - mountSwiper({ - el: swiperElRef.current, - nextEl: nextElRef.current, - prevEl: prevElRef.current, - paginationEl: paginationElRef.current, - scrollbarEl: scrollbarElRef.current, - swiper: swiperRef.current - }, swiperParams); - if (onSwiper) 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); - 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); - } - - if (!swiperParams.loop || swiperRef.current && swiperRef.current.destroyed) { - return slides.map(child => { - return /*#__PURE__*/React.cloneElement(child, { - swiper: swiperRef.current - }); - }); - } - - return renderLoop(swiperRef.current, slides, swiperParams); - } - - return /*#__PURE__*/React.createElement(Tag, _extends({ - ref: swiperElRef, - className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`) - }, restProps), slots['container-start'], 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" - }), /*#__PURE__*/React.createElement(WrapperTag, { - className: "swiper-wrapper" - }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), slots['container-end']); -}); -Swiper.displayName = 'Swiper'; -export { Swiper }; \ No newline at end of file diff --git a/resources/web/guide/swiper/react/update-swiper.js b/resources/web/guide/swiper/react/update-swiper.js deleted file mode 100644 index 09633c72a4..0000000000 --- a/resources/web/guide/swiper/react/update-swiper.js +++ /dev/null @@ -1,131 +0,0 @@ -import { isObject, extend } from './utils.js'; - -function updateSwiper({ - swiper, - slides, - passedParams, - changedParams, - nextEl, - prevEl, - scrollbarEl, - paginationEl -}) { - const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction'); - const { - params: currentParams, - pagination, - navigation, - scrollbar, - virtual, - thumbs - } = swiper; - let needThumbsInit; - let needControllerInit; - let needPaginationInit; - let needScrollbarInit; - let needNavigationInit; - - if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { - 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') { - currentParams[mod].prevEl = undefined; - currentParams[mod].nextEl = undefined; - swiper[mod].prevEl = undefined; - swiper[mod].nextEl = undefined; - } else { - currentParams[mod].el = undefined; - swiper[mod].el = undefined; - } - }; - - updateParams.forEach(key => { - if (isObject(currentParams[key]) && isObject(passedParams[key])) { - extend(currentParams[key], passedParams[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 (changedParams.includes('children') && virtual && currentParams.virtual.enabled) { - virtual.slides = slides; - virtual.update(true); - } else if (changedParams.includes('children') && swiper.lazy && swiper.params.lazy.enabled) { - swiper.lazy.load(); - } - - if (needThumbsInit) { - const initialized = thumbs.init(); - if (initialized) thumbs.update(true); - } - - if (needControllerInit) { - swiper.controller.control = currentParams.controller.control; - } - - if (needPaginationInit) { - if (paginationEl) currentParams.pagination.el = paginationEl; - pagination.init(); - pagination.render(); - pagination.update(); - } - - if (needScrollbarInit) { - if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; - scrollbar.init(); - scrollbar.updateSize(); - scrollbar.setTranslate(); - } - - if (needNavigationInit) { - 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); - } - - swiper.update(); -} - -export { updateSwiper }; \ No newline at end of file diff --git a/resources/web/guide/swiper/react/use-isomorphic-layout-effect.js b/resources/web/guide/swiper/react/use-isomorphic-layout-effect.js deleted file mode 100644 index 25d33b156c..0000000000 --- a/resources/web/guide/swiper/react/use-isomorphic-layout-effect.js +++ /dev/null @@ -1,9 +0,0 @@ -import { useEffect, useLayoutEffect } from 'react'; - -function useIsomorphicLayoutEffect(callback, deps) { - // eslint-disable-next-line - if (typeof window === 'undefined') return useEffect(callback, deps); - return useLayoutEffect(callback, deps); -} - -export { useIsomorphicLayoutEffect }; \ No newline at end of file diff --git a/resources/web/guide/swiper/react/utils.js b/resources/web/guide/swiper/react/utils.js deleted file mode 100644 index dfb9b99cc4..0000000000 --- a/resources/web/guide/swiper/react/utils.js +++ /dev/null @@ -1,37 +0,0 @@ -function isObject(o) { - return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === '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) { - 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(' '); -} - -export { isObject, extend, needsNavigation, needsPagination, needsScrollbar, uniqueClasses }; \ No newline at end of file diff --git a/resources/web/guide/swiper/react/virtual.js b/resources/web/guide/swiper/react/virtual.js deleted file mode 100644 index cf12163c7d..0000000000 --- a/resources/web/guide/swiper/react/virtual.js +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react'; - -function updateOnVirtualData(swiper) { - if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return; - swiper.updateSlides(); - swiper.updateProgress(); - swiper.updateSlidesClasses(); - - if (swiper.lazy && swiper.params.lazy.enabled) { - swiper.lazy.load(); - } - - if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) { - swiper.parallax.setTranslate(); - } -} - -function renderVirtual(swiper, slides, virtualData) { - if (!virtualData) return null; - const style = swiper.isHorizontal() ? { - [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` - } : { - top: `${virtualData.offset}px` - }; - return slides.filter((child, index) => index >= virtualData.from && index <= virtualData.to).map(child => { - return /*#__PURE__*/React.cloneElement(child, { - swiper, - style - }); - }); -} - -export { renderVirtual, updateOnVirtualData }; \ No newline at end of file diff --git a/resources/web/guide/swiper/shared/classes-to-selector.js b/resources/web/guide/swiper/shared/classes-to-selector.js deleted file mode 100644 index 7c34df95f1..0000000000 --- a/resources/web/guide/swiper/shared/classes-to-selector.js +++ /dev/null @@ -1,4 +0,0 @@ -export default function classesToSelector(classes = '') { - return `.${classes.trim().replace(/([\.:!\/])/g, '\\$1') // eslint-disable-line - .replace(/ /g, '.')}`; -} \ No newline at end of file diff --git a/resources/web/guide/swiper/shared/create-element-if-not-defined.js b/resources/web/guide/swiper/shared/create-element-if-not-defined.js deleted file mode 100644 index 9fd245026b..0000000000 --- a/resources/web/guide/swiper/shared/create-element-if-not-defined.js +++ /dev/null @@ -1,23 +0,0 @@ -import { getDocument } from 'ssr-window'; -export default function createElementIfNotDefined(swiper, originalParams, params, checkProps) { - const document = getDocument(); - - if (swiper.params.createElements) { - Object.keys(checkProps).forEach(key => { - if (!params[key] && params.auto === true) { - let element = swiper.$el.children(`.${checkProps[key]}`)[0]; - - if (!element) { - element = document.createElement('div'); - element.className = checkProps[key]; - swiper.$el.append(element); - } - - params[key] = element; - originalParams[key] = element; - } - }); - } - - return params; -} \ No newline at end of file diff --git a/resources/web/guide/swiper/shared/create-shadow.js b/resources/web/guide/swiper/shared/create-shadow.js deleted file mode 100644 index 9564898b89..0000000000 --- a/resources/web/guide/swiper/shared/create-shadow.js +++ /dev/null @@ -1,13 +0,0 @@ -import $ from './dom.js'; -export default function createShadow(params, $slideEl, side) { - const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`; - const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl; - let $shadowEl = $shadowContainer.children(`.${shadowClass}`); - - if (!$shadowEl.length) { - $shadowEl = $(`
`); - $shadowContainer.append($shadowEl); - } - - return $shadowEl; -} \ No newline at end of file diff --git a/resources/web/guide/swiper/shared/dom.js b/resources/web/guide/swiper/shared/dom.js deleted file mode 100644 index d66471c767..0000000000 --- a/resources/web/guide/swiper/shared/dom.js +++ /dev/null @@ -1,46 +0,0 @@ -import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7'; -const Methods = { - addClass, - removeClass, - hasClass, - toggleClass, - attr, - removeAttr, - transform, - transition, - on, - off, - trigger, - transitionEnd, - outerWidth, - outerHeight, - styles, - offset, - css, - each, - html, - text, - is, - index, - eq, - append, - prepend, - next, - nextAll, - prev, - prevAll, - parent, - parents, - closest, - find, - children, - filter, - remove -}; -Object.keys(Methods).forEach(methodName => { - Object.defineProperty($.fn, methodName, { - value: Methods[methodName], - writable: true - }); -}); -export default $; \ No newline at end of file diff --git a/resources/web/guide/swiper/shared/effect-init.js b/resources/web/guide/swiper/shared/effect-init.js deleted file mode 100644 index 974d102258..0000000000 --- a/resources/web/guide/swiper/shared/effect-init.js +++ /dev/null @@ -1,31 +0,0 @@ -export default function effectInit(params) { - const { - effect, - swiper, - on, - setTranslate, - setTransition, - overwriteParams, - perspective - } = 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', () => { - if (swiper.params.effect !== effect) return; - setTranslate(); - }); - on('setTransition', (_s, duration) => { - if (swiper.params.effect !== effect) return; - setTransition(duration); - }); -} \ No newline at end of file diff --git a/resources/web/guide/swiper/shared/effect-target.js b/resources/web/guide/swiper/shared/effect-target.js deleted file mode 100644 index 2f9fa04cc3..0000000000 --- a/resources/web/guide/swiper/shared/effect-target.js +++ /dev/null @@ -1,10 +0,0 @@ -export default function effectTarget(effectParams, $slideEl) { - if (effectParams.transformEl) { - return $slideEl.find(effectParams.transformEl).css({ - 'backface-visibility': 'hidden', - '-webkit-backface-visibility': 'hidden' - }); - } - - return $slideEl; -} \ No newline at end of file diff --git a/resources/web/guide/swiper/shared/effect-virtual-transition-end.js b/resources/web/guide/swiper/shared/effect-virtual-transition-end.js deleted file mode 100644 index 1427bb78d9..0000000000 --- a/resources/web/guide/swiper/shared/effect-virtual-transition-end.js +++ /dev/null @@ -1,35 +0,0 @@ -export default function effectVirtualTransitionEnd({ - swiper, - duration, - transformEl, - allSlides -}) { - const { - slides, - activeIndex, - $wrapperEl - } = swiper; - - if (swiper.params.virtualTranslate && duration !== 0) { - let eventTriggered = false; - let $transitionEndTarget; - - if (allSlides) { - $transitionEndTarget = transformEl ? slides.find(transformEl) : slides; - } else { - $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex); - } - - $transitionEndTarget.transitionEnd(() => { - if (eventTriggered) return; - if (!swiper || swiper.destroyed) return; - eventTriggered = true; - swiper.animating = false; - const triggerEvents = ['webkitTransitionEnd', 'transitionend']; - - for (let i = 0; i < triggerEvents.length; i += 1) { - $wrapperEl.trigger(triggerEvents[i]); - } - }); - } -} \ No newline at end of file diff --git a/resources/web/guide/swiper/shared/get-browser.js b/resources/web/guide/swiper/shared/get-browser.js deleted file mode 100644 index 78804c5c58..0000000000 --- a/resources/web/guide/swiper/shared/get-browser.js +++ /dev/null @@ -1,26 +0,0 @@ -import { getWindow } from 'ssr-window'; -let browser; - -function calcBrowser() { - const window = getWindow(); - - function isSafari() { - const ua = window.navigator.userAgent.toLowerCase(); - return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; - } - - return { - isSafari: isSafari(), - isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) - }; -} - -function getBrowser() { - if (!browser) { - browser = calcBrowser(); - } - - return browser; -} - -export { getBrowser }; \ No newline at end of file diff --git a/resources/web/guide/swiper/shared/get-device.js b/resources/web/guide/swiper/shared/get-device.js deleted file mode 100644 index cc8719726d..0000000000 --- a/resources/web/guide/swiper/shared/get-device.js +++ /dev/null @@ -1,57 +0,0 @@ -import { getWindow } from 'ssr-window'; -import { getSupport } from './get-support.js'; -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).*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; -} - -export { getDevice }; \ No newline at end of file diff --git a/resources/web/guide/swiper/shared/get-support.js b/resources/web/guide/swiper/shared/get-support.js deleted file mode 100644 index d26e153404..0000000000 --- a/resources/web/guide/swiper/shared/get-support.js +++ /dev/null @@ -1,41 +0,0 @@ -import { getWindow, getDocument } from 'ssr-window'; -let support; - -function calcSupport() { - const window = getWindow(); - const document = getDocument(); - return { - smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style, - touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch), - passiveListener: function checkPassiveListener() { - let supportsPassive = false; - - try { - const opts = Object.defineProperty({}, 'passive', { - // eslint-disable-next-line - get() { - supportsPassive = true; - } - - }); - window.addEventListener('testPassiveListener', null, opts); - } catch (e) {// No support - } - - return supportsPassive; - }(), - gestures: function checkGestures() { - return 'ongesturestart' in window; - }() - }; -} - -function getSupport() { - if (!support) { - support = calcSupport(); - } - - return support; -} - -export { getSupport }; \ No newline at end of file diff --git a/resources/web/guide/swiper/shared/utils.js b/resources/web/guide/swiper/shared/utils.js deleted file mode 100644 index 9fecbe3943..0000000000 --- a/resources/web/guide/swiper/shared/utils.js +++ /dev/null @@ -1,197 +0,0 @@ -import { getWindow } from 'ssr-window'; - -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, null); - - 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]); - const noExtend = ['__proto__', 'constructor', 'prototype']; - - 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 => noExtend.indexOf(key) < 0); - - 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(); -} - -export { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty }; \ No newline at end of file diff --git a/resources/web/guide/swiper/svelte/get-changed-params.js b/resources/web/guide/swiper/svelte/get-changed-params.js deleted file mode 100644 index a25ac8abb3..0000000000 --- a/resources/web/guide/swiper/svelte/get-changed-params.js +++ /dev/null @@ -1,39 +0,0 @@ -import { isObject } from './utils.js'; -import { paramsList } from './params-list.js'; - -function getChangedParams(swiperParams, oldParams) { - const keys = []; - if (!oldParams) return keys; - - const addKey = key => { - if (keys.indexOf(key) < 0) keys.push(key); - }; - - 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; -} - -export { getChangedParams }; \ No newline at end of file diff --git a/resources/web/guide/swiper/svelte/get-params.js b/resources/web/guide/swiper/svelte/get-params.js deleted file mode 100644 index 00b79b1555..0000000000 --- a/resources/web/guide/swiper/svelte/get-params.js +++ /dev/null @@ -1,44 +0,0 @@ -import Swiper from 'swiper'; -import { isObject, extend } from './utils.js'; -import { paramsList } from './params-list.js'; - -function getParams(obj = {}) { - const params = { - on: {} - }; - const passedParams = {}; - extend(params, Swiper.defaults); - extend(params, Swiper.extendedDefaults); - params._emitClasses = true; - params.init = false; - const rest = {}; - const allowedParams = paramsList.map(key => key.replace(/_/, '')); - Object.keys(obj).forEach(key => { - 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') { - 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 - }; -} - -export { getParams }; \ No newline at end of file diff --git a/resources/web/guide/swiper/svelte/init-swiper.js b/resources/web/guide/swiper/svelte/init-swiper.js deleted file mode 100644 index aaf5568971..0000000000 --- a/resources/web/guide/swiper/svelte/init-swiper.js +++ /dev/null @@ -1,36 +0,0 @@ -import Swiper from 'swiper'; -import { needsNavigation, needsPagination, needsScrollbar } from './utils.js'; - -function initSwiper(swiperParams) { - return new Swiper(swiperParams); -} - -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); -} - -export { initSwiper, mountSwiper }; \ No newline at end of file diff --git a/resources/web/guide/swiper/svelte/params-list.js b/resources/web/guide/swiper/svelte/params-list.js deleted file mode 100644 index 2e0223ccaa..0000000000 --- a/resources/web/guide/swiper/svelte/params-list.js +++ /dev/null @@ -1,4 +0,0 @@ -/* underscore in name -> watch for changes */ -const paramsList = ['modules', 'init', '_direction', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_preloadImages', 'updateOnImagesReady', '_loop', '_loopAdditionalSlides', '_loopedSlides', '_loopFillGroupWithBlank', 'loopPreventsSlide', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideBlankClass', 'slideActiveClass', 'slideDuplicateActiveClass', 'slideVisibleClass', 'slideDuplicateClass', 'slideNextClass', 'slideDuplicateNextClass', 'slidePrevClass', 'slideDuplicatePrevClass', 'wrapperClass', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', // modules -'a11y', 'autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'lazy', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', '_virtual', 'zoom']; -export { paramsList }; \ No newline at end of file diff --git a/resources/web/guide/swiper/svelte/swiper-slide.svelte b/resources/web/guide/swiper/svelte/swiper-slide.svelte deleted file mode 100644 index a07b304a06..0000000000 --- a/resources/web/guide/swiper/svelte/swiper-slide.svelte +++ /dev/null @@ -1,95 +0,0 @@ - - -
- {#if zoom} -
- -
- {:else} - - {/if} -
diff --git a/resources/web/guide/swiper/svelte/swiper-svelte.d.ts b/resources/web/guide/swiper/svelte/swiper-svelte.d.ts deleted file mode 100644 index 88569b8dad..0000000000 --- a/resources/web/guide/swiper/svelte/swiper-svelte.d.ts +++ /dev/null @@ -1,431 +0,0 @@ -import { SvelteComponentTyped } from 'svelte'; -import { SwiperOptions, Swiper as SwiperClass } from '../types/'; - -// @ts-ignore -interface SwiperProps extends svelte.JSX.HTMLAttributes {} -interface SwiperProps extends SwiperOptions {} - -// @ts-ignore -interface SwiperSlideProps extends svelte.JSX.HTMLAttributes { - /** - * Enables additional wrapper required for zoom mode - * - * @default false - */ - zoom?: boolean; - - /** - * Slide's index in slides array/collection - * - * @default false - */ - virtualIndex?: number; -} - -declare class Swiper extends SvelteComponentTyped< - SwiperProps, - { - swiper: CustomEvent; - /** - * Event will be fired in when autoplay started - */ - autoplayStart: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired when autoplay stopped - */ - autoplayStop: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired when slide changed with autoplay - */ - autoplay: CustomEvent<[swiper: SwiperClass]>;/** - * Event will be fired on window hash change - */ - hashChange: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired when swiper updates the hash - */ - hashSet: CustomEvent<[swiper: SwiperClass]>;/** - * Event will be fired on mousewheel scroll - */ - scroll: CustomEvent<[swiper: SwiperClass, event: WheelEvent]>;/** - * Event will be fired in the beginning of lazy loading of image - */ - lazyImageLoad: CustomEvent<[swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement]>; - /** - * Event will be fired when lazy loading image will be loaded - */ - lazyImageReady: CustomEvent<[swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement]>;/** - * Event will be fired on key press - */ - keyPress: CustomEvent<[swiper: SwiperClass, keyCode: string]>;/** - * Event will be fired on navigation hide - */ - navigationHide: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired on navigation show - */ - navigationShow: CustomEvent<[swiper: SwiperClass]>;/** - * Event will be fired on draggable scrollbar drag start - */ - scrollbarDragStart: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - - /** - * Event will be fired on draggable scrollbar drag move - */ - scrollbarDragMove: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - - /** - * Event will be fired on draggable scrollbar drag end - */ - scrollbarDragEnd: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>;/** - * Event will be fired after pagination rendered - */ - paginationRender: CustomEvent<[swiper: SwiperClass, paginationEl: HTMLElement]>; - - /** - * Event will be fired when pagination updated - */ - paginationUpdate: CustomEvent<[swiper: SwiperClass, paginationEl: HTMLElement]>; - - /** - * Event will be fired on pagination hide - */ - paginationHide: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired on pagination show - */ - paginationShow: CustomEvent<[swiper: SwiperClass]>;/** - * Event will be fired on zoom change - */ - zoomChange: CustomEvent<[swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement]>; - - /** - * 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: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired right before Swiper destroyed - */ - beforeDestroy: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired when currently active slide is changed - */ - slideChange: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired in the beginning of animation to other slide (next or previous). - */ - slideChangeTransitionStart: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired after animation to other slide (next or previous). - */ - slideChangeTransitionEnd: CustomEvent<[swiper: SwiperClass]>; - - /** - * Same as "slideChangeTransitionStart" but for "forward" direction only - */ - slideNextTransitionStart: CustomEvent<[swiper: SwiperClass]>; - - /** - * Same as "slideChangeTransitionEnd" but for "forward" direction only - */ - slideNextTransitionEnd: CustomEvent<[swiper: SwiperClass]>; - - /** - * Same as "slideChangeTransitionStart" but for "backward" direction only - */ - slidePrevTransitionStart: CustomEvent<[swiper: SwiperClass]>; - - /** - * Same as "slideChangeTransitionEnd" but for "backward" direction only - */ - slidePrevTransitionEnd: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired in the beginning of transition. - */ - transitionStart: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired after transition. - */ - transitionEnd: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired when user touch Swiper. Receives `touchstart` event as an arguments. - */ - touchStart: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - - /** - * Event will be fired when user touch and move finger over Swiper. Receives `touchmove` event as an arguments. - */ - touchMove: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - - /** - * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `touchmove` event as an arguments. - */ - touchMoveOpposite: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - - /** - * Event will be fired when user touch and move finger over Swiper and move it. Receives `touchmove` event as an arguments. - */ - sliderMove: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - - /** - * Event will be fired when user release Swiper. Receives `touchend` event as an arguments. - */ - touchEnd: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - - /** - * Event will be fired when user click/tap on Swiper. Receives `touchend` event as an arguments. - */ - click: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - - /** - * Event will be fired when user click/tap on Swiper. Receives `touchend` event as an arguments. - */ - tap: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - - /** - * Event will be fired when user double tap on Swiper's container. Receives `touchend` event as an arguments - */ - doubleTap: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - - /** - * Event will be fired right after all inner images are loaded. updateOnImagesReady should be also enabled - */ - imagesReady: CustomEvent<[swiper: SwiperClass]>; - - /** - * 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: SwiperClass, progress: number]>; - - /** - * Event will be fired when Swiper reach its beginning (initial position) - */ - reachBeginning: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired when Swiper reach last slide - */ - reachEnd: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired when Swiper goes to beginning or end position - */ - toEdge: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired when Swiper goes from beginning or end position - */ - fromEdge: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments - */ - setTranslate: CustomEvent<[swiper: SwiperClass, translate: number]>; - - /** - * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments - */ - setTransition: CustomEvent<[swiper: SwiperClass, transition: number]>; - - /** - * Event will be fired on window resize right before swiper's onresize manipulation - */ - resize: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired if observer is enabled and it detects DOM mutations - */ - observerUpdate: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired right before "loop fix" - */ - beforeLoopFix: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired after "loop fix" - */ - loopFix: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired on breakpoint change - */ - breakpoint: CustomEvent<[swiper: SwiperClass, breakpointParams: SwiperOptions]>; - - /** - * !INTERNAL: Event will fired right before breakpoint change - */ - _beforeBreakpoint: CustomEvent<[swiper: SwiperClass, breakpointParams: SwiperOptions]>; - - /** - * !INTERNAL: Event will fired after setting CSS classes on swiper container element - */ - _containerClasses: CustomEvent<[swiper: SwiperClass, classNames: string]>; - - /** - * !INTERNAL: Event will fired after setting CSS classes on swiper slide element - */ - _slideClass: CustomEvent<[swiper: SwiperClass, slideEl: HTMLElement, classNames: string]>; - - /** - * !INTERNAL: Event will fired after setting CSS classes on all swiper slides - */ - _slideClasses: CustomEvent<[ - swiper: SwiperClass, - slides: { slideEl: HTMLElement; classNames: string; index: number }[], - ]>; - - /** - * !INTERNAL: Event will fired as soon as swiper instance available (before init) - */ - _swiper: CustomEvent<[swiper: SwiperClass]>; - - /** - * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum - */ - _freeModeNoMomentumRelease: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will fired on active index change - */ - activeIndexChange: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will fired on snap index change - */ - snapIndexChange: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will fired on real index change - */ - realIndexChange: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will fired right after initialization - */ - afterInit: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will fired right before initialization - */ - beforeInit: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will fired before resize handler - */ - beforeResize: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will fired before slide change transition start - */ - beforeSlideChangeStart: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will fired before transition start - */ - beforeTransitionStart: CustomEvent<[swiper: SwiperClass, speed: number, internal: any]>; // what is internal? - /** - * Event will fired on direction change - */ - changeDirection: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired when user double click/tap on Swiper - */ - doubleClick: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - /** - * Event will be fired on swiper destroy - */ - destroy: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired on momentum bounce - */ - momentumBounce: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired on orientation change (e.g. landscape -> portrait) - */ - orientationchange: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired in the beginning of animation of resetting slide to current one - */ - slideResetTransitionStart: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired in the end of animation of resetting slide to current one - */ - slideResetTransitionEnd: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired with first touch/drag move - */ - sliderFirstMove: CustomEvent<[swiper: SwiperClass, event: TouchEvent]>; - /** - * Event will be fired when number of slides has changed - */ - slidesLengthChange: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired when slides grid has changed - */ - slidesGridLengthChange: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired when snap grid has changed - */ - snapGridLengthChange: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired after swiper.update() call - */ - update: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired when swiper is locked (when `watchOverflow` enabled) - */ - lock: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) - */ - unlock: CustomEvent<[swiper: SwiperClass]>; - - }, - { - default: {}; - 'container-start': {}; - 'wrapper-start': {}; - 'wrapper-end': {}; - 'container-end': {}; - } -> {} - -declare class SwiperSlide extends SvelteComponentTyped< - SwiperSlideProps, - {}, - { - default: {}; - } -> {} - -export { Swiper, SwiperSlide }; diff --git a/resources/web/guide/swiper/svelte/swiper-svelte.js b/resources/web/guide/swiper/svelte/swiper-svelte.js deleted file mode 100644 index 7b3452dda2..0000000000 --- a/resources/web/guide/swiper/svelte/swiper-svelte.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Swiper Svelte 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -import Swiper from './swiper.svelte'; -import SwiperSlide from './swiper-slide.svelte'; -export { Swiper, SwiperSlide }; \ No newline at end of file diff --git a/resources/web/guide/swiper/svelte/swiper.svelte b/resources/web/guide/swiper/svelte/swiper.svelte deleted file mode 100644 index 504ae51498..0000000000 --- a/resources/web/guide/swiper/svelte/swiper.svelte +++ /dev/null @@ -1,178 +0,0 @@ - - -
- - {#if needsNavigation(swiperParams)} -
-
- {/if} - {#if needsScrollbar(swiperParams)} -
- {/if} - {#if needsPagination(swiperParams)} -
- {/if} -
- - - -
- -
diff --git a/resources/web/guide/swiper/svelte/update-swiper.js b/resources/web/guide/swiper/svelte/update-swiper.js deleted file mode 100644 index 269ae5af63..0000000000 --- a/resources/web/guide/swiper/svelte/update-swiper.js +++ /dev/null @@ -1,132 +0,0 @@ -import { isObject, extend } from './utils.js'; - -function updateSwiper({ - swiper, - passedParams, - changedParams, - nextEl, - prevEl, - scrollbarEl, - paginationEl -}) { - const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction'); - const { - params: currentParams, - pagination, - navigation, - scrollbar, - thumbs - } = swiper; - let needThumbsInit; - let needControllerInit; - let needPaginationInit; - let needScrollbarInit; - let needNavigationInit; - - if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { - 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; - } - - if (changedParams.includes('virtual')) { - if (passedParams.virtual && passedParams.virtual.slides && swiper.virtual) { - swiper.virtual.slides = passedParams.virtual.slides; - swiper.virtual.update(); - } - } - - const destroyModule = mod => { - if (!swiper[mod]) return; - swiper[mod].destroy(); - - if (mod === 'navigation') { - currentParams[mod].prevEl = undefined; - currentParams[mod].nextEl = undefined; - swiper[mod].prevEl = undefined; - swiper[mod].nextEl = undefined; - } else { - currentParams[mod].el = undefined; - swiper[mod].el = undefined; - } - }; - - updateParams.forEach(key => { - if (isObject(currentParams[key]) && isObject(passedParams[key])) { - extend(currentParams[key], passedParams[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 (needThumbsInit) { - const initialized = thumbs.init(); - - if (initialized) { - thumbs.update(true); - } - } - - if (needControllerInit) { - swiper.controller.control = currentParams.controller.control; - } - - if (needPaginationInit) { - if (paginationEl) currentParams.pagination.el = paginationEl; - pagination.init(); - pagination.render(); - pagination.update(); - } - - if (needScrollbarInit) { - if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; - scrollbar.init(); - scrollbar.updateSize(); - scrollbar.setTranslate(); - } - - if (needNavigationInit) { - 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); - } - - swiper.update(); -} - -export { updateSwiper }; \ No newline at end of file diff --git a/resources/web/guide/swiper/svelte/utils.js b/resources/web/guide/swiper/svelte/utils.js deleted file mode 100644 index dfb9b99cc4..0000000000 --- a/resources/web/guide/swiper/svelte/utils.js +++ /dev/null @@ -1,37 +0,0 @@ -function isObject(o) { - return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === '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) { - 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(' '); -} - -export { isObject, extend, needsNavigation, needsPagination, needsScrollbar, uniqueClasses }; \ No newline at end of file diff --git a/resources/web/guide/swiper/swiper-bundle.css b/resources/web/guide/swiper/swiper-bundle.css deleted file mode 100644 index a9b4b22695..0000000000 --- a/resources/web/guide/swiper/swiper-bundle.css +++ /dev/null @@ -1,613 +0,0 @@ -/** - * Swiper 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -@font-face { - font-family: 'swiper-icons'; - src: url('data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA'); - font-weight: 400; - font-style: normal; -} -:root { - --swiper-theme-color: #007aff; -} -.swiper { - margin-left: auto; - margin-right: auto; - position: relative; - overflow: hidden; - list-style: none; - padding: 0; - /* Fix of Webkit flickering */ - z-index: 1; -} -.swiper-vertical > .swiper-wrapper { - flex-direction: column; -} -.swiper-wrapper { - position: relative; - width: 100%; - height: 100%; - z-index: 1; - display: flex; - transition-property: transform; - box-sizing: content-box; -} -.swiper-android .swiper-slide, -.swiper-wrapper { - transform: translate3d(0px, 0, 0); -} -.swiper-pointer-events { - touch-action: pan-y; -} -.swiper-pointer-events.swiper-vertical { - touch-action: pan-x; -} -.swiper-slide { - flex-shrink: 0; - width: 100%; - height: 100%; - position: relative; - transition-property: transform; -} -.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; -} -/* 3D Effects */ -.swiper-3d, -.swiper-3d.swiper-css-mode .swiper-wrapper { - perspective: 1200px; -} -.swiper-3d .swiper-wrapper, -.swiper-3d .swiper-slide, -.swiper-3d .swiper-slide-shadow, -.swiper-3d .swiper-slide-shadow-left, -.swiper-3d .swiper-slide-shadow-right, -.swiper-3d .swiper-slide-shadow-top, -.swiper-3d .swiper-slide-shadow-bottom, -.swiper-3d .swiper-cube-shadow { - transform-style: preserve-3d; -} -.swiper-3d .swiper-slide-shadow, -.swiper-3d .swiper-slide-shadow-left, -.swiper-3d .swiper-slide-shadow-right, -.swiper-3d .swiper-slide-shadow-top, -.swiper-3d .swiper-slide-shadow-bottom { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - pointer-events: none; - z-index: 10; -} -.swiper-3d .swiper-slide-shadow { - background: rgba(0, 0, 0, 0.15); -} -.swiper-3d .swiper-slide-shadow-left { - background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); -} -.swiper-3d .swiper-slide-shadow-right { - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); -} -.swiper-3d .swiper-slide-shadow-top { - background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); -} -.swiper-3d .swiper-slide-shadow-bottom { - background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); -} -/* CSS Mode */ -.swiper-css-mode > .swiper-wrapper { - overflow: auto; - scrollbar-width: none; - /* For Firefox */ - -ms-overflow-style: none; - /* For Internet Explorer and Edge */ -} -.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar { - display: none; -} -.swiper-css-mode > .swiper-wrapper > .swiper-slide { - scroll-snap-align: start start; -} -.swiper-horizontal.swiper-css-mode > .swiper-wrapper { - scroll-snap-type: x mandatory; -} -.swiper-vertical.swiper-css-mode > .swiper-wrapper { - scroll-snap-type: y mandatory; -} -.swiper-centered > .swiper-wrapper::before { - content: ''; - flex-shrink: 0; - order: 9999; -} -.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child { - margin-inline-start: var(--swiper-centered-offset-before); -} -.swiper-centered.swiper-horizontal > .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-centered.swiper-vertical > .swiper-wrapper::before { - width: 100%; - min-width: 1px; - height: var(--swiper-centered-offset-after); -} -.swiper-centered > .swiper-wrapper > .swiper-slide { - scroll-snap-align: center center; -} -.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-color: var(--swiper-theme-color); - */ -} -.swiper-button-prev, -.swiper-button-next { - position: absolute; - top: 50%; - width: calc(var(--swiper-navigation-size) / 44 * 27); - height: var(--swiper-navigation-size); - margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); - 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:after, -.swiper-button-next:after { - font-family: swiper-icons; - font-size: var(--swiper-navigation-size); - text-transform: none !important; - letter-spacing: 0; - text-transform: none; - font-variant: initial; - line-height: 1; -} -.swiper-button-prev, -.swiper-rtl .swiper-button-next { - left: 10px; - right: auto; -} -.swiper-button-prev:after, -.swiper-rtl .swiper-button-next:after { - content: 'prev'; -} -.swiper-button-next, -.swiper-rtl .swiper-button-prev { - right: 10px; - left: auto; -} -.swiper-button-next:after, -.swiper-rtl .swiper-button-prev:after { - content: 'next'; -} -.swiper-button-lock { - display: none; -} -:root { - /* - --swiper-pagination-color: var(--swiper-theme-color); - --swiper-pagination-bullet-size: 8px; - --swiper-pagination-bullet-width: 8px; - --swiper-pagination-bullet-height: 8px; - --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; -} -/* Common Styles */ -.swiper-pagination-fraction, -.swiper-pagination-custom, -.swiper-horizontal > .swiper-pagination-bullets, -.swiper-pagination-bullets.swiper-pagination-horizontal { - bottom: 10px; - 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: 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; - -webkit-appearance: 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: 10px; - 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; -} -/* Progress */ -.swiper-pagination-progressbar { - background: 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: 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: 4px; - height: 100%; - left: 0; - top: 0; -} -.swiper-pagination-lock { - display: none; -} -/* Scrollbar */ -.swiper-scrollbar { - border-radius: 10px; - position: relative; - -ms-touch-action: none; - background: rgba(0, 0, 0, 0.1); -} -.swiper-horizontal > .swiper-scrollbar { - position: absolute; - left: 1%; - bottom: 3px; - z-index: 50; - height: 5px; - width: 98%; -} -.swiper-vertical > .swiper-scrollbar { - position: absolute; - right: 3px; - top: 1%; - z-index: 50; - width: 5px; - height: 98%; -} -.swiper-scrollbar-drag { - height: 100%; - width: 100%; - position: relative; - background: rgba(0, 0, 0, 0.5); - border-radius: 10px; - left: 0; - top: 0; -} -.swiper-scrollbar-cursor-drag { - cursor: move; -} -.swiper-scrollbar-lock { - display: none; -} -.swiper-zoom-container { - width: 100%; - height: 100%; - display: flex; - justify-content: center; - align-items: center; - text-align: center; -} -.swiper-zoom-container > img, -.swiper-zoom-container > svg, -.swiper-zoom-container > canvas { - max-width: 100%; - max-height: 100%; - object-fit: contain; -} -.swiper-slide-zoomed { - cursor: move; -} -/* Preloader */ -:root { - /* - --swiper-preloader-color: var(--swiper-theme-color); - */ -} -.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%; - animation: swiper-preloader-spin 1s infinite linear; - box-sizing: border-box; - border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); - border-radius: 50%; - border-top-color: transparent; -} -.swiper-lazy-preloader-white { - --swiper-preloader-color: #fff; -} -.swiper-lazy-preloader-black { - --swiper-preloader-color: #000; -} -@keyframes swiper-preloader-spin { - 100% { - transform: rotate(360deg); - } -} -/* a11y */ -.swiper .swiper-notification { - position: absolute; - left: 0; - top: 0; - pointer-events: none; - opacity: 0; - z-index: -1000; -} -.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-fade .swiper-slide { - pointer-events: none; - transition-property: opacity; -} -.swiper-fade .swiper-slide .swiper-slide { - pointer-events: none; -} -.swiper-fade .swiper-slide-active, -.swiper-fade .swiper-slide-active .swiper-slide-active { - pointer-events: auto; -} -.swiper-cube { - overflow: visible; -} -.swiper-cube .swiper-slide { - pointer-events: none; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - z-index: 1; - visibility: hidden; - transform-origin: 0 0; - width: 100%; - height: 100%; -} -.swiper-cube .swiper-slide .swiper-slide { - pointer-events: none; -} -.swiper-cube.swiper-rtl .swiper-slide { - transform-origin: 100% 0; -} -.swiper-cube .swiper-slide-active, -.swiper-cube .swiper-slide-active .swiper-slide-active { - pointer-events: auto; -} -.swiper-cube .swiper-slide-active, -.swiper-cube .swiper-slide-next, -.swiper-cube .swiper-slide-prev, -.swiper-cube .swiper-slide-next + .swiper-slide { - pointer-events: auto; - visibility: visible; -} -.swiper-cube .swiper-slide-shadow-top, -.swiper-cube .swiper-slide-shadow-bottom, -.swiper-cube .swiper-slide-shadow-left, -.swiper-cube .swiper-slide-shadow-right { - z-index: 0; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; -} -.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-flip { - overflow: visible; -} -.swiper-flip .swiper-slide { - pointer-events: none; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - z-index: 1; -} -.swiper-flip .swiper-slide .swiper-slide { - pointer-events: none; -} -.swiper-flip .swiper-slide-active, -.swiper-flip .swiper-slide-active .swiper-slide-active { - pointer-events: auto; -} -.swiper-flip .swiper-slide-shadow-top, -.swiper-flip .swiper-slide-shadow-bottom, -.swiper-flip .swiper-slide-shadow-left, -.swiper-flip .swiper-slide-shadow-right { - z-index: 0; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; -} -.swiper-creative .swiper-slide { - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - overflow: hidden; - transition-property: transform, opacity, height; -} -.swiper-cards { - overflow: visible; -} -.swiper-cards .swiper-slide { - transform-origin: center bottom; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - overflow: hidden; -} diff --git a/resources/web/guide/swiper/swiper-bundle.esm.browser.js b/resources/web/guide/swiper/swiper-bundle.esm.browser.js deleted file mode 100644 index ef767e9ac3..0000000000 --- a/resources/web/guide/swiper/swiper-bundle.esm.browser.js +++ /dev/null @@ -1,10060 +0,0 @@ -/** - * Swiper 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -/** - * SSR Window 4.0.1 - * Better handling for window object in SSR environment - * https://github.com/nolimits4web/ssr-window - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: October 27, 2021 - */ - -/* 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 = {}) { - Object.keys(src).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; -} - -/** - * Dom7 4.0.1 - * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API - * https://framework7.io/docs/dom7.html - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: October 27, 2021 - */ -/* eslint-disable no-proto */ - -function makeReactive(obj) { - const proto = obj.__proto__; - Object.defineProperty(obj, '__proto__', { - get() { - return proto; - }, - - set(value) { - proto.__proto__ = value; - } - - }); -} - -class Dom7 extends Array { - constructor(items) { - super(...(items || [])); - makeReactive(this); - } - -} - -function arrayFlat(arr = []) { - const res = []; - arr.forEach(el => { - if (Array.isArray(el)) { - res.push(...arrayFlat(el)); - } else { - res.push(el); - } - }); - return res; -} - -function arrayFilter(arr, callback) { - return Array.prototype.filter.call(arr, callback); -} - -function arrayUnique(arr) { - const uniqueArray = []; - - for (let i = 0; i < arr.length; i += 1) { - if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]); - } - - return uniqueArray; -} - - -function qsa(selector, context) { - if (typeof selector !== 'string') { - return [selector]; - } - - const a = []; - const res = context.querySelectorAll(selector); - - for (let i = 0; i < res.length; i += 1) { - a.push(res[i]); - } - - return a; -} - -function $(selector, context) { - const window = getWindow(); - const document = getDocument(); - let arr = []; - - if (!context && selector instanceof Dom7) { - return selector; - } - - if (!selector) { - return new Dom7(arr); - } - - if (typeof selector === 'string') { - const html = selector.trim(); - - if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { - let toCreate = 'div'; - if (html.indexOf(' c.split(' '))); - this.forEach(el => { - el.classList.add(...classNames); - }); - return this; -} - -function removeClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - this.forEach(el => { - el.classList.remove(...classNames); - }); - return this; -} - -function toggleClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - this.forEach(el => { - classNames.forEach(className => { - el.classList.toggle(className); - }); - }); -} - -function hasClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - return arrayFilter(this, el => { - return classNames.filter(className => el.classList.contains(className)).length > 0; - }).length > 0; -} - -function attr(attrs, value) { - if (arguments.length === 1 && typeof attrs === 'string') { - // Get attr - if (this[0]) return this[0].getAttribute(attrs); - return undefined; - } // Set attrs - - - for (let i = 0; i < this.length; i += 1) { - if (arguments.length === 2) { - // String - this[i].setAttribute(attrs, value); - } else { - // Object - for (const attrName in attrs) { - this[i][attrName] = attrs[attrName]; - this[i].setAttribute(attrName, attrs[attrName]); - } - } - } - - return this; -} - -function removeAttr(attr) { - for (let i = 0; i < this.length; i += 1) { - this[i].removeAttribute(attr); - } - - return this; -} - -function transform(transform) { - for (let i = 0; i < this.length; i += 1) { - this[i].style.transform = transform; - } - - return this; -} - -function transition$1(duration) { - for (let i = 0; i < this.length; i += 1) { - this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration; - } - - return this; -} - -function on(...args) { - let [eventType, targetSelector, listener, capture] = args; - - if (typeof args[1] === 'function') { - [eventType, listener, capture] = args; - targetSelector = undefined; - } - - if (!capture) capture = false; - - function handleLiveEvent(e) { - const target = e.target; - if (!target) return; - const eventData = e.target.dom7EventData || []; - - if (eventData.indexOf(e) < 0) { - eventData.unshift(e); - } - - if ($(target).is(targetSelector)) listener.apply(target, eventData);else { - const parents = $(target).parents(); // eslint-disable-line - - for (let k = 0; k < parents.length; k += 1) { - if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData); - } - } - } - - function handleEvent(e) { - const eventData = e && e.target ? e.target.dom7EventData || [] : []; - - if (eventData.indexOf(e) < 0) { - eventData.unshift(e); - } - - listener.apply(this, eventData); - } - - const events = eventType.split(' '); - let j; - - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (!targetSelector) { - for (j = 0; j < events.length; j += 1) { - const event = events[j]; - if (!el.dom7Listeners) el.dom7Listeners = {}; - if (!el.dom7Listeners[event]) el.dom7Listeners[event] = []; - el.dom7Listeners[event].push({ - listener, - proxyListener: handleEvent - }); - el.addEventListener(event, handleEvent, capture); - } - } else { - // Live events - for (j = 0; j < events.length; j += 1) { - const event = events[j]; - if (!el.dom7LiveListeners) el.dom7LiveListeners = {}; - if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = []; - el.dom7LiveListeners[event].push({ - listener, - proxyListener: handleLiveEvent - }); - el.addEventListener(event, handleLiveEvent, capture); - } - } - } - - return this; -} - -function off(...args) { - let [eventType, targetSelector, listener, capture] = args; - - if (typeof args[1] === 'function') { - [eventType, listener, capture] = args; - targetSelector = undefined; - } - - if (!capture) capture = false; - const events = eventType.split(' '); - - for (let i = 0; i < events.length; i += 1) { - const event = events[i]; - - for (let j = 0; j < this.length; j += 1) { - const el = this[j]; - let handlers; - - if (!targetSelector && el.dom7Listeners) { - handlers = el.dom7Listeners[event]; - } else if (targetSelector && el.dom7LiveListeners) { - handlers = el.dom7LiveListeners[event]; - } - - if (handlers && handlers.length) { - for (let k = handlers.length - 1; k >= 0; k -= 1) { - const handler = handlers[k]; - - if (listener && handler.listener === listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } else if (!listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } - } - } - } - } - - return this; -} - -function trigger(...args) { - const window = getWindow(); - const events = args[0].split(' '); - const eventData = args[1]; - - for (let i = 0; i < events.length; i += 1) { - const event = events[i]; - - for (let j = 0; j < this.length; j += 1) { - const el = this[j]; - - if (window.CustomEvent) { - const evt = new window.CustomEvent(event, { - detail: eventData, - bubbles: true, - cancelable: true - }); - el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0); - el.dispatchEvent(evt); - el.dom7EventData = []; - delete el.dom7EventData; - } - } - } - - return this; -} - -function transitionEnd$1(callback) { - const dom = this; - - function fireCallBack(e) { - if (e.target !== this) return; - callback.call(this, e); - dom.off('transitionend', fireCallBack); - } - - if (callback) { - dom.on('transitionend', fireCallBack); - } - - return this; -} - -function outerWidth(includeMargins) { - if (this.length > 0) { - if (includeMargins) { - const styles = this.styles(); - return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left')); - } - - return this[0].offsetWidth; - } - - return null; -} - -function outerHeight(includeMargins) { - if (this.length > 0) { - if (includeMargins) { - const styles = this.styles(); - return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom')); - } - - return this[0].offsetHeight; - } - - return null; -} - -function offset() { - if (this.length > 0) { - const window = getWindow(); - const document = getDocument(); - const el = this[0]; - 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 - }; - } - - return null; -} - -function styles() { - const window = getWindow(); - if (this[0]) return window.getComputedStyle(this[0], null); - return {}; -} - -function css(props, value) { - const window = getWindow(); - let i; - - if (arguments.length === 1) { - if (typeof props === 'string') { - // .css('width') - if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props); - } else { - // .css({ width: '100px' }) - for (i = 0; i < this.length; i += 1) { - for (const prop in props) { - this[i].style[prop] = props[prop]; - } - } - - return this; - } - } - - if (arguments.length === 2 && typeof props === 'string') { - // .css('width', '100px') - for (i = 0; i < this.length; i += 1) { - this[i].style[props] = value; - } - - return this; - } - - return this; -} - -function each(callback) { - if (!callback) return this; - this.forEach((el, index) => { - callback.apply(el, [el, index]); - }); - return this; -} - -function filter(callback) { - const result = arrayFilter(this, callback); - return $(result); -} - -function html(html) { - if (typeof html === 'undefined') { - return this[0] ? this[0].innerHTML : null; - } - - for (let i = 0; i < this.length; i += 1) { - this[i].innerHTML = html; - } - - return this; -} - -function text(text) { - if (typeof text === 'undefined') { - return this[0] ? this[0].textContent.trim() : null; - } - - for (let i = 0; i < this.length; i += 1) { - this[i].textContent = text; - } - - return this; -} - -function is(selector) { - const window = getWindow(); - const document = getDocument(); - const el = this[0]; - let compareWith; - let i; - if (!el || typeof selector === 'undefined') return false; - - if (typeof selector === 'string') { - if (el.matches) return el.matches(selector); - if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector); - if (el.msMatchesSelector) return el.msMatchesSelector(selector); - compareWith = $(selector); - - for (i = 0; i < compareWith.length; i += 1) { - if (compareWith[i] === el) return true; - } - - return false; - } - - if (selector === document) { - return el === document; - } - - if (selector === window) { - return el === window; - } - - if (selector.nodeType || selector instanceof Dom7) { - compareWith = selector.nodeType ? [selector] : selector; - - for (i = 0; i < compareWith.length; i += 1) { - if (compareWith[i] === el) return true; - } - - return false; - } - - return false; -} - -function index() { - let child = this[0]; - 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 eq(index) { - if (typeof index === 'undefined') return this; - const length = this.length; - - if (index > length - 1) { - return $([]); - } - - if (index < 0) { - const returnIndex = length + index; - if (returnIndex < 0) return $([]); - return $([this[returnIndex]]); - } - - return $([this[index]]); -} - -function append(...els) { - let newChild; - const document = getDocument(); - - for (let k = 0; k < els.length; k += 1) { - newChild = els[k]; - - for (let i = 0; i < this.length; i += 1) { - if (typeof newChild === 'string') { - const tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - - while (tempDiv.firstChild) { - this[i].appendChild(tempDiv.firstChild); - } - } else if (newChild instanceof Dom7) { - for (let j = 0; j < newChild.length; j += 1) { - this[i].appendChild(newChild[j]); - } - } else { - this[i].appendChild(newChild); - } - } - } - - return this; -} - -function prepend(newChild) { - const document = getDocument(); - let i; - let j; - - for (i = 0; i < this.length; i += 1) { - if (typeof newChild === 'string') { - const tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - - for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) { - this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); - } - } else if (newChild instanceof Dom7) { - for (j = 0; j < newChild.length; j += 1) { - this[i].insertBefore(newChild[j], this[i].childNodes[0]); - } - } else { - this[i].insertBefore(newChild, this[i].childNodes[0]); - } - } - - return this; -} - -function next(selector) { - if (this.length > 0) { - if (selector) { - if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { - return $([this[0].nextElementSibling]); - } - - return $([]); - } - - if (this[0].nextElementSibling) return $([this[0].nextElementSibling]); - return $([]); - } - - return $([]); -} - -function nextAll(selector) { - const nextEls = []; - let el = this[0]; - if (!el) return $([]); - - while (el.nextElementSibling) { - const next = el.nextElementSibling; // eslint-disable-line - - if (selector) { - if ($(next).is(selector)) nextEls.push(next); - } else nextEls.push(next); - - el = next; - } - - return $(nextEls); -} - -function prev(selector) { - if (this.length > 0) { - const el = this[0]; - - if (selector) { - if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { - return $([el.previousElementSibling]); - } - - return $([]); - } - - if (el.previousElementSibling) return $([el.previousElementSibling]); - return $([]); - } - - return $([]); -} - -function prevAll(selector) { - const prevEls = []; - let el = this[0]; - if (!el) return $([]); - - while (el.previousElementSibling) { - const prev = el.previousElementSibling; // eslint-disable-line - - if (selector) { - if ($(prev).is(selector)) prevEls.push(prev); - } else prevEls.push(prev); - - el = prev; - } - - return $(prevEls); -} - -function parent(selector) { - const parents = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - if (this[i].parentNode !== null) { - if (selector) { - if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode); - } else { - parents.push(this[i].parentNode); - } - } - } - - return $(parents); -} - -function parents(selector) { - const parents = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - let parent = this[i].parentNode; // eslint-disable-line - - while (parent) { - if (selector) { - if ($(parent).is(selector)) parents.push(parent); - } else { - parents.push(parent); - } - - parent = parent.parentNode; - } - } - - return $(parents); -} - -function closest(selector) { - let closest = this; // eslint-disable-line - - if (typeof selector === 'undefined') { - return $([]); - } - - if (!closest.is(selector)) { - closest = closest.parents(selector).eq(0); - } - - return closest; -} - -function find(selector) { - const foundElements = []; - - for (let i = 0; i < this.length; i += 1) { - const found = this[i].querySelectorAll(selector); - - for (let j = 0; j < found.length; j += 1) { - foundElements.push(found[j]); - } - } - - return $(foundElements); -} - -function children(selector) { - const children = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - const childNodes = this[i].children; - - for (let j = 0; j < childNodes.length; j += 1) { - if (!selector || $(childNodes[j]).is(selector)) { - children.push(childNodes[j]); - } - } - } - - return $(children); -} - -function remove() { - for (let i = 0; i < this.length; i += 1) { - if (this[i].parentNode) this[i].parentNode.removeChild(this[i]); - } - - return this; -} - -const Methods = { - addClass, - removeClass, - hasClass, - toggleClass, - attr, - removeAttr, - transform, - transition: transition$1, - on, - off, - trigger, - transitionEnd: transitionEnd$1, - outerWidth, - outerHeight, - styles, - offset, - css, - each, - html, - text, - is, - index, - eq, - append, - prepend, - next, - nextAll, - prev, - prevAll, - parent, - parents, - closest, - find, - children, - filter, - remove -}; -Object.keys(Methods).forEach(methodName => { - Object.defineProperty($.fn, methodName, { - value: Methods[methodName], - writable: true - }); -}); - -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]); - const noExtend = ['__proto__', 'constructor', 'prototype']; - - 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 => noExtend.indexOf(key) < 0); - - 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(); -} - -let support; - -function calcSupport() { - const window = getWindow(); - const document = getDocument(); - return { - smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style, - touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch), - passiveListener: function checkPassiveListener() { - let supportsPassive = false; - - try { - const opts = Object.defineProperty({}, 'passive', { - // eslint-disable-next-line - get() { - supportsPassive = true; - } - - }); - window.addEventListener('testPassiveListener', null, opts); - } catch (e) {// No support - } - - return supportsPassive; - }(), - gestures: function checkGestures() { - return 'ongesturestart' in window; - }() - }; -} - -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).*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(); - - function isSafari() { - const ua = window.navigator.userAgent.toLowerCase(); - return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; - } - - return { - isSafari: isSafari(), - isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) - }; -} - -function getBrowser() { - if (!browser) { - browser = calcBrowser(); - } - - return browser; -} - -function Resize({ - swiper, - on, - emit -}) { - const window = getWindow(); - let observer = 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 => { - 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 (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 (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: 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 = swiper.$el.parents(); - - for (let i = 0; i < containerParents.length; i += 1) { - attach(containerParents[i]); - } - } // Observe container - - - attach(swiper.$el[0], { - childList: swiper.params.observeSlideChildren - }); // Observe wrapper - - attach(swiper.$wrapperEl[0], { - 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 (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 (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 (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.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) 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) 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[0].clientWidth; - } - - if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { - height = swiper.params.height; - } else { - height = $el[0].clientHeight; - } - - if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { - return; - } // Subtract paddings - - - width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10); - height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('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 getDirectionLabel(property) { - if (swiper.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]; - } - - function getDirectionPropertyValue(node, label) { - return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0); - } - - const params = swiper.params; - const { - $wrapperEl, - size: swiperSize, - rtlTranslate: rtl, - wrongRTL - } = swiper; - const isVirtual = swiper.virtual && params.virtual.enabled; - const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; - const slides = $wrapperEl.children(`.${swiper.params.slideClass}`); - 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; - 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; - } - - swiper.virtualSize = -spaceBetween; // reset margins - - if (rtl) slides.css({ - marginLeft: '', - marginBottom: '', - marginTop: '' - });else slides.css({ - marginRight: '', - marginBottom: '', - marginTop: '' - }); // reset cssMode offsets - - if (params.centeredSlides && params.cssMode) { - setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', ''); - setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', ''); - } - - const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; - - if (gridEnabled) { - swiper.grid.initSlides(slidesLength); - } // 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.eq(i); - - if (gridEnabled) { - swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel); - } - - if (slide.css('display') === 'none') continue; // eslint-disable-line - - if (params.slidesPerView === 'auto') { - if (shouldResetSlideSize) { - slides[i].style[getDirectionLabel('width')] = ``; - } - - const slideStyles = getComputedStyle(slide[0]); - const currentTransform = slide[0].style.transform; - const currentWebKitTransform = slide[0].style.webkitTransform; - - if (currentTransform) { - slide[0].style.transform = 'none'; - } - - if (currentWebKitTransform) { - slide[0].style.webkitTransform = 'none'; - } - - if (params.roundLengths) { - slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(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[0]; - slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); - } - } - - if (currentTransform) { - slide[0].style.transform = currentTransform; - } - - if (currentWebKitTransform) { - slide[0].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 (slides[i]) { - slides[i].style[getDirectionLabel('width')] = `${slideSize}px`; - } - } - - if (slides[i]) { - slides[i].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.css({ - width: `${swiper.virtualSize + params.spaceBetween}px` - }); - } - - if (params.setWrapperSize) { - $wrapperEl.css({ - [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px` - }); - } - - if (gridEnabled) { - swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel); - } // Remove last grid elements depending on width - - - if (!params.centeredSlides) { - const newSlidesGrid = []; - - for (let i = 0; i < snapGrid.length; i += 1) { - let slidesGridItem = snapGrid[i]; - if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); - - if (snapGrid[i] <= swiper.virtualSize - swiperSize) { - newSlidesGrid.push(slidesGridItem); - } - } - - snapGrid = newSlidesGrid; - - if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { - snapGrid.push(swiper.virtualSize - swiperSize); - } - } - - if (snapGrid.length === 0) snapGrid = [0]; - - if (params.spaceBetween !== 0) { - const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight'); - slides.filter((_, slideIndex) => { - if (!params.cssMode) return true; - - if (slideIndex === slides.length - 1) { - return false; - } - - return true; - }).css({ - [key]: `${spaceBetween}px` - }); - } - - if (params.centeredSlides && params.centeredSlidesBounds) { - let allSlidesSize = 0; - slidesSizesGrid.forEach(slideSizeValue => { - allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); - }); - allSlidesSize -= params.spaceBetween; - const maxSnap = allSlidesSize - swiperSize; - 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 + (params.spaceBetween ? params.spaceBetween : 0); - }); - allSlidesSize -= params.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(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); - setCSSProperty(swiper.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(); - } -} - -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.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0]; - } - - return swiper.slides.eq(index)[0]; - }; // Find slides currently in view - - - if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { - if (swiper.params.centeredSlides) { - swiper.visibleSlides.each(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) swiper.$wrapperEl.css('height', `${newHeight}px`); -} - -function updateSlidesOffset() { - const swiper = this; - const slides = swiper.slides; - - for (let i = 0; i < slides.length; i += 1) { - slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; - } -} - -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; // Visible Slides - - slides.removeClass(params.slideVisibleClass); - swiper.visibleSlidesIndexes = []; - swiper.visibleSlides = []; - - 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 + params.spaceBetween); - const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween); - const slideBefore = -(offsetCenter - slideOffset); - const slideAfter = slideBefore + 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); - slides.eq(i).addClass(params.slideVisibleClass); - } - - slide.progress = rtl ? -slideProgress : slideProgress; - slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; - } - - swiper.visibleSlides = $(swiper.visibleSlides); -} - -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 - } = swiper; - const wasBeginning = isBeginning; - const wasEnd = isEnd; - - if (translatesDiff === 0) { - progress = 0; - isBeginning = true; - isEnd = true; - } else { - progress = (translate - swiper.minTranslate()) / translatesDiff; - isBeginning = progress <= 0; - isEnd = progress >= 1; - } - - Object.assign(swiper, { - progress, - 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); -} - -function updateSlidesClasses() { - const swiper = this; - const { - slides, - params, - $wrapperEl, - activeIndex, - realIndex - } = swiper; - const isVirtual = swiper.virtual && params.virtual.enabled; - slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`); - let activeSlide; - - if (isVirtual) { - activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`); - } else { - activeSlide = slides.eq(activeIndex); - } // Active classes - - - activeSlide.addClass(params.slideActiveClass); - - if (params.loop) { - // Duplicate to all looped slides - if (activeSlide.hasClass(params.slideDuplicateClass)) { - $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass); - } else { - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass); - } - } // Next Slide - - - let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass); - - if (params.loop && nextSlide.length === 0) { - nextSlide = slides.eq(0); - nextSlide.addClass(params.slideNextClass); - } // Prev Slide - - - let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass); - - if (params.loop && prevSlide.length === 0) { - prevSlide = slides.eq(-1); - prevSlide.addClass(params.slidePrevClass); - } - - if (params.loop) { - // Duplicate to all looped slides - if (nextSlide.hasClass(params.slideDuplicateClass)) { - $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass); - } else { - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass); - } - - if (prevSlide.hasClass(params.slideDuplicateClass)) { - $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass); - } else { - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass); - } - } - - swiper.emitSlidesClasses(); -} - -function updateActiveIndex(newActiveIndex) { - const swiper = this; - const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; - const { - slidesGrid, - snapGrid, - params, - activeIndex: previousIndex, - realIndex: previousRealIndex, - snapIndex: previousSnapIndex - } = swiper; - let activeIndex = newActiveIndex; - let snapIndex; - - if (typeof activeIndex === 'undefined') { - 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; - } - } - - 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) { - if (snapIndex !== previousSnapIndex) { - swiper.snapIndex = snapIndex; - swiper.emit('snapIndexChange'); - } - - return; - } // Get real index - - - const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10); - Object.assign(swiper, { - snapIndex, - realIndex, - previousIndex, - activeIndex - }); - swiper.emit('activeIndexChange'); - swiper.emit('snapIndexChange'); - - if (previousRealIndex !== realIndex) { - swiper.emit('realIndexChange'); - } - - if (swiper.initialized || swiper.params.runCallbacksOnInit) { - swiper.emit('slideChange'); - } -} - -function updateClickedSlide(e) { - const swiper = this; - const params = swiper.params; - const slide = $(e.target).closest(`.${params.slideClass}`)[0]; - 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).attr('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[0], axis); - if (rtl) currentTranslate = -currentTranslate; - return currentTranslate || 0; -} - -function setTranslate(translate, byController) { - const swiper = this; - const { - rtlTranslate: rtl, - params, - $wrapperEl, - 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); - } - - if (params.cssMode) { - wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; - } else if (!params.virtualTranslate) { - $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`); - } - - swiper.previousTranslate = swiper.translate; - swiper.translate = swiper.isHorizontal() ? x : y; // 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[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); - swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); - swiper.onTranslateToWrapperTransitionEnd = null; - delete swiper.onTranslateToWrapperTransitionEnd; - - if (runCallbacks) { - swiper.emit('transitionEnd'); - } - }; - } - - swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); - swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', 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.transition(duration); - } - - 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 && activeIndex !== previousIndex) { - if (dir === 'reset') { - swiper.emit(`slideResetTransition${step}`); - return; - } - - 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 = this.params.speed, runCallbacks = true, internal, initial) { - if (typeof index !== 'number' && typeof index !== 'string') { - throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`); - } - - if (typeof index === 'string') { - /** - * The `index` argument converted from `string` to `number`. - * @type {number} - */ - const indexAsNumber = parseInt(index, 10); - /** - * Determines whether the `index` argument is a valid `number` - * after being converted from the `string` type. - * @type {boolean} - */ - - const isValidNumber = isFinite(indexAsNumber); - - if (!isValidNumber) { - throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`); - } // Knowing that the converted `index` is a valid number, - // we can update the original argument's value. - - - index = indexAsNumber; - } - - const swiper = this; - let slideIndex = index; - if (slideIndex < 0) slideIndex = 0; - const { - params, - snapGrid, - slidesGrid, - previousIndex, - activeIndex, - rtlTranslate: rtl, - wrapperEl, - enabled - } = swiper; - - if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) { - return false; - } - - 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; - - if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { - swiper.emit('beforeSlideChangeStart'); - } - - const translate = -snapGrid[snapIndex]; // Update progress - - swiper.updateProgress(translate); // 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 && translate < swiper.translate && translate < swiper.minTranslate()) { - return false; - } - - if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { - if ((activeIndex || 0) !== slideIndex) return false; - } - } - - let direction; - if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index - - if (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) { - const isVirtual = swiper.virtual && swiper.params.virtual.enabled; - - if (isVirtual) { - swiper.wrapperEl.style.scrollSnapType = 'none'; - swiper._immediateVirtual = true; - } - - wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; - - if (isVirtual) { - requestAnimationFrame(() => { - swiper.wrapperEl.style.scrollSnapType = ''; - swiper._swiperImmediateVirtual = 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; - } - - if (speed === 0) { - swiper.setTransition(0); - swiper.setTranslate(translate); - swiper.updateActiveIndex(slideIndex); - swiper.updateSlidesClasses(); - swiper.emit('beforeTransitionStart', speed, internal); - swiper.transitionStart(runCallbacks, direction); - swiper.transitionEnd(runCallbacks, direction); - } else { - swiper.setTransition(speed); - swiper.setTranslate(translate); - swiper.updateActiveIndex(slideIndex); - swiper.updateSlidesClasses(); - swiper.emit('beforeTransitionStart', speed, internal); - swiper.transitionStart(runCallbacks, direction); - - 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[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); - swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); - swiper.onSlideToWrapperTransitionEnd = null; - delete swiper.onSlideToWrapperTransitionEnd; - swiper.transitionEnd(runCallbacks, direction); - }; - } - - swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); - swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); - } - } - - return true; -} - -function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - let newIndex = index; - - if (swiper.params.loop) { - newIndex += swiper.loopedSlides; - } - - return swiper.slideTo(newIndex, speed, runCallbacks, internal); -} - -/* eslint no-unused-vars: "off" */ -function slideNext(speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - const { - animating, - enabled, - params - } = swiper; - if (!enabled) return swiper; - 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; - - if (params.loop) { - if (animating && params.loopPreventsSlide) return false; - swiper.loopFix(); // eslint-disable-next-line - - swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; - } - - return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); -} - -/* eslint no-unused-vars: "off" */ -function slidePrev(speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - const { - params, - animating, - snapGrid, - slidesGrid, - rtlTranslate, - enabled - } = swiper; - if (!enabled) return swiper; - - if (params.loop) { - if (animating && params.loopPreventsSlide) return false; - swiper.loopFix(); // eslint-disable-next-line - - swiper._clientLeft = swiper.$wrapperEl[0].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)); - let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; - - if (typeof prevSnap === 'undefined' && params.cssMode) { - let prevSnapIndex; - snapGrid.forEach((snap, snapIndex) => { - if (normalizedTranslate >= snap) { - // prevSnap = snap; - prevSnapIndex = snapIndex; - } - }); - - if (typeof prevSnapIndex !== 'undefined') { - prevSnap = 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); - } - } - - return swiper.slideTo(prevIndex, speed, runCallbacks, internal); -} - -/* eslint no-unused-vars: "off" */ -function slideReset(speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); -} - -/* eslint no-unused-vars: "off" */ -function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) { - const swiper = this; - 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; - const { - params, - $wrapperEl - } = swiper; - const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; - let slideToIndex = swiper.clickedIndex; - let realIndex; - - if (params.loop) { - if (swiper.animating) return; - realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10); - - if (params.centeredSlides) { - if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { - swiper.loopFix(); - slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index(); - nextTick(() => { - swiper.slideTo(slideToIndex); - }); - } else { - swiper.slideTo(slideToIndex); - } - } else if (slideToIndex > swiper.slides.length - slidesPerView) { - swiper.loopFix(); - slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index(); - nextTick(() => { - swiper.slideTo(slideToIndex); - }); - } else { - swiper.slideTo(slideToIndex); - } - } else { - swiper.slideTo(slideToIndex); - } -} - -var slide = { - slideTo, - slideToLoop, - slideNext, - slidePrev, - slideReset, - slideToClosest, - slideToClickedSlide -}; - -function loopCreate() { - const swiper = this; - const document = getDocument(); - const { - params, - $wrapperEl - } = swiper; // Remove duplicated slides - - const $selector = $($wrapperEl.children()[0].parentNode); - $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove(); - let slides = $selector.children(`.${params.slideClass}`); - - if (params.loopFillGroupWithBlank) { - const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup; - - if (blankSlidesNum !== params.slidesPerGroup) { - for (let i = 0; i < blankSlidesNum; i += 1) { - const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`); - $selector.append(blankNode); - } - - slides = $selector.children(`.${params.slideClass}`); - } - } - - if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length; - swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10)); - swiper.loopedSlides += params.loopAdditionalSlides; - - if (swiper.loopedSlides > slides.length) { - swiper.loopedSlides = slides.length; - } - - const prependSlides = []; - const appendSlides = []; - slides.each((el, index) => { - const slide = $(el); - - if (index < swiper.loopedSlides) { - appendSlides.push(el); - } - - if (index < slides.length && index >= slides.length - swiper.loopedSlides) { - prependSlides.push(el); - } - - slide.attr('data-swiper-slide-index', index); - }); - - for (let i = 0; i < appendSlides.length; i += 1) { - $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); - } - - for (let i = prependSlides.length - 1; i >= 0; i -= 1) { - $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); - } -} - -function loopFix() { - const swiper = this; - swiper.emit('beforeLoopFix'); - const { - activeIndex, - slides, - loopedSlides, - allowSlidePrev, - allowSlideNext, - snapGrid, - rtlTranslate: rtl - } = swiper; - let newIndex; - swiper.allowSlidePrev = true; - swiper.allowSlideNext = true; - const snapTranslate = -snapGrid[activeIndex]; - const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding - - if (activeIndex < loopedSlides) { - newIndex = slides.length - loopedSlides * 3 + activeIndex; - newIndex += loopedSlides; - const slideChanged = swiper.slideTo(newIndex, 0, false, true); - - if (slideChanged && diff !== 0) { - swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); - } - } else if (activeIndex >= slides.length - loopedSlides) { - // Fix For Positive Oversliding - newIndex = -slides.length + activeIndex + loopedSlides; - newIndex += loopedSlides; - const slideChanged = swiper.slideTo(newIndex, 0, false, true); - - if (slideChanged && diff !== 0) { - swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); - } - } - - swiper.allowSlidePrev = allowSlidePrev; - swiper.allowSlideNext = allowSlideNext; - swiper.emit('loopFix'); -} - -function loopDestroy() { - const swiper = this; - const { - $wrapperEl, - params, - slides - } = swiper; - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove(); - slides.removeAttr('data-swiper-slide-index'); -} - -var loop = { - loopCreate, - loopFix, - loopDestroy -}; - -function setGrabCursor(moving) { - const swiper = this; - if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; - const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; - el.style.cursor = 'move'; - el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab'; - el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab'; - el.style.cursor = moving ? 'grabbing' : 'grab'; -} - -function unsetGrabCursor() { - const swiper = this; - - if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { - return; - } - - swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; -} - -var grabCursor = { - setGrabCursor, - unsetGrabCursor -}; - -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); - return found || __closestFrom(el.getRootNode().host); - } - - return __closestFrom(base); -} - -function onTouchStart(event) { - const swiper = this; - const document = getDocument(); - const window = getWindow(); - const data = swiper.touchEventsData; - const { - params, - touches, - enabled - } = swiper; - if (!enabled) return; - - if (swiper.animating && params.preventInteractionOnTransition) { - return; - } - - if (!swiper.animating && params.cssMode && params.loop) { - swiper.loopFix(); - } - - let e = event; - if (e.originalEvent) e = e.originalEvent; - let $targetEl = $(e.target); - - if (params.touchEventsTarget === 'wrapper') { - if (!$targetEl.closest(swiper.wrapperEl).length) return; - } - - data.isTouchEvent = e.type === 'touchstart'; - if (!data.isTouchEvent && 'which' in e && e.which === 3) return; - if (!data.isTouchEvent && '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 !== ''; - - if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) { - $targetEl = $(event.path[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, e.target) : $targetEl.closest(noSwipingSelector)[0])) { - swiper.allowClick = true; - return; - } - - if (params.swipeHandler) { - if (!$targetEl.closest(params.swipeHandler)[0]) return; - } - - touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; - touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : 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 - - const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; - const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; - - if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { - if (edgeSwipeDetection === 'prevent') { - event.preventDefault(); - } else { - 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; - - if (e.type !== 'touchstart') { - let preventDefault = true; - if ($targetEl.is(data.focusableElements)) preventDefault = false; - - if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) { - document.activeElement.blur(); - } - - const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; - - if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) { - e.preventDefault(); - } - } - - 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; - let e = event; - if (e.originalEvent) e = e.originalEvent; - - if (!data.isTouched) { - if (data.startMoving && data.isScrolling) { - swiper.emit('touchMoveOpposite', e); - } - - return; - } - - if (data.isTouchEvent && e.type !== 'touchmove') return; - const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]); - const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX; - const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY; - - if (e.preventedByNestedSwiper) { - touches.startX = pageX; - touches.startY = pageY; - return; - } - - if (!swiper.allowTouchMove) { - // isMoved = true; - swiper.allowClick = false; - - if (data.isTouched) { - Object.assign(touches, { - startX: pageX, - startY: pageY, - currentX: pageX, - currentY: pageY - }); - data.touchStartTime = now(); - } - - return; - } - - if (data.isTouchEvent && 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 (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { - return; - } - } - - if (data.isTouchEvent && document.activeElement) { - if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) { - data.isMoved = true; - swiper.allowClick = false; - return; - } - } - - if (data.allowTouchCallbacks) { - swiper.emit('touchMove', e); - } - - if (e.targetTouches && e.targetTouches.length > 1) return; - 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) { - 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(); - } - - if (!data.isMoved) { - if (params.loop && !params.cssMode) { - swiper.loopFix(); - } - - data.startTranslate = swiper.getTranslate(); - swiper.setTransition(0); - - if (swiper.animating) { - swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); - } - - data.allowMomentumBounce = false; // Grab Cursor - - if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { - swiper.setGrabCursor(true); - } - - swiper.emit('sliderFirstMove', e); - } - - swiper.emit('sliderMove', e); - data.isMoved = true; - let diff = swiper.isHorizontal() ? diffX : diffY; - touches.diff = diff; - diff *= params.touchRatio; - if (rtl) diff = -diff; - swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; - data.currentTranslate = diff + data.startTranslate; - let disableParentSwiper = true; - let resistanceRatio = params.resistanceRatio; - - if (params.touchReleaseOnEdges) { - resistanceRatio = 0; - } - - if (diff > 0 && data.currentTranslate > swiper.minTranslate()) { - disableParentSwiper = false; - if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; - } else if (diff < 0 && 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 (swiper.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; - const { - params, - touches, - rtlTranslate: rtl, - slidesGrid, - enabled - } = swiper; - if (!enabled) return; - let e = event; - if (e.originalEvent) e = e.originalEvent; - - 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) { - swiper.updateClickedSlide(e); - 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.currentTranslate === data.startTranslate) { - 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 (swiper.params.freeMode && params.freeMode.enabled) { - swiper.freeMode.onTouchEnd({ - currentPos - }); - return; - } // Find current slide - - - 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 (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { - stopIndex = i; - groupSize = slidesGrid[i + increment] - slidesGrid[i]; - } - } else if (currentPos >= slidesGrid[i]) { - stopIndex = i; - groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; - } - } // 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(stopIndex + increment);else swiper.slideTo(stopIndex); - } - - if (swiper.swipeDirection === 'prev') { - if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);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(stopIndex + increment); - } - - if (swiper.swipeDirection === 'prev') { - swiper.slideTo(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; // Disable locks on resize - - swiper.allowSlideNext = true; - swiper.allowSlidePrev = true; - swiper.updateSize(); - swiper.updateSlides(); - swiper.updateSlidesClasses(); - - if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) { - swiper.slideTo(swiper.slides.length - 1, 0, false, true); - } else { - swiper.slideTo(swiper.activeIndex, 0, false, true); - } - - if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { - swiper.autoplay.run(); - } // 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); -} - -let dummyEventAttached = false; - -function dummyEventListener() {} - -const events = (swiper, method) => { - const document = getDocument(); - const { - params, - touchEvents, - el, - wrapperEl, - device, - support - } = swiper; - const capture = !!params.nested; - const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; - const swiperMethod = method; // Touch Events - - if (!support.touch) { - el[domMethod](touchEvents.start, swiper.onTouchStart, false); - document[domMethod](touchEvents.move, swiper.onTouchMove, capture); - document[domMethod](touchEvents.end, swiper.onTouchEnd, false); - } else { - const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? { - passive: true, - capture: false - } : false; - el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener); - el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? { - passive: false, - capture - } : capture); - el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener); - - if (touchEvents.cancel) { - el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener); - } - } // 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); - } -}; - -function attachEvents() { - const swiper = this; - const document = getDocument(); - const { - params, - support - } = swiper; - swiper.onTouchStart = onTouchStart.bind(swiper); - swiper.onTouchMove = onTouchMove.bind(swiper); - swiper.onTouchEnd = onTouchEnd.bind(swiper); - - if (params.cssMode) { - swiper.onScroll = onScroll.bind(swiper); - } - - swiper.onClick = onClick.bind(swiper); - - if (support.touch && !dummyEventAttached) { - document.addEventListener('touchstart', dummyEventListener); - dummyEventAttached = true; - } - - 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 { - activeIndex, - initialized, - loopedSlides = 0, - params, - $el - } = swiper; - const breakpoints = params.breakpoints; - if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters - - const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); - 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 wasEnabled = params.enabled; - - if (wasMultiRow && !isMultiRow) { - $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`); - swiper.emitContainerClasses(); - } else if (!wasMultiRow && isMultiRow) { - $el.addClass(`${params.containerModifierClass}grid`); - - if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { - $el.addClass(`${params.containerModifierClass}grid-column`); - } - - swiper.emitContainerClasses(); - } - - const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; - const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); - - if (directionChanged && initialized) { - swiper.changeDirection(); - } - - extend(swiper.params, breakpointParams); - const isEnabled = swiper.params.enabled; - 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 (needsReLoop && initialized) { - swiper.loopDestroy(); - swiper.loopCreate(); - swiper.updateSlides(); - swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false); - } - - 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, - support - } = swiper; // prettier-ignore - - const suffixes = prepareClasses(['initialized', params.direction, { - 'pointer-events': !support.touch - }, { - '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 - }], params.containerModifierClass); - classNames.push(...suffixes); - $el.addClass([...classNames].join(' ')); - swiper.emitContainerClasses(); -} - -function removeClasses() { - const swiper = this; - const { - $el, - classNames - } = swiper; - $el.removeClass(classNames.join(' ')); - swiper.emitContainerClasses(); -} - -var classes = { - addClasses, - removeClasses -}; - -function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) { - const window = getWindow(); - let image; - - function onReady() { - if (callback) callback(); - } - - const isPicture = $(imageEl).parent('picture')[0]; - - if (!isPicture && (!imageEl.complete || !checkForComplete)) { - if (src) { - image = new window.Image(); - image.onload = onReady; - image.onerror = onReady; - - if (sizes) { - image.sizes = sizes; - } - - if (srcset) { - image.srcset = srcset; - } - - if (src) { - image.src = src; - } - } else { - onReady(); - } - } else { - // image already loaded... - onReady(); - } -} - -function preloadImages() { - const swiper = this; - swiper.imagesToLoad = swiper.$el.find('img'); - - function onReady() { - if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return; - if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1; - - if (swiper.imagesLoaded === swiper.imagesToLoad.length) { - if (swiper.params.updateOnImagesReady) swiper.update(); - swiper.emit('imagesReady'); - } - } - - for (let i = 0; i < swiper.imagesToLoad.length; i += 1) { - const imageEl = swiper.imagesToLoad[i]; - swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady); - } -} - -var images = { - loadImage, - preloadImages -}; - -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', - touchEventsTarget: 'wrapper', - initialSlide: 0, - speed: 300, - cssMode: false, - updateOnWindowResize: true, - resizeObserver: true, - nested: false, - createElements: false, - 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, - // 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: 0, - 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, - // Images - preloadImages: true, - updateOnImagesReady: true, - // loop - loop: false, - loopAdditionalSlides: 0, - loopedSlides: null, - loopFillGroupWithBlank: false, - loopPreventsSlide: true, - // Swiping/no swiping - allowSlidePrev: true, - allowSlideNext: true, - swipeHandler: null, - // '.swipe-handler', - noSwiping: true, - noSwipingClass: 'swiper-no-swiping', - noSwipingSelector: null, - // Passive Listeners - passiveListeners: true, - // NS - containerModifierClass: 'swiper-', - // NEW - slideClass: 'swiper-slide', - slideBlankClass: 'swiper-slide-invisible-blank', - slideActiveClass: 'swiper-slide-active', - slideDuplicateActiveClass: 'swiper-slide-duplicate-active', - slideVisibleClass: 'swiper-slide-visible', - slideDuplicateClass: 'swiper-slide-duplicate', - slideNextClass: 'swiper-slide-next', - slideDuplicateNextClass: 'swiper-slide-duplicate-next', - slidePrevClass: 'swiper-slide-prev', - slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', - wrapperClass: 'swiper-wrapper', - // 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 (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) { - params[moduleParamName] = { - auto: true - }; - } - - if (!(moduleParamName in params && 'enabled' in moduleParams)) { - extend(allModulesParams, obj); - return; - } - - if (params[moduleParamName] === true) { - params[moduleParamName] = { - enabled: true - }; - } - - 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, - images -}; -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; - - if (params.el && $(params.el).length > 1) { - const swipers = []; - $(params.el).each(containerEl => { - const newParams = extend({}, params, { - el: containerEl - }); - swipers.push(new Swiper(newParams)); - }); - 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)) { - swiper.modules.push(...params.modules); - } - - const allModulesParams = {}; - swiper.modules.forEach(mod => { - mod({ - 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); - } // Save Dom lib - - - swiper.$ = $; // 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, - // Locks - allowSlideNext: swiper.params.allowSlideNext, - allowSlidePrev: swiper.params.allowSlidePrev, - // Touch Events - touchEvents: function touchEvents() { - const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel']; - const desktop = ['pointerdown', 'pointermove', 'pointerup']; - swiper.touchEventsTouch = { - start: touch[0], - move: touch[1], - end: touch[2], - cancel: touch[3] - }; - swiper.touchEventsDesktop = { - start: desktop[0], - move: desktop[1], - end: desktop[2] - }; - return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop; - }(), - 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: now(), - clickTimeout: undefined, - // Velocities - velocities: [], - allowMomentumBounce: undefined, - isTouchEvent: undefined, - startMoving: undefined - }, - // 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 - - - return swiper; - } - - 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; - 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.each(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 (params.centeredSlides) { - let slideSize = slides[activeIndex].swiperSlideSize; - let breakLoop; - - for (let i = activeIndex + 1; i < slides.length; i += 1) { - if (slides[i] && !breakLoop) { - slideSize += 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.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 (swiper.params.freeMode && swiper.params.freeMode.enabled) { - setTranslate(); - - if (swiper.params.autoHeight) { - swiper.updateAutoHeight(); - } - } else { - if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { - translated = swiper.slideTo(swiper.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.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`); - swiper.emitContainerClasses(); - swiper.params.direction = newDirection; - swiper.slides.each(slideEl => { - if (newDirection === 'vertical') { - slideEl.style.width = ''; - } else { - slideEl.style.height = ''; - } - }); - swiper.emit('changeDirection'); - if (needUpdate) swiper.update(); - return swiper; - } - - mount(el) { - const swiper = this; - if (swiper.mounted) return true; // Find el - - const $el = $(el || swiper.params.el); - el = $el[0]; - - if (!el) { - return false; - } - - el.swiper = swiper; - - 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 - - res.children = options => $el.children(options); - - return res; - } - - return $el.children(getWrapperSelector()); - }; // Find Wrapper - - - let $wrapperEl = getWrapper(); - - if ($wrapperEl.length === 0 && swiper.params.createElements) { - const document = getDocument(); - const wrapper = document.createElement('div'); - $wrapperEl = $(wrapper); - wrapper.className = swiper.params.wrapperClass; - $el.append(wrapper); - $el.children(`.${swiper.params.slideClass}`).each(slideEl => { - $wrapperEl.append(slideEl); - }); - } - - Object.assign(swiper, { - $el, - el, - $wrapperEl, - wrapperEl: $wrapperEl[0], - mounted: true, - // RTL - rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl', - rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), - wrongRTL: $wrapperEl.css('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(); // Create loop - - if (swiper.params.loop) { - swiper.loopCreate(); - } // 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(); - } - - if (swiper.params.preloadImages) { - swiper.preloadImages(); - } // Slide To Initial Slide - - - if (swiper.params.loop) { - swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true); - } else { - swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); - } // Attach events - - - swiper.attachEvents(); // Init Flag - - swiper.initialized = true; // 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(); - $el.removeAttr('style'); - $wrapperEl.removeAttr('style'); - - if (slides && slides.length) { - slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index'); - } - } - - swiper.emit('destroy'); // Detach emitter events - - Object.keys(swiper.eventsListeners).forEach(eventName => { - swiper.off(eventName); - }); - - if (deleteInstance !== false) { - swiper.$el[0].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 -}) { - extendParams({ - virtual: { - enabled: false, - slides: [], - cache: true, - renderSlide: null, - renderExternal: null, - renderExternalUpdate: true, - addSlidesBefore: 0, - addSlidesAfter: 0 - } - }); - let cssModeTimeout; - swiper.virtual = { - cache: {}, - from: undefined, - to: undefined, - slides: [], - offset: 0, - slidesGrid: [] - }; - - function renderSlide(slide, index) { - const params = swiper.params.virtual; - - if (params.cache && swiper.virtual.cache[index]) { - return swiper.virtual.cache[index]; - } - - const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`
${slide}
`); - if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index); - if (params.cache) swiper.virtual.cache[index] = $slideEl; - return $slideEl; - } - - function update(force) { - const { - slidesPerView, - slidesPerGroup, - centeredSlides - } = swiper.params; - const { - addSlidesBefore, - addSlidesAfter - } = swiper.params.virtual; - const { - from: previousFrom, - to: previousTo, - slides, - slidesGrid: previousSlidesGrid, - offset: previousOffset - } = swiper.virtual; - - if (!swiper.params.cssMode) { - swiper.updateActiveIndex(); - } - - const activeIndex = swiper.activeIndex || 0; - let offsetProp; - if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; - let slidesAfter; - let slidesBefore; - - if (centeredSlides) { - slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; - slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; - } else { - slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; - slidesBefore = slidesPerGroup + addSlidesBefore; - } - - const from = Math.max((activeIndex || 0) - slidesBefore, 0); - const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1); - const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); - Object.assign(swiper.virtual, { - from, - to, - offset, - slidesGrid: swiper.slidesGrid - }); - - function onRendered() { - swiper.updateSlides(); - swiper.updateProgress(); - swiper.updateSlidesClasses(); - - if (swiper.lazy && swiper.params.lazy.enabled) { - swiper.lazy.load(); - } - } - - if (previousFrom === from && previousTo === to && !force) { - if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { - swiper.slides.css(offsetProp, `${offset}px`); - } - - swiper.updateProgress(); - 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(); - } - - return; - } - - const prependIndexes = []; - const appendIndexes = []; - - if (force) { - swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove(); - } else { - for (let i = previousFrom; i <= previousTo; i += 1) { - if (i < from || i > to) { - swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove(); - } - } - } - - for (let i = 0; i < slides.length; i += 1) { - if (i >= from && i <= to) { - if (typeof previousTo === 'undefined' || force) { - appendIndexes.push(i); - } else { - if (i > previousTo) appendIndexes.push(i); - if (i < previousFrom) prependIndexes.push(i); - } - } - } - - appendIndexes.forEach(index => { - swiper.$wrapperEl.append(renderSlide(slides[index], index)); - }); - prependIndexes.sort((a, b) => b - a).forEach(index => { - swiper.$wrapperEl.prepend(renderSlide(slides[index], index)); - }); - swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}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.attr('data-swiper-slide-index'); - - if (cachedElIndex) { - $cachedEl.attr('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) { - swiper.virtual.slides.splice(slidesIndexes[i], 1); - - if (swiper.params.virtual.cache) { - delete swiper.virtual.cache[slidesIndexes[i]]; - } - - if (slidesIndexes[i] < activeIndex) activeIndex -= 1; - activeIndex = Math.max(activeIndex, 0); - } - } else { - swiper.virtual.slides.splice(slidesIndexes, 1); - - if (swiper.params.virtual.cache) { - delete swiper.virtual.cache[slidesIndexes]; - } - - 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; - swiper.virtual.slides = swiper.params.virtual.slides; - swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); - swiper.params.watchSlidesProgress = true; - swiper.originalParams.watchSlidesProgress = true; - - if (!swiper.params.initialSlide) { - update(); - } - }); - 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 - } - }); - - 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.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 (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) { - return undefined; - } - - const $el = swiper.$el; - const swiperWidth = $el[0].clientWidth; - const swiperHeight = $el[0].clientHeight; - const windowWidth = window.innerWidth; - const windowHeight = window.innerHeight; - const swiperOffset = swiper.$el.offset(); - if (rtl) swiperOffset.left -= swiper.$el[0].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; - } - - 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(); - if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); - } else { - if (isPageUp || isPageDown || isArrowUp || isArrowDown) { - if (e.preventDefault) e.preventDefault();else e.returnValue = false; - } - - if (isPageDown || isArrowDown) swiper.slideNext(); - if (isPageUp || isArrowUp) swiper.slidePrev(); - } - - emit('keyPress', kc); - return undefined; - } - - function enable() { - if (swiper.keyboard.enabled) return; - $(document).on('keydown', handle); - swiper.keyboard.enabled = true; - } - - function disable() { - if (!swiper.keyboard.enabled) return; - $(document).off('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 - } - }); - 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; - const params = swiper.params.mousewheel; - - if (swiper.params.cssMode) { - e.preventDefault(); - } - - let target = swiper.$el; - - if (swiper.params.mousewheel.eventsTarget !== 'container') { - target = $(swiper.params.mousewheel.eventsTarget); - } - - if (!swiper.mouseEntered && !target[0].contains(e.target) && !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; - - if (swiper.params.loop) { - swiper.loopFix(); - } - - 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.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(() => { - 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(() => { - 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.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions - - if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true; - } - } - - if (e.preventDefault) e.preventDefault();else e.returnValue = false; - return false; - } - - function events(method) { - let target = swiper.$el; - - if (swiper.params.mousewheel.eventsTarget !== 'container') { - target = $(swiper.params.mousewheel.eventsTarget); - } - - target[method]('mouseenter', handleMouseEnter); - target[method]('mouseleave', handleMouseLeave); - target[method]('wheel', handle); - } - - function enable() { - if (swiper.params.cssMode) { - swiper.wrapperEl.removeEventListener('wheel', handle); - return true; - } - - if (swiper.mousewheel.enabled) return false; - events('on'); - 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('off'); - 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) { - const document = getDocument(); - - if (swiper.params.createElements) { - Object.keys(checkProps).forEach(key => { - if (!params[key] && params.auto === true) { - let element = swiper.$el.children(`.${checkProps[key]}`)[0]; - - if (!element) { - element = document.createElement('div'); - element.className = checkProps[key]; - swiper.$el.append(element); - } - - params[key] = element; - originalParams[key] = element; - } - }); - } - - return params; -} - -function Navigation({ - swiper, - extendParams, - on, - emit -}) { - extendParams({ - navigation: { - nextEl: null, - prevEl: null, - hideOnClick: false, - disabledClass: 'swiper-button-disabled', - hiddenClass: 'swiper-button-hidden', - lockClass: 'swiper-button-lock' - } - }); - swiper.navigation = { - nextEl: null, - $nextEl: null, - prevEl: null, - $prevEl: null - }; - - function getEl(el) { - let $el; - - if (el) { - $el = $(el); - - if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) { - $el = swiper.$el.find(el); - } - } - - return $el; - } - - function toggleEl($el, disabled) { - const params = swiper.params.navigation; - - if ($el && $el.length > 0) { - $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass); - if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled; - - if (swiper.params.watchOverflow && swiper.enabled) { - $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); - } - } - } - - function update() { - // Update Navigation Buttons - if (swiper.params.loop) return; - const { - $nextEl, - $prevEl - } = swiper.navigation; - toggleEl($prevEl, swiper.isBeginning); - toggleEl($nextEl, swiper.isEnd); - } - - function onPrevClick(e) { - e.preventDefault(); - if (swiper.isBeginning && !swiper.params.loop) return; - swiper.slidePrev(); - } - - function onNextClick(e) { - e.preventDefault(); - if (swiper.isEnd && !swiper.params.loop) return; - swiper.slideNext(); - } - - 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; - const $nextEl = getEl(params.nextEl); - const $prevEl = getEl(params.prevEl); - - if ($nextEl && $nextEl.length > 0) { - $nextEl.on('click', onNextClick); - } - - if ($prevEl && $prevEl.length > 0) { - $prevEl.on('click', onPrevClick); - } - - Object.assign(swiper.navigation, { - $nextEl, - nextEl: $nextEl && $nextEl[0], - $prevEl, - prevEl: $prevEl && $prevEl[0] - }); - - if (!swiper.enabled) { - if ($nextEl) $nextEl.addClass(params.lockClass); - if ($prevEl) $prevEl.addClass(params.lockClass); - } - } - - function destroy() { - const { - $nextEl, - $prevEl - } = swiper.navigation; - - if ($nextEl && $nextEl.length) { - $nextEl.off('click', onNextClick); - $nextEl.removeClass(swiper.params.navigation.disabledClass); - } - - if ($prevEl && $prevEl.length) { - $prevEl.off('click', onPrevClick); - $prevEl.removeClass(swiper.params.navigation.disabledClass); - } - } - - on('init', () => { - init(); - update(); - }); - on('toEdge fromEdge lock unlock', () => { - update(); - }); - on('destroy', () => { - destroy(); - }); - on('enable disable', () => { - const { - $nextEl, - $prevEl - } = swiper.navigation; - - if ($nextEl) { - $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass); - } - - if ($prevEl) { - $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass); - } - }); - on('click', (_s, e) => { - const { - $nextEl, - $prevEl - } = swiper.navigation; - const targetEl = e.target; - - if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) { - if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; - let isHidden; - - if ($nextEl) { - isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass); - } else if ($prevEl) { - isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass); - } - - if (isHidden === true) { - emit('navigationShow'); - } else { - emit('navigationHide'); - } - - if ($nextEl) { - $nextEl.toggleClass(swiper.params.navigation.hiddenClass); - } - - if ($prevEl) { - $prevEl.toggleClass(swiper.params.navigation.hiddenClass); - } - } - }); - Object.assign(swiper.navigation, { - update, - init, - destroy - }); -} - -function classesToSelector(classes = '') { - 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` - } - }); - swiper.pagination = { - el: null, - $el: null, - bullets: [] - }; - let bulletSize; - let dynamicBulletIndex = 0; - - function isPaginationDisabled() { - return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0; - } - - function setSideBullets($bulletEl, position) { - const { - bulletActiveClass - } = swiper.params.pagination; - $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`); - } - - function update() { - // Render || Update Pagination bullets/items - const rtl = swiper.rtl; - const params = swiper.params.pagination; - if (isPaginationDisabled()) return; - const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; - const $el = swiper.pagination.$el; // Current/Total - - let current; - const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; - - if (swiper.params.loop) { - current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); - - if (current > slidesLength - 1 - swiper.loopedSlides * 2) { - current -= slidesLength - swiper.loopedSlides * 2; - } - - if (current > total - 1) current -= total; - if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current; - } else if (typeof swiper.snapIndex !== 'undefined') { - current = swiper.snapIndex; - } else { - 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 = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true); - $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`); - - if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { - dynamicBulletIndex += current - swiper.previousIndex; - - if (dynamicBulletIndex > params.dynamicMainBullets - 1) { - dynamicBulletIndex = params.dynamicMainBullets - 1; - } else if (dynamicBulletIndex < 0) { - dynamicBulletIndex = 0; - } - } - - firstIndex = current - dynamicBulletIndex; - lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); - midIndex = (lastIndex + firstIndex) / 2; - } - - bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' ')); - - if ($el.length > 1) { - bullets.each(bullet => { - const $bullet = $(bullet); - const bulletIndex = $bullet.index(); - - if (bulletIndex === current) { - $bullet.addClass(params.bulletActiveClass); - } - - if (params.dynamicBullets) { - if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { - $bullet.addClass(`${params.bulletActiveClass}-main`); - } - - if (bulletIndex === firstIndex) { - setSideBullets($bullet, 'prev'); - } - - if (bulletIndex === lastIndex) { - setSideBullets($bullet, 'next'); - } - } - }); - } else { - const $bullet = bullets.eq(current); - const bulletIndex = $bullet.index(); - $bullet.addClass(params.bulletActiveClass); - - if (params.dynamicBullets) { - const $firstDisplayedBullet = bullets.eq(firstIndex); - const $lastDisplayedBullet = bullets.eq(lastIndex); - - for (let i = firstIndex; i <= lastIndex; i += 1) { - bullets.eq(i).addClass(`${params.bulletActiveClass}-main`); - } - - if (swiper.params.loop) { - if (bulletIndex >= bullets.length - params.dynamicMainBullets) { - for (let i = params.dynamicMainBullets; i >= 0; i -= 1) { - bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`); - } - - bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`); - } else { - setSideBullets($firstDisplayedBullet, 'prev'); - setSideBullets($lastDisplayedBullet, 'next'); - } - } else { - 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.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`); - } - } - - if (params.type === 'fraction') { - $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1)); - $el.find(classesToSelector(params.totalClass)).text(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; - } - - $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed); - } - - if (params.type === 'custom' && params.renderCustom) { - $el.html(params.renderCustom(swiper, current + 1, total)); - emit('paginationRender', $el[0]); - } else { - emit('paginationUpdate', $el[0]); - } - - if (swiper.params.watchOverflow && swiper.enabled) { - $el[swiper.isLocked ? 'addClass' : 'removeClass'](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.slides.length; - const $el = swiper.pagination.$el; - let paginationHTML = ''; - - if (params.type === 'bullets') { - let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; - - if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) { - numberOfBullets = slidesLength; - } - - for (let i = 0; i < numberOfBullets; i += 1) { - if (params.renderBullet) { - paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); - } else { - paginationHTML += `<${params.bulletElement} class="${params.bulletClass}">`; - } - } - - $el.html(paginationHTML); - swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass)); - } - - if (params.type === 'fraction') { - if (params.renderFraction) { - paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); - } else { - paginationHTML = `` + ' / ' + ``; - } - - $el.html(paginationHTML); - } - - if (params.type === 'progressbar') { - if (params.renderProgressbar) { - paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); - } else { - paginationHTML = ``; - } - - $el.html(paginationHTML); - } - - if (params.type !== 'custom') { - emit('paginationRender', swiper.pagination.$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 = $(params.el); - if ($el.length === 0) return; - - if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) { - $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper - - if ($el.length > 1) { - $el = $el.filter(el => { - if ($(el).parents('.swiper')[0] !== swiper.el) return false; - return true; - }); - } - } - - if (params.type === 'bullets' && params.clickable) { - $el.addClass(params.clickableClass); - } - - $el.addClass(params.modifierClass + params.type); - $el.addClass(params.modifierClass + swiper.params.direction); - - if (params.type === 'bullets' && params.dynamicBullets) { - $el.addClass(`${params.modifierClass}${params.type}-dynamic`); - dynamicBulletIndex = 0; - - if (params.dynamicMainBullets < 1) { - params.dynamicMainBullets = 1; - } - } - - if (params.type === 'progressbar' && params.progressbarOpposite) { - $el.addClass(params.progressbarOppositeClass); - } - - if (params.clickable) { - $el.on('click', classesToSelector(params.bulletClass), function onClick(e) { - e.preventDefault(); - let index = $(this).index() * swiper.params.slidesPerGroup; - if (swiper.params.loop) index += swiper.loopedSlides; - swiper.slideTo(index); - }); - } - - Object.assign(swiper.pagination, { - $el, - el: $el[0] - }); - - if (!swiper.enabled) { - $el.addClass(params.lockClass); - } - } - - function destroy() { - const params = swiper.params.pagination; - if (isPaginationDisabled()) return; - const $el = swiper.pagination.$el; - $el.removeClass(params.hiddenClass); - $el.removeClass(params.modifierClass + params.type); - $el.removeClass(params.modifierClass + swiper.params.direction); - if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass); - - if (params.clickable) { - $el.off('click', classesToSelector(params.bulletClass)); - } - } - - on('init', () => { - init(); - render(); - update(); - }); - on('activeIndexChange', () => { - if (swiper.params.loop) { - update(); - } else if (typeof swiper.snapIndex === 'undefined') { - update(); - } - }); - on('snapIndexChange', () => { - if (!swiper.params.loop) { - update(); - } - }); - on('slidesLengthChange', () => { - if (swiper.params.loop) { - render(); - update(); - } - }); - on('snapGridLengthChange', () => { - if (!swiper.params.loop) { - render(); - update(); - } - }); - on('destroy', () => { - destroy(); - }); - on('enable disable', () => { - const { - $el - } = swiper.pagination; - - if ($el) { - $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass); - } - }); - on('lock unlock', () => { - update(); - }); - on('click', (_s, e) => { - const targetEl = e.target; - const { - $el - } = swiper.pagination; - - if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(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.hasClass(swiper.params.pagination.hiddenClass); - - if (isHidden === true) { - emit('paginationShow'); - } else { - emit('paginationHide'); - } - - $el.toggleClass(swiper.params.pagination.hiddenClass); - } - }); - Object.assign(swiper.pagination, { - 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' - } - }); - swiper.scrollbar = { - el: null, - dragEl: null, - $el: null, - $dragEl: null - }; - - function setTranslate() { - if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; - const { - scrollbar, - rtlTranslate: rtl, - progress - } = swiper; - const { - $dragEl, - $el - } = scrollbar; - const params = swiper.params.scrollbar; - 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.transform(`translate3d(${newPos}px, 0, 0)`); - $dragEl[0].style.width = `${newSize}px`; - } else { - $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`); - $dragEl[0].style.height = `${newSize}px`; - } - - if (params.hide) { - clearTimeout(timeout); - $el[0].style.opacity = 1; - timeout = setTimeout(() => { - $el[0].style.opacity = 0; - $el.transition(400); - }, 1000); - } - } - - function setTransition(duration) { - if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; - swiper.scrollbar.$dragEl.transition(duration); - } - - function updateSize() { - if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; - const { - scrollbar - } = swiper; - const { - $dragEl, - $el - } = scrollbar; - $dragEl[0].style.width = ''; - $dragEl[0].style.height = ''; - trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].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[0].style.width = `${dragSize}px`; - } else { - $dragEl[0].style.height = `${dragSize}px`; - } - - if (divider >= 1) { - $el[0].style.display = 'none'; - } else { - $el[0].style.display = ''; - } - - if (swiper.params.scrollbar.hide) { - $el[0].style.opacity = 0; - } - - if (swiper.params.watchOverflow && swiper.enabled) { - scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass); - } - } - - function getPointerPosition(e) { - if (swiper.isHorizontal()) { - return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX; - } - - return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY; - } - - function setDragPosition(e) { - const { - scrollbar, - rtlTranslate: rtl - } = swiper; - const { - $el - } = scrollbar; - let positionRatio; - positionRatio = (getPointerPosition(e) - $el.offset()[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[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; - e.preventDefault(); - e.stopPropagation(); - $wrapperEl.transition(100); - $dragEl.transition(100); - setDragPosition(e); - clearTimeout(dragTimeout); - $el.transition(0); - - if (params.hide) { - $el.css('opacity', 1); - } - - if (swiper.params.cssMode) { - swiper.$wrapperEl.css('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.preventDefault();else e.returnValue = false; - setDragPosition(e); - $wrapperEl.transition(0); - $el.transition(0); - $dragEl.transition(0); - 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.css('scroll-snap-type', ''); - $wrapperEl.transition(''); - } - - if (params.hide) { - clearTimeout(dragTimeout); - dragTimeout = nextTick(() => { - $el.css('opacity', 0); - $el.transition(400); - }, 1000); - } - - emit('scrollbarDragEnd', e); - - if (params.snapOnRelease) { - swiper.slideToClosest(); - } - } - - function events(method) { - const { - scrollbar, - touchEventsTouch, - touchEventsDesktop, - params, - support - } = swiper; - const $el = scrollbar.$el; - const target = $el[0]; - const activeListener = support.passiveListener && params.passiveListeners ? { - passive: false, - capture: false - } : false; - const passiveListener = support.passiveListener && params.passiveListeners ? { - passive: true, - capture: false - } : false; - if (!target) return; - const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; - - if (!support.touch) { - target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener); - document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener); - document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener); - } else { - target[eventMethod](touchEventsTouch.start, onDragStart, activeListener); - target[eventMethod](touchEventsTouch.move, onDragMove, activeListener); - target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener); - } - } - - function enableDraggable() { - if (!swiper.params.scrollbar.el) return; - events('on'); - } - - function disableDraggable() { - if (!swiper.params.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 = $(params.el); - - if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) { - $el = $swiperEl.find(params.el); - } - - let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`); - - if ($dragEl.length === 0) { - $dragEl = $(`
`); - $el.append($dragEl); - } - - Object.assign(scrollbar, { - $el, - el: $el[0], - $dragEl, - dragEl: $dragEl[0] - }); - - if (params.draggable) { - enableDraggable(); - } - - if ($el) { - $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass); - } - } - - function destroy() { - disableDraggable(); - } - - on('init', () => { - init(); - updateSize(); - setTranslate(); - }); - on('update resize observerUpdate lock unlock', () => { - updateSize(); - }); - on('setTranslate', () => { - setTranslate(); - }); - on('setTransition', (_s, duration) => { - setTransition(duration); - }); - on('enable disable', () => { - const { - $el - } = swiper.scrollbar; - - if ($el) { - $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass); - } - }); - on('destroy', () => { - destroy(); - }); - Object.assign(swiper.scrollbar, { - updateSize, - setTranslate, - init, - destroy - }); -} - -function Parallax({ - swiper, - extendParams, - on -}) { - extendParams({ - parallax: { - enabled: false - } - }); - - const setTransform = (el, progress) => { - const { - rtl - } = swiper; - const $el = $(el); - const rtlFactor = rtl ? -1 : 1; - const p = $el.attr('data-swiper-parallax') || '0'; - let x = $el.attr('data-swiper-parallax-x'); - let y = $el.attr('data-swiper-parallax-y'); - const scale = $el.attr('data-swiper-parallax-scale'); - const opacity = $el.attr('data-swiper-parallax-opacity'); - - 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[0].style.opacity = currentOpacity; - } - - if (typeof scale === 'undefined' || scale === null) { - $el.transform(`translate3d(${x}, ${y}, 0px)`); - } else { - const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); - $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`); - } - }; - - const setTranslate = () => { - const { - $el, - slides, - progress, - snapGrid - } = swiper; - $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => { - setTransform(el, progress); - }); - slides.each((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).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => { - setTransform(el, slideProgress); - }); - }); - }; - - const setTransition = (duration = swiper.params.speed) => { - const { - $el - } = swiper; - $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => { - const $parallaxEl = $(parallaxEl); - let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration; - if (duration === 0) parallaxDuration = 0; - $parallaxEl.transition(parallaxDuration); - }); - }; - - 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, - maxRatio: 3, - minRatio: 1, - toggle: true, - containerClass: 'swiper-zoom-container', - zoomedSlideClass: 'swiper-slide-zoomed' - } - }); - swiper.zoom = { - enabled: false - }; - let currentScale = 1; - let isScaling = false; - let gesturesEnabled; - let fakeGestureTouched; - let fakeGestureMoved; - const gesture = { - $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 ? gesture.$imageEl[0] : undefined; - const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined; - emit('zoomChange', value, imageEl, slideEl); - } - - scale = value; - } - - }); - - function getDistanceBetweenTouches(e) { - if (e.targetTouches.length < 2) return 1; - const x1 = e.targetTouches[0].pageX; - const y1 = e.targetTouches[0].pageY; - const x2 = e.targetTouches[1].pageX; - const y2 = e.targetTouches[1].pageY; - const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); - return distance; - } // Events - - - function onGestureStart(e) { - const support = swiper.support; - const params = swiper.params.zoom; - fakeGestureTouched = false; - fakeGestureMoved = false; - - if (!support.gestures) { - if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) { - return; - } - - fakeGestureTouched = true; - gesture.scaleStart = getDistanceBetweenTouches(e); - } - - if (!gesture.$slideEl || !gesture.$slideEl.length) { - gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`); - if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); - gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target'); - gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); - gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; - - if (gesture.$imageWrapEl.length === 0) { - gesture.$imageEl = undefined; - return; - } - } - - if (gesture.$imageEl) { - gesture.$imageEl.transition(0); - } - - isScaling = true; - } - - function onGestureChange(e) { - const support = swiper.support; - const params = swiper.params.zoom; - const zoom = swiper.zoom; - - if (!support.gestures) { - if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) { - return; - } - - fakeGestureMoved = true; - gesture.scaleMove = getDistanceBetweenTouches(e); - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0) { - if (e.type === 'gesturechange') onGestureStart(e); - return; - } - - if (support.gestures) { - zoom.scale = e.scale * currentScale; - } else { - 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.transform(`translate3d(0,0,0) scale(${zoom.scale})`); - } - - function onGestureEnd(e) { - const device = swiper.device; - const support = swiper.support; - const params = swiper.params.zoom; - const zoom = swiper.zoom; - - if (!support.gestures) { - if (!fakeGestureTouched || !fakeGestureMoved) { - return; - } - - if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) { - return; - } - - fakeGestureTouched = false; - fakeGestureMoved = false; - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; - zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); - gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`); - currentScale = zoom.scale; - isScaling = false; - if (zoom.scale === 1) gesture.$slideEl = undefined; - } - - function onTouchStart(e) { - const device = swiper.device; - if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; - if (image.isTouched) return; - if (device.android && e.cancelable) e.preventDefault(); - image.isTouched = true; - image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; - image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; - } - - function onTouchMove(e) { - const zoom = swiper.zoom; - if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; - swiper.allowClick = false; - if (!image.isTouched || !gesture.$slideEl) return; - - if (!image.isMoved) { - image.width = gesture.$imageEl[0].offsetWidth; - image.height = gesture.$imageEl[0].offsetHeight; - image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0; - image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0; - gesture.slideWidth = gesture.$slideEl[0].offsetWidth; - gesture.slideHeight = gesture.$slideEl[0].offsetHeight; - gesture.$imageWrapEl.transition(0); - } // Define if we need image drag - - - const scaledWidth = image.width * zoom.scale; - const scaledHeight = image.height * zoom.scale; - if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; - 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 = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - - 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; - 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; - return; - } - } - - if (e.cancelable) { - e.preventDefault(); - } - - e.stopPropagation(); - image.isMoved = true; - image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX; - image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY; - - 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.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); - } - - function onTouchEnd() { - const zoom = swiper.zoom; - if (!gesture.$imageEl || gesture.$imageEl.length === 0) 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.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); - } - - function onTransitionEnd() { - const zoom = swiper.zoom; - - if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) { - if (gesture.$imageEl) { - gesture.$imageEl.transform('translate3d(0,0,0) scale(1)'); - } - - if (gesture.$imageWrapEl) { - gesture.$imageWrapEl.transform('translate3d(0,0,0)'); - } - - zoom.scale = 1; - currentScale = 1; - gesture.$slideEl = undefined; - gesture.$imageEl = undefined; - gesture.$imageWrapEl = undefined; - } - } - - 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}`); - } - - if (!gesture.$slideEl) { - if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { - gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); - } else { - gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); - } - } - - gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target'); - gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return; - - if (swiper.params.cssMode) { - swiper.wrapperEl.style.overflow = 'hidden'; - swiper.wrapperEl.style.touchAction = 'none'; - } - - gesture.$slideEl.addClass(`${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.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX; - touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY; - } else { - touchX = image.touchesStart.x; - touchY = image.touchesStart.y; - } - - zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; - currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; - - if (e) { - slideWidth = gesture.$slideEl[0].offsetWidth; - slideHeight = gesture.$slideEl[0].offsetHeight; - offsetX = gesture.$slideEl.offset().left + window.scrollX; - offsetY = gesture.$slideEl.offset().top + window.scrollY; - diffX = offsetX + slideWidth / 2 - touchX; - diffY = offsetY + slideHeight / 2 - touchY; - imageWidth = gesture.$imageEl[0].offsetWidth; - imageHeight = gesture.$imageEl[0].offsetHeight; - 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; - 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; - } - - gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`); - gesture.$imageEl.transition(300).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 = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); - } else { - gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); - } - - gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target'); - gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return; - - if (swiper.params.cssMode) { - swiper.wrapperEl.style.overflow = ''; - swiper.wrapperEl.style.touchAction = ''; - } - - zoom.scale = 1; - currentScale = 1; - gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); - gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); - gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`); - gesture.$slideEl = undefined; - } // 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 support = swiper.support; - const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? { - passive: true, - capture: false - } : false; - const activeListenerWithCapture = support.passiveListener ? { - passive: false, - capture: true - } : true; - return { - passiveListener, - activeListenerWithCapture - }; - } - - function getSlideSelector() { - return `.${swiper.params.slideClass}`; - } - - function toggleGestures(method) { - const { - passiveListener - } = getListeners(); - const slideSelector = getSlideSelector(); - swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener); - swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener); - swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener); - } - - function enableGestures() { - if (gesturesEnabled) return; - gesturesEnabled = true; - toggleGestures('on'); - } - - function disableGestures() { - if (!gesturesEnabled) return; - gesturesEnabled = false; - toggleGestures('off'); - } // Attach/Detach Events - - - function enable() { - const zoom = swiper.zoom; - if (zoom.enabled) return; - zoom.enabled = true; - const support = swiper.support; - const { - passiveListener, - activeListenerWithCapture - } = getListeners(); - const slideSelector = getSlideSelector(); // Scale image - - if (support.gestures) { - swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener); - swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener); - } else if (swiper.touchEvents.start === 'touchstart') { - swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener); - swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture); - swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener); - - if (swiper.touchEvents.cancel) { - swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener); - } - } // Move image - - - swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture); - } - - function disable() { - const zoom = swiper.zoom; - if (!zoom.enabled) return; - const support = swiper.support; - zoom.enabled = false; - const { - passiveListener, - activeListenerWithCapture - } = getListeners(); - const slideSelector = getSlideSelector(); // Scale image - - if (support.gestures) { - swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener); - swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener); - } else if (swiper.touchEvents.start === 'touchstart') { - swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener); - swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture); - swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener); - - if (swiper.touchEvents.cancel) { - swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener); - } - } // Move image - - - swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, 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 - }); -} - -function Lazy({ - swiper, - extendParams, - on, - emit -}) { - extendParams({ - lazy: { - checkInView: false, - enabled: false, - loadPrevNext: false, - loadPrevNextAmount: 1, - loadOnTransitionStart: false, - scrollingElement: '', - elementClass: 'swiper-lazy', - loadingClass: 'swiper-lazy-loading', - loadedClass: 'swiper-lazy-loaded', - preloaderClass: 'swiper-lazy-preloader' - } - }); - swiper.lazy = {}; - let scrollHandlerAttached = false; - let initialImageLoaded = false; - - function loadInSlide(index, loadInDuplicate = true) { - const params = swiper.params.lazy; - if (typeof index === 'undefined') return; - if (swiper.slides.length === 0) return; - const isVirtual = swiper.virtual && swiper.params.virtual.enabled; - const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`) : swiper.slides.eq(index); - const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`); - - if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) { - $images.push($slideEl[0]); - } - - if ($images.length === 0) return; - $images.each(imageEl => { - const $imageEl = $(imageEl); - $imageEl.addClass(params.loadingClass); - const background = $imageEl.attr('data-background'); - const src = $imageEl.attr('data-src'); - const srcset = $imageEl.attr('data-srcset'); - const sizes = $imageEl.attr('data-sizes'); - const $pictureEl = $imageEl.parent('picture'); - swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => { - if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return; - - if (background) { - $imageEl.css('background-image', `url("${background}")`); - $imageEl.removeAttr('data-background'); - } else { - if (srcset) { - $imageEl.attr('srcset', srcset); - $imageEl.removeAttr('data-srcset'); - } - - if (sizes) { - $imageEl.attr('sizes', sizes); - $imageEl.removeAttr('data-sizes'); - } - - if ($pictureEl.length) { - $pictureEl.children('source').each(sourceEl => { - const $source = $(sourceEl); - - if ($source.attr('data-srcset')) { - $source.attr('srcset', $source.attr('data-srcset')); - $source.removeAttr('data-srcset'); - } - }); - } - - if (src) { - $imageEl.attr('src', src); - $imageEl.removeAttr('data-src'); - } - } - - $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); - $slideEl.find(`.${params.preloaderClass}`).remove(); - - if (swiper.params.loop && loadInDuplicate) { - const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index'); - - if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) { - const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`); - loadInSlide(originalSlide.index(), false); - } else { - const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`); - loadInSlide(duplicatedSlide.index(), false); - } - } - - emit('lazyImageReady', $slideEl[0], $imageEl[0]); - - if (swiper.params.autoHeight) { - swiper.updateAutoHeight(); - } - }); - emit('lazyImageLoad', $slideEl[0], $imageEl[0]); - }); - } - - function load() { - const { - $wrapperEl, - params: swiperParams, - slides, - activeIndex - } = swiper; - const isVirtual = swiper.virtual && swiperParams.virtual.enabled; - const params = swiperParams.lazy; - let slidesPerView = swiperParams.slidesPerView; - - if (slidesPerView === 'auto') { - slidesPerView = 0; - } - - function slideExist(index) { - if (isVirtual) { - if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) { - return true; - } - } else if (slides[index]) return true; - - return false; - } - - function slideIndex(slideEl) { - if (isVirtual) { - return $(slideEl).attr('data-swiper-slide-index'); - } - - return $(slideEl).index(); - } - - if (!initialImageLoaded) initialImageLoaded = true; - - if (swiper.params.watchSlidesProgress) { - $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => { - const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index(); - loadInSlide(index); - }); - } else if (slidesPerView > 1) { - for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) { - if (slideExist(i)) loadInSlide(i); - } - } else { - loadInSlide(activeIndex); - } - - if (params.loadPrevNext) { - if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) { - const amount = params.loadPrevNextAmount; - const spv = slidesPerView; - const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); - const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides - - for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) { - if (slideExist(i)) loadInSlide(i); - } // Prev Slides - - - for (let i = minIndex; i < activeIndex; i += 1) { - if (slideExist(i)) loadInSlide(i); - } - } else { - const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`); - if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide)); - const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`); - if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide)); - } - } - } - - function checkInViewOnLoad() { - const window = getWindow(); - if (!swiper || swiper.destroyed) return; - const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window); - const isWindow = $scrollElement[0] === window; - const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth; - const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight; - const swiperOffset = swiper.$el.offset(); - const { - rtlTranslate: rtl - } = swiper; - let inView = false; - if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft; - const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]]; - - for (let i = 0; i < swiperCoord.length; i += 1) { - const point = swiperCoord[i]; - - if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) { - if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line - - inView = true; - } - } - - const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? { - passive: true, - capture: false - } : false; - - if (inView) { - load(); - $scrollElement.off('scroll', checkInViewOnLoad, passiveListener); - } else if (!scrollHandlerAttached) { - scrollHandlerAttached = true; - $scrollElement.on('scroll', checkInViewOnLoad, passiveListener); - } - } - - on('beforeInit', () => { - if (swiper.params.lazy.enabled && swiper.params.preloadImages) { - swiper.params.preloadImages = false; - } - }); - on('init', () => { - if (swiper.params.lazy.enabled) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - }); - on('scroll', () => { - if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) { - load(); - } - }); - on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => { - if (swiper.params.lazy.enabled) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - }); - on('transitionStart', () => { - if (swiper.params.lazy.enabled) { - if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - } - }); - on('transitionEnd', () => { - if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - }); - on('slideChange', () => { - const { - lazy, - cssMode, - watchSlidesProgress, - touchReleaseOnEdges, - resistanceRatio - } = swiper.params; - - if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) { - load(); - } - }); - Object.assign(swiper.lazy, { - load, - loadInSlide - }); -} - -/* 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; - } // xxx: for now i will just save one spline function to to - - - function getInterpolateFunction(c) { - if (!swiper.controller.spline) { - 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) { - // 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()); - 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) { - c.setTransition(duration, swiper); - - if (duration !== 0) { - c.transitionStart(); - - if (c.params.autoHeight) { - nextTick(() => { - c.updateAutoHeight(); - }); - } - - c.$wrapperEl.transitionEnd(() => { - if (!controlled) return; - - if (c.params.loop && swiper.params.controller.by === 'slide') { - c.loopFix(); - } - - 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', () => { - 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) return; - swiper.controller.setTranslate(translate, byController); - }); - on('setTransition', (_s, duration, byController) => { - if (!swiper.controller.control) 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, - itemRoleDescriptionMessage: null, - slideRole: 'group' - } - }); - let liveRegion = null; - - function notify(message) { - const notification = liveRegion; - if (notification.length === 0) return; - notification.html(''); - notification.html(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.attr('tabIndex', '0'); - } - - function makeElNotFocusable($el) { - $el.attr('tabIndex', '-1'); - } - - function addElRole($el, role) { - $el.attr('role', role); - } - - function addElRoleDescription($el, description) { - $el.attr('aria-roledescription', description); - } - - function addElControls($el, controls) { - $el.attr('aria-controls', controls); - } - - function addElLabel($el, label) { - $el.attr('aria-label', label); - } - - function addElId($el, id) { - $el.attr('id', id); - } - - function addElLive($el, live) { - $el.attr('aria-live', live); - } - - function disableEl($el) { - $el.attr('aria-disabled', true); - } - - function enableEl($el) { - $el.attr('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.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) { - if (!(swiper.isEnd && !swiper.params.loop)) { - swiper.slideNext(); - } - - if (swiper.isEnd) { - notify(params.lastSlideMessage); - } else { - notify(params.nextSlideMessage); - } - } - - if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) { - if (!(swiper.isBeginning && !swiper.params.loop)) { - swiper.slidePrev(); - } - - if (swiper.isBeginning) { - notify(params.firstSlideMessage); - } else { - notify(params.prevSlideMessage); - } - } - - if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) { - $targetEl[0].click(); - } - } - - function updateNavigation() { - if (swiper.params.loop || !swiper.navigation) return; - const { - $nextEl, - $prevEl - } = swiper.navigation; - - if ($prevEl && $prevEl.length > 0) { - if (swiper.isBeginning) { - disableEl($prevEl); - makeElNotFocusable($prevEl); - } else { - enableEl($prevEl); - makeElFocusable($prevEl); - } - } - - if ($nextEl && $nextEl.length > 0) { - if (swiper.isEnd) { - disableEl($nextEl); - makeElNotFocusable($nextEl); - } else { - enableEl($nextEl); - makeElFocusable($nextEl); - } - } - } - - function hasPagination() { - return swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length; - } - - function updatePagination() { - const params = swiper.params.a11y; - - if (hasPagination()) { - swiper.pagination.bullets.each(bulletEl => { - const $bulletEl = $(bulletEl); - makeElFocusable($bulletEl); - - if (!swiper.params.pagination.renderBullet) { - addElRole($bulletEl, 'button'); - addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1)); - } - }); - } - } - - const initNavEl = ($el, wrapperId, message) => { - makeElFocusable($el); - - if ($el[0].tagName !== 'BUTTON') { - addElRole($el, 'button'); - $el.on('keydown', onEnterOrSpaceKey); - } - - addElLabel($el, message); - addElControls($el, wrapperId); - }; - - function 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); - } // Wrapper - - - const $wrapperEl = swiper.$wrapperEl; - const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`; - const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; - addElId($wrapperEl, wrapperId); - addElLive($wrapperEl, live); // Slide - - if (params.itemRoleDescriptionMessage) { - addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage); - } - - addElRole($(swiper.slides), params.slideRole); - const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length; - swiper.slides.each((slideEl, index) => { - const $slideEl = $(slideEl); - const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index; - const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); - addElLabel($slideEl, ariaLabelMessage); - }); // Navigation - - let $nextEl; - let $prevEl; - - if (swiper.navigation && swiper.navigation.$nextEl) { - $nextEl = swiper.navigation.$nextEl; - } - - if (swiper.navigation && swiper.navigation.$prevEl) { - $prevEl = swiper.navigation.$prevEl; - } - - if ($nextEl && $nextEl.length) { - initNavEl($nextEl, wrapperId, params.nextSlideMessage); - } - - if ($prevEl && $prevEl.length) { - initNavEl($prevEl, wrapperId, params.prevSlideMessage); - } // Pagination - - - if (hasPagination()) { - swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey); - } - } - - function destroy() { - if (liveRegion && liveRegion.length > 0) liveRegion.remove(); - let $nextEl; - let $prevEl; - - if (swiper.navigation && swiper.navigation.$nextEl) { - $nextEl = swiper.navigation.$nextEl; - } - - if (swiper.navigation && swiper.navigation.$prevEl) { - $prevEl = swiper.navigation.$prevEl; - } - - if ($nextEl) { - $nextEl.off('keydown', onEnterOrSpaceKey); - } - - if ($prevEl) { - $prevEl.off('keydown', onEnterOrSpaceKey); - } // Pagination - - - if (hasPagination()) { - swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey); - } - } - - on('beforeInit', () => { - liveRegion = $(``); - }); - on('afterInit', () => { - if (!swiper.params.a11y.enabled) return; - init(); - updateNavigation(); - }); - on('toEdge', () => { - if (!swiper.params.a11y.enabled) return; - updateNavigation(); - }); - on('fromEdge', () => { - 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' - } - }); - 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.slides.eq(index); - let value = slugify(slide.attr('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}/${value}`; - } else if (!location.pathname.includes(key)) { - value = `${key}/${value}`; - } - - 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.eq(i); - const slideHistory = slugify(slide.attr('data-history')); - - if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) { - const index = slide.index(); - swiper.slideTo(index, speed, runCallbacks); - } - } - } else { - swiper.slideTo(0, speed, runCallbacks); - } - }; - - const setHistoryPopState = () => { - paths = getPathValues(swiper.params.url); - scrollToSlide(swiper.params.speed, swiper.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) 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 - } - }); - - const onHashChange = () => { - emit('hashChange'); - const newHash = document.location.hash.replace('#', ''); - const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash'); - - if (newHash !== activeSlideHash) { - const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index(); - if (typeof newIndex === 'undefined') return; - swiper.slideTo(newIndex); - } - }; - - const setHash = () => { - if (!initialized || !swiper.params.hashNavigation.enabled) return; - - if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { - window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''); - emit('hashSet'); - } else { - const slide = swiper.slides.eq(swiper.activeIndex); - const hash = slide.attr('data-hash') || slide.attr('data-history'); - document.location.hash = hash || ''; - 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; - - for (let i = 0, length = swiper.slides.length; i < length; i += 1) { - const slide = swiper.slides.eq(i); - const slideHash = slide.attr('data-hash') || slide.attr('data-history'); - - if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) { - const index = slide.index(); - swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true); - } - } - } - - if (swiper.params.hashNavigation.watchState) { - $(window).on('hashchange', onHashChange); - } - }; - - const destroy = () => { - if (swiper.params.hashNavigation.watchState) { - $(window).off('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" */ -function Autoplay({ - swiper, - extendParams, - on, - emit -}) { - let timeout; - swiper.autoplay = { - running: false, - paused: false - }; - extendParams({ - autoplay: { - enabled: false, - delay: 3000, - waitForTransition: true, - disableOnInteraction: true, - stopOnLastSlide: false, - reverseDirection: false, - pauseOnMouseEnter: false - } - }); - - function run() { - const $activeSlideEl = swiper.slides.eq(swiper.activeIndex); - let delay = swiper.params.autoplay.delay; - - if ($activeSlideEl.attr('data-swiper-autoplay')) { - delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay; - } - - clearTimeout(timeout); - timeout = nextTick(() => { - let autoplayResult; - - if (swiper.params.autoplay.reverseDirection) { - if (swiper.params.loop) { - swiper.loopFix(); - autoplayResult = swiper.slidePrev(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.isBeginning) { - autoplayResult = swiper.slidePrev(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.params.autoplay.stopOnLastSlide) { - autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); - emit('autoplay'); - } else { - stop(); - } - } else if (swiper.params.loop) { - swiper.loopFix(); - autoplayResult = swiper.slideNext(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.isEnd) { - autoplayResult = swiper.slideNext(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.params.autoplay.stopOnLastSlide) { - autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true); - emit('autoplay'); - } else { - stop(); - } - - if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) { - run(); - } - }, delay); - } - - function start() { - if (typeof timeout !== 'undefined') return false; - if (swiper.autoplay.running) return false; - swiper.autoplay.running = true; - emit('autoplayStart'); - run(); - return true; - } - - function stop() { - if (!swiper.autoplay.running) return false; - if (typeof timeout === 'undefined') return false; - - if (timeout) { - clearTimeout(timeout); - timeout = undefined; - } - - swiper.autoplay.running = false; - emit('autoplayStop'); - return true; - } - - function pause(speed) { - if (!swiper.autoplay.running) return; - if (swiper.autoplay.paused) return; - if (timeout) clearTimeout(timeout); - swiper.autoplay.paused = true; - - if (speed === 0 || !swiper.params.autoplay.waitForTransition) { - swiper.autoplay.paused = false; - run(); - } else { - ['transitionend', 'webkitTransitionEnd'].forEach(event => { - swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd); - }); - } - } - - function onVisibilityChange() { - const document = getDocument(); - - if (document.visibilityState === 'hidden' && swiper.autoplay.running) { - pause(); - } - - if (document.visibilityState === 'visible' && swiper.autoplay.paused) { - run(); - swiper.autoplay.paused = false; - } - } - - function onTransitionEnd(e) { - if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return; - if (e.target !== swiper.$wrapperEl[0]) return; - ['transitionend', 'webkitTransitionEnd'].forEach(event => { - swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd); - }); - swiper.autoplay.paused = false; - - if (!swiper.autoplay.running) { - stop(); - } else { - run(); - } - } - - function onMouseEnter() { - if (swiper.params.autoplay.disableOnInteraction) { - stop(); - } else { - pause(); - } - - ['transitionend', 'webkitTransitionEnd'].forEach(event => { - swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd); - }); - } - - function onMouseLeave() { - if (swiper.params.autoplay.disableOnInteraction) { - return; - } - - swiper.autoplay.paused = false; - run(); - } - - function attachMouseEvents() { - if (swiper.params.autoplay.pauseOnMouseEnter) { - swiper.$el.on('mouseenter', onMouseEnter); - swiper.$el.on('mouseleave', onMouseLeave); - } - } - - function detachMouseEvents() { - swiper.$el.off('mouseenter', onMouseEnter); - swiper.$el.off('mouseleave', onMouseLeave); - } - - on('init', () => { - if (swiper.params.autoplay.enabled) { - start(); - const document = getDocument(); - document.addEventListener('visibilitychange', onVisibilityChange); - attachMouseEvents(); - } - }); - on('beforeTransitionStart', (_s, speed, internal) => { - if (swiper.autoplay.running) { - if (internal || !swiper.params.autoplay.disableOnInteraction) { - swiper.autoplay.pause(speed); - } else { - stop(); - } - } - }); - on('sliderFirstMove', () => { - if (swiper.autoplay.running) { - if (swiper.params.autoplay.disableOnInteraction) { - stop(); - } else { - pause(); - } - } - }); - on('touchEnd', () => { - if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) { - run(); - } - }); - on('destroy', () => { - detachMouseEvents(); - - if (swiper.autoplay.running) { - stop(); - } - - const document = getDocument(); - document.removeEventListener('visibilitychange', onVisibilityChange); - }); - Object.assign(swiper.autoplay, { - pause, - run, - start, - stop - }); -} - -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 onThumbClick() { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) return; - const clickedIndex = thumbsSwiper.clickedIndex; - const clickedSlide = thumbsSwiper.clickedSlide; - if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return; - if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; - let slideToIndex; - - if (thumbsSwiper.params.loop) { - slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10); - } else { - slideToIndex = clickedIndex; - } - - if (swiper.params.loop) { - let currentIndex = swiper.activeIndex; - - if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) { - swiper.loopFix(); // eslint-disable-next-line - - swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; - currentIndex = swiper.activeIndex; - } - - const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); - const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); - if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex; - } - - 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) { - 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 - }); - } 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.addClass(swiper.params.thumbs.thumbsContainerClass); - swiper.thumbs.swiper.on('tap', onThumbClick); - return true; - } - - function update(initial) { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) 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) { - let currentThumbsIndex = thumbsSwiper.activeIndex; - let newThumbsIndex; - let direction; - - if (thumbsSwiper.params.loop) { - if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) { - thumbsSwiper.loopFix(); // eslint-disable-next-line - - thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft; - currentThumbsIndex = thumbsSwiper.activeIndex; - } // Find actual thumbs index to slide to - - - const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index(); - const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index(); - - if (typeof prevThumbsIndex === 'undefined') { - newThumbsIndex = nextThumbsIndex; - } else if (typeof nextThumbsIndex === 'undefined') { - newThumbsIndex = prevThumbsIndex; - } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) { - newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex; - } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { - newThumbsIndex = nextThumbsIndex; - } else { - newThumbsIndex = prevThumbsIndex; - } - - 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, initial ? 0 : undefined); - } - } // 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.removeClass(thumbActiveClass); - - if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { - for (let i = 0; i < thumbsToActivate; i += 1) { - thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass); - } - } else { - for (let i = 0; i < thumbsToActivate; i += 1) { - thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass); - } - } - } - - on('beforeInit', () => { - const { - thumbs - } = swiper.params; - if (!thumbs || !thumbs.swiper) return; - init(); - update(true); - }); - on('slideChange update resize observerUpdate', () => { - if (!swiper.thumbs.swiper) return; - update(); - }); - on('setTransition', (_s, duration) => { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) return; - thumbsSwiper.setTransition(duration); - }); - on('beforeDestroy', () => { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) return; - - if (swiperCreated && thumbsSwiper) { - 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 onTouchMove() { - 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 - }) { - 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; - $wrapperEl.transitionEnd(() => { - if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; - emit('momentumBounce'); - swiper.setTransition(params.speed); - setTimeout(() => { - swiper.setTranslate(afterBouncePosition); - $wrapperEl.transitionEnd(() => { - 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; - $wrapperEl.transitionEnd(() => { - 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) { - swiper.updateProgress(); - swiper.updateActiveIndex(); - swiper.updateSlidesClasses(); - } - } - - Object.assign(swiper, { - freeMode: { - onTouchMove, - onTouchEnd - } - }); -} - -function Grid({ - swiper, - extendParams -}) { - extendParams({ - grid: { - rows: 1, - fill: 'column' - } - }); - let slidesNumberEvenToRows; - let slidesPerRow; - let numFullColumns; - - const initSlides = slidesLength => { - const { - slidesPerView - } = swiper.params; - const { - rows, - fill - } = swiper.params.grid; - slidesPerRow = slidesNumberEvenToRows / rows; - 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); - } - }; - - const updateSlide = (i, slide, slidesLength, getDirectionLabel) => { - const { - slidesPerGroup, - spaceBetween - } = swiper.params; - const { - rows, - fill - } = swiper.params.grid; // 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.css({ - '-webkit-order': newSlideOrderIndex, - 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.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : ''); - }; - - const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => { - const { - spaceBetween, - centeredSlides, - roundLengths - } = swiper.params; - const { - rows - } = swiper.params.grid; - swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; - swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; - swiper.$wrapperEl.css({ - [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px` - }); - - if (centeredSlides) { - snapGrid.splice(0, snapGrid.length); - 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.push(...newSlidesGrid); - } - }; - - swiper.grid = { - initSlides, - updateSlide, - updateWrapperSize - }; -} - -function appendSlide(slides) { - const swiper = this; - const { - $wrapperEl, - params - } = swiper; - - if (params.loop) { - swiper.loopDestroy(); - } - - if (typeof slides === 'object' && 'length' in slides) { - for (let i = 0; i < slides.length; i += 1) { - if (slides[i]) $wrapperEl.append(slides[i]); - } - } else { - $wrapperEl.append(slides); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - swiper.update(); - } -} - -function prependSlide(slides) { - const swiper = this; - const { - params, - $wrapperEl, - activeIndex - } = swiper; - - if (params.loop) { - swiper.loopDestroy(); - } - - let newActiveIndex = activeIndex + 1; - - if (typeof slides === 'object' && 'length' in slides) { - for (let i = 0; i < slides.length; i += 1) { - if (slides[i]) $wrapperEl.prepend(slides[i]); - } - - newActiveIndex = activeIndex + slides.length; - } else { - $wrapperEl.prepend(slides); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - swiper.update(); - } - - swiper.slideTo(newActiveIndex, 0, false); -} - -function addSlide(index, slides) { - const swiper = this; - const { - $wrapperEl, - params, - activeIndex - } = swiper; - let activeIndexBuffer = activeIndex; - - if (params.loop) { - activeIndexBuffer -= swiper.loopedSlides; - swiper.loopDestroy(); - swiper.slides = $wrapperEl.children(`.${params.slideClass}`); - } - - 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.eq(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]) $wrapperEl.append(slides[i]); - } - - newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; - } else { - $wrapperEl.append(slides); - } - - for (let i = 0; i < slidesBuffer.length; i += 1) { - $wrapperEl.append(slidesBuffer[i]); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - 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, - $wrapperEl, - activeIndex - } = swiper; - let activeIndexBuffer = activeIndex; - - if (params.loop) { - activeIndexBuffer -= swiper.loopedSlides; - swiper.loopDestroy(); - swiper.slides = $wrapperEl.children(`.${params.slideClass}`); - } - - 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.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex -= 1; - } - - newActiveIndex = Math.max(newActiveIndex, 0); - } else { - indexToRemove = slidesIndexes; - if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex -= 1; - newActiveIndex = Math.max(newActiveIndex, 0); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - 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 - } = 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', () => { - if (swiper.params.effect !== effect) return; - setTranslate(); - }); - on('setTransition', (_s, duration) => { - if (swiper.params.effect !== effect) return; - setTransition(duration); - }); -} - -function effectTarget(effectParams, $slideEl) { - if (effectParams.transformEl) { - return $slideEl.find(effectParams.transformEl).css({ - 'backface-visibility': 'hidden', - '-webkit-backface-visibility': 'hidden' - }); - } - - return $slideEl; -} - -function effectVirtualTransitionEnd({ - swiper, - duration, - transformEl, - allSlides -}) { - const { - slides, - activeIndex, - $wrapperEl - } = swiper; - - if (swiper.params.virtualTranslate && duration !== 0) { - let eventTriggered = false; - let $transitionEndTarget; - - if (allSlides) { - $transitionEndTarget = transformEl ? slides.find(transformEl) : slides; - } else { - $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex); - } - - $transitionEndTarget.transitionEnd(() => { - if (eventTriggered) return; - if (!swiper || swiper.destroyed) return; - eventTriggered = true; - swiper.animating = false; - const triggerEvents = ['webkitTransitionEnd', 'transitionend']; - - for (let i = 0; i < triggerEvents.length; i += 1) { - $wrapperEl.trigger(triggerEvents[i]); - } - }); - } -} - -function EffectFade({ - swiper, - extendParams, - on -}) { - extendParams({ - fadeEffect: { - crossFade: false, - transformEl: null - } - }); - - const setTranslate = () => { - const { - slides - } = swiper; - const params = swiper.params.fadeEffect; - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = swiper.slides.eq(i); - const offset = $slideEl[0].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[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0); - const $targetEl = effectTarget(params, $slideEl); - $targetEl.css({ - opacity: slideOpacity - }).transform(`translate3d(${tx}px, ${ty}px, 0px)`); - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.fadeEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl, - 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 setTranslate = () => { - const { - $el, - $wrapperEl, - slides, - width: swiperWidth, - height: swiperHeight, - rtlTranslate: rtl, - size: swiperSize, - browser - } = 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 = $wrapperEl.find('.swiper-cube-shadow'); - - if ($cubeShadowEl.length === 0) { - $cubeShadowEl = $('
'); - $wrapperEl.append($cubeShadowEl); - } - - $cubeShadowEl.css({ - height: `${swiperWidth}px` - }); - } else { - $cubeShadowEl = $el.find('.swiper-cube-shadow'); - - if ($cubeShadowEl.length === 0) { - $cubeShadowEl = $('
'); - $el.append($cubeShadowEl); - } - } - } - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - let slideIndex = i; - - if (isVirtual) { - slideIndex = parseInt($slideEl.attr('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[0].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(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${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.transform(transform); - - if (params.slideShadows) { - // Set shadows - let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); - let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); - - if (shadowBefore.length === 0) { - shadowBefore = $(`
`); - $slideEl.append(shadowBefore); - } - - if (shadowAfter.length === 0) { - shadowAfter = $(`
`); - $slideEl.append(shadowAfter); - } - - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - } - - $wrapperEl.css({ - '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`, - 'transform-origin': `50% 50% -${swiperSize / 2}px` - }); - - if (params.shadow) { - if (isHorizontal) { - $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) 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.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`); - } - } - - const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0; - $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`); - }; - - const setTransition = duration => { - const { - $el, - slides - } = swiper; - slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - - if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { - $el.find('.swiper-cube-shadow').transition(duration); - } - }; - - effectInit({ - effect: 'cube', - swiper, - on, - setTranslate, - setTransition, - perspective: () => true, - overwriteParams: () => ({ - slidesPerView: 1, - slidesPerGroup: 1, - watchSlidesProgress: true, - resistanceRatio: 0, - spaceBetween: 0, - centeredSlides: false, - virtualTranslate: true - }) - }); -} - -function createShadow(params, $slideEl, side) { - const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`; - const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl; - let $shadowEl = $shadowContainer.children(`.${shadowClass}`); - - if (!$shadowEl.length) { - $shadowEl = $(`
`); - $shadowContainer.append($shadowEl); - } - - return $shadowEl; -} - -function EffectFlip({ - swiper, - extendParams, - on -}) { - extendParams({ - flipEffect: { - slideShadows: true, - limitRotation: true, - transformEl: null - } - }); - - const setTranslate = () => { - const { - slides, - rtlTranslate: rtl - } = swiper; - const params = swiper.params.flipEffect; - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - let progress = $slideEl[0].progress; - - if (swiper.params.flipEffect.limitRotation) { - progress = Math.max(Math.min($slideEl[0].progress, 1), -1); - } - - const offset = $slideEl[0].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[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length; - - if (params.slideShadows) { - // Set shadows - let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); - let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); - - if (shadowBefore.length === 0) { - shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top'); - } - - if (shadowAfter.length === 0) { - shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); - } - - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - - const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(transform); - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.flipEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl - }); - }; - - effectInit({ - effect: 'flip', - swiper, - on, - setTranslate, - setTransition, - 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, - transformEl: null - } - }); - - 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; // Each slide offset from center - - for (let i = 0, length = slides.length; i < length; i += 1) { - const $slideEl = slides.eq(i); - const slideSize = slidesSizesGrid[i]; - const slideOffset = $slideEl[0].swiperSlideOffset; - const offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * 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(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`; - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(slideTransform); - $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; - - if (params.slideShadows) { - // Set shadows - let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); - let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); - - if ($shadowBeforeEl.length === 0) { - $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top'); - } - - if ($shadowAfterEl.length === 0) { - $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom'); - } - - if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; - if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; - } - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.coverflowEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - }; - - effectInit({ - effect: 'coverflow', - swiper, - on, - setTranslate, - setTransition, - perspective: () => true, - overwriteParams: () => ({ - watchSlidesProgress: true - }) - }); -} - -function EffectCreative({ - swiper, - extendParams, - on -}) { - extendParams({ - creativeEffect: { - transformEl: null, - 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; - - if (isCenteredSlides) { - const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; - $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`); - } - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - const slideProgress = $slideEl[0].progress; - const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress); - let originalProgress = progress; - - if (!isCenteredSlides) { - originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress); - } - - const offset = $slideEl[0].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) => { - r[index] = data.rotate[index] * Math.abs(progress * multiplier); - }); - $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; - const translateString = t.join(', '); - const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${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.children('.swiper-slide-shadow'); - - if ($shadowEl.length === 0 && data.shadow) { - $shadowEl = createShadow(params, $slideEl); - } - - if ($shadowEl.length) { - const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; - $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); - } - } - - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(transform).css({ - opacity: opacityString - }); - - if (data.origin) { - $targetEl.css('transform-origin', data.origin); - } - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.creativeEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl, - 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, - transformEl: null - } - }); - - const setTranslate = () => { - const { - slides, - activeIndex - } = swiper; - const params = swiper.params.cardsEffect; - const { - startTranslate, - isTouched - } = swiper.touchEventsData; - const currentTranslate = swiper.translate; - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - const slideProgress = $slideEl[0].progress; - const progress = Math.min(Math.max(slideProgress, -4), 4); - let offset = $slideEl[0].swiperSlideOffset; - - if (swiper.params.centeredSlides && !swiper.params.cssMode) { - swiper.$wrapperEl.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 = -2 * progress; - let tXAdd = 8 - Math.abs(progress) * 0.75; - const isSwipeToNext = (i === activeIndex || i === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; - const isSwipeToPrev = (i === activeIndex || i === 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 = `${-25 * subProgress * Math.abs(progress)}%`; - } - - if (progress < 0) { - // next - tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`; - } else if (progress > 0) { - // prev - tX = `calc(${tX}px + (-${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}`; - const transform = ` - translate3d(${tX}, ${tY}, ${tZ}px) - rotateZ(${rotate}deg) - scale(${scaleString}) - `; - - if (params.slideShadows) { - // Set shadows - let $shadowEl = $slideEl.find('.swiper-slide-shadow'); - - if ($shadowEl.length === 0) { - $shadowEl = createShadow(params, $slideEl); - } - - if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); - } - - $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(transform); - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.cardsEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl - }); - }; - - effectInit({ - effect: 'cards', - swiper, - on, - setTranslate, - setTransition, - perspective: () => true, - overwriteParams: () => ({ - watchSlidesProgress: true, - virtualTranslate: !swiper.params.cssMode - }) - }); -} - -// Swiper Class -const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, 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.esm.browser.js.map diff --git a/resources/web/guide/swiper/swiper-bundle.esm.browser.js.map b/resources/web/guide/swiper/swiper-bundle.esm.browser.js.map deleted file mode 100644 index 3874fe90e6..0000000000 --- a/resources/web/guide/swiper/swiper-bundle.esm.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"swiper-bundle.esm.browser.js.map","sources":["../node_modules/ssr-window/ssr-window.esm.js","../node_modules/dom7/dom7.esm.js","../src/shared/dom.js","../src/shared/utils.js","../src/shared/get-support.js","../src/shared/get-device.js","../src/shared/get-browser.js","../src/core/modules/resize/resize.js","../src/core/modules/observer/observer.js","../src/core/events-emitter.js","../src/core/update/updateSize.js","../src/core/update/updateSlides.js","../src/core/update/updateAutoHeight.js","../src/core/update/updateSlidesOffset.js","../src/core/update/updateSlidesProgress.js","../src/core/update/updateProgress.js","../src/core/update/updateSlidesClasses.js","../src/core/update/updateActiveIndex.js","../src/core/update/updateClickedSlide.js","../src/core/update/index.js","../src/core/translate/getTranslate.js","../src/core/translate/setTranslate.js","../src/core/translate/minTranslate.js","../src/core/translate/maxTranslate.js","../src/core/translate/translateTo.js","../src/core/translate/index.js","../src/core/transition/setTransition.js","../src/core/transition/transitionEmit.js","../src/core/transition/transitionStart.js","../src/core/transition/transitionEnd.js","../src/core/transition/index.js","../src/core/slide/slideTo.js","../src/core/slide/slideToLoop.js","../src/core/slide/slideNext.js","../src/core/slide/slidePrev.js","../src/core/slide/slideReset.js","../src/core/slide/slideToClosest.js","../src/core/slide/slideToClickedSlide.js","../src/core/slide/index.js","../src/core/loop/loopCreate.js","../src/core/loop/loopFix.js","../src/core/loop/loopDestroy.js","../src/core/loop/index.js","../src/core/grab-cursor/setGrabCursor.js","../src/core/grab-cursor/unsetGrabCursor.js","../src/core/grab-cursor/index.js","../src/core/events/onTouchStart.js","../src/core/events/onTouchMove.js","../src/core/events/onTouchEnd.js","../src/core/events/onResize.js","../src/core/events/onClick.js","../src/core/events/onScroll.js","../src/core/events/index.js","../src/core/breakpoints/setBreakpoint.js","../src/core/breakpoints/getBreakpoint.js","../src/core/breakpoints/index.js","../src/core/classes/addClasses.js","../src/core/classes/removeClasses.js","../src/core/classes/index.js","../src/core/images/loadImage.js","../src/core/images/preloadImages.js","../src/core/images/index.js","../src/core/check-overflow/index.js","../src/core/defaults.js","../src/core/moduleExtendParams.js","../src/core/core.js","../src/modules/virtual/virtual.js","../src/modules/keyboard/keyboard.js","../src/modules/mousewheel/mousewheel.js","../src/shared/create-element-if-not-defined.js","../src/modules/navigation/navigation.js","../src/shared/classes-to-selector.js","../src/modules/pagination/pagination.js","../src/modules/scrollbar/scrollbar.js","../src/modules/parallax/parallax.js","../src/modules/zoom/zoom.js","../src/modules/lazy/lazy.js","../src/modules/controller/controller.js","../src/modules/a11y/a11y.js","../src/modules/history/history.js","../src/modules/hash-navigation/hash-navigation.js","../src/modules/autoplay/autoplay.js","../src/modules/thumbs/thumbs.js","../src/modules/free-mode/free-mode.js","../src/modules/grid/grid.js","../src/modules/manipulation/methods/appendSlide.js","../src/modules/manipulation/methods/prependSlide.js","../src/modules/manipulation/methods/addSlide.js","../src/modules/manipulation/methods/removeSlide.js","../src/modules/manipulation/methods/removeAllSlides.js","../src/modules/manipulation/manipulation.js","../src/shared/effect-init.js","../src/shared/effect-target.js","../src/shared/effect-virtual-transition-end.js","../src/modules/effect-fade/effect-fade.js","../src/modules/effect-cube/effect-cube.js","../src/shared/create-shadow.js","../src/modules/effect-flip/effect-flip.js","../src/modules/effect-coverflow/effect-coverflow.js","../src/modules/effect-creative/effect-creative.js","../src/modules/effect-cards/effect-cards.js","../src/swiper.js"],"sourcesContent":["/**\n * SSR Window 4.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.1\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n super(...(items || []));\n makeReactive(this);\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import {\n $,\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n} from 'dom7';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n Object.defineProperty($.fn, methodName, { value: Methods[methodName], writable: true });\n});\n\nexport default $;\n","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform\n .split(', ')\n .map((a) => a.replace(',', '.'))\n .join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix =\n curStyle.MozTransform ||\n curStyle.OTransform ||\n curStyle.MsTransform ||\n curStyle.msTransform ||\n curStyle.transform ||\n curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return (\n typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n );\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter((key) => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({ swiper, targetPosition, side }) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return (dir === 'next' && current >= target) || (dir === 'prev' && current <= target);\n };\n\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\n\nexport {\n animateCSSModeScroll,\n deleteProps,\n nextTick,\n now,\n getTranslate,\n isObject,\n extend,\n getComputedStyle,\n setCSSProperty,\n};\n","import { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n\n touch: !!(\n 'ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)\n ),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n })(),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n })(),\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nexport { getSupport };\n","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\n\nlet deviceCached;\n\nfunction calcDevice({ userAgent } = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nexport { getDevice };\n","import { getWindow } from 'ssr-window';\n\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nexport { getBrowser };\n","import { getWindow } from 'ssr-window';\n\nexport default function Resize({ swiper, on, emit }) {\n const window = getWindow();\n let observer = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver((entries) => {\n const { width, height } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({ contentBoxSize, contentRect, target }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect\n ? contentRect.width\n : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect\n ? contentRect.height\n : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function Observer({ swiper, extendParams, on, emit }) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren,\n });\n\n // Observe wrapper\n attach(swiper.$wrapperEl[0], { attributes: false });\n };\n const destroy = () => {\n observers.forEach((observer) => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n });\n on('init', init);\n on('destroy', destroy);\n}\n","/* eslint-disable no-underscore-dangle */\n\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (\n eventHandler === handler ||\n (eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler)\n ) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n\n eventsArray.forEach((event) => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach((eventHandler) => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n },\n};\n","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width =\n width -\n parseInt($el.css('padding-left') || 0, 10) -\n parseInt($el.css('padding-right') || 0, 10);\n height =\n height -\n parseInt($el.css('padding-top') || 0, 10) -\n parseInt($el.css('padding-bottom') || 0, 10);\n\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { setCSSProperty } from '../../shared/utils.js';\n\nexport default function updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom',\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n\n const { $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginBottom: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '', marginTop: '' });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n\n const shouldResetSlideSize =\n params.slidesPerView === 'auto' &&\n params.breakpoints &&\n Object.keys(params.breakpoints).filter((key) => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const { clientWidth, offsetWidth } = slide[0];\n slideSize =\n width +\n paddingLeft +\n paddingRight +\n marginLeft +\n marginRight +\n (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0)\n slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (\n (index - Math.min(swiper.params.slidesPerGroupSkip, index)) %\n swiper.params.slidesPerGroup ===\n 0\n )\n snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`,\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n\n if (\n Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) >\n 1\n ) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides\n .filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n })\n .css({ [key]: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(\n swiper.wrapperEl,\n '--swiper-centered-offset-after',\n `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`,\n );\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map((v) => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map((v) => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n}\n","export default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = (index) => {\n if (isVirtual) {\n return swiper.slides.filter(\n (el) => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index,\n )[0];\n }\n return swiper.slides.eq(index)[0];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal()\n ? slides[i].offsetLeft\n : slides[i].offsetTop;\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateSlidesProgress(translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl, snapGrid } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress =\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress =\n (offsetCenter -\n snapGrid[0] +\n (params.centeredSlides ? swiper.minTranslate() : 0) -\n slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible =\n (slideBefore >= 0 && slideBefore < swiper.size - 1) ||\n (slideAfter > 1 && slideAfter <= swiper.size) ||\n (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","export default function updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && swiper.translate * multiplier) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || (params.centeredSlides && params.autoHeight))\n swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function updateSlidesClasses() {\n const swiper = this;\n\n const { slides, params, $wrapperEl, activeIndex, realIndex } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(\n `${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`,\n );\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\n `.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`,\n );\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide\n .nextAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide\n .prevAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n translate >= slidesGrid[i] &&\n translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2\n ) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(\n swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex,\n 10,\n );\n\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (\n params.slideToClickedSlide &&\n swiper.clickedIndex !== undefined &&\n swiper.clickedIndex !== swiper.activeIndex\n ) {\n swiper.slideToClickedSlide();\n }\n}\n","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","import { getTranslate } from '../../shared/utils.js';\n\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const { params, rtlTranslate: rtl, translate, $wrapperEl } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function setTranslate(translate, byController) {\n const swiper = this;\n const { rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function minTranslate() {\n return -this.snapGrid[0];\n}\n","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function translateTo(\n translate = 0,\n speed = this.params.speed,\n runCallbacks = true,\n translateBounds = true,\n internal,\n) {\n const swiper = this;\n\n const { params, wrapperEl } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: -newTranslate, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","export default function transitionEmit({ swiper, runCallbacks, direction, step }) {\n const { activeIndex, previousIndex } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'Start' });\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'End' });\n}\n","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function slideTo(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n initial,\n) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(\n `The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`,\n );\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\n `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`,\n );\n }\n\n // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled,\n } = swiper;\n\n if (\n (swiper.animating && params.preventInteractionOnTransition) ||\n (!enabled && !internal && !initial)\n ) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2\n ) {\n slideIndex = i;\n } else if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext\n ) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (\n !swiper.allowSlideNext &&\n translate < swiper.translate &&\n translate < swiper.minTranslate()\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n translate > swiper.translate &&\n translate > swiper.maxTranslate()\n ) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: t, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","export default function slideToLoop(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { animating, enabled, params } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating, snapGrid, slidesGrid, rtlTranslate, enabled } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (\n params.slidesPerView === 'auto' &&\n params.slidesPerGroup === 1 &&\n params.slidesPerGroupAuto\n ) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n threshold = 0.5,\n) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function slideToClickedSlide() {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView =\n params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n slideToIndex < swiper.loopedSlides - slidesPerView / 2 ||\n slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n const $selector = $($wrapperEl.children()[0].parentNode);\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(\n `${params.slideClass} ${params.slideBlankClass}`,\n );\n $selector.append(blankNode);\n }\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function loopFix() {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function loopDestroy() {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`,\n )\n .remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","export default function setGrabCursor(moving) {\n const swiper = this;\n if (\n swiper.support.touch ||\n !swiper.params.simulateTouch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n )\n return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","export default function unsetGrabCursor() {\n const swiper = this;\n if (\n swiper.support.touch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n ) {\n return;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}\n","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n\n const data = swiper.touchEventsData;\n const { params, touches, enabled } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector\n ? params.noSwipingSelector\n : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (\n params.noSwiping &&\n (isTargetShadow\n ? closestElement(noSwipingSelector, e.target)\n : $targetEl.closest(noSwipingSelector)[0])\n ) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection &&\n (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)\n ) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n if (\n document.activeElement &&\n $(document.activeElement).is(data.focusableElements) &&\n document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault =\n preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (\n (params.touchStartForcePreventDefault || shouldPreventDefault) &&\n !$targetEl[0].isContentEditable\n ) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch =\n e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) ||\n (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) ||\n (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold)\n return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (\n (swiper.isHorizontal() && touches.currentY === touches.startY) ||\n (swiper.isVertical() && touches.currentX === touches.startX)\n ) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal()\n ? touchAngle > params.touchAngle\n : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.minTranslate() -\n 1 +\n (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.maxTranslate() +\n 1 -\n (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n swiper.swipeDirection === 'next' &&\n data.currentTranslate < data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (\n !swiper.allowSlidePrev &&\n swiper.swipeDirection === 'prev' &&\n data.currentTranslate > data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal()\n ? touches.currentX - touches.startX\n : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (\n (params.freeMode && params.freeMode.enabled && swiper.freeMode) ||\n params.watchSlidesProgress\n ) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import { now, nextTick } from '../../shared/utils.js';\n\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const { params, touches, rtlTranslate: rtl, slidesGrid, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (\n params.grabCursor &&\n data.isMoved &&\n data.isTouched &&\n (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)\n ) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (\n !data.isTouched ||\n !data.isMoved ||\n !swiper.swipeDirection ||\n touches.diff === 0 ||\n data.currentTranslate === data.startTranslate\n ) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({ currentPos });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (\n let i = 0;\n i < slidesGrid.length;\n i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup\n ) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget =\n swiper.navigation &&\n (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n","export default function onResize() {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if (\n (params.slidesPerView === 'auto' || params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.isBeginning &&\n !swiper.params.centeredSlides\n ) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","export default function onScroll() {\n const swiper = this;\n const { wrapperEl, rtlTranslate, enabled } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { getDocument } from 'ssr-window';\n\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const { params, touchEvents, el, wrapperEl, device, support } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener =\n touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](\n touchEvents.move,\n swiper.onTouchMove,\n support.passiveListener ? { passive: false, capture } : capture,\n );\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](\n device.ios || device.android\n ? 'resize orientationchange observerUpdate'\n : 'resize observerUpdate',\n onResize,\n true,\n );\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const { params, support } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const { activeIndex, initialized, loopedSlides = 0, params, $el } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(\n `${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`,\n );\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n if (\n (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column') ||\n (!breakpointParams.grid.fill && params.grid.fill === 'column')\n ) {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n const directionChanged =\n breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop =\n params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n\n const isEnabled = swiper.params.enabled;\n\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || (base === 'container' && !containerEl)) return undefined;\n let breakpoint = false;\n\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\n\nexport default { setBreakpoint, getBreakpoint };\n","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach((item) => {\n if (typeof item === 'object') {\n Object.keys(item).forEach((classNames) => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const { classNames, params, rtl, $el, device, support } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses([\n 'initialized',\n params.direction,\n { 'pointer-events': !support.touch },\n { 'free-mode': swiper.params.freeMode && params.freeMode.enabled },\n { 'autoheight': params.autoHeight },\n { 'rtl': rtl },\n { 'grid': params.grid && params.grid.rows > 1 },\n { 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' },\n { 'android': device.android },\n { 'ios': device.ios },\n { 'css-mode': params.cssMode },\n { 'centered': params.cssMode && params.centeredSlides },\n ], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}\n","export default function removeClasses() {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}\n","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\n\nexport default { addClasses, removeClasses };\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n function onReady() {\n if (callback) callback();\n }\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady,\n );\n }\n}\n","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","function checkOverflow() {\n const swiper = this;\n const { isLocked: wasLocked, params } = swiper;\n const { slidesOffsetBefore } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge =\n swiper.slidesGrid[lastSlideIndex] +\n swiper.slidesSizesGrid[lastSlideIndex] +\n slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n\n // Overrides\n width: null,\n height: null,\n\n //\n preventInteractionOnTransition: false,\n\n // ssr\n userAgent: null,\n url: null,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n\n // Internals\n _emitClasses: false,\n};\n","import { extend } from '../shared/utils.js';\n\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (\n ['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 &&\n params[moduleParamName] === true\n ) {\n params[moduleParamName] = { auto: true };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n extend(allModulesParams, obj);\n };\n}\n","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\n\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\n\nimport eventsEmitter from './events-emitter.js';\n\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\n\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\n\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n if (\n args.length === 1 &&\n args[0].constructor &&\n Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object'\n ) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each((containerEl) => {\n const newParams = extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({ userAgent: params.userAgent });\n swiper.browser = getBrowser();\n\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n\n swiper.modules.forEach((mod) => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper),\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach((eventName) => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Save Dom lib\n swiper.$ = $;\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return swiper.support.touch || !swiper.params.simulateTouch\n ? swiper.touchEventsTouch\n : swiper.touchEventsDesktop;\n })(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n });\n\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter((className) => {\n return (\n className.indexOf('swiper') === 0 ||\n className.indexOf(swiper.params.containerModifierClass) === 0\n );\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n\n return slideEl.className\n .split(' ')\n .filter((className) => {\n return (\n className.indexOf('swiper-slide') === 0 ||\n className.indexOf(swiper.params.slideClass) === 0\n );\n })\n .join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each((slideEl) => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({ slideEl, classNames });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const { params, slides, slidesGrid, slidesSizesGrid, size: swiperSize, activeIndex } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact\n ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize\n : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(\n Math.max(translateValue, swiper.maxTranslate()),\n swiper.minTranslate(),\n );\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if (\n (swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.params.centeredSlides\n ) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (\n newDirection === currentDirection ||\n (newDirection !== 'horizontal' && newDirection !== 'vertical')\n ) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector()));\n // Children needs to return slot items\n res.children = (options) => $el.children(options);\n return res;\n }\n return $el.children(getWrapperSelector());\n };\n // Find Wrapper\n let $wrapperEl = getWrapper();\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each((slideEl) => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate:\n swiper.params.direction === 'horizontal' &&\n (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n });\n\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(\n swiper.params.initialSlide + swiper.loopedSlides,\n 0,\n swiper.params.runCallbacksOnInit,\n false,\n true,\n );\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const { params, $el, $wrapperEl, slides } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass(\n [\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '),\n )\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach((m) => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\n\nObject.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\n\nSwiper.use([Resize, Observer]);\n\nexport default Swiper;\n","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\n\nexport default function Virtual({ swiper, extendParams, on }) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n });\n\n let cssModeTimeout;\n\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: [],\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(\n `
${slide}
`,\n );\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset,\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n })(),\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl\n .find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`)\n .remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes\n .sort((a, b) => b - a)\n .forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr(\n 'data-swiper-slide-index',\n parseInt(cachedElIndex, 10) + numberOfNewSlides,\n );\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Keyboard({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false,\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true,\n },\n });\n\n function handle(event) {\n if (!swiper.enabled) return;\n\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n ((swiper.isHorizontal() && isArrowRight) ||\n (swiper.isVertical() && isArrowDown) ||\n isPageDown)\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n ((swiper.isHorizontal() && isArrowLeft) || (swiper.isVertical() && isArrowUp) || isPageUp)\n ) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (\n document.activeElement &&\n document.activeElement.nodeName &&\n (document.activeElement.nodeName.toLowerCase() === 'input' ||\n document.activeElement.nodeName.toLowerCase() === 'textarea')\n ) {\n return undefined;\n }\n if (\n swiper.params.keyboard.onlyInViewport &&\n (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)\n ) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (\n swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 &&\n swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0\n ) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiperWidth, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiperHeight],\n [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl))\n swiper.slideNext();\n if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl))\n swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n\n Object.assign(swiper.keyboard, {\n enable,\n disable,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\n\nexport default function Mousewheel({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n },\n });\n\n swiper.mousewheel = {\n enabled: false,\n };\n\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (\n swiper.params.mousewheel.thresholdDelta &&\n newEvent.delta < swiper.params.mousewheel.thresholdDelta\n ) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (\n swiper.params.mousewheel.thresholdTime &&\n now() - lastScrollTime < swiper.params.mousewheel.thresholdTime\n ) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges)\n return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n else return true;\n } else {\n delta =\n Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop\n ? true\n : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (\n newEvent.direction !== prevEvent.direction ||\n newEvent.delta > prevEvent.delta ||\n newEvent.time > prevEvent.time + 150\n ) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n };\n const ignoreWheelEvents =\n lastEventBeforeSnap &&\n newEvent.time < lastEventBeforeSnap.time + 500 &&\n newEvent.delta <= lastEventBeforeSnap.delta &&\n newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (\n prevEvent &&\n (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)\n ) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (\n recentWheelEvents.length >= 15 &&\n newEvent.time - firstEvent.time < 500 &&\n firstEvent.delta - newEvent.delta >= 1 &&\n newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction)\n swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n\n Object.assign(swiper.mousewheel, {\n enable,\n disable,\n });\n}\n","import { getDocument } from 'ssr-window';\n\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach((key) => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Navigation({ swiper, extendParams, on, emit }) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n });\n\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null,\n };\n\n function getEl(el) {\n let $el;\n if (el) {\n $el = $(el);\n if (\n swiper.params.uniqueNavElements &&\n typeof el === 'string' &&\n $el.length > 1 &&\n swiper.$el.find(el).length === 1\n ) {\n $el = swiper.$el.find(el);\n }\n }\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n toggleEl($prevEl, swiper.isBeginning);\n toggleEl($nextEl, swiper.isEnd);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n }\n function init() {\n const params = swiper.params.navigation;\n\n swiper.params.navigation = createElementIfNotDefined(\n swiper,\n swiper.originalParams.navigation,\n swiper.params.navigation,\n {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev',\n },\n );\n if (!(params.nextEl || params.prevEl)) return;\n\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n function destroy() {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n init();\n update();\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const { $nextEl, $prevEl } = swiper.navigation;\n const targetEl = e.target;\n if (\n swiper.params.navigation.hideOnClick &&\n !$(targetEl).is($prevEl) &&\n !$(targetEl).is($nextEl)\n ) {\n if (\n swiper.pagination &&\n swiper.params.pagination &&\n swiper.params.pagination.clickable &&\n (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))\n )\n return;\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n Object.assign(swiper.navigation, {\n update,\n init,\n destroy,\n });\n}\n","export default function classesToSelector(classes = '') {\n return `.${classes\n .trim()\n .replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Pagination({ swiper, extendParams, on, emit }) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n },\n });\n\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: [],\n };\n\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return (\n !swiper.params.pagination.el ||\n !swiper.pagination.el ||\n !swiper.pagination.$el ||\n swiper.pagination.$el.length === 0\n );\n }\n\n function setSideBullets($bulletEl, position) {\n const { bulletActiveClass } = swiper.params.pagination;\n $bulletEl[position]()\n .addClass(`${bulletActiveClass}-${position}`)\n [position]()\n .addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil(\n (swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup,\n );\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (\n params.type === 'bullets' &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length > 0\n ) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(\n swiper.isHorizontal() ? 'width' : 'height',\n `${bulletSize * (params.dynamicMainBullets + 4)}px`,\n );\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - swiper.previousIndex;\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(\n ['', '-next', '-next-next', '-prev', '-prev-prev', '-main']\n .map((suffix) => `${params.bulletActiveClass}${suffix}`)\n .join(' '),\n );\n if ($el.length > 1) {\n bullets.each((bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets\n .eq(bullets.length - params.dynamicMainBullets - 1)\n .addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset =\n (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el\n .find(classesToSelector(params.currentClass))\n .text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el\n .find(classesToSelector(params.progressbarFillClass))\n .transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`)\n .transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.loop &&\n numberOfBullets > slidesLength\n ) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML =\n `` +\n ' / ' +\n ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(\n swiper,\n swiper.originalParams.pagination,\n swiper.params.pagination,\n { el: 'swiper-pagination' },\n );\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el);\n // check if it belongs to another nested Swiper\n if ($el.length > 1) {\n $el = $el.filter((el) => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(params.modifierClass + swiper.params.direction);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0],\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(params.modifierClass + swiper.params.direction);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass)\n swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n init();\n render();\n update();\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $el } = swiper.pagination;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const { $el } = swiper.pagination;\n if (\n swiper.params.pagination.el &&\n swiper.params.pagination.hideOnClick &&\n $el.length > 0 &&\n !$(targetEl).hasClass(swiper.params.pagination.bulletClass)\n ) {\n if (\n swiper.navigation &&\n ((swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) ||\n (swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl))\n )\n return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n Object.assign(swiper.pagination, {\n render,\n update,\n init,\n destroy,\n });\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Scrollbar({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n });\n\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null,\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const { $dragEl, $el } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n divider =\n swiper.size /\n (swiper.virtualSize +\n swiper.params.slidesOffsetBefore -\n (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](\n swiper.params.scrollbar.lockClass,\n );\n }\n }\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientX\n : e.clientX;\n }\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientY\n : e.clientY;\n }\n function setDragPosition(e) {\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const { $el } = scrollbar;\n\n let positionRatio;\n positionRatio =\n (getPointerPosition(e) -\n $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] -\n (dragStartPos !== null ? dragStartPos : dragSize / 2)) /\n (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position =\n swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n isTouched = true;\n dragStartPos =\n e.target === $dragEl[0] || e.target === $dragEl\n ? getPointerPosition(e) -\n e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top']\n : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n\n clearTimeout(dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const { scrollbar, touchEventsTouch, touchEventsDesktop, params, support } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener =\n support.passiveListener && params.passiveListeners\n ? { passive: false, capture: false }\n : false;\n const passiveListener =\n support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('off');\n }\n function init() {\n const { scrollbar, $el: $swiperEl } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(\n swiper,\n swiper.originalParams.scrollbar,\n swiper.params.scrollbar,\n { el: 'swiper-scrollbar' },\n );\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n\n let $el = $(params.el);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.el === 'string' &&\n $el.length > 1 &&\n $swiperEl.find(params.el).length === 1\n ) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n function destroy() {\n disableDraggable();\n }\n\n on('init', () => {\n init();\n updateSize();\n setTranslate();\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const { $el } = swiper.scrollbar;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n Object.assign(swiper.scrollbar, {\n updateSize,\n setTranslate,\n init,\n destroy,\n });\n}\n","import $ from '../../shared/dom.js';\n\nexport default function Parallax({ swiper, extendParams, on }) {\n extendParams({\n parallax: {\n enabled: false,\n },\n });\n\n const setTransform = (el, progress) => {\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n };\n\n const setTranslate = () => {\n const { $el, slides, progress, snapGrid } = swiper;\n $el\n .children(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl)\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = (duration = swiper.params.speed) => {\n const { $el } = swiper;\n $el\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration =\n parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n };\n\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\n\nexport default function Zoom({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n });\n\n swiper.zoom = {\n enabled: false,\n };\n\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n };\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n\n // Events\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n if (\n e.type !== 'touchend' ||\n (e.type === 'touchend' && e.changedTouches.length < 2 && !device.android)\n ) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl\n .transition(swiper.params.speed)\n .transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (\n swiper.isHorizontal() &&\n ((Math.floor(image.minX) === Math.floor(image.startX) &&\n image.touchesCurrent.x < image.touchesStart.x) ||\n (Math.floor(image.maxX) === Math.floor(image.startX) &&\n image.touchesCurrent.x > image.touchesStart.x))\n ) {\n image.isTouched = false;\n return;\n }\n if (\n !swiper.isHorizontal() &&\n ((Math.floor(image.minY) === Math.floor(image.startY) &&\n image.touchesCurrent.y < image.touchesStart.y) ||\n (Math.floor(image.maxY) === Math.floor(image.startY) &&\n image.touchesCurrent.y > image.touchesStart.y))\n ) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x =\n (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y =\n (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0)\n momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0)\n momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl\n .transition(momentumDuration)\n .transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl\n .transition(300)\n .transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n const activeListenerWithCapture = support.passiveListener\n ? { passive: false, capture: true }\n : true;\n return { passiveListener, activeListenerWithCapture };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const { passiveListener } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (\n !swiper.animating &&\n swiper.params.zoom.enabled &&\n swiper.zoom.enabled &&\n swiper.params.zoom.toggle\n ) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle,\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Lazy({ swiper, extendParams, on, emit }) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n });\n\n swiper.lazy = {};\n\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(\n `.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`,\n )\n : swiper.slides.eq(index);\n\n const $images = $slideEl.find(\n `.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`,\n );\n if (\n $slideEl.hasClass(params.elementClass) &&\n !$slideEl.hasClass(params.loadedClass) &&\n !$slideEl.hasClass(params.loadingClass)\n ) {\n $images.push($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (\n typeof swiper === 'undefined' ||\n swiper === null ||\n !swiper ||\n (swiper && !swiper.params) ||\n swiper.destroyed\n )\n return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if ($pictureEl.length) {\n $pictureEl.children('source').each((sourceEl) => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(\n `[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`,\n );\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(\n `.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`,\n );\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const { $wrapperEl, params: swiperParams, slides, activeIndex } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if (\n $wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n .length\n ) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement\n ? $(swiper.params.lazy.scrollingElement)\n : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const { rtlTranslate: rtl } = swiper;\n\n let inView = false;\n\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 &&\n point[0] <= scrollElementWidth &&\n point[1] >= 0 &&\n point[1] <= scrollElementHeight\n ) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n swiper.support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.freeMode.sticky\n ) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (\n swiper.params.lazy.loadOnTransitionStart ||\n (!swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded)\n ) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const { lazy, cssMode, watchSlidesProgress, touchReleaseOnEdges, resistanceRatio } =\n swiper.params;\n if (\n lazy.enabled &&\n (cssMode || (watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0)))\n ) {\n load();\n }\n });\n\n Object.assign(swiper.lazy, {\n load,\n loadInSlide,\n });\n}\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Controller({ swiper, extendParams, on }) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n });\n\n swiper.controller = {\n control: undefined,\n };\n\n function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = (maxIndex + minIndex) >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n })();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (\n ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]\n );\n };\n return this;\n }\n // xxx: for now i will just save one spline function to to\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier =\n (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition,\n });\n}\n","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\n\nexport default function A11y({ swiper, extendParams, on }) {\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n },\n });\n\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n function addElId($el, id) {\n $el.attr('id', id);\n }\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (\n swiper.pagination &&\n $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))\n ) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return (\n swiper.pagination &&\n swiper.params.pagination.clickable &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length\n );\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (hasPagination()) {\n swiper.pagination.bullets.each((bulletEl) => {\n const $bulletEl = $(bulletEl);\n makeElFocusable($bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel(\n $bulletEl,\n params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1),\n );\n }\n });\n }\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n function init() {\n const params = swiper.params.a11y;\n\n swiper.$el.append(liveRegion);\n\n // Container\n const $containerEl = swiper.$el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n }\n\n // Wrapper\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live);\n\n // Slide\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n addElRole($(swiper.slides), params.slideRole);\n\n const slidesLength = swiper.params.loop\n ? swiper.slides.filter((el) => !el.classList.contains(swiper.params.slideDuplicateClass))\n .length\n : swiper.slides.length;\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop\n ? parseInt($slideEl.attr('data-swiper-slide-index'), 10)\n : index;\n const ariaLabelMessage = params.slideLabelMessage\n .replace(/\\{\\{index\\}\\}/, slideIndex + 1)\n .replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n });\n\n // Navigation\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n }\n\n // Pagination\n if (hasPagination()) {\n swiper.pagination.$el.on(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n }\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n }\n\n // Pagination\n if (hasPagination()) {\n swiper.pagination.$el.off(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n }\n\n on('beforeInit', () => {\n liveRegion = $(\n ``,\n );\n });\n\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n updateNavigation();\n });\n on('toEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('fromEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function History({ swiper, extendParams, on }) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n },\n });\n\n let initialized = false;\n let paths = {};\n\n const slugify = (text) => {\n return text\n .toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n };\n\n const getPathValues = (urlOverride) => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname\n .slice(1)\n .split('/')\n .filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, swiper.paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function HashNavigation({ swiper, extendParams, emit, on }) {\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl\n .children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`)\n .index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n if (\n swiper.params.hashNavigation.replaceState &&\n window.history &&\n window.history.replaceState\n ) {\n window.history.replaceState(\n null,\n null,\n `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '',\n );\n emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (\n !swiper.params.hashNavigation.enabled ||\n (swiper.params.history && swiper.params.history.enabled)\n )\n return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n","/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Autoplay({ swiper, extendParams, on, emit }) {\n let timeout;\n\n swiper.autoplay = {\n running: false,\n paused: false,\n };\n\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false,\n },\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(\n swiper.slides.length - 1,\n swiper.params.speed,\n true,\n true,\n );\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) run();\n else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n function onVisibilityChange() {\n const document = getDocument();\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n swiper.autoplay.paused = false;\n run();\n }\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (\n swiper.params.cssMode &&\n swiper.autoplay.paused &&\n !swiper.params.autoplay.disableOnInteraction\n ) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop,\n });\n}\n","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Thumb({ swiper, extendParams, on }) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs',\n },\n });\n\n let initialized = false;\n let swiperCreated = false;\n\n swiper.thumbs = {\n swiper: null,\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass))\n return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides\n .eq(currentIndex)\n .prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n const nextIndex = swiper.slides\n .eq(currentIndex)\n .nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const { thumbs: thumbsParams } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView =\n thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (\n thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .hasClass(thumbsSwiper.params.slideDuplicateClass)\n ) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex =\n thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (\n thumbsSwiper.visibleSlidesIndexes &&\n thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0\n ) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (\n newThumbsIndex > currentThumbsIndex &&\n thumbsSwiper.params.slidesPerGroup === 1\n ) {\n // newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (\n thumbsSwiper.params.loop ||\n (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)\n ) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl\n .children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`)\n .addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n }\n\n on('beforeInit', () => {\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n if (!swiper.thumbs.swiper) return;\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n });\n\n Object.assign(swiper.thumbs, {\n init,\n update,\n });\n}\n","import { now } from '../../shared/utils.js';\n\nexport default function freeMode({ swiper, extendParams, emit, once }) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02,\n },\n });\n\n function onTouchMove() {\n const { touchEventsData: data, touches } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now(),\n });\n }\n\n function onTouchEnd({ currentPos }) {\n const { params, $wrapperEl, rtlTranslate: rtl, snapGrid, touchEventsData: data } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (\n Math.abs(snapGrid[nextSlide] - newPosition) <\n Math.abs(snapGrid[nextSlide - 1] - newPosition) ||\n swiper.swipeDirection === 'next'\n ) {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchMove,\n onTouchEnd,\n },\n });\n}\n","export default function Grid({ swiper, extendParams }) {\n extendParams({\n grid: {\n rows: 1,\n fill: 'column',\n },\n });\n\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n\n const initSlides = (slidesLength) => {\n const { slidesPerView } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const { slidesPerGroup, spaceBetween } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup =\n groupIndex === 0\n ? slidesPerGroup\n : Math.min(\n Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows),\n slidesPerGroup,\n );\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n\n newSlideOrderIndex = column + (row * slidesNumberEvenToRows) / rows;\n slide.css({\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || (column === numFullColumns && row === rows - 1)) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.css(\n getDirectionLabel('margin-top'),\n row !== 0 ? spaceBetween && `${spaceBetween}px` : '',\n );\n };\n\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const { spaceBetween, centeredSlides, roundLengths } = swiper.params;\n const { rows } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.$wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`,\n });\n if (centeredSlides) {\n snapGrid.splice(0, snapGrid.length);\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.push(...newSlidesGrid);\n }\n };\n\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize,\n };\n}\n","export default function appendSlide(slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n}\n","export default function prependSlide(slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","export default function addSlide(index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex =\n activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeAllSlides() {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\n\nexport default function Manipulation({ swiper }) {\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper),\n });\n}\n","export default function effectInit(params) {\n const { effect, swiper, on, setTranslate, setTransition, overwriteParams, perspective } = params;\n\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n}\n","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden',\n });\n }\n return $slideEl;\n}\n","export default function effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides }) {\n const { slides, activeIndex, $wrapperEl } = swiper;\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl\n ? slides.eq(activeIndex).find(transformEl)\n : slides.eq(activeIndex);\n }\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}\n","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFade({ swiper, extendParams, on }) {\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\n\nexport default function EffectCube({ swiper, extendParams, on }) {\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n });\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${\n isHorizontal ? slideAngle : 0\n }deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(\n `
`,\n );\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(\n `
`,\n );\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(\n `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${\n -swiperWidth / 2\n }px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`,\n );\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier =\n 1.5 -\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2 +\n Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(\n `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${\n -swiperHeight / 2 / scale2\n }px) rotateX(-90deg)`,\n );\n }\n }\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(\n `translate3d(0px,0,${zFactor}px) rotateX(${\n swiper.isHorizontal() ? 0 : wrapperRotate\n }deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`,\n );\n };\n const setTransition = (duration) => {\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n }),\n });\n}\n","import $ from './dom.js';\n\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`
`);\n $shadowContainer.append($shadowEl);\n }\n return $shadowEl;\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFlip({ swiper, extendParams, on }) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides, rtlTranslate: rtl } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\n\nexport default function EffectCoverflow({ swiper, extendParams, on }) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { width: swiperWidth, height: swiperHeight, slides, slidesSizesGrid } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier =\n ((center - slideOffset - slideSize / 2) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = (parseFloat(params.stretch) / 100) * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if ($shadowBeforeEl.length)\n $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length)\n $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCreative({ swiper, extendParams, on }) {\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n },\n });\n\n const getTranslateValue = (value) => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const { slides, $wrapperEl, slidesSizesGrid } = swiper;\n const params = swiper.params.creativeEffect;\n const { progressMultiplier: multiplier } = params;\n\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(\n Math.max($slideEl[0].progress, -params.limitProgress),\n params.limitProgress,\n );\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(\n Math.max($slideEl[0].originalProgress, -params.limitProgress),\n params.limitProgress,\n );\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1,\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(\n progress * multiplier,\n )}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString =\n originalProgress < 0\n ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})`\n : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString =\n originalProgress < 0\n ? 1 + (1 - data.opacity) * originalProgress * multiplier\n : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if ((custom && data.shadow) || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress\n ? progress * (1 / params.limitProgress)\n : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({ opacity: opacityString });\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCards({ swiper, extendParams, on }) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides, activeIndex } = swiper;\n const params = swiper.params.cardsEffect;\n const { startTranslate, isTouched } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -2 * progress;\n\n let tXAdd = 8 - Math.abs(progress) * 0.75;\n\n const isSwipeToNext =\n (i === activeIndex || i === activeIndex - 1) &&\n progress > 0 &&\n progress < 1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate < startTranslate;\n const isSwipeToPrev =\n (i === activeIndex || i === activeIndex + 1) &&\n progress < 0 &&\n progress > -1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString =\n progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${rotate}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length)\n $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","// Swiper Class\nimport Swiper from './core/core.js';\n\n//IMPORT_MODULES\n\nconst modules = [\n //INSTALL_MODULES\n];\n\nSwiper.use(modules);\n\n//EXPORT\n"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","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","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","makeReactive","proto","__proto__","defineProperty","get","set","value","Dom7","Array","items","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","arrayUnique","uniqueArray","i","indexOf","qsa","selector","context","a","$","html","trim","toCreate","tempParent","innerHTML","nodeType","fn","addClass","classes","classNames","map","c","split","classList","add","removeClass","remove","toggleClass","className","toggle","hasClass","contains","attr","attrs","arguments","getAttribute","undefined","attrName","removeAttr","removeAttribute","transform","transition","duration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","events","j","event","dom7Listeners","proxyListener","dom7LiveListeners","off","handlers","handler","splice","dom7proxy","trigger","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","index","result","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","Methods","methodName","writable","deleteProps","object","nextTick","delay","now","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","o","slice","isNode","node","HTMLElement","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","startTime","time","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","calcSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","checkPassiveListener","supportsPassive","opts","gestures","checkGestures","getSupport","deviceCached","calcDevice","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","iPadScreens","os","getDevice","overrides","browser","calcBrowser","isSafari","toLowerCase","isWebView","test","getBrowser","Resize","emit","observer","resizeHandler","destroyed","initialized","createObserver","ResizeObserver","entries","newWidth","newHeight","contentBoxSize","contentRect","inlineSize","blockSize","observe","removeObserver","unobserve","orientationChangeHandler","resizeObserver","Observer","extendParams","observers","attach","options","ObserverFunc","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","init","observeParents","containerParents","$el","observeSlideChildren","$wrapperEl","destroy","disconnect","priority","self","method","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","eventsArray","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","Number","isNaN","assign","size","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","marginRight","centeredSlides","cssMode","gridEnabled","grid","rows","initSlides","slideSize","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","updateAutoHeight","activeSlides","setTransition","getSlideByIndex","visibleSlides","ceil","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","activeSlide","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","getSwiperTranslate","virtualTranslate","currentTranslate","setTranslate","byController","x","y","z","previousTranslate","newProgress","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","transitionStart","slideTo","initial","Error","indexAsNumber","isValidNumber","isFinite","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","snapTranslate","diff","slideChanged","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","closestElement","base","__closestFrom","assignedSlot","getRootNode","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","isTouchEvent","type","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","onTouchEnd","touchEndTime","timeDiff","lastClickTime","currentPos","stopIndex","groupSize","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","isNavButtonTarget","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","start","move","end","passiveListeners","passive","cancel","updateOnWindowResize","attachEvents","bind","detachEvents","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointOnlyParams","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","containerModifierClass","emitContainerClasses","fill","directionChanged","needsReLoop","changeDirection","isEnabled","disable","enable","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","prepareClasses","prefix","resultClasses","item","addClasses","suffixes","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","isPicture","complete","onload","onerror","preloadImages","imagesToLoad","imagesLoaded","updateOnImagesReady","update","currentSrc","wasLocked","lastSlideIndex","lastSlideRightEdge","createElements","url","uniqueNavElements","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","images","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","swiperParams","defaults","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","slideInView","translateValue","translated","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","getWrapper","wrapper","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","Virtual","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","cssModeTimeout","from","$slideEl","force","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","getSlides","slidesToRender","prependIndexes","appendIndexes","appendSlide","prependSlide","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","removeSlide","slidesIndexes","removeAllSlides","Keyboard","keyboard","onlyInViewport","pageUpDown","handle","kc","keyCode","charCode","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","Mousewheel","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","timeout","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","releaseScroll","rtlFactor","positions","sign","shift","prevEvent","ignoreWheelEvents","position","sticky","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","createElementIfNotDefined","checkProps","element","Navigation","hideOnClick","disabledClass","hiddenClass","lockClass","$nextEl","$prevEl","getEl","toggleEl","disabled","tagName","onPrevClick","onNextClick","_s","targetEl","pagination","clickable","isHidden","classesToSelector","Pagination","pfx","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","bullets","bulletSize","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","lastIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","Scrollbar","dragTimeout","dragStartPos","dragSize","trackSize","divider","scrollbar","hide","draggable","snapOnRelease","dragClass","dragEl","$dragEl","newSize","newPos","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","activeListener","eventMethod","enableDraggable","disableDraggable","$swiperEl","Parallax","parallax","setTransform","p","currentOpacity","currentScale","parallaxEl","$parallaxEl","parallaxDuration","_swiper","Zoom","zoom","maxRatio","containerClass","zoomedSlideClass","isScaling","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","gesture","slideWidth","slideHeight","$imageEl","$imageWrapEl","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","distance","onGestureStart","scaleStart","onGestureChange","scaleMove","onGestureEnd","scaledWidth","scaledHeight","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTransitionEnd","zoomIn","touchAction","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","in","out","Lazy","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$images","background","$pictureEl","sourceEl","$source","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","amount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","Controller","controller","control","inverse","by","LinearSpline","binarySearch","guess","array","i1","i3","interpolate","getInterpolateFunction","spline","_t","controlled","controlledTranslate","setControlledTranslate","setControlledTransition","removeSpline","A11y","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","liveRegion","notify","message","notification","getRandomNumber","randomChar","round","random","repeat","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElControls","controls","addElLabel","addElId","addElLive","live","disableEl","enableEl","onEnterOrSpaceKey","click","updateNavigation","hasPagination","updatePagination","bulletEl","initNavEl","wrapperId","$containerEl","ariaLabelMessage","History","root","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","includes","currentState","state","scrollToSlide","slideHistory","setHistoryPopState","hashNavigation","HashNavigation","watchState","onHashChange","newHash","activeSlideHash","setHash","slideHash","Autoplay","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","$activeSlideEl","autoplayResult","pause","onVisibilityChange","visibilityState","onMouseEnter","onMouseLeave","attachMouseEvents","detachMouseEvents","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","useOffset","currentThumbsIndex","newThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","momentumDistance","newPosition","doBounce","afterBouncePosition","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","order","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","indexToRemove","Manipulation","effectInit","overwriteParams","perspective","overwriteParamsResult","effectTarget","effectParams","transformEl","effectVirtualTransitionEnd","allSlides","eventTriggered","$transitionEndTarget","triggerEvents","EffectFade","fadeEffect","crossFade","tx","ty","slideOpacity","$transitionElements","EffectCube","cubeEffect","slideShadows","shadow","shadowOffset","shadowScale","wrapperRotate","$cubeShadowEl","slideAngle","tz","shadowBefore","shadowAfter","shadowAngle","sin","scale1","scale2","zFactor","createShadow","shadowClass","$shadowContainer","$shadowEl","EffectFlip","flipEffect","limitRotation","rotate","rotateY","rotateX","zIndex","EffectCoverflow","coverflowEffect","stretch","depth","modifier","center","offsetMultiplier","translateZ","slideTransform","$shadowBeforeEl","$shadowAfterEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","EffectCards","cardsEffect","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY"],"mappings":"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"} \ No newline at end of file diff --git a/resources/web/guide/swiper/swiper-bundle.esm.browser.min.js b/resources/web/guide/swiper/swiper-bundle.esm.browser.min.js deleted file mode 100644 index c9f16ce111..0000000000 --- a/resources/web/guide/swiper/swiper-bundle.esm.browser.min.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Swiper 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -function isObject$1(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function extend$1(e={},t={}){Object.keys(t).forEach((s=>{void 0===e[s]?e[s]=t[s]:isObject$1(t[s])&&isObject$1(e[s])&&Object.keys(t[s]).length>0&&extend$1(e[s],t[s])}))}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$1(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$1(e,ssrWindow),e}function makeReactive(e){const t=e.__proto__;Object.defineProperty(e,"__proto__",{get:()=>t,set(e){t.__proto__=e}})}class Dom7 extends Array{constructor(e){super(...e||[]),makeReactive(this)}}function arrayFlat(e=[]){const t=[];return e.forEach((e=>{Array.isArray(e)?t.push(...arrayFlat(e)):t.push(e)})),t}function arrayFilter(e,t){return Array.prototype.filter.call(e,t)}function arrayUnique(e){const t=[];for(let s=0;s=0&&s.indexOf(">")>=0){let e="div";0===s.indexOf("e.split(" "))));return this.forEach((e=>{e.classList.add(...t)})),this}function removeClass(...e){const t=arrayFlat(e.map((e=>e.split(" "))));return this.forEach((e=>{e.classList.remove(...t)})),this}function toggleClass(...e){const t=arrayFlat(e.map((e=>e.split(" "))));this.forEach((e=>{t.forEach((t=>{e.classList.toggle(t)}))}))}function hasClass(...e){const t=arrayFlat(e.map((e=>e.split(" "))));return arrayFilter(this,(e=>t.filter((t=>e.classList.contains(t))).length>0)).length>0}function attr(e,t){if(1===arguments.length&&"string"==typeof e)return this[0]?this[0].getAttribute(e):void 0;for(let s=0;s=0;e-=1){const s=n[e];a&&s.listener===a||a&&s.listener&&s.listener.dom7proxy&&s.listener.dom7proxy===a?(r.removeEventListener(t,s.proxyListener,i),n.splice(e,1)):a||(r.removeEventListener(t,s.proxyListener,i),n.splice(e,1))}}}return this}function trigger(...e){const t=getWindow(),s=e[0].split(" "),a=e[1];for(let i=0;it>0)),i.dispatchEvent(s),i.dom7EventData=[],delete i.dom7EventData}}}return this}function transitionEnd$1(e){const t=this;return e&&t.on("transitionend",(function s(a){a.target===this&&(e.call(this,a),t.off("transitionend",s))})),this}function outerWidth(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetWidth+parseFloat(e.getPropertyValue("margin-right"))+parseFloat(e.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null}function outerHeight(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetHeight+parseFloat(e.getPropertyValue("margin-top"))+parseFloat(e.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null}function offset(){if(this.length>0){const e=getWindow(),t=getDocument(),s=this[0],a=s.getBoundingClientRect(),i=t.body,r=s.clientTop||i.clientTop||0,n=s.clientLeft||i.clientLeft||0,l=s===e?e.scrollY:s.scrollTop,o=s===e?e.scrollX:s.scrollLeft;return{top:a.top+l-r,left:a.left+o-n}}return null}function styles(){const e=getWindow();return this[0]?e.getComputedStyle(this[0],null):{}}function css(e,t){const s=getWindow();let a;if(1===arguments.length){if("string"!=typeof e){for(a=0;a{e.apply(t,[t,s])})),this):this}function filter(e){return $(arrayFilter(this,e))}function html(e){if(void 0===e)return this[0]?this[0].innerHTML:null;for(let t=0;tt-1)return $([]);if(e<0){const s=t+e;return $(s<0?[]:[this[s]])}return $([this[e]])}function append(...e){let t;const s=getDocument();for(let a=0;a=0;a-=1)this[s].insertBefore(i.childNodes[a],this[s].childNodes[0])}else if(e instanceof Dom7)for(a=0;a0?e?this[0].nextElementSibling&&$(this[0].nextElementSibling).is(e)?$([this[0].nextElementSibling]):$([]):this[0].nextElementSibling?$([this[0].nextElementSibling]):$([]):$([])}function nextAll(e){const t=[];let s=this[0];if(!s)return $([]);for(;s.nextElementSibling;){const a=s.nextElementSibling;e?$(a).is(e)&&t.push(a):t.push(a),s=a}return $(t)}function prev(e){if(this.length>0){const t=this[0];return e?t.previousElementSibling&&$(t.previousElementSibling).is(e)?$([t.previousElementSibling]):$([]):t.previousElementSibling?$([t.previousElementSibling]):$([])}return $([])}function prevAll(e){const t=[];let s=this[0];if(!s)return $([]);for(;s.previousElementSibling;){const a=s.previousElementSibling;e?$(a).is(e)&&t.push(a):t.push(a),s=a}return $(t)}function parent(e){const t=[];for(let s=0;s{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$1(e){const t=getWindow();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}function getTranslate(e,t="x"){const s=getWindow();let a,i,r;const n=getComputedStyle$1(e);return s.WebKitCSSMatrix?(i=n.transform||n.webkitTransform,i.split(",").length>6&&(i=i.split(", ").map((e=>e.replace(",","."))).join(", ")),r=new s.WebKitCSSMatrix("none"===i?"":i)):(r=n.MozTransform||n.OTransform||n.MsTransform||n.msTransform||n.transform||n.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),a=r.toString().split(",")),"x"===t&&(i=s.WebKitCSSMatrix?r.m41:16===a.length?parseFloat(a[12]):parseFloat(a[4])),"y"===t&&(i=s.WebKitCSSMatrix?r.m42:16===a.length?parseFloat(a[13]):parseFloat(a[5])),i||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]),s=["__proto__","constructor","prototype"];for(let a=1;as.indexOf(e)<0));for(let s=0,a=e.length;si?"next":"prev",d=(e,t)=>"next"===o&&e>=t||"prev"===o&&e<=t,c=()=>{r=(new Date).getTime(),null===n&&(n=r);const o=Math.max(Math.min((r-n)/l,1),0),p=.5-Math.cos(o*Math.PI)/2;let u=i+p*(t-i);if(d(u,t)&&(u=t),e.wrapperEl.scrollTo({[s]:u}),d(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(c)};c()}let support,deviceCached,browser;function calcSupport(){const e=getWindow(),t=getDocument();return{smoothScroll:t.documentElement&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch),passiveListener:function(){let t=!1;try{const s=Object.defineProperty({},"passive",{get(){t=!0}});e.addEventListener("testPassiveListener",null,s)}catch(e){}return t}(),gestures:"ongesturestart"in e}}function getSupport(){return support||(support=calcSupport()),support}function calcDevice({userAgent:e}={}){const t=getSupport(),s=getWindow(),a=s.navigator.platform,i=e||s.navigator.userAgent,r={ios:!1,android:!1},n=s.screen.width,l=s.screen.height,o=i.match(/(Android);?[\s\/]+([\d.]+)?/);let d=i.match(/(iPad).*OS\s([\d_]+)/);const c=i.match(/(iPod)(.*OS\s([\d_]+))?/),p=!d&&i.match(/(iPhone\sOS|iOS)\s([\d_]+)/),u="Win32"===a;let h="MacIntel"===a;return!d&&h&&t.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${n}x${l}`)>=0&&(d=i.match(/(Version)\/([\d.]+)/),d||(d=[0,1,"13_0_0"]),h=!1),o&&!u&&(r.os="android",r.android=!0),(d||p||c)&&(r.os="ios",r.ios=!0),r}function getDevice(e={}){return deviceCached||(deviceCached=calcDevice(e)),deviceCached}function calcBrowser(){const e=getWindow();return{isSafari:function(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}(),isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}function getBrowser(){return browser||(browser=calcBrowser()),browser}function Resize({swiper:e,on:t,emit:s}){const a=getWindow();let i=null;const r=()=>{e&&!e.destroyed&&e.initialized&&(s("beforeResize"),s("resize"))},n=()=>{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=>{const{width:s,height:a}=e;let i=s,n=a;t.forEach((({contentBoxSize:t,contentRect:s,target:a})=>{a&&a!==e.el||(i=s?s.width:(t[0]||t).inlineSize,n=s?s.height:(t[0]||t).blockSize)})),i===s&&n===a||r()})),i.observe(e.el)):(a.addEventListener("resize",r),a.addEventListener("orientationchange",n))})),t("destroy",(()=>{i&&i.unobserve&&e.el&&(i.unobserve(e.el),i=null),a.removeEventListener("resize",r),a.removeEventListener("orientationchange",n)}))}function Observer({swiper:e,extendParams:t,on:s,emit:a}){const i=[],r=getWindow(),n=(e,t={})=>{const s=new(r.MutationObserver||r.WebkitMutationObserver)((e=>{if(1===e.length)return void a("observerUpdate",e[0]);const t=function(){a("observerUpdate",e[0])};r.requestAnimationFrame?r.requestAnimationFrame(t):r.setTimeout(t,0)}));s.observe(e,{attributes:void 0===t.attributes||t.attributes,childList:void 0===t.childList||t.childList,characterData:void 0===t.characterData||t.characterData}),i.push(s)};t({observer:!1,observeParents:!1,observeSlideChildren:!1}),s("init",(()=>{if(e.params.observer){if(e.params.observeParents){const t=e.$el.parents();for(let e=0;e{i.forEach((e=>{e.disconnect()})),i.splice(0,i.length)}))}Object.keys(Methods).forEach((e=>{Object.defineProperty($.fn,e,{value:Methods[e],writable:!0})}));var eventsEmitter={on(e,t,s){const a=this;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("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("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.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?(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)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}};function updateSize(){const e=this;let t,s;const a=e.$el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:a[0].clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:a[0].clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(a.css("padding-left")||0,10)-parseInt(a.css("padding-right")||0,10),s=s-parseInt(a.css("padding-top")||0,10)-parseInt(a.css("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){return e.isHorizontal()?t:{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"}[t]}function s(e,s){return parseFloat(e.getPropertyValue(t(s))||0)}const a=e.params,{$wrapperEl:i,size:r,rtlTranslate:n,wrongRTL:l}=e,o=e.virtual&&a.virtual.enabled,d=o?e.virtual.slides.length:e.slides.length,c=i.children(`.${e.params.slideClass}`),p=o?e.virtual.slides.length:c.length;let u=[];const h=[],m=[];let f=a.slidesOffsetBefore;"function"==typeof f&&(f=a.slidesOffsetBefore.call(e));let g=a.slidesOffsetAfter;"function"==typeof g&&(g=a.slidesOffsetAfter.call(e));const v=e.snapGrid.length,w=e.slidesGrid.length;let b=a.spaceBetween,x=-f,y=0,E=0;if(void 0===r)return;"string"==typeof b&&b.indexOf("%")>=0&&(b=parseFloat(b.replace("%",""))/100*r),e.virtualSize=-b,n?c.css({marginLeft:"",marginBottom:"",marginTop:""}):c.css({marginRight:"",marginBottom:"",marginTop:""}),a.centeredSlides&&a.cssMode&&(setCSSProperty(e.wrapperEl,"--swiper-centered-offset-before",""),setCSSProperty(e.wrapperEl,"--swiper-centered-offset-after",""));const $=a.grid&&a.grid.rows>1&&e.grid;let T;$&&e.grid.initSlides(p);const S="auto"===a.slidesPerView&&a.breakpoints&&Object.keys(a.breakpoints).filter((e=>void 0!==a.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&u.push(e.virtualSize-r)}if(0===u.length&&(u=[0]),0!==a.spaceBetween){const s=e.isHorizontal()&&n?"marginLeft":t("marginRight");c.filter(((e,t)=>!a.cssMode||t!==c.length-1)).css({[s]:`${b}px`})}if(a.centeredSlides&&a.centeredSlidesBounds){let e=0;m.forEach((t=>{e+=t+(a.spaceBetween?a.spaceBetween:0)})),e-=a.spaceBetween;const t=e-r;u=u.map((e=>e<0?-f:e>t?t+g:e))}if(a.centerInsufficientSlides){let e=0;if(m.forEach((t=>{e+=t+(a.spaceBetween?a.spaceBetween:0)})),e-=a.spaceBetween,e{u[s]=e-t})),h.forEach(((e,s)=>{h[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:u,slidesGrid:h,slidesSizesGrid:m}),a.centeredSlides&&a.cssMode&&!a.centeredSlidesBounds){setCSSProperty(e.wrapperEl,"--swiper-centered-offset-before",-u[0]+"px"),setCSSProperty(e.wrapperEl,"--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))}p!==d&&e.emit("slidesLengthChange"),u.length!==v&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==w&&e.emit("slidesGridLengthChange"),a.watchSlidesProgress&&e.updateSlidesOffset()}function updateAutoHeight(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.filter((t=>parseInt(t.getAttribute("data-swiper-slide-index"),10)===e))[0]:t.slides.eq(e)[0];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)t.visibleSlides.each((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&&t.$wrapperEl.css("height",`${r}px`)}function updateSlidesOffset(){const e=this,t=e.slides;for(let s=0;s=0&&p1&&u<=t.size||p<=0&&u>=t.size)&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e),a.eq(e).addClass(s.slideVisibleClass)),l.progress=i?-d:d,l.originalProgress=i?-c:c}t.visibleSlides=$(t.visibleSlides)}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,a=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:r,isEnd:n}=t;const l=r,o=n;0===a?(i=0,r=!0,n=!0):(i=(e-t.minTranslate())/a,r=i<=0,n=i>=1),Object.assign(t,{progress:i,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!l&&t.emit("reachBeginning toEdge"),n&&!o&&t.emit("reachEnd toEdge"),(l&&!r||o&&!n)&&t.emit("fromEdge"),t.emit("progress",i)}function updateSlidesClasses(){const e=this,{slides:t,params:s,$wrapperEl:a,activeIndex:i,realIndex:r}=e,n=e.virtual&&s.virtual.enabled;let l;t.removeClass(`${s.slideActiveClass} ${s.slideNextClass} ${s.slidePrevClass} ${s.slideDuplicateActiveClass} ${s.slideDuplicateNextClass} ${s.slideDuplicatePrevClass}`),l=n?e.$wrapperEl.find(`.${s.slideClass}[data-swiper-slide-index="${i}"]`):t.eq(i),l.addClass(s.slideActiveClass),s.loop&&(l.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${r}"]`).addClass(s.slideDuplicateActiveClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${r}"]`).addClass(s.slideDuplicateActiveClass));let o=l.nextAll(`.${s.slideClass}`).eq(0).addClass(s.slideNextClass);s.loop&&0===o.length&&(o=t.eq(0),o.addClass(s.slideNextClass));let d=l.prevAll(`.${s.slideClass}`).eq(0).addClass(s.slidePrevClass);s.loop&&0===d.length&&(d=t.eq(-1),d.addClass(s.slidePrevClass)),s.loop&&(o.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass),d.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass)),e.emitSlidesClasses()}function updateActiveIndex(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{slidesGrid:a,snapGrid:i,params:r,activeIndex:n,realIndex:l,snapIndex:o}=t;let d,c=e;if(void 0===c){for(let e=0;e=a[e]&&s=a[e]&&s=a[e]&&(c=e);r.normalizeSlideIndex&&(c<0||void 0===c)&&(c=0)}if(i.indexOf(s)>=0)d=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,c);d=e+Math.floor((c-e)/r.slidesPerGroup)}if(d>=i.length&&(d=i.length-1),c===n)return void(d!==o&&(t.snapIndex=d,t.emit("snapIndexChange")));const p=parseInt(t.slides.eq(c).attr("data-swiper-slide-index")||c,10);Object.assign(t,{snapIndex:d,realIndex:p,previousIndex:n,activeIndex:c}),t.emit("activeIndexChange"),t.emit("snapIndexChange"),l!==p&&t.emit("realIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&t.emit("slideChange")}function updateClickedSlide(e){const t=this,s=t.params,a=$(e.target).closest(`.${s.slideClass}`)[0];let i,r=!1;if(a)for(let e=0;eo?o:a&&er?"next":i=o.length&&(g=o.length-1),(p||l.initialSlide||0)===(c||0)&&s&&r.emit("beforeSlideChangeStart");const v=-o[g];if(r.updateProgress(v),l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&vr.translate&&v>r.maxTranslate()&&(p||0)!==n)return!1}let w;if(w=n>p?"next":n{r.wrapperEl.style.scrollSnapType="",r._swiperImmediateVirtual=!1}))}else{if(!r.support.smoothScroll)return animateCSSModeScroll({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return 0===t?(r.setTransition(0),r.setTranslate(v),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,w),r.transitionEnd(s,w)):(r.setTransition(t),r.setTranslate(v),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,w),r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.$wrapperEl[0].removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].removeEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,w))}),r.$wrapperEl[0].addEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].addEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd))),!0}function slideToLoop(e=0,t=this.params.speed,s=!0,a){const i=this;let r=e;return i.params.loop&&(r+=i.loopedSlides),i.slideTo(r,t,s,a)}function slideNext(e=this.params.speed,t=!0,s){const a=this,{animating:i,enabled:r,params:n}=a;if(!r)return a;let l=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndexc(e)));let h=n[u.indexOf(p)-1];if(void 0===h&&i.cssMode){let e;n.forEach(((t,s)=>{p>=t&&(e=s)})),void 0!==e&&(h=n[e>0?e-1:e])}let m=0;return void 0!==h&&(m=l.indexOf(h),m<0&&(m=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(m=m-a.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),a.slideTo(m,e,t,s)}function slideReset(e=this.params.speed,t=!0,s){return this.slideTo(this.activeIndex,e,t,s)}function slideToClosest(e=this.params.speed,t=!0,s,a=.5){const i=this;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)}function slideToClickedSlide(){const e=this,{params:t,$wrapperEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.clickedIndex;if(t.loop){if(e.animating)return;i=parseInt($(e.clickedSlide).attr("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+a/2?(e.loopFix(),r=s.children(`.${t.slideClass}[data-swiper-slide-index="${i}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),nextTick((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-a?(e.loopFix(),r=s.children(`.${t.slideClass}[data-swiper-slide-index="${i}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),nextTick((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}var slide={slideTo:slideTo,slideToLoop:slideToLoop,slideNext:slideNext,slidePrev:slidePrev,slideReset:slideReset,slideToClosest:slideToClosest,slideToClickedSlide:slideToClickedSlide};function loopCreate(){const e=this,t=getDocument(),{params:s,$wrapperEl:a}=e,i=$(a.children()[0].parentNode);i.children(`.${s.slideClass}.${s.slideDuplicateClass}`).remove();let r=i.children(`.${s.slideClass}`);if(s.loopFillGroupWithBlank){const e=s.slidesPerGroup-r.length%s.slidesPerGroup;if(e!==s.slidesPerGroup){for(let a=0;ar.length&&(e.loopedSlides=r.length);const n=[],l=[];r.each(((t,s)=>{const a=$(t);s=r.length-e.loopedSlides&&n.push(t),a.attr("data-swiper-slide-index",s)}));for(let e=0;e=0;e-=1)i.prepend($(n[e].cloneNode(!0)).addClass(s.slideDuplicateClass))}function loopFix(){const e=this;e.emit("beforeLoopFix");const{activeIndex:t,slides:s,loopedSlides:a,allowSlidePrev:i,allowSlideNext:r,snapGrid:n,rtlTranslate:l}=e;let o;e.allowSlidePrev=!0,e.allowSlideNext=!0;const d=-n[t]-e.getTranslate();if(t=s.length-a){o=-s.length+t+a,o+=a;e.slideTo(o,0,!1,!0)&&0!==d&&e.setTranslate((l?-e.translate:e.translate)-d)}e.allowSlidePrev=i,e.allowSlideNext=r,e.emit("loopFix")}function loopDestroy(){const{$wrapperEl:e,params:t,slides:s}=this;e.children(`.${t.slideClass}.${t.slideDuplicateClass},.${t.slideClass}.${t.slideBlankClass}`).remove(),s.removeAttr("data-swiper-slide-index")}var loop={loopCreate:loopCreate,loopFix:loopFix,loopDestroy:loopDestroy};function setGrabCursor(e){const t=this;if(t.support.touch||!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;s.style.cursor="move",s.style.cursor=e?"-webkit-grabbing":"-webkit-grab",s.style.cursor=e?"-moz-grabbin":"-moz-grab",s.style.cursor=e?"grabbing":"grab"}function unsetGrabCursor(){const e=this;e.support.touch||e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="")}var grabCursor={setGrabCursor:setGrabCursor,unsetGrabCursor:unsetGrabCursor};function closestElement(e,t=this){return function t(s){return s&&s!==getDocument()&&s!==getWindow()?(s.assignedSlot&&(s=s.assignedSlot),s.closest(e)||t(s.getRootNode().host)):null}(t)}function onTouchStart(e){const t=this,s=getDocument(),a=getWindow(),i=t.touchEventsData,{params:r,touches:n,enabled:l}=t;if(!l)return;if(t.animating&&r.preventInteractionOnTransition)return;!t.animating&&r.cssMode&&r.loop&&t.loopFix();let o=e;o.originalEvent&&(o=o.originalEvent);let d=$(o.target);if("wrapper"===r.touchEventsTarget&&!d.closest(t.wrapperEl).length)return;if(i.isTouchEvent="touchstart"===o.type,!i.isTouchEvent&&"which"in o&&3===o.which)return;if(!i.isTouchEvent&&"button"in o&&o.button>0)return;if(i.isTouched&&i.isMoved)return;!!r.noSwipingClass&&""!==r.noSwipingClass&&o.target&&o.target.shadowRoot&&e.path&&e.path[0]&&(d=$(e.path[0]));const c=r.noSwipingSelector?r.noSwipingSelector:`.${r.noSwipingClass}`,p=!(!o.target||!o.target.shadowRoot);if(r.noSwiping&&(p?closestElement(c,o.target):d.closest(c)[0]))return void(t.allowClick=!0);if(r.swipeHandler&&!d.closest(r.swipeHandler)[0])return;n.currentX="touchstart"===o.type?o.targetTouches[0].pageX:o.pageX,n.currentY="touchstart"===o.type?o.targetTouches[0].pageY:o.pageY;const u=n.currentX,h=n.currentY,m=r.edgeSwipeDetection||r.iOSEdgeSwipeDetection,f=r.edgeSwipeThreshold||r.iOSEdgeSwipeThreshold;if(m&&(u<=f||u>=a.innerWidth-f)){if("prevent"!==m)return;e.preventDefault()}if(Object.assign(i,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),n.startX=u,n.startY=h,i.touchStartTime=now(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,r.threshold>0&&(i.allowThresholdMove=!1),"touchstart"!==o.type){let e=!0;d.is(i.focusableElements)&&(e=!1),s.activeElement&&$(s.activeElement).is(i.focusableElements)&&s.activeElement!==d[0]&&s.activeElement.blur();const a=e&&t.allowTouchMove&&r.touchStartPreventDefault;!r.touchStartForcePreventDefault&&!a||d[0].isContentEditable||o.preventDefault()}t.emit("touchStart",o)}function onTouchMove(e){const t=getDocument(),s=this,a=s.touchEventsData,{params:i,touches:r,rtlTranslate:n,enabled:l}=s;if(!l)return;let o=e;if(o.originalEvent&&(o=o.originalEvent),!a.isTouched)return void(a.startMoving&&a.isScrolling&&s.emit("touchMoveOpposite",o));if(a.isTouchEvent&&"touchmove"!==o.type)return;const d="touchmove"===o.type&&o.targetTouches&&(o.targetTouches[0]||o.changedTouches[0]),c="touchmove"===o.type?d.pageX:o.pageX,p="touchmove"===o.type?d.pageY:o.pageY;if(o.preventedByNestedSwiper)return r.startX=c,void(r.startY=p);if(!s.allowTouchMove)return s.allowClick=!1,void(a.isTouched&&(Object.assign(r,{startX:c,startY:p,currentX:c,currentY:p}),a.touchStartTime=now()));if(a.isTouchEvent&&i.touchReleaseOnEdges&&!i.loop)if(s.isVertical()){if(pr.startY&&s.translate>=s.minTranslate())return a.isTouched=!1,void(a.isMoved=!1)}else if(cr.startX&&s.translate>=s.minTranslate())return;if(a.isTouchEvent&&t.activeElement&&o.target===t.activeElement&&$(o.target).is(a.focusableElements))return a.isMoved=!0,void(s.allowClick=!1);if(a.allowTouchCallbacks&&s.emit("touchMove",o),o.targetTouches&&o.targetTouches.length>1)return;r.currentX=c,r.currentY=p;const u=r.currentX-r.startX,h=r.currentY-r.startY;if(s.params.threshold&&Math.sqrt(u**2+h**2)=25&&(e=180*Math.atan2(Math.abs(h),Math.abs(u))/Math.PI,a.isScrolling=s.isHorizontal()?e>i.touchAngle:90-e>i.touchAngle)}if(a.isScrolling&&s.emit("touchMoveOpposite",o),void 0===a.startMoving&&(r.currentX===r.startX&&r.currentY===r.startY||(a.startMoving=!0)),a.isScrolling)return void(a.isTouched=!1);if(!a.startMoving)return;s.allowClick=!1,!i.cssMode&&o.cancelable&&o.preventDefault(),i.touchMoveStopPropagation&&!i.nested&&o.stopPropagation(),a.isMoved||(i.loop&&!i.cssMode&&s.loopFix(),a.startTranslate=s.getTranslate(),s.setTransition(0),s.animating&&s.$wrapperEl.trigger("webkitTransitionEnd transitionend"),a.allowMomentumBounce=!1,!i.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",o)),s.emit("sliderMove",o),a.isMoved=!0;let m=s.isHorizontal()?u:h;r.diff=m,m*=i.touchRatio,n&&(m=-m),s.swipeDirection=m>0?"prev":"next",a.currentTranslate=m+a.startTranslate;let f=!0,g=i.resistanceRatio;if(i.touchReleaseOnEdges&&(g=0),m>0&&a.currentTranslate>s.minTranslate()?(f=!1,i.resistance&&(a.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+a.startTranslate+m)**g)):m<0&&a.currentTranslatea.startTranslate&&(a.currentTranslate=a.startTranslate),s.allowSlidePrev||s.allowSlideNext||(a.currentTranslate=a.startTranslate),i.threshold>0){if(!(Math.abs(m)>i.threshold||a.allowThresholdMove))return void(a.currentTranslate=a.startTranslate);if(!a.allowThresholdMove)return a.allowThresholdMove=!0,r.startX=r.currentX,r.startY=r.currentY,a.currentTranslate=a.startTranslate,void(r.diff=s.isHorizontal()?r.currentX-r.startX:r.currentY-r.startY)}i.followFinger&&!i.cssMode&&((i.freeMode&&i.freeMode.enabled&&s.freeMode||i.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),s.params.freeMode&&i.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(a.currentTranslate),s.setTranslate(a.currentTranslate))}function onTouchEnd(e){const t=this,s=t.touchEventsData,{params:a,touches:i,rtlTranslate:r,slidesGrid:n,enabled:l}=t;if(!l)return;let o=e;if(o.originalEvent&&(o=o.originalEvent),s.allowTouchCallbacks&&t.emit("touchEnd",o),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 d=now(),c=d-s.touchStartTime;if(t.allowClick&&(t.updateClickedSlide(o),t.emit("tap click",o),c<300&&d-s.lastClickTime<300&&t.emit("doubleTap doubleClick",o)),s.lastClickTime=now(),nextTick((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===i.diff||s.currentTranslate===s.startTranslate)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let p;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,p=a.followFinger?r?t.translate:-t.translate:-s.currentTranslate,a.cssMode)return;if(t.params.freeMode&&a.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:p});let u=0,h=t.slidesSizesGrid[0];for(let e=0;e=n[e]&&p=n[e]&&(u=e,h=n[n.length-1]-n[n.length-2])}const m=(p-n[u])/h,f=ua.longSwipesMs){if(!a.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(m>=a.longSwipesRatio?t.slideTo(u+f):t.slideTo(u)),"prev"===t.swipeDirection&&(m>1-a.longSwipesRatio?t.slideTo(u+f):t.slideTo(u))}else{if(!a.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(o.target===t.navigation.nextEl||o.target===t.navigation.prevEl)?o.target===t.navigation.nextEl?t.slideTo(u+f):t.slideTo(u):("next"===t.swipeDirection&&t.slideTo(u+f),"prev"===t.swipeDirection&&t.slideTo(u))}}function onResize(){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;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses(),("auto"===t.slidesPerView||t.slidesPerView>1)&&e.isEnd&&!e.isBeginning&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.run(),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==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: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)}let dummyEventAttached=!1;function dummyEventListener(){}const events=(e,t)=>{const s=getDocument(),{params:a,touchEvents:i,el:r,wrapperEl:n,device:l,support:o}=e,d=!!a.nested,c="on"===t?"addEventListener":"removeEventListener",p=t;if(o.touch){const t=!("touchstart"!==i.start||!o.passiveListener||!a.passiveListeners)&&{passive:!0,capture:!1};r[c](i.start,e.onTouchStart,t),r[c](i.move,e.onTouchMove,o.passiveListener?{passive:!1,capture:d}:d),r[c](i.end,e.onTouchEnd,t),i.cancel&&r[c](i.cancel,e.onTouchEnd,t)}else r[c](i.start,e.onTouchStart,!1),s[c](i.move,e.onTouchMove,d),s[c](i.end,e.onTouchEnd,!1);(a.preventClicks||a.preventClicksPropagation)&&r[c]("click",e.onClick,!0),a.cssMode&&n[c]("scroll",e.onScroll),a.updateOnWindowResize?e[p](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",onResize,!0):e[p]("observerUpdate",onResize,!0)};function attachEvents(){const e=this,t=getDocument(),{params:s,support:a}=e;e.onTouchStart=onTouchStart.bind(e),e.onTouchMove=onTouchMove.bind(e),e.onTouchEnd=onTouchEnd.bind(e),s.cssMode&&(e.onScroll=onScroll.bind(e)),e.onClick=onClick.bind(e),a.touch&&!dummyEventAttached&&(t.addEventListener("touchstart",dummyEventListener),dummyEventAttached=!0),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,{activeIndex:t,initialized:s,loopedSlides:a=0,params:i,$el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const l=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!l||e.currentBreakpoint===l)return;const o=(l in n?n[l]:void 0)||e.originalParams,d=isGridEnabled(e,i),c=isGridEnabled(e,o),p=i.enabled;d&&!c?(r.removeClass(`${i.containerModifierClass}grid ${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!d&&c&&(r.addClass(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.addClass(`${i.containerModifierClass}grid-column`),e.emitContainerClasses());const u=o.direction&&o.direction!==i.direction,h=i.loop&&(o.slidesPerView!==i.slidesPerView||u);u&&s&&e.changeDirection(),extend(e.params,o);const m=e.params.enabled;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!m?e.disable():!p&&m&&e.enable(),e.currentBreakpoint=l,e.emit("_beforeBreakpoint",o),h&&s&&(e.loopDestroy(),e.loopCreate(),e.updateSlides(),e.slideTo(t-a+e.loopedSlides,0,!1)),e.emit("breakpoint",o)}function getBreakpoint(e,t="window",s){if(!e||"container"===t&&!s)return;let a=!1;const i=getWindow(),r="window"===t?i.innerHeight:s.clientHeight,n=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:r*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((a=>{e[a]&&s.push(t+a)})):"string"==typeof e&&s.push(t+e)})),s}function addClasses(){const e=this,{classNames:t,params:s,rtl:a,$el:i,device:r,support:n}=e,l=prepareClasses(["initialized",s.direction,{"pointer-events":!n.touch},{"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}],s.containerModifierClass);t.push(...l),i.addClass([...t].join(" ")),e.emitContainerClasses()}function removeClasses(){const{$el:e,classNames:t}=this;e.removeClass(t.join(" ")),this.emitContainerClasses()}var classes={addClasses:addClasses,removeClasses:removeClasses};function loadImage(e,t,s,a,i,r){const n=getWindow();let l;function o(){r&&r()}$(e).parent("picture")[0]||e.complete&&i?o():t?(l=new n.Image,l.onload=o,l.onerror=o,a&&(l.sizes=a),s&&(l.srcset=s),t&&(l.src=t)):o()}function preloadImages(){const e=this;function t(){null!=e&&e&&!e.destroyed&&(void 0!==e.imagesLoaded&&(e.imagesLoaded+=1),e.imagesLoaded===e.imagesToLoad.length&&(e.params.updateOnImagesReady&&e.update(),e.emit("imagesReady")))}e.imagesToLoad=e.$el.find("img");for(let s=0;ss}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",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,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,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:0,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,loopFillGroupWithBlank:!1,loopPreventsSlide:!0,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-invisible-blank",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",runCallbacksOnInit:!0,_emitClasses:!1};function moduleExtendParams(e,t){return function(s={}){const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(["navigation","pagination","scrollbar"].indexOf(a)>=0&&!0===e[a]&&(e[a]={auto:!0}),a in e&&"enabled"in i?(!0===e[a]&&(e[a]={enabled:!0}),"object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={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,images:images},extendedDefaults={};class Swiper{constructor(...e){let t,s;if(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),s.el&&$(s.el).length>1){const e=[];return $(s.el).each((t=>{const a=extend({},s,{el:t});e.push(new Swiper(a))})),e}const a=this;a.__swiper__=!0,a.support=getSupport(),a.device=getDevice({userAgent:s.userAgent}),a.browser=getBrowser(),a.eventsListeners={},a.eventsAnyListeners=[],a.modules=[...a.__modules__],s.modules&&Array.isArray(s.modules)&&a.modules.push(...s.modules);const i={};a.modules.forEach((e=>{e({swiper:a,extendParams:moduleExtendParams(s,i),on:a.on.bind(a),once:a.once.bind(a),off:a.off.bind(a),emit:a.emit.bind(a)})}));const r=extend({},defaults,i);return a.params=extend({},r,extendedDefaults,s),a.originalParams=extend({},a.params),a.passedParams=extend({},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),a.$=$,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,allowSlideNext:a.params.allowSlideNext,allowSlidePrev:a.params.allowSlidePrev,touchEvents:function(){const e=["touchstart","touchmove","touchend","touchcancel"],t=["pointerdown","pointermove","pointerup"];return a.touchEventsTouch={start:e[0],move:e[1],end:e[2],cancel:e[3]},a.touchEventsDesktop={start:t[0],move:t[1],end:t[2]},a.support.touch||!a.params.simulateTouch?a.touchEventsTouch:a.touchEventsDesktop}(),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:now(),clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,isTouchEvent:void 0,startMoving:void 0},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}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 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.each((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(s.centeredSlides){let e,t=a[l].swiperSlideSize;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]1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):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.removeClass(`${s.params.containerModifierClass}${a}`).addClass(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.each((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}mount(e){const t=this;if(t.mounted)return!0;const s=$(e||t.params.el);if(!(e=s[0]))return!1;e.swiper=t;const a=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let i=(()=>{if(e&&e.shadowRoot&&e.shadowRoot.querySelector){const t=$(e.shadowRoot.querySelector(a()));return t.children=e=>s.children(e),t}return s.children(a())})();if(0===i.length&&t.params.createElements){const e=getDocument().createElement("div");i=$(e),e.className=t.params.wrapperClass,s.append(e),s.children(`.${t.params.slideClass}`).each((e=>{i.append(e)}))}return Object.assign(t,{$el:s,el:e,$wrapperEl:i,wrapperEl:i[0],mounted:!0,rtl:"rtl"===e.dir.toLowerCase()||"rtl"===s.css("direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===e.dir.toLowerCase()||"rtl"===s.css("direction")),wrongRTL:"-webkit-box"===i.css("display")}),!0}init(e){const t=this;if(t.initialized)return t;return!1===t.mount(e)||(t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.params.loop&&t.loopCreate(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.preloadImages&&t.preloadImages(),t.params.loop?t.slideTo(t.params.initialSlide+t.loopedSlides,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.attachEvents(),t.initialized=!0,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.removeAttr("style"),r.removeAttr("style"),n&&n.length&&n.removeClass([a.slideVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.$el[0].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)}}function Virtual({swiper:e,extendParams:t,on:s}){let a;function i(t,s){const a=e.params.virtual;if(a.cache&&e.virtual.cache[s])return e.virtual.cache[s];const i=a.renderSlide?$(a.renderSlide.call(e,t,s)):$(`
${t}
`);return i.attr("data-swiper-slide-index")||i.attr("data-swiper-slide-index",s),a.cache&&(e.virtual.cache[s]=i),i}function r(t){const{slidesPerView:s,slidesPerGroup:a,centeredSlides:r}=e.params,{addSlidesBefore:n,addSlidesAfter:l}=e.params.virtual,{from:o,to:d,slides:c,slidesGrid:p,offset:u}=e.virtual;e.params.cssMode||e.updateActiveIndex();const h=e.activeIndex||0;let m,f,g;m=e.rtlTranslate?"right":e.isHorizontal()?"left":"top",r?(f=Math.floor(s/2)+a+l,g=Math.floor(s/2)+a+n):(f=s+(a-1)+l,g=a+n);const v=Math.max((h||0)-g,0),w=Math.min((h||0)+f,c.length-1),b=(e.slidesGrid[v]||0)-(e.slidesGrid[0]||0);function x(){e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),e.lazy&&e.params.lazy.enabled&&e.lazy.load()}if(Object.assign(e.virtual,{from:v,to:w,offset:b,slidesGrid:e.slidesGrid}),o===v&&d===w&&!t)return e.slidesGrid!==p&&b!==u&&e.slides.css(m,`${b}px`),void e.updateProgress();if(e.params.virtual.renderExternal)return e.params.virtual.renderExternal.call(e,{offset:b,from:v,to:w,slides:function(){const e=[];for(let t=v;t<=w;t+=1)e.push(c[t]);return e}()}),void(e.params.virtual.renderExternalUpdate&&x());const y=[],E=[];if(t)e.$wrapperEl.find(`.${e.params.slideClass}`).remove();else for(let t=o;t<=d;t+=1)(tw)&&e.$wrapperEl.find(`.${e.params.slideClass}[data-swiper-slide-index="${t}"]`).remove();for(let e=0;e=v&&e<=w&&(void 0===d||t?E.push(e):(e>d&&E.push(e),e{e.$wrapperEl.append(i(c[t],t))})),y.sort(((e,t)=>t-e)).forEach((t=>{e.$wrapperEl.prepend(i(c[t],t))})),e.$wrapperEl.children(".swiper-slide").css(m,`${b}px`),x()}t({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}}),e.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]},s("beforeInit",(()=>{e.params.virtual.enabled&&(e.virtual.slides=e.params.virtual.slides,e.classNames.push(`${e.params.containerModifierClass}virtual`),e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0,e.params.initialSlide||r())})),s("setTranslate",(()=>{e.params.virtual.enabled&&(e.params.cssMode&&!e._immediateVirtual?(clearTimeout(a),a=setTimeout((()=>{r()}),100)):r())})),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 a=t[e],r=a.attr("data-swiper-slide-index");r&&a.attr("data-swiper-slide-index",parseInt(r,10)+i),s[parseInt(e,10)+i]=a})),e.virtual.cache=s}r(!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.virtual.slides.splice(t[a],1),e.params.virtual.cache&&delete e.virtual.cache[t[a]],t[a]0&&0===e.$el.parents(`.${e.params.slideActiveClass}`).length)return;const a=e.$el,i=a[0].clientWidth,n=a[0].clientHeight,l=r.innerWidth,o=r.innerHeight,d=e.$el.offset();s&&(d.left-=e.$el[0].scrollLeft);const c=[[d.left,d.top],[d.left+i,d.top],[d.left,d.top+n],[d.left+i,d.top+n]];for(let e=0;e=0&&s[0]<=l&&s[1]>=0&&s[1]<=o){if(0===s[0]&&0===s[1])continue;t=!0}}if(!t)return}e.isHorizontal()?((d||c||p||u)&&(n.preventDefault?n.preventDefault():n.returnValue=!1),((c||u)&&!s||(d||p)&&s)&&e.slideNext(),((d||p)&&!s||(c||u)&&s)&&e.slidePrev()):((d||c||h||m)&&(n.preventDefault?n.preventDefault():n.returnValue=!1),(c||m)&&e.slideNext(),(d||h)&&e.slidePrev()),a("keyPress",l)}}function l(){e.keyboard.enabled||($(i).on("keydown",n),e.keyboard.enabled=!0)}function o(){e.keyboard.enabled&&($(i).off("keydown",n),e.keyboard.enabled=!1)}e.keyboard={enabled:!1},t({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),s("init",(()=>{e.params.keyboard.enabled&&l()})),s("destroy",(()=>{e.keyboard.enabled&&o()})),Object.assign(e.keyboard,{enable:l,disable:o})}function Mousewheel({swiper:e,extendParams:t,on:s,emit:a}){const i=getWindow();let r;t({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null}}),e.mousewheel={enabled:!1};let n,l=now();const o=[];function d(){e.enabled&&(e.mouseEntered=!0)}function c(){e.enabled&&(e.mouseEntered=!1)}function p(t){return!(e.params.mousewheel.thresholdDelta&&t.delta=6&&now()-l<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)),l=(new i.Date).getTime(),!1)))}function u(t){let s=t,i=!0;if(!e.enabled)return;const l=e.params.mousewheel;e.params.cssMode&&s.preventDefault();let d=e.$el;if("container"!==e.params.mousewheel.eventsTarget&&(d=$(e.params.mousewheel.eventsTarget)),!e.mouseEntered&&!d[0].contains(s.target)&&!l.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let c=0;const u=e.rtlTranslate?-1:1,h=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(l.forceToAxis)if(e.isHorizontal()){if(!(Math.abs(h.pixelX)>Math.abs(h.pixelY)))return!0;c=-h.pixelX*u}else{if(!(Math.abs(h.pixelY)>Math.abs(h.pixelX)))return!0;c=-h.pixelY}else c=Math.abs(h.pixelX)>Math.abs(h.pixelY)?-h.pixelX*u:-h.pixelY;if(0===c)return!0;l.invert&&(c=-c);let m=e.getTranslate()+c*l.sensitivity;if(m>=e.minTranslate()&&(m=e.minTranslate()),m<=e.maxTranslate()&&(m=e.maxTranslate()),i=!!e.params.loop||!(m===e.minTranslate()||m===e.maxTranslate()),i&&e.params.nested&&s.stopPropagation(),e.params.freeMode&&e.params.freeMode.enabled){const t={time:now(),delta:Math.abs(c),direction:Math.sign(c)},i=n&&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(),(!p&&e.isBeginning||!u&&e.isEnd)&&e.updateSlidesClasses(),e.params.freeMode.sticky){clearTimeout(r),r=void 0,o.length>=15&&o.shift();const s=o.length?o[o.length-1]:void 0,a=o[0];if(o.push(t),s&&(t.delta>s.delta||t.direction!==s.direction))o.splice(0);else if(o.length>=15&&t.time-a.time<500&&a.delta-t.delta>=1&&t.delta<=6){const s=c>0?.8:.2;n=t,o.splice(0),r=nextTick((()=>{e.slideToClosest(e.params.speed,!0,void 0,s)}),0)}r||(r=nextTick((()=>{n=t,o.splice(0),e.slideToClosest(e.params.speed,!0,void 0,.5)}),500))}if(i||a("scroll",s),e.params.autoplay&&e.params.autoplayDisableOnInteraction&&e.autoplay.stop(),d===e.minTranslate()||d===e.maxTranslate())return!0}}else{const s={time:now(),delta:Math.abs(c),direction:Math.sign(c),raw:t};o.length>=2&&o.shift();const a=o.length?o[o.length-1]:void 0;if(o.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&p(s):p(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 h(t){let s=e.$el;"container"!==e.params.mousewheel.eventsTarget&&(s=$(e.params.mousewheel.eventsTarget)),s[t]("mouseenter",d),s[t]("mouseleave",c),s[t]("wheel",u)}function m(){return e.params.cssMode?(e.wrapperEl.removeEventListener("wheel",u),!0):!e.mousewheel.enabled&&(h("on"),e.mousewheel.enabled=!0,!0)}function f(){return e.params.cssMode?(e.wrapperEl.addEventListener(event,u),!0):!!e.mousewheel.enabled&&(h("off"),e.mousewheel.enabled=!1,!0)}s("init",(()=>{!e.params.mousewheel.enabled&&e.params.cssMode&&f(),e.params.mousewheel.enabled&&m()})),s("destroy",(()=>{e.params.cssMode&&m(),e.mousewheel.enabled&&f()})),Object.assign(e.mousewheel,{enable:m,disable:f})}function createElementIfNotDefined(e,t,s,a){const i=getDocument();return e.params.createElements&&Object.keys(a).forEach((r=>{if(!s[r]&&!0===s.auto){let n=e.$el.children(`.${a[r]}`)[0];n||(n=i.createElement("div"),n.className=a[r],e.$el.append(n)),s[r]=n,t[r]=n}})),s}function Navigation({swiper:e,extendParams:t,on:s,emit:a}){function i(t){let s;return t&&(s=$(t),e.params.uniqueNavElements&&"string"==typeof t&&s.length>1&&1===e.$el.find(t).length&&(s=e.$el.find(t))),s}function r(t,s){const a=e.params.navigation;t&&t.length>0&&(t[s?"addClass":"removeClass"](a.disabledClass),t[0]&&"BUTTON"===t[0].tagName&&(t[0].disabled=s),e.params.watchOverflow&&e.enabled&&t[e.isLocked?"addClass":"removeClass"](a.lockClass))}function n(){if(e.params.loop)return;const{$nextEl:t,$prevEl:s}=e.navigation;r(s,e.isBeginning),r(t,e.isEnd)}function l(t){t.preventDefault(),e.isBeginning&&!e.params.loop||e.slidePrev()}function o(t){t.preventDefault(),e.isEnd&&!e.params.loop||e.slideNext()}function d(){const t=e.params.navigation;if(e.params.navigation=createElementIfNotDefined(e,e.originalParams.navigation,e.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!t.nextEl&&!t.prevEl)return;const s=i(t.nextEl),a=i(t.prevEl);s&&s.length>0&&s.on("click",o),a&&a.length>0&&a.on("click",l),Object.assign(e.navigation,{$nextEl:s,nextEl:s&&s[0],$prevEl:a,prevEl:a&&a[0]}),e.enabled||(s&&s.addClass(t.lockClass),a&&a.addClass(t.lockClass))}function c(){const{$nextEl:t,$prevEl:s}=e.navigation;t&&t.length&&(t.off("click",o),t.removeClass(e.params.navigation.disabledClass)),s&&s.length&&(s.off("click",l),s.removeClass(e.params.navigation.disabledClass))}t({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock"}}),e.navigation={nextEl:null,$nextEl:null,prevEl:null,$prevEl:null},s("init",(()=>{d(),n()})),s("toEdge fromEdge lock unlock",(()=>{n()})),s("destroy",(()=>{c()})),s("enable disable",(()=>{const{$nextEl:t,$prevEl:s}=e.navigation;t&&t[e.enabled?"removeClass":"addClass"](e.params.navigation.lockClass),s&&s[e.enabled?"removeClass":"addClass"](e.params.navigation.lockClass)})),s("click",((t,s)=>{const{$nextEl:i,$prevEl:r}=e.navigation,n=s.target;if(e.params.navigation.hideOnClick&&!$(n).is(r)&&!$(n).is(i)){if(e.pagination&&e.params.pagination&&e.params.pagination.clickable&&(e.pagination.el===n||e.pagination.el.contains(n)))return;let t;i?t=i.hasClass(e.params.navigation.hiddenClass):r&&(t=r.hasClass(e.params.navigation.hiddenClass)),a(!0===t?"navigationShow":"navigationHide"),i&&i.toggleClass(e.params.navigation.hiddenClass),r&&r.toggleClass(e.params.navigation.hiddenClass)}})),Object.assign(e.navigation,{update:n,init:d,destroy:c})}function classesToSelector(e=""){return`.${e.trim().replace(/([\.:!\/])/g,"\\$1").replace(/ /g,".")}`}function Pagination({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`}}),e.pagination={el:null,$el:null,bullets:[]};let n=0;function l(){return!e.params.pagination.el||!e.pagination.el||!e.pagination.$el||0===e.pagination.$el.length}function o(t,s){const{bulletActiveClass:a}=e.params.pagination;t[s]().addClass(`${a}-${s}`)[s]().addClass(`${a}-${s}-${s}`)}function d(){const t=e.rtl,s=e.params.pagination;if(l())return;const i=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,d=e.pagination.$el;let c;const p=e.params.loop?Math.ceil((i-2*e.loopedSlides)/e.params.slidesPerGroup):e.snapGrid.length;if(e.params.loop?(c=Math.ceil((e.activeIndex-e.loopedSlides)/e.params.slidesPerGroup),c>i-1-2*e.loopedSlides&&(c-=i-2*e.loopedSlides),c>p-1&&(c-=p),c<0&&"bullets"!==e.params.paginationType&&(c=p+c)):c=void 0!==e.snapIndex?e.snapIndex:e.activeIndex||0,"bullets"===s.type&&e.pagination.bullets&&e.pagination.bullets.length>0){const a=e.pagination.bullets;let i,l,p;if(s.dynamicBullets&&(r=a.eq(0)[e.isHorizontal()?"outerWidth":"outerHeight"](!0),d.css(e.isHorizontal()?"width":"height",r*(s.dynamicMainBullets+4)+"px"),s.dynamicMainBullets>1&&void 0!==e.previousIndex&&(n+=c-e.previousIndex,n>s.dynamicMainBullets-1?n=s.dynamicMainBullets-1:n<0&&(n=0)),i=c-n,l=i+(Math.min(a.length,s.dynamicMainBullets)-1),p=(l+i)/2),a.removeClass(["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`)).join(" ")),d.length>1)a.each((e=>{const t=$(e),a=t.index();a===c&&t.addClass(s.bulletActiveClass),s.dynamicBullets&&(a>=i&&a<=l&&t.addClass(`${s.bulletActiveClass}-main`),a===i&&o(t,"prev"),a===l&&o(t,"next"))}));else{const t=a.eq(c),r=t.index();if(t.addClass(s.bulletActiveClass),s.dynamicBullets){const t=a.eq(i),n=a.eq(l);for(let e=i;e<=l;e+=1)a.eq(e).addClass(`${s.bulletActiveClass}-main`);if(e.params.loop)if(r>=a.length-s.dynamicMainBullets){for(let e=s.dynamicMainBullets;e>=0;e-=1)a.eq(a.length-e).addClass(`${s.bulletActiveClass}-main`);a.eq(a.length-s.dynamicMainBullets-1).addClass(`${s.bulletActiveClass}-prev`)}else o(t,"prev"),o(n,"next");else o(t,"prev"),o(n,"next")}}if(s.dynamicBullets){const i=Math.min(a.length,s.dynamicMainBullets+4),n=(r*i-r)/2-p*r,l=t?"right":"left";a.css(e.isHorizontal()?l:"top",`${n}px`)}}if("fraction"===s.type&&(d.find(classesToSelector(s.currentClass)).text(s.formatFractionCurrent(c+1)),d.find(classesToSelector(s.totalClass)).text(s.formatFractionTotal(p))),"progressbar"===s.type){let t;t=s.progressbarOpposite?e.isHorizontal()?"vertical":"horizontal":e.isHorizontal()?"horizontal":"vertical";const a=(c+1)/p;let i=1,r=1;"horizontal"===t?i=a:r=a,d.find(classesToSelector(s.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${i}) scaleY(${r})`).transition(e.params.speed)}"custom"===s.type&&s.renderCustom?(d.html(s.renderCustom(e,c+1,p)),a("paginationRender",d[0])):a("paginationUpdate",d[0]),e.params.watchOverflow&&e.enabled&&d[e.isLocked?"addClass":"removeClass"](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.slides.length,i=e.pagination.$el;let r="";if("bullets"===t.type){let a=e.params.loop?Math.ceil((s-2*e.loopedSlides)/e.params.slidesPerGroup):e.snapGrid.length;e.params.freeMode&&e.params.freeMode.enabled&&!e.params.loop&&a>s&&(a=s);for(let s=0;s`;i.html(r),e.pagination.bullets=i.find(classesToSelector(t.bulletClass))}"fraction"===t.type&&(r=t.renderFraction?t.renderFraction.call(e,t.currentClass,t.totalClass):` / `,i.html(r)),"progressbar"===t.type&&(r=t.renderProgressbar?t.renderProgressbar.call(e,t.progressbarFillClass):``,i.html(r)),"custom"!==t.type&&a("paginationRender",e.pagination.$el[0])}function p(){e.params.pagination=createElementIfNotDefined(e,e.originalParams.pagination,e.params.pagination,{el:"swiper-pagination"});const t=e.params.pagination;if(!t.el)return;let s=$(t.el);0!==s.length&&(e.params.uniqueNavElements&&"string"==typeof t.el&&s.length>1&&(s=e.$el.find(t.el),s.length>1&&(s=s.filter((t=>$(t).parents(".swiper")[0]===e.el)))),"bullets"===t.type&&t.clickable&&s.addClass(t.clickableClass),s.addClass(t.modifierClass+t.type),s.addClass(t.modifierClass+e.params.direction),"bullets"===t.type&&t.dynamicBullets&&(s.addClass(`${t.modifierClass}${t.type}-dynamic`),n=0,t.dynamicMainBullets<1&&(t.dynamicMainBullets=1)),"progressbar"===t.type&&t.progressbarOpposite&&s.addClass(t.progressbarOppositeClass),t.clickable&&s.on("click",classesToSelector(t.bulletClass),(function(t){t.preventDefault();let s=$(this).index()*e.params.slidesPerGroup;e.params.loop&&(s+=e.loopedSlides),e.slideTo(s)})),Object.assign(e.pagination,{$el:s,el:s[0]}),e.enabled||s.addClass(t.lockClass))}function u(){const t=e.params.pagination;if(l())return;const s=e.pagination.$el;s.removeClass(t.hiddenClass),s.removeClass(t.modifierClass+t.type),s.removeClass(t.modifierClass+e.params.direction),e.pagination.bullets&&e.pagination.bullets.removeClass&&e.pagination.bullets.removeClass(t.bulletActiveClass),t.clickable&&s.off("click",classesToSelector(t.bulletClass))}s("init",(()=>{p(),c(),d()})),s("activeIndexChange",(()=>{(e.params.loop||void 0===e.snapIndex)&&d()})),s("snapIndexChange",(()=>{e.params.loop||d()})),s("slidesLengthChange",(()=>{e.params.loop&&(c(),d())})),s("snapGridLengthChange",(()=>{e.params.loop||(c(),d())})),s("destroy",(()=>{u()})),s("enable disable",(()=>{const{$el:t}=e.pagination;t&&t[e.enabled?"removeClass":"addClass"](e.params.pagination.lockClass)})),s("lock unlock",(()=>{d()})),s("click",((t,s)=>{const i=s.target,{$el:r}=e.pagination;if(e.params.pagination.el&&e.params.pagination.hideOnClick&&r.length>0&&!$(i).hasClass(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.hasClass(e.params.pagination.hiddenClass);a(!0===t?"paginationShow":"paginationHide"),r.toggleClass(e.params.pagination.hiddenClass)}})),Object.assign(e.pagination,{render:c,update:d,init:p,destroy:u})}function Scrollbar({swiper:e,extendParams:t,on:s,emit:a}){const i=getDocument();let r,n,l,o,d=!1,c=null,p=null;function u(){if(!e.params.scrollbar.el||!e.scrollbar.el)return;const{scrollbar:t,rtlTranslate:s,progress:a}=e,{$dragEl:i,$el:r}=t,o=e.params.scrollbar;let d=n,p=(l-n)*a;s?(p=-p,p>0?(d=n-p,p=0):-p+n>l&&(d=l+p)):p<0?(d=n+p,p=0):p+n>l&&(d=l-p),e.isHorizontal()?(i.transform(`translate3d(${p}px, 0, 0)`),i[0].style.width=`${d}px`):(i.transform(`translate3d(0px, ${p}px, 0)`),i[0].style.height=`${d}px`),o.hide&&(clearTimeout(c),r[0].style.opacity=1,c=setTimeout((()=>{r[0].style.opacity=0,r.transition(400)}),1e3))}function h(){if(!e.params.scrollbar.el||!e.scrollbar.el)return;const{scrollbar:t}=e,{$dragEl:s,$el:a}=t;s[0].style.width="",s[0].style.height="",l=e.isHorizontal()?a[0].offsetWidth:a[0].offsetHeight,o=e.size/(e.virtualSize+e.params.slidesOffsetBefore-(e.params.centeredSlides?e.snapGrid[0]:0)),n="auto"===e.params.scrollbar.dragSize?l*o:parseInt(e.params.scrollbar.dragSize,10),e.isHorizontal()?s[0].style.width=`${n}px`:s[0].style.height=`${n}px`,a[0].style.display=o>=1?"none":"",e.params.scrollbar.hide&&(a[0].style.opacity=0),e.params.watchOverflow&&e.enabled&&t.$el[e.isLocked?"addClass":"removeClass"](e.params.scrollbar.lockClass)}function m(t){return e.isHorizontal()?"touchstart"===t.type||"touchmove"===t.type?t.targetTouches[0].clientX:t.clientX:"touchstart"===t.type||"touchmove"===t.type?t.targetTouches[0].clientY:t.clientY}function f(t){const{scrollbar:s,rtlTranslate:a}=e,{$el:i}=s;let o;o=(m(t)-i.offset()[e.isHorizontal()?"left":"top"]-(null!==r?r:n/2))/(l-n),o=Math.max(Math.min(o,1),0),a&&(o=1-o);const d=e.minTranslate()+(e.maxTranslate()-e.minTranslate())*o;e.updateProgress(d),e.setTranslate(d),e.updateActiveIndex(),e.updateSlidesClasses()}function g(t){const s=e.params.scrollbar,{scrollbar:i,$wrapperEl:n}=e,{$el:l,$dragEl:o}=i;d=!0,r=t.target===o[0]||t.target===o?m(t)-t.target.getBoundingClientRect()[e.isHorizontal()?"left":"top"]:null,t.preventDefault(),t.stopPropagation(),n.transition(100),o.transition(100),f(t),clearTimeout(p),l.transition(0),s.hide&&l.css("opacity",1),e.params.cssMode&&e.$wrapperEl.css("scroll-snap-type","none"),a("scrollbarDragStart",t)}function v(t){const{scrollbar:s,$wrapperEl:i}=e,{$el:r,$dragEl:n}=s;d&&(t.preventDefault?t.preventDefault():t.returnValue=!1,f(t),i.transition(0),r.transition(0),n.transition(0),a("scrollbarDragMove",t))}function w(t){const s=e.params.scrollbar,{scrollbar:i,$wrapperEl:r}=e,{$el:n}=i;d&&(d=!1,e.params.cssMode&&(e.$wrapperEl.css("scroll-snap-type",""),r.transition("")),s.hide&&(clearTimeout(p),p=nextTick((()=>{n.css("opacity",0),n.transition(400)}),1e3)),a("scrollbarDragEnd",t),s.snapOnRelease&&e.slideToClosest())}function b(t){const{scrollbar:s,touchEventsTouch:a,touchEventsDesktop:r,params:n,support:l}=e,o=s.$el[0],d=!(!l.passiveListener||!n.passiveListeners)&&{passive:!1,capture:!1},c=!(!l.passiveListener||!n.passiveListeners)&&{passive:!0,capture:!1};if(!o)return;const p="on"===t?"addEventListener":"removeEventListener";l.touch?(o[p](a.start,g,d),o[p](a.move,v,d),o[p](a.end,w,c)):(o[p](r.start,g,d),i[p](r.move,v,d),i[p](r.end,w,c))}function x(){const{scrollbar:t,$el:s}=e;e.params.scrollbar=createElementIfNotDefined(e,e.originalParams.scrollbar,e.params.scrollbar,{el:"swiper-scrollbar"});const a=e.params.scrollbar;if(!a.el)return;let i=$(a.el);e.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.find(a.el).length&&(i=s.find(a.el));let r=i.find(`.${e.params.scrollbar.dragClass}`);0===r.length&&(r=$(`
`),i.append(r)),Object.assign(t,{$el:i,el:i[0],$dragEl:r,dragEl:r[0]}),a.draggable&&e.params.scrollbar.el&&b("on"),i&&i[e.enabled?"removeClass":"addClass"](e.params.scrollbar.lockClass)}function y(){e.params.scrollbar.el&&b("off")}t({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag"}}),e.scrollbar={el:null,dragEl:null,$el:null,$dragEl:null},s("init",(()=>{x(),h(),u()})),s("update resize observerUpdate lock unlock",(()=>{h()})),s("setTranslate",(()=>{u()})),s("setTransition",((t,s)=>{!function(t){e.params.scrollbar.el&&e.scrollbar.el&&e.scrollbar.$dragEl.transition(t)}(s)})),s("enable disable",(()=>{const{$el:t}=e.scrollbar;t&&t[e.enabled?"removeClass":"addClass"](e.params.scrollbar.lockClass)})),s("destroy",(()=>{y()})),Object.assign(e.scrollbar,{updateSize:h,setTranslate:u,init:x,destroy:y})}function Parallax({swiper:e,extendParams:t,on:s}){t({parallax:{enabled:!1}});const a=(t,s)=>{const{rtl:a}=e,i=$(t),r=a?-1:1,n=i.attr("data-swiper-parallax")||"0";let l=i.attr("data-swiper-parallax-x"),o=i.attr("data-swiper-parallax-y");const d=i.attr("data-swiper-parallax-scale"),c=i.attr("data-swiper-parallax-opacity");if(l||o?(l=l||"0",o=o||"0"):e.isHorizontal()?(l=n,o="0"):(o=n,l="0"),l=l.indexOf("%")>=0?parseInt(l,10)*s*r+"%":l*s*r+"px",o=o.indexOf("%")>=0?parseInt(o,10)*s+"%":o*s+"px",null!=c){const e=c-(c-1)*(1-Math.abs(s));i[0].style.opacity=e}if(null==d)i.transform(`translate3d(${l}, ${o}, 0px)`);else{const e=d-(d-1)*(1-Math.abs(s));i.transform(`translate3d(${l}, ${o}, 0px) scale(${e})`)}},i=()=>{const{$el:t,slides:s,progress:i,snapGrid:r}=e;t.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{a(e,i)})),s.each(((t,s)=>{let n=t.progress;e.params.slidesPerGroup>1&&"auto"!==e.params.slidesPerView&&(n+=Math.ceil(s/2)-i*(r.length-1)),n=Math.min(Math.max(n,-1),1),$(t).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{a(e,n)}))}))};s("beforeInit",(()=>{e.params.parallax.enabled&&(e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0)})),s("init",(()=>{e.params.parallax.enabled&&i()})),s("setTranslate",(()=>{e.params.parallax.enabled&&i()})),s("setTransition",((t,s)=>{e.params.parallax.enabled&&((t=e.params.speed)=>{const{$el:s}=e;s.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{const s=$(e);let a=parseInt(s.attr("data-swiper-parallax-duration"),10)||t;0===t&&(a=0),s.transition(a)}))})(s)}))}function Zoom({swiper:e,extendParams:t,on:s,emit:a}){const i=getWindow();t({zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),e.zoom={enabled:!1};let r,n,l,o=1,d=!1;const c={$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:{}},u={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let h=1;function m(e){if(e.targetTouches.length<2)return 1;const t=e.targetTouches[0].pageX,s=e.targetTouches[0].pageY,a=e.targetTouches[1].pageX,i=e.targetTouches[1].pageY;return Math.sqrt((a-t)**2+(i-s)**2)}function f(t){const s=e.support,a=e.params.zoom;if(n=!1,l=!1,!s.gestures){if("touchstart"!==t.type||"touchstart"===t.type&&t.targetTouches.length<2)return;n=!0,c.scaleStart=m(t)}c.$slideEl&&c.$slideEl.length||(c.$slideEl=$(t.target).closest(`.${e.params.slideClass}`),0===c.$slideEl.length&&(c.$slideEl=e.slides.eq(e.activeIndex)),c.$imageEl=c.$slideEl.find(`.${a.containerClass}`).eq(0).find("img, svg, canvas, picture, .swiper-zoom-target"),c.$imageWrapEl=c.$imageEl.parent(`.${a.containerClass}`),c.maxRatio=c.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,0!==c.$imageWrapEl.length)?(c.$imageEl&&c.$imageEl.transition(0),d=!0):c.$imageEl=void 0}function g(t){const s=e.support,a=e.params.zoom,i=e.zoom;if(!s.gestures){if("touchmove"!==t.type||"touchmove"===t.type&&t.targetTouches.length<2)return;l=!0,c.scaleMove=m(t)}c.$imageEl&&0!==c.$imageEl.length?(s.gestures?i.scale=t.scale*o:i.scale=c.scaleMove/c.scaleStart*o,i.scale>c.maxRatio&&(i.scale=c.maxRatio-1+(i.scale-c.maxRatio+1)**.5),i.scalep.touchesStart.x))return void(p.isTouched=!1);if(!e.isHorizontal()&&(Math.floor(p.minY)===Math.floor(p.startY)&&p.touchesCurrent.yp.touchesStart.y))return void(p.isTouched=!1)}t.cancelable&&t.preventDefault(),t.stopPropagation(),p.isMoved=!0,p.currentX=p.touchesCurrent.x-p.touchesStart.x+p.startX,p.currentY=p.touchesCurrent.y-p.touchesStart.y+p.startY,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),u.prevPositionX||(u.prevPositionX=p.touchesCurrent.x),u.prevPositionY||(u.prevPositionY=p.touchesCurrent.y),u.prevTime||(u.prevTime=Date.now()),u.x=(p.touchesCurrent.x-u.prevPositionX)/(Date.now()-u.prevTime)/2,u.y=(p.touchesCurrent.y-u.prevPositionY)/(Date.now()-u.prevTime)/2,Math.abs(p.touchesCurrent.x-u.prevPositionX)<2&&(u.x=0),Math.abs(p.touchesCurrent.y-u.prevPositionY)<2&&(u.y=0),u.prevPositionX=p.touchesCurrent.x,u.prevPositionY=p.touchesCurrent.y,u.prevTime=Date.now(),c.$imageWrapEl.transform(`translate3d(${p.currentX}px, ${p.currentY}px,0)`)}}function b(){const t=e.zoom;c.$slideEl&&e.previousIndex!==e.activeIndex&&(c.$imageEl&&c.$imageEl.transform("translate3d(0,0,0) scale(1)"),c.$imageWrapEl&&c.$imageWrapEl.transform("translate3d(0,0,0)"),t.scale=1,o=1,c.$slideEl=void 0,c.$imageEl=void 0,c.$imageWrapEl=void 0)}function x(t){const s=e.zoom,a=e.params.zoom;if(c.$slideEl||(t&&t.target&&(c.$slideEl=$(t.target).closest(`.${e.params.slideClass}`)),c.$slideEl||(e.params.virtual&&e.params.virtual.enabled&&e.virtual?c.$slideEl=e.$wrapperEl.children(`.${e.params.slideActiveClass}`):c.$slideEl=e.slides.eq(e.activeIndex)),c.$imageEl=c.$slideEl.find(`.${a.containerClass}`).eq(0).find("img, svg, canvas, picture, .swiper-zoom-target"),c.$imageWrapEl=c.$imageEl.parent(`.${a.containerClass}`)),!c.$imageEl||0===c.$imageEl.length||!c.$imageWrapEl||0===c.$imageWrapEl.length)return;let r,n,l,d,u,h,m,f,g,v,w,b,x,y,E,T,S,C;e.params.cssMode&&(e.wrapperEl.style.overflow="hidden",e.wrapperEl.style.touchAction="none"),c.$slideEl.addClass(`${a.zoomedSlideClass}`),void 0===p.touchesStart.x&&t?(r="touchend"===t.type?t.changedTouches[0].pageX:t.pageX,n="touchend"===t.type?t.changedTouches[0].pageY:t.pageY):(r=p.touchesStart.x,n=p.touchesStart.y),s.scale=c.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,o=c.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,t?(S=c.$slideEl[0].offsetWidth,C=c.$slideEl[0].offsetHeight,l=c.$slideEl.offset().left+i.scrollX,d=c.$slideEl.offset().top+i.scrollY,u=l+S/2-r,h=d+C/2-n,g=c.$imageEl[0].offsetWidth,v=c.$imageEl[0].offsetHeight,w=g*s.scale,b=v*s.scale,x=Math.min(S/2-w/2,0),y=Math.min(C/2-b/2,0),E=-x,T=-y,m=u*s.scale,f=h*s.scale,mE&&(m=E),fT&&(f=T)):(m=0,f=0),c.$imageWrapEl.transition(300).transform(`translate3d(${m}px, ${f}px,0)`),c.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${s.scale})`)}function y(){const t=e.zoom,s=e.params.zoom;c.$slideEl||(e.params.virtual&&e.params.virtual.enabled&&e.virtual?c.$slideEl=e.$wrapperEl.children(`.${e.params.slideActiveClass}`):c.$slideEl=e.slides.eq(e.activeIndex),c.$imageEl=c.$slideEl.find(`.${s.containerClass}`).eq(0).find("img, svg, canvas, picture, .swiper-zoom-target"),c.$imageWrapEl=c.$imageEl.parent(`.${s.containerClass}`)),c.$imageEl&&0!==c.$imageEl.length&&c.$imageWrapEl&&0!==c.$imageWrapEl.length&&(e.params.cssMode&&(e.wrapperEl.style.overflow="",e.wrapperEl.style.touchAction=""),t.scale=1,o=1,c.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"),c.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"),c.$slideEl.removeClass(`${s.zoomedSlideClass}`),c.$slideEl=void 0)}function E(t){const s=e.zoom;s.scale&&1!==s.scale?y():x(t)}function T(){const t=e.support;return{passiveListener:!("touchstart"!==e.touchEvents.start||!t.passiveListener||!e.params.passiveListeners)&&{passive:!0,capture:!1},activeListenerWithCapture:!t.passiveListener||{passive:!1,capture:!0}}}function S(){return`.${e.params.slideClass}`}function C(t){const{passiveListener:s}=T(),a=S();e.$wrapperEl[t]("gesturestart",a,f,s),e.$wrapperEl[t]("gesturechange",a,g,s),e.$wrapperEl[t]("gestureend",a,v,s)}function M(){r||(r=!0,C("on"))}function P(){r&&(r=!1,C("off"))}function k(){const t=e.zoom;if(t.enabled)return;t.enabled=!0;const s=e.support,{passiveListener:a,activeListenerWithCapture:i}=T(),r=S();s.gestures?(e.$wrapperEl.on(e.touchEvents.start,M,a),e.$wrapperEl.on(e.touchEvents.end,P,a)):"touchstart"===e.touchEvents.start&&(e.$wrapperEl.on(e.touchEvents.start,r,f,a),e.$wrapperEl.on(e.touchEvents.move,r,g,i),e.$wrapperEl.on(e.touchEvents.end,r,v,a),e.touchEvents.cancel&&e.$wrapperEl.on(e.touchEvents.cancel,r,v,a)),e.$wrapperEl.on(e.touchEvents.move,`.${e.params.zoom.containerClass}`,w,i)}function z(){const t=e.zoom;if(!t.enabled)return;const s=e.support;t.enabled=!1;const{passiveListener:a,activeListenerWithCapture:i}=T(),r=S();s.gestures?(e.$wrapperEl.off(e.touchEvents.start,M,a),e.$wrapperEl.off(e.touchEvents.end,P,a)):"touchstart"===e.touchEvents.start&&(e.$wrapperEl.off(e.touchEvents.start,r,f,a),e.$wrapperEl.off(e.touchEvents.move,r,g,i),e.$wrapperEl.off(e.touchEvents.end,r,v,a),e.touchEvents.cancel&&e.$wrapperEl.off(e.touchEvents.cancel,r,v,a)),e.$wrapperEl.off(e.touchEvents.move,`.${e.params.zoom.containerClass}`,w,i)}Object.defineProperty(e.zoom,"scale",{get:()=>h,set(e){if(h!==e){const t=c.$imageEl?c.$imageEl[0]:void 0,s=c.$slideEl?c.$slideEl[0]:void 0;a("zoomChange",e,t,s)}h=e}}),s("init",(()=>{e.params.zoom.enabled&&k()})),s("destroy",(()=>{z()})),s("touchStart",((t,s)=>{e.zoom.enabled&&function(t){const s=e.device;c.$imageEl&&0!==c.$imageEl.length&&(p.isTouched||(s.android&&t.cancelable&&t.preventDefault(),p.isTouched=!0,p.touchesStart.x="touchstart"===t.type?t.targetTouches[0].pageX:t.pageX,p.touchesStart.y="touchstart"===t.type?t.targetTouches[0].pageY:t.pageY))}(s)})),s("touchEnd",((t,s)=>{e.zoom.enabled&&function(){const t=e.zoom;if(!c.$imageEl||0===c.$imageEl.length)return;if(!p.isTouched||!p.isMoved)return p.isTouched=!1,void(p.isMoved=!1);p.isTouched=!1,p.isMoved=!1;let s=300,a=300;const i=u.x*s,r=p.currentX+i,n=u.y*a,l=p.currentY+n;0!==u.x&&(s=Math.abs((r-p.currentX)/u.x)),0!==u.y&&(a=Math.abs((l-p.currentY)/u.y));const o=Math.max(s,a);p.currentX=r,p.currentY=l;const d=p.width*t.scale,h=p.height*t.scale;p.minX=Math.min(c.slideWidth/2-d/2,0),p.maxX=-p.minX,p.minY=Math.min(c.slideHeight/2-h/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),c.$imageWrapEl.transition(o).transform(`translate3d(${p.currentX}px, ${p.currentY}px,0)`)}()})),s("doubleTap",((t,s)=>{!e.animating&&e.params.zoom.enabled&&e.zoom.enabled&&e.params.zoom.toggle&&E(s)})),s("transitionEnd",(()=>{e.zoom.enabled&&e.params.zoom.enabled&&b()})),s("slideChange",(()=>{e.zoom.enabled&&e.params.zoom.enabled&&e.params.cssMode&&b()})),Object.assign(e.zoom,{enable:k,disable:z,in:x,out:y,toggle:E})}function Lazy({swiper:e,extendParams:t,on:s,emit:a}){t({lazy:{checkInView:!1,enabled:!1,loadPrevNext:!1,loadPrevNextAmount:1,loadOnTransitionStart:!1,scrollingElement:"",elementClass:"swiper-lazy",loadingClass:"swiper-lazy-loading",loadedClass:"swiper-lazy-loaded",preloaderClass:"swiper-lazy-preloader"}}),e.lazy={};let i=!1,r=!1;function n(t,s=!0){const i=e.params.lazy;if(void 0===t)return;if(0===e.slides.length)return;const r=e.virtual&&e.params.virtual.enabled?e.$wrapperEl.children(`.${e.params.slideClass}[data-swiper-slide-index="${t}"]`):e.slides.eq(t),l=r.find(`.${i.elementClass}:not(.${i.loadedClass}):not(.${i.loadingClass})`);!r.hasClass(i.elementClass)||r.hasClass(i.loadedClass)||r.hasClass(i.loadingClass)||l.push(r[0]),0!==l.length&&l.each((t=>{const l=$(t);l.addClass(i.loadingClass);const o=l.attr("data-background"),d=l.attr("data-src"),c=l.attr("data-srcset"),p=l.attr("data-sizes"),u=l.parent("picture");e.loadImage(l[0],d||o,c,p,!1,(()=>{if(null!=e&&e&&(!e||e.params)&&!e.destroyed){if(o?(l.css("background-image",`url("${o}")`),l.removeAttr("data-background")):(c&&(l.attr("srcset",c),l.removeAttr("data-srcset")),p&&(l.attr("sizes",p),l.removeAttr("data-sizes")),u.length&&u.children("source").each((e=>{const t=$(e);t.attr("data-srcset")&&(t.attr("srcset",t.attr("data-srcset")),t.removeAttr("data-srcset"))})),d&&(l.attr("src",d),l.removeAttr("data-src"))),l.addClass(i.loadedClass).removeClass(i.loadingClass),r.find(`.${i.preloaderClass}`).remove(),e.params.loop&&s){const t=r.attr("data-swiper-slide-index");if(r.hasClass(e.params.slideDuplicateClass)){n(e.$wrapperEl.children(`[data-swiper-slide-index="${t}"]:not(.${e.params.slideDuplicateClass})`).index(),!1)}else{n(e.$wrapperEl.children(`.${e.params.slideDuplicateClass}[data-swiper-slide-index="${t}"]`).index(),!1)}}a("lazyImageReady",r[0],l[0]),e.params.autoHeight&&e.updateAutoHeight()}})),a("lazyImageLoad",r[0],l[0])}))}function l(){const{$wrapperEl:t,params:s,slides:a,activeIndex:i}=e,l=e.virtual&&s.virtual.enabled,o=s.lazy;let d=s.slidesPerView;function c(e){if(l){if(t.children(`.${s.slideClass}[data-swiper-slide-index="${e}"]`).length)return!0}else if(a[e])return!0;return!1}function p(e){return l?$(e).attr("data-swiper-slide-index"):$(e).index()}if("auto"===d&&(d=0),r||(r=!0),e.params.watchSlidesProgress)t.children(`.${s.slideVisibleClass}`).each((e=>{n(l?$(e).attr("data-swiper-slide-index"):$(e).index())}));else if(d>1)for(let e=i;e1||o.loadPrevNextAmount&&o.loadPrevNextAmount>1){const e=o.loadPrevNextAmount,t=d,s=Math.min(i+t+Math.max(e,t),a.length),r=Math.max(i-Math.max(t,e),0);for(let e=i+d;e0&&n(p(e));const a=t.children(`.${s.slidePrevClass}`);a.length>0&&n(p(a))}}function o(){const t=getWindow();if(!e||e.destroyed)return;const s=e.params.lazy.scrollingElement?$(e.params.lazy.scrollingElement):$(t),a=s[0]===t,r=a?t.innerWidth:s[0].offsetWidth,n=a?t.innerHeight:s[0].offsetHeight,d=e.$el.offset(),{rtlTranslate:c}=e;let p=!1;c&&(d.left-=e.$el[0].scrollLeft);const u=[[d.left,d.top],[d.left+e.width,d.top],[d.left,d.top+e.height],[d.left+e.width,d.top+e.height]];for(let e=0;e=0&&t[0]<=r&&t[1]>=0&&t[1]<=n){if(0===t[0]&&0===t[1])continue;p=!0}}const h=!("touchstart"!==e.touchEvents.start||!e.support.passiveListener||!e.params.passiveListeners)&&{passive:!0,capture:!1};p?(l(),s.off("scroll",o,h)):i||(i=!0,s.on("scroll",o,h))}s("beforeInit",(()=>{e.params.lazy.enabled&&e.params.preloadImages&&(e.params.preloadImages=!1)})),s("init",(()=>{e.params.lazy.enabled&&(e.params.lazy.checkInView?o():l())})),s("scroll",(()=>{e.params.freeMode&&e.params.freeMode.enabled&&!e.params.freeMode.sticky&&l()})),s("scrollbarDragMove resize _freeModeNoMomentumRelease",(()=>{e.params.lazy.enabled&&(e.params.lazy.checkInView?o():l())})),s("transitionStart",(()=>{e.params.lazy.enabled&&(e.params.lazy.loadOnTransitionStart||!e.params.lazy.loadOnTransitionStart&&!r)&&(e.params.lazy.checkInView?o():l())})),s("transitionEnd",(()=>{e.params.lazy.enabled&&!e.params.lazy.loadOnTransitionStart&&(e.params.lazy.checkInView?o():l())})),s("slideChange",(()=>{const{lazy:t,cssMode:s,watchSlidesProgress:a,touchReleaseOnEdges:i,resistanceRatio:r}=e.params;t.enabled&&(s||a&&(i||0===r))&&l()})),Object.assign(e.lazy,{load:l,loadInSlide:n})}function Controller({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",(()=>{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.setTranslate(s,a)})),s("setTransition",((t,s,a)=>{e.controller.control&&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){const s=e.rtlTranslate?-e.translate:e.translate;"slide"===e.params.controller.by&&(!function(t){e.controller.spline||(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()),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.$wrapperEl.transitionEnd((()=>{i&&(s.params.loop&&"slide"===e.params.controller.by&&s.loopFix(),s.transitionEnd())})))}if(Array.isArray(i))for(r=0;r0&&(e.isBeginning?(c(s),n(s)):(p(s),r(s))),t&&t.length>0&&(e.isEnd?(c(t),n(t)):(p(t),r(t)))}function m(){return e.pagination&&e.params.pagination.clickable&&e.pagination.bullets&&e.pagination.bullets.length}const f=(e,t,s)=>{r(e),"BUTTON"!==e[0].tagName&&(l(e,"button"),e.on("keydown",u)),d(e,s),function(e,t){e.attr("aria-controls",t)}(e,t)};function g(){const t=e.params.a11y;e.$el.append(a);const s=e.$el;t.containerRoleDescriptionMessage&&o(s,t.containerRoleDescriptionMessage),t.containerMessage&&d(s,t.containerMessage);const i=e.$wrapperEl,r=i.attr("id")||`swiper-wrapper-${function(e=16){return"x".repeat(e).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}(16)}`,n=e.params.autoplay&&e.params.autoplay.enabled?"off":"polite";var c;c=r,i.attr("id",c),function(e,t){e.attr("aria-live",t)}(i,n),t.itemRoleDescriptionMessage&&o($(e.slides),t.itemRoleDescriptionMessage),l($(e.slides),t.slideRole);const p=e.params.loop?e.slides.filter((t=>!t.classList.contains(e.params.slideDuplicateClass))).length:e.slides.length;let h,g;e.slides.each(((s,a)=>{const i=$(s),r=e.params.loop?parseInt(i.attr("data-swiper-slide-index"),10):a;d(i,t.slideLabelMessage.replace(/\{\{index\}\}/,r+1).replace(/\{\{slidesLength\}\}/,p))})),e.navigation&&e.navigation.$nextEl&&(h=e.navigation.$nextEl),e.navigation&&e.navigation.$prevEl&&(g=e.navigation.$prevEl),h&&h.length&&f(h,r,t.nextSlideMessage),g&&g.length&&f(g,r,t.prevSlideMessage),m()&&e.pagination.$el.on("keydown",classesToSelector(e.params.pagination.bulletClass),u)}s("beforeInit",(()=>{a=$(``)})),s("afterInit",(()=>{e.params.a11y.enabled&&(g(),h())})),s("toEdge",(()=>{e.params.a11y.enabled&&h()})),s("fromEdge",(()=>{e.params.a11y.enabled&&h()})),s("paginationUpdate",(()=>{e.params.a11y.enabled&&function(){const t=e.params.a11y;m()&&e.pagination.bullets.each((s=>{const a=$(s);r(a),e.params.pagination.renderBullet||(l(a,"button"),d(a,t.paginationBulletMessage.replace(/\{\{index\}\}/,a.index()+1)))}))}()})),s("destroy",(()=>{e.params.a11y.enabled&&function(){let t,s;a&&a.length>0&&a.remove(),e.navigation&&e.navigation.$nextEl&&(t=e.navigation.$nextEl),e.navigation&&e.navigation.$prevEl&&(s=e.navigation.$prevEl),t&&t.off("keydown",u),s&&s.off("keydown",u),m()&&e.pagination.$el.off("keydown",classesToSelector(e.params.pagination.bulletClass),u)}()}))}function History({swiper:e,extendParams:t,on:s}){t({history:{enabled:!1,root:"",replaceState:!1,key:"slides"}});let a=!1,i={};const r=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),n=e=>{const t=getWindow();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]}},l=(t,s)=>{const i=getWindow();if(!a||!e.params.history.enabled)return;let n;n=e.params.url?new URL(e.params.url):i.location;const l=e.slides.eq(s);let o=r(l.attr("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)),o=`${s}/${t}/${o}`}else n.pathname.includes(t)||(o=`${t}/${o}`);const d=i.history.state;d&&d.value===o||(e.params.history.replaceState?i.history.replaceState({value:o},null,o):i.history.pushState({value:o},null,o))},o=(t,s,a)=>{if(s)for(let i=0,n=e.slides.length;i{i=n(e.params.url),o(e.params.speed,e.paths.value,!1)};s("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);a=!0,i=n(e.params.url),(i.key||i.value)&&(o(0,i.value,e.params.runCallbacksOnInit),e.params.history.replaceState||t.addEventListener("popstate",d))}})()})),s("destroy",(()=>{e.params.history.enabled&&(()=>{const t=getWindow();e.params.history.replaceState||t.removeEventListener("popstate",d)})()})),s("transitionEnd _freeModeNoMomentumRelease",(()=>{a&&l(e.params.history.key,e.activeIndex)})),s("slideChange",(()=>{a&&e.params.cssMode&&l(e.params.history.key,e.activeIndex)}))}function HashNavigation({swiper:e,extendParams:t,emit:s,on:a}){let i=!1;const r=getDocument(),n=getWindow();t({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1}});const l=()=>{s("hashChange");const t=r.location.hash.replace("#","");if(t!==e.slides.eq(e.activeIndex).attr("data-hash")){const s=e.$wrapperEl.children(`.${e.params.slideClass}[data-hash="${t}"]`).index();if(void 0===s)return;e.slideTo(s)}},o=()=>{if(i&&e.params.hashNavigation.enabled)if(e.params.hashNavigation.replaceState&&n.history&&n.history.replaceState)n.history.replaceState(null,null,`#${e.slides.eq(e.activeIndex).attr("data-hash")}`||""),s("hashSet");else{const t=e.slides.eq(e.activeIndex),a=t.attr("data-hash")||t.attr("data-history");r.location.hash=a||"",s("hashSet")}};a("init",(()=>{e.params.hashNavigation.enabled&&(()=>{if(!e.params.hashNavigation.enabled||e.params.history&&e.params.history.enabled)return;i=!0;const t=r.location.hash.replace("#","");if(t){const s=0;for(let a=0,i=e.slides.length;a{e.params.hashNavigation.enabled&&e.params.hashNavigation.watchState&&$(n).off("hashchange",l)})),a("transitionEnd _freeModeNoMomentumRelease",(()=>{i&&o()})),a("slideChange",(()=>{i&&e.params.cssMode&&o()}))}function Autoplay({swiper:e,extendParams:t,on:s,emit:a}){let i;function r(){const t=e.slides.eq(e.activeIndex);let s=e.params.autoplay.delay;t.attr("data-swiper-autoplay")&&(s=t.attr("data-swiper-autoplay")||e.params.autoplay.delay),clearTimeout(i),i=nextTick((()=>{let t;e.params.autoplay.reverseDirection?e.params.loop?(e.loopFix(),t=e.slidePrev(e.params.speed,!0,!0),a("autoplay")):e.isBeginning?e.params.autoplay.stopOnLastSlide?l():(t=e.slideTo(e.slides.length-1,e.params.speed,!0,!0),a("autoplay")):(t=e.slidePrev(e.params.speed,!0,!0),a("autoplay")):e.params.loop?(e.loopFix(),t=e.slideNext(e.params.speed,!0,!0),a("autoplay")):e.isEnd?e.params.autoplay.stopOnLastSlide?l():(t=e.slideTo(0,e.params.speed,!0,!0),a("autoplay")):(t=e.slideNext(e.params.speed,!0,!0),a("autoplay")),(e.params.cssMode&&e.autoplay.running||!1===t)&&r()}),s)}function n(){return void 0===i&&(!e.autoplay.running&&(e.autoplay.running=!0,a("autoplayStart"),r(),!0))}function l(){return!!e.autoplay.running&&(void 0!==i&&(i&&(clearTimeout(i),i=void 0),e.autoplay.running=!1,a("autoplayStop"),!0))}function o(t){e.autoplay.running&&(e.autoplay.paused||(i&&clearTimeout(i),e.autoplay.paused=!0,0!==t&&e.params.autoplay.waitForTransition?["transitionend","webkitTransitionEnd"].forEach((t=>{e.$wrapperEl[0].addEventListener(t,c)})):(e.autoplay.paused=!1,r())))}function d(){const t=getDocument();"hidden"===t.visibilityState&&e.autoplay.running&&o(),"visible"===t.visibilityState&&e.autoplay.paused&&(r(),e.autoplay.paused=!1)}function c(t){e&&!e.destroyed&&e.$wrapperEl&&t.target===e.$wrapperEl[0]&&(["transitionend","webkitTransitionEnd"].forEach((t=>{e.$wrapperEl[0].removeEventListener(t,c)})),e.autoplay.paused=!1,e.autoplay.running?r():l())}function p(){e.params.autoplay.disableOnInteraction?l():o(),["transitionend","webkitTransitionEnd"].forEach((t=>{e.$wrapperEl[0].removeEventListener(t,c)}))}function u(){e.params.autoplay.disableOnInteraction||(e.autoplay.paused=!1,r())}e.autoplay={running:!1,paused:!1},t({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}}),s("init",(()=>{if(e.params.autoplay.enabled){n();getDocument().addEventListener("visibilitychange",d),e.params.autoplay.pauseOnMouseEnter&&(e.$el.on("mouseenter",p),e.$el.on("mouseleave",u))}})),s("beforeTransitionStart",((t,s,a)=>{e.autoplay.running&&(a||!e.params.autoplay.disableOnInteraction?e.autoplay.pause(s):l())})),s("sliderFirstMove",(()=>{e.autoplay.running&&(e.params.autoplay.disableOnInteraction?l():o())})),s("touchEnd",(()=>{e.params.cssMode&&e.autoplay.paused&&!e.params.autoplay.disableOnInteraction&&r()})),s("destroy",(()=>{e.$el.off("mouseenter",p),e.$el.off("mouseleave",u),e.autoplay.running&&l();getDocument().removeEventListener("visibilitychange",d)})),Object.assign(e.autoplay,{pause:o,run:r,start:n,stop:l})}function Thumb({swiper:e,extendParams:t,on:s}){t({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let a=!1,i=!1;function r(){const t=e.thumbs.swiper;if(!t)return;const s=t.clickedIndex,a=t.clickedSlide;if(a&&$(a).hasClass(e.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;if(i=t.params.loop?parseInt($(t.clickedSlide).attr("data-swiper-slide-index"),10):s,e.params.loop){let t=e.activeIndex;e.slides.eq(t).hasClass(e.params.slideDuplicateClass)&&(e.loopFix(),e._clientLeft=e.$wrapperEl[0].clientLeft,t=e.activeIndex);const s=e.slides.eq(t).prevAll(`[data-swiper-slide-index="${i}"]`).eq(0).index(),a=e.slides.eq(t).nextAll(`[data-swiper-slide-index="${i}"]`).eq(0).index();i=void 0===s?a:void 0===a?s:a-t1?a:o:a-oe.previousIndex?"next":"prev"}else n=e.realIndex,l=n>e.previousIndex?"next":"prev";r&&(n+="next"===l?i:-1*i),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(n)<0&&(s.params.centeredSlides?n=n>o?n-Math.floor(a/2)+1:n+Math.floor(a/2)-1:n>o&&s.params.slidesPerGroup,s.slideTo(n,t?0:void 0))}let n=1;const l=e.params.thumbs.slideThumbActiveClass;if(e.params.slidesPerView>1&&!e.params.centeredSlides&&(n=e.params.slidesPerView),e.params.thumbs.multipleActiveThumbs||(n=1),n=Math.floor(n),s.slides.removeClass(l),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let t=0;t{const{thumbs:t}=e.params;t&&t.swiper&&(n(),l(!0))})),s("slideChange update resize observerUpdate",(()=>{e.thumbs.swiper&&l()})),s("setTransition",((t,s)=>{const a=e.thumbs.swiper;a&&a.setTransition(s)})),s("beforeDestroy",(()=>{const t=e.thumbs.swiper;t&&i&&t&&t.destroy()})),Object.assign(e.thumbs,{init:n,update:l})}function freeMode({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:{onTouchMove:function(){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:now()})},onTouchEnd:function({currentPos:t}){const{params:i,$wrapperEl:r,rtlTranslate:n,snapGrid:l,touchEventsData:o}=e,d=now()-o.touchStartTime;if(t<-e.minTranslate())e.slideTo(e.activeIndex);else if(t>-e.maxTranslate())e.slides.length1){const t=o.velocities.pop(),s=o.velocities.pop(),a=t.position-s.position,r=t.time-s.time;e.velocity=a/r,e.velocity/=2,Math.abs(e.velocity)150||now()-t.time>300)&&(e.velocity=0)}else e.velocity=0;e.velocity*=i.freeMode.momentumVelocityRatio,o.velocities.length=0;let t=1e3*i.freeMode.momentumRatio;const d=e.velocity*t;let c=e.translate+d;n&&(c=-c);let p,u=!1;const h=20*Math.abs(e.velocity)*i.freeMode.momentumBounceRatio;let m;if(ce.minTranslate())i.freeMode.momentumBounce?(c-e.minTranslate()>h&&(c=e.minTranslate()+h),p=e.minTranslate(),u=!0,o.allowMomentumBounce=!0):c=e.minTranslate(),i.loop&&i.centeredSlides&&(m=!0);else if(i.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),i.freeMode.sticky){const s=Math.abs((n?-c:c)-e.translate),a=e.slidesSizesGrid[e.activeIndex];t=s{e&&!e.destroyed&&o.allowMomentumBounce&&(s("momentumBounce"),e.setTransition(i.speed),setTimeout((()=>{e.setTranslate(p),r.transitionEnd((()=>{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,r.transitionEnd((()=>{e&&!e.destroyed&&e.transitionEnd()})))):e.updateProgress(c),e.updateActiveIndex(),e.updateSlidesClasses()}else{if(i.freeMode.sticky)return void e.slideToClosest();i.freeMode&&s("_freeModeNoMomentumRelease")}(!i.freeMode.momentum||d>=i.longSwipesMs)&&(e.updateProgress(),e.updateActiveIndex(),e.updateSlidesClasses())}}}})}function Grid({swiper:e,extendParams:t}){let s,a,i;t({grid:{rows:1,fill:"column"}});e.grid={initSlides:t=>{const{slidesPerView:r}=e.params,{rows:n,fill:l}=e.params.grid;a=s/n,i=Math.floor(t/n),s=Math.floor(t/n)===t/n?t:Math.ceil(t/n)*n,"auto"!==r&&"row"===l&&(s=Math.max(s,r*n))},updateSlide:(t,r,n,l)=>{const{slidesPerGroup:o,spaceBetween:d}=e.params,{rows:c,fill:p}=e.params.grid;let u,h,m;if("row"===p&&o>1){const e=Math.floor(t/(o*c)),a=t-c*o*e,i=0===e?o:Math.min(Math.ceil((n-e*c*o)/c),o);m=Math.floor(a/i),h=a-m*i+e*o,u=h+m*s/c,r.css({"-webkit-order":u,order:u})}else"column"===p?(h=Math.floor(t/c),m=t-h*c,(h>i||h===i&&m===c-1)&&(m+=1,m>=c&&(m=0,h+=1))):(m=Math.floor(t/a),h=t-m*a);r.css(l("margin-top"),0!==m?d&&`${d}px`:"")},updateWrapperSize:(t,a,i)=>{const{spaceBetween:r,centeredSlides:n,roundLengths:l}=e.params,{rows:o}=e.params.grid;if(e.virtualSize=(t+r)*s,e.virtualSize=Math.ceil(e.virtualSize/o)-r,e.$wrapperEl.css({[i("width")]:`${e.virtualSize+r}px`}),n){a.splice(0,a.length);const t=[];for(let s=0;s=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.eq(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)})),a("setTranslate",(()=>{s.params.effect===t&&i()})),a("setTransition",((e,a)=>{s.params.effect===t&&r(a)}))}function effectTarget(e,t){return e.transformEl?t.find(e.transformEl).css({"backface-visibility":"hidden","-webkit-backface-visibility":"hidden"}):t}function effectVirtualTransitionEnd({swiper:e,duration:t,transformEl:s,allSlides:a}){const{slides:i,activeIndex:r,$wrapperEl:n}=e;if(e.params.virtualTranslate&&0!==t){let t,l=!1;t=a?s?i.find(s):i:s?i.eq(r).find(s):i.eq(r),t.transitionEnd((()=>{if(l)return;if(!e||e.destroyed)return;l=!0,e.animating=!1;const t=["webkitTransitionEnd","transitionend"];for(let e=0;e{const{slides:t}=e,s=e.params.fadeEffect;for(let a=0;a{const{transformEl:s}=e.params.fadeEffect;(s?e.slides.find(s):e.slides).transition(t),effectVirtualTransitionEnd({swiper:e,duration:t,transformEl:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!e.params.cssMode})})}function EffectCube({swiper:e,extendParams:t,on:s}){t({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});effectInit({effect:"cube",swiper:e,on:s,setTranslate:()=>{const{$el:t,$wrapperEl:s,slides:a,width:i,height:r,rtlTranslate:n,size:l,browser:o}=e,d=e.params.cubeEffect,c=e.isHorizontal(),p=e.virtual&&e.params.virtual.enabled;let u,h=0;d.shadow&&(c?(u=s.find(".swiper-cube-shadow"),0===u.length&&(u=$('
'),s.append(u)),u.css({height:`${i}px`})):(u=t.find(".swiper-cube-shadow"),0===u.length&&(u=$('
'),t.append(u))));for(let e=0;e-1&&(h=90*s+90*o,n&&(h=90*-s-90*o)),t.transform(g),d.slideShadows){let e=c?t.find(".swiper-slide-shadow-left"):t.find(".swiper-slide-shadow-top"),s=c?t.find(".swiper-slide-shadow-right"):t.find(".swiper-slide-shadow-bottom");0===e.length&&(e=$(`
`),t.append(e)),0===s.length&&(s=$(`
`),t.append(s)),e.length&&(e[0].style.opacity=Math.max(-o,0)),s.length&&(s[0].style.opacity=Math.max(o,0))}}if(s.css({"-webkit-transform-origin":`50% 50% -${l/2}px`,"transform-origin":`50% 50% -${l/2}px`}),d.shadow)if(c)u.transform(`translate3d(0px, ${i/2+d.shadowOffset}px, ${-i/2}px) rotateX(90deg) rotateZ(0deg) scale(${d.shadowScale})`);else{const e=Math.abs(h)-90*Math.floor(Math.abs(h)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=d.shadowScale,a=d.shadowScale/t,i=d.shadowOffset;u.transform(`scale3d(${s}, 1, ${a}) translate3d(0px, ${r/2+i}px, ${-r/2/a}px) rotateX(-90deg)`)}const m=o.isSafari||o.isWebView?-l/2:0;s.transform(`translate3d(0px,0,${m}px) rotateX(${e.isHorizontal()?0:h}deg) rotateY(${e.isHorizontal()?-h:0}deg)`)},setTransition:t=>{const{$el:s,slides:a}=e;a.transition(t).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(t),e.params.cubeEffect.shadow&&!e.isHorizontal()&&s.find(".swiper-cube-shadow").transition(t)},perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})}function createShadow(e,t,s){const a="swiper-slide-shadow"+(s?`-${s}`:""),i=e.transformEl?t.find(e.transformEl):t;let r=i.children(`.${a}`);return r.length||(r=$(`
`),i.append(r)),r}function EffectFlip({swiper:e,extendParams:t,on:s}){t({flipEffect:{slideShadows:!0,limitRotation:!0,transformEl:null}});effectInit({effect:"flip",swiper:e,on:s,setTranslate:()=>{const{slides:t,rtlTranslate:s}=e,a=e.params.flipEffect;for(let i=0;i{const{transformEl:s}=e.params.flipEffect;(s?e.slides.find(s):e.slides).transition(t).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(t),effectVirtualTransitionEnd({swiper:e,duration:t,transformEl:s})},perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!e.params.cssMode})})}function EffectCoverflow({swiper:e,extendParams:t,on:s}){t({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0,transformEl:null}});effectInit({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;for(let e=0,t=a.length;e0?l:0),s.length&&(s[0].style.opacity=-l>0?-l:0)}}},setTransition:t=>{const{transformEl:s}=e.params.coverflowEffect;(s?e.slides.find(s):e.slides).transition(t).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(t)},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})}function EffectCreative({swiper:e,extendParams:t,on:s}){t({creativeEffect:{transformEl:null,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`;effectInit({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;if(l){const t=i[0]/2-e.params.slidesOffsetBefore||0;s.transform(`translateX(calc(50% - ${t}px))`)}for(let s=0;s0&&(f=r.prev,m=!0),u.forEach(((e,t)=>{u[t]=`calc(${e}px + (${a(f.translate[t])} * ${Math.abs(d*n)}))`})),h.forEach(((e,t)=>{h[t]=f.rotate[t]*Math.abs(d*n)})),i[0].style.zIndex=-Math.abs(Math.round(o))+t.length;const g=u.join(", "),v=`rotateX(${h[0]}deg) rotateY(${h[1]}deg) rotateZ(${h[2]}deg)`,w=c<0?`scale(${1+(1-f.scale)*c*n})`:`scale(${1-(1-f.scale)*c*n})`,b=c<0?1+(1-f.opacity)*c*n:1-(1-f.opacity)*c*n,x=`translate3d(${g}) ${v} ${w}`;if(m&&f.shadow||!m){let e=i.children(".swiper-slide-shadow");if(0===e.length&&f.shadow&&(e=createShadow(r,i)),e.length){const t=r.shadowPerProgress?d*(1/r.limitProgress):d;e[0].style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const y=effectTarget(r,i);y.transform(x).css({opacity:b}),f.origin&&y.css("transform-origin",f.origin)}},setTransition:t=>{const{transformEl:s}=e.params.creativeEffect;(s?e.slides.find(s):e.slides).transition(t).find(".swiper-slide-shadow").transition(t),effectVirtualTransitionEnd({swiper:e,duration:t,transformEl:s,allSlides:!0})},perspective:()=>e.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!e.params.cssMode})})}function EffectCards({swiper:e,extendParams:t,on:s}){t({cardsEffect:{slideShadows:!0,transformEl:null}});effectInit({effect:"cards",swiper:e,on:s,setTranslate:()=>{const{slides:t,activeIndex:s}=e,a=e.params.cardsEffect,{startTranslate:i,isTouched:r}=e.touchEventsData,n=e.translate;for(let l=0;l0&&c<1&&(r||e.params.cssMode)&&n-1&&(r||e.params.cssMode)&&n>i;if(w||b){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;g+=-28*c*e,f+=-.5*e,v+=96*e,h=-25*e*Math.abs(c)+"%"}if(u=c<0?`calc(${u}px + (${v*Math.abs(c)}%))`:c>0?`calc(${u}px + (-${v*Math.abs(c)}%))`:`${u}px`,!e.isHorizontal()){const e=h;h=u,u=e}const x=`\n translate3d(${u}, ${h}, ${m}px)\n rotateZ(${g}deg)\n scale(${c<0?""+(1+(1-f)*c):""+(1-(1-f)*c)})\n `;if(a.slideShadows){let e=o.find(".swiper-slide-shadow");0===e.length&&(e=createShadow(a,o)),e.length&&(e[0].style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}o[0].style.zIndex=-Math.abs(Math.round(d))+t.length;effectTarget(a,o).transform(x)}},setTransition:t=>{const{transformEl:s}=e.params.cardsEffect;(s?e.slides.find(s):e.slides).transition(t).find(".swiper-slide-shadow").transition(t),effectVirtualTransitionEnd({swiper:e,duration:t,transformEl:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!e.params.cssMode})})}Object.keys(prototypes).forEach((e=>{Object.keys(prototypes[e]).forEach((t=>{Swiper.prototype[t]=prototypes[e][t]}))})),Swiper.use([Resize,Observer]);const modules=[Virtual,Keyboard,Mousewheel,Navigation,Pagination,Scrollbar,Parallax,Zoom,Lazy,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.esm.browser.min.js.map \ No newline at end of file diff --git a/resources/web/guide/swiper/swiper-bundle.esm.browser.min.js.map b/resources/web/guide/swiper/swiper-bundle.esm.browser.min.js.map deleted file mode 100644 index 1e2ec716bf..0000000000 --- a/resources/web/guide/swiper/swiper-bundle.esm.browser.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../node_modules/ssr-window/ssr-window.esm.js","../node_modules/dom7/dom7.esm.js","../src/shared/dom.js","../src/shared/utils.js","../src/shared/get-support.js","../src/shared/get-device.js","../src/shared/get-browser.js","../src/core/modules/resize/resize.js","../src/core/modules/observer/observer.js","../src/core/events-emitter.js","../src/core/update/updateSize.js","../src/core/update/updateSlides.js","../src/core/update/updateAutoHeight.js","../src/core/update/updateSlidesOffset.js","../src/core/update/updateSlidesProgress.js","../src/core/update/updateProgress.js","../src/core/update/updateSlidesClasses.js","../src/core/update/updateActiveIndex.js","../src/core/update/updateClickedSlide.js","../src/core/update/index.js","../src/core/translate/getTranslate.js","../src/core/translate/setTranslate.js","../src/core/translate/minTranslate.js","../src/core/translate/maxTranslate.js","../src/core/translate/translateTo.js","../src/core/translate/index.js","../src/core/transition/setTransition.js","../src/core/transition/transitionEmit.js","../src/core/transition/transitionStart.js","../src/core/transition/transitionEnd.js","../src/core/transition/index.js","../src/core/slide/slideTo.js","../src/core/slide/slideToLoop.js","../src/core/slide/slideNext.js","../src/core/slide/slidePrev.js","../src/core/slide/slideReset.js","../src/core/slide/slideToClosest.js","../src/core/slide/slideToClickedSlide.js","../src/core/slide/index.js","../src/core/loop/loopCreate.js","../src/core/loop/loopFix.js","../src/core/loop/loopDestroy.js","../src/core/loop/index.js","../src/core/grab-cursor/setGrabCursor.js","../src/core/grab-cursor/unsetGrabCursor.js","../src/core/grab-cursor/index.js","../src/core/events/onTouchStart.js","../src/core/events/onTouchMove.js","../src/core/events/onTouchEnd.js","../src/core/events/onResize.js","../src/core/events/onClick.js","../src/core/events/onScroll.js","../src/core/events/index.js","../src/core/breakpoints/setBreakpoint.js","../src/core/breakpoints/getBreakpoint.js","../src/core/breakpoints/index.js","../src/core/classes/addClasses.js","../src/core/classes/removeClasses.js","../src/core/classes/index.js","../src/core/images/loadImage.js","../src/core/images/preloadImages.js","../src/core/images/index.js","../src/core/check-overflow/index.js","../src/core/defaults.js","../src/core/moduleExtendParams.js","../src/core/core.js","../src/modules/virtual/virtual.js","../src/modules/keyboard/keyboard.js","../src/modules/mousewheel/mousewheel.js","../src/shared/create-element-if-not-defined.js","../src/modules/navigation/navigation.js","../src/shared/classes-to-selector.js","../src/modules/pagination/pagination.js","../src/modules/scrollbar/scrollbar.js","../src/modules/parallax/parallax.js","../src/modules/zoom/zoom.js","../src/modules/lazy/lazy.js","../src/modules/controller/controller.js","../src/modules/a11y/a11y.js","../src/modules/history/history.js","../src/modules/hash-navigation/hash-navigation.js","../src/modules/autoplay/autoplay.js","../src/modules/thumbs/thumbs.js","../src/modules/free-mode/free-mode.js","../src/modules/grid/grid.js","../src/modules/manipulation/methods/appendSlide.js","../src/modules/manipulation/methods/prependSlide.js","../src/modules/manipulation/methods/addSlide.js","../src/modules/manipulation/methods/removeSlide.js","../src/modules/manipulation/methods/removeAllSlides.js","../src/modules/manipulation/manipulation.js","../src/shared/effect-init.js","../src/shared/effect-target.js","../src/shared/effect-virtual-transition-end.js","../src/modules/effect-fade/effect-fade.js","../src/modules/effect-cube/effect-cube.js","../src/shared/create-shadow.js","../src/modules/effect-flip/effect-flip.js","../src/modules/effect-coverflow/effect-coverflow.js","../src/modules/effect-creative/effect-creative.js","../src/modules/effect-cards/effect-cards.js","../src/swiper.js"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","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","makeReactive","proto","__proto__","defineProperty","get","set","value","Dom7","Array","items","super","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","arrayUnique","uniqueArray","i","indexOf","qsa","selector","context","a","$","html","trim","toCreate","tempParent","innerHTML","nodeType","addClass","classes","classNames","map","c","split","classList","add","removeClass","remove","toggleClass","className","toggle","hasClass","contains","attr","attrs","arguments","getAttribute","attrName","removeAttr","removeAttribute","transform","transition","duration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","j","event","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","splice","trigger","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","index","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","fn","Methods","deleteProps","object","nextTick","delay","now","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","o","slice","isNode","node","HTMLElement","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","time","startTime","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","deviceCached","browser","calcSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","supportsPassive","opts","gestures","getSupport","calcDevice","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","getDevice","overrides","calcBrowser","isSafari","toLowerCase","isWebView","test","getBrowser","Resize","emit","observer","resizeHandler","destroyed","initialized","orientationChangeHandler","resizeObserver","ResizeObserver","entries","newWidth","newHeight","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","Observer","extendParams","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","$el","$wrapperEl","disconnect","methodName","writable","eventsEmitter","priority","self","method","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","Number","isNaN","assign","size","updateSlides","getDirectionLabel","property","marginRight","getDirectionPropertyValue","label","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","updateAutoHeight","activeSlides","setTransition","getSlideByIndex","visibleSlides","ceil","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","update","getSwiperTranslate","virtualTranslate","currentTranslate","setTranslate","byController","x","y","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","transitionStart","slideTo","initial","Error","indexAsNumber","isFinite","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","grabCursor","closestElement","base","__closestFrom","assignedSlot","getRootNode","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","isTouchEvent","type","which","button","isTouched","isMoved","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","onTouchEnd","touchEndTime","timeDiff","lastClickTime","currentPos","stopIndex","groupSize","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","start","passiveListeners","passive","move","end","cancel","updateOnWindowResize","attachEvents","bind","detachEvents","events$1","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","containerModifierClass","emitContainerClasses","fill","directionChanged","needsReLoop","changeDirection","isEnabled","disable","enable","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","prepareClasses","prefix","resultClasses","item","addClasses","suffixes","autoheight","centered","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","preloadImages","imagesLoaded","imagesToLoad","updateOnImagesReady","currentSrc","images","wasLocked","lastSlideIndex","lastSlideRightEdge","checkOverflow$1","defaults","init","createElements","url","uniqueNavElements","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","swiperParams","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","getWrapper","wrapper","destroy","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","m","Virtual","cssModeTimeout","renderSlide","cache","$slideEl","force","addSlidesBefore","addSlidesAfter","from","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","renderExternalUpdate","prependIndexes","appendIndexes","appendSlide","prependSlide","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","removeSlide","slidesIndexes","removeAllSlides","Keyboard","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","Mousewheel","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","shift","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","createElementIfNotDefined","checkProps","element","Navigation","getEl","toggleEl","disabled","disabledClass","tagName","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","_s","targetEl","pagination","clickable","isHidden","classesToSelector","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","lastIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","Scrollbar","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","$dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","eventMethod","$swiperEl","dragClass","dragEl","draggable","Parallax","parallax","setTransform","p","currentOpacity","currentScale","_swiper","parallaxEl","$parallaxEl","parallaxDuration","Zoom","zoom","maxRatio","containerClass","zoomedSlideClass","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","isScaling","gesture","slideWidth","slideHeight","$imageEl","$imageWrapEl","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","scaleStart","onGestureChange","scaleMove","onGestureEnd","scaledWidth","scaledHeight","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","touchAction","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","Lazy","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$images","background","$pictureEl","sourceEl","$source","slideOriginalIndex","slideExist","amount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","Controller","LinearSpline","binarySearch","guess","array","i1","i3","interpolate","removeSpline","controller","control","spline","inverse","by","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","setControlledTransition","A11y","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","liveRegion","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","updateNavigation","hasPagination","initNavEl","wrapperId","controls","addElControls","$containerEl","repeat","round","random","getRandomNumber","live","addElLive","bulletEl","updatePagination","History","root","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","includes","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","HashNavigation","watchState","onHashChange","newHash","setHash","Autoplay","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","order","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","indexToRemove","Manipulation","effectInit","overwriteParams","perspective","overwriteParamsResult","effectTarget","effectParams","transformEl","effectVirtualTransitionEnd","allSlides","$transitionEndTarget","eventTriggered","triggerEvents","EffectFade","fadeEffect","crossFade","tx","ty","slideOpacity","EffectCube","cubeEffect","slideShadows","shadow","shadowOffset","shadowScale","$cubeShadowEl","wrapperRotate","slideAngle","tz","shadowBefore","shadowAfter","shadowAngle","sin","scale1","scale2","zFactor","createShadow","shadowClass","$shadowContainer","$shadowEl","EffectFlip","flipEffect","limitRotation","rotateY","rotateX","zIndex","EffectCoverflow","coverflowEffect","rotate","stretch","depth","modifier","center","offsetMultiplier","translateZ","slideTransform","$shadowBeforeEl","$shadowAfterEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","EffectCards","cardsEffect","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","prototypeGroup","protoMethod"],"mappings":"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","file":"swiper-bundle.esm.browser.min.js","sourcesContent":["/**\n * SSR Window 4.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.1\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n super(...(items || []));\n makeReactive(this);\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import {\n $,\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n} from 'dom7';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n Object.defineProperty($.fn, methodName, { value: Methods[methodName], writable: true });\n});\n\nexport default $;\n","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform\n .split(', ')\n .map((a) => a.replace(',', '.'))\n .join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix =\n curStyle.MozTransform ||\n curStyle.OTransform ||\n curStyle.MsTransform ||\n curStyle.msTransform ||\n curStyle.transform ||\n curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return (\n typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n );\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter((key) => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({ swiper, targetPosition, side }) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return (dir === 'next' && current >= target) || (dir === 'prev' && current <= target);\n };\n\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\n\nexport {\n animateCSSModeScroll,\n deleteProps,\n nextTick,\n now,\n getTranslate,\n isObject,\n extend,\n getComputedStyle,\n setCSSProperty,\n};\n","import { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n\n touch: !!(\n 'ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)\n ),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n })(),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n })(),\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nexport { getSupport };\n","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\n\nlet deviceCached;\n\nfunction calcDevice({ userAgent } = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nexport { getDevice };\n","import { getWindow } from 'ssr-window';\n\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nexport { getBrowser };\n","import { getWindow } from 'ssr-window';\n\nexport default function Resize({ swiper, on, emit }) {\n const window = getWindow();\n let observer = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver((entries) => {\n const { width, height } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({ contentBoxSize, contentRect, target }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect\n ? contentRect.width\n : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect\n ? contentRect.height\n : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function Observer({ swiper, extendParams, on, emit }) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren,\n });\n\n // Observe wrapper\n attach(swiper.$wrapperEl[0], { attributes: false });\n };\n const destroy = () => {\n observers.forEach((observer) => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n });\n on('init', init);\n on('destroy', destroy);\n}\n","/* eslint-disable no-underscore-dangle */\n\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (\n eventHandler === handler ||\n (eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler)\n ) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n\n eventsArray.forEach((event) => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach((eventHandler) => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n },\n};\n","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width =\n width -\n parseInt($el.css('padding-left') || 0, 10) -\n parseInt($el.css('padding-right') || 0, 10);\n height =\n height -\n parseInt($el.css('padding-top') || 0, 10) -\n parseInt($el.css('padding-bottom') || 0, 10);\n\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { setCSSProperty } from '../../shared/utils.js';\n\nexport default function updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom',\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n\n const { $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginBottom: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '', marginTop: '' });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n\n const shouldResetSlideSize =\n params.slidesPerView === 'auto' &&\n params.breakpoints &&\n Object.keys(params.breakpoints).filter((key) => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const { clientWidth, offsetWidth } = slide[0];\n slideSize =\n width +\n paddingLeft +\n paddingRight +\n marginLeft +\n marginRight +\n (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0)\n slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (\n (index - Math.min(swiper.params.slidesPerGroupSkip, index)) %\n swiper.params.slidesPerGroup ===\n 0\n )\n snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`,\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n\n if (\n Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) >\n 1\n ) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides\n .filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n })\n .css({ [key]: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(\n swiper.wrapperEl,\n '--swiper-centered-offset-after',\n `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`,\n );\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map((v) => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map((v) => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n}\n","export default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = (index) => {\n if (isVirtual) {\n return swiper.slides.filter(\n (el) => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index,\n )[0];\n }\n return swiper.slides.eq(index)[0];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal()\n ? slides[i].offsetLeft\n : slides[i].offsetTop;\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateSlidesProgress(translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl, snapGrid } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress =\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress =\n (offsetCenter -\n snapGrid[0] +\n (params.centeredSlides ? swiper.minTranslate() : 0) -\n slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible =\n (slideBefore >= 0 && slideBefore < swiper.size - 1) ||\n (slideAfter > 1 && slideAfter <= swiper.size) ||\n (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","export default function updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && swiper.translate * multiplier) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || (params.centeredSlides && params.autoHeight))\n swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function updateSlidesClasses() {\n const swiper = this;\n\n const { slides, params, $wrapperEl, activeIndex, realIndex } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(\n `${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`,\n );\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\n `.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`,\n );\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide\n .nextAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide\n .prevAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n translate >= slidesGrid[i] &&\n translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2\n ) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(\n swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex,\n 10,\n );\n\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (\n params.slideToClickedSlide &&\n swiper.clickedIndex !== undefined &&\n swiper.clickedIndex !== swiper.activeIndex\n ) {\n swiper.slideToClickedSlide();\n }\n}\n","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","import { getTranslate } from '../../shared/utils.js';\n\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const { params, rtlTranslate: rtl, translate, $wrapperEl } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function setTranslate(translate, byController) {\n const swiper = this;\n const { rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function minTranslate() {\n return -this.snapGrid[0];\n}\n","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function translateTo(\n translate = 0,\n speed = this.params.speed,\n runCallbacks = true,\n translateBounds = true,\n internal,\n) {\n const swiper = this;\n\n const { params, wrapperEl } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: -newTranslate, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","export default function transitionEmit({ swiper, runCallbacks, direction, step }) {\n const { activeIndex, previousIndex } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'Start' });\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'End' });\n}\n","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function slideTo(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n initial,\n) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(\n `The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`,\n );\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\n `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`,\n );\n }\n\n // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled,\n } = swiper;\n\n if (\n (swiper.animating && params.preventInteractionOnTransition) ||\n (!enabled && !internal && !initial)\n ) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2\n ) {\n slideIndex = i;\n } else if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext\n ) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (\n !swiper.allowSlideNext &&\n translate < swiper.translate &&\n translate < swiper.minTranslate()\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n translate > swiper.translate &&\n translate > swiper.maxTranslate()\n ) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: t, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","export default function slideToLoop(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { animating, enabled, params } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating, snapGrid, slidesGrid, rtlTranslate, enabled } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (\n params.slidesPerView === 'auto' &&\n params.slidesPerGroup === 1 &&\n params.slidesPerGroupAuto\n ) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n threshold = 0.5,\n) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function slideToClickedSlide() {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView =\n params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n slideToIndex < swiper.loopedSlides - slidesPerView / 2 ||\n slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n const $selector = $($wrapperEl.children()[0].parentNode);\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(\n `${params.slideClass} ${params.slideBlankClass}`,\n );\n $selector.append(blankNode);\n }\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function loopFix() {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function loopDestroy() {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`,\n )\n .remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","export default function setGrabCursor(moving) {\n const swiper = this;\n if (\n swiper.support.touch ||\n !swiper.params.simulateTouch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n )\n return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","export default function unsetGrabCursor() {\n const swiper = this;\n if (\n swiper.support.touch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n ) {\n return;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}\n","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n\n const data = swiper.touchEventsData;\n const { params, touches, enabled } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector\n ? params.noSwipingSelector\n : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (\n params.noSwiping &&\n (isTargetShadow\n ? closestElement(noSwipingSelector, e.target)\n : $targetEl.closest(noSwipingSelector)[0])\n ) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection &&\n (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)\n ) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n if (\n document.activeElement &&\n $(document.activeElement).is(data.focusableElements) &&\n document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault =\n preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (\n (params.touchStartForcePreventDefault || shouldPreventDefault) &&\n !$targetEl[0].isContentEditable\n ) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch =\n e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) ||\n (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) ||\n (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold)\n return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (\n (swiper.isHorizontal() && touches.currentY === touches.startY) ||\n (swiper.isVertical() && touches.currentX === touches.startX)\n ) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal()\n ? touchAngle > params.touchAngle\n : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.minTranslate() -\n 1 +\n (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.maxTranslate() +\n 1 -\n (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n swiper.swipeDirection === 'next' &&\n data.currentTranslate < data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (\n !swiper.allowSlidePrev &&\n swiper.swipeDirection === 'prev' &&\n data.currentTranslate > data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal()\n ? touches.currentX - touches.startX\n : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (\n (params.freeMode && params.freeMode.enabled && swiper.freeMode) ||\n params.watchSlidesProgress\n ) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import { now, nextTick } from '../../shared/utils.js';\n\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const { params, touches, rtlTranslate: rtl, slidesGrid, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (\n params.grabCursor &&\n data.isMoved &&\n data.isTouched &&\n (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)\n ) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (\n !data.isTouched ||\n !data.isMoved ||\n !swiper.swipeDirection ||\n touches.diff === 0 ||\n data.currentTranslate === data.startTranslate\n ) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({ currentPos });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (\n let i = 0;\n i < slidesGrid.length;\n i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup\n ) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget =\n swiper.navigation &&\n (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n","export default function onResize() {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if (\n (params.slidesPerView === 'auto' || params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.isBeginning &&\n !swiper.params.centeredSlides\n ) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","export default function onScroll() {\n const swiper = this;\n const { wrapperEl, rtlTranslate, enabled } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { getDocument } from 'ssr-window';\n\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const { params, touchEvents, el, wrapperEl, device, support } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener =\n touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](\n touchEvents.move,\n swiper.onTouchMove,\n support.passiveListener ? { passive: false, capture } : capture,\n );\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](\n device.ios || device.android\n ? 'resize orientationchange observerUpdate'\n : 'resize observerUpdate',\n onResize,\n true,\n );\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const { params, support } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const { activeIndex, initialized, loopedSlides = 0, params, $el } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(\n `${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`,\n );\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n if (\n (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column') ||\n (!breakpointParams.grid.fill && params.grid.fill === 'column')\n ) {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n const directionChanged =\n breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop =\n params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n\n const isEnabled = swiper.params.enabled;\n\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || (base === 'container' && !containerEl)) return undefined;\n let breakpoint = false;\n\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\n\nexport default { setBreakpoint, getBreakpoint };\n","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach((item) => {\n if (typeof item === 'object') {\n Object.keys(item).forEach((classNames) => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const { classNames, params, rtl, $el, device, support } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses([\n 'initialized',\n params.direction,\n { 'pointer-events': !support.touch },\n { 'free-mode': swiper.params.freeMode && params.freeMode.enabled },\n { 'autoheight': params.autoHeight },\n { 'rtl': rtl },\n { 'grid': params.grid && params.grid.rows > 1 },\n { 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' },\n { 'android': device.android },\n { 'ios': device.ios },\n { 'css-mode': params.cssMode },\n { 'centered': params.cssMode && params.centeredSlides },\n ], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}\n","export default function removeClasses() {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}\n","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\n\nexport default { addClasses, removeClasses };\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n function onReady() {\n if (callback) callback();\n }\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady,\n );\n }\n}\n","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","function checkOverflow() {\n const swiper = this;\n const { isLocked: wasLocked, params } = swiper;\n const { slidesOffsetBefore } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge =\n swiper.slidesGrid[lastSlideIndex] +\n swiper.slidesSizesGrid[lastSlideIndex] +\n slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n\n // Overrides\n width: null,\n height: null,\n\n //\n preventInteractionOnTransition: false,\n\n // ssr\n userAgent: null,\n url: null,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n\n // Internals\n _emitClasses: false,\n};\n","import { extend } from '../shared/utils.js';\n\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (\n ['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 &&\n params[moduleParamName] === true\n ) {\n params[moduleParamName] = { auto: true };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n extend(allModulesParams, obj);\n };\n}\n","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\n\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\n\nimport eventsEmitter from './events-emitter.js';\n\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\n\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\n\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n if (\n args.length === 1 &&\n args[0].constructor &&\n Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object'\n ) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each((containerEl) => {\n const newParams = extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({ userAgent: params.userAgent });\n swiper.browser = getBrowser();\n\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n\n swiper.modules.forEach((mod) => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper),\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach((eventName) => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Save Dom lib\n swiper.$ = $;\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return swiper.support.touch || !swiper.params.simulateTouch\n ? swiper.touchEventsTouch\n : swiper.touchEventsDesktop;\n })(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n });\n\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter((className) => {\n return (\n className.indexOf('swiper') === 0 ||\n className.indexOf(swiper.params.containerModifierClass) === 0\n );\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n\n return slideEl.className\n .split(' ')\n .filter((className) => {\n return (\n className.indexOf('swiper-slide') === 0 ||\n className.indexOf(swiper.params.slideClass) === 0\n );\n })\n .join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each((slideEl) => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({ slideEl, classNames });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const { params, slides, slidesGrid, slidesSizesGrid, size: swiperSize, activeIndex } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact\n ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize\n : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(\n Math.max(translateValue, swiper.maxTranslate()),\n swiper.minTranslate(),\n );\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if (\n (swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.params.centeredSlides\n ) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (\n newDirection === currentDirection ||\n (newDirection !== 'horizontal' && newDirection !== 'vertical')\n ) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector()));\n // Children needs to return slot items\n res.children = (options) => $el.children(options);\n return res;\n }\n return $el.children(getWrapperSelector());\n };\n // Find Wrapper\n let $wrapperEl = getWrapper();\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each((slideEl) => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate:\n swiper.params.direction === 'horizontal' &&\n (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n });\n\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(\n swiper.params.initialSlide + swiper.loopedSlides,\n 0,\n swiper.params.runCallbacksOnInit,\n false,\n true,\n );\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const { params, $el, $wrapperEl, slides } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass(\n [\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '),\n )\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach((m) => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\n\nObject.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\n\nSwiper.use([Resize, Observer]);\n\nexport default Swiper;\n","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\n\nexport default function Virtual({ swiper, extendParams, on }) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n });\n\n let cssModeTimeout;\n\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: [],\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(\n `
${slide}
`,\n );\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset,\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n })(),\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl\n .find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`)\n .remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes\n .sort((a, b) => b - a)\n .forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr(\n 'data-swiper-slide-index',\n parseInt(cachedElIndex, 10) + numberOfNewSlides,\n );\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Keyboard({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false,\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true,\n },\n });\n\n function handle(event) {\n if (!swiper.enabled) return;\n\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n ((swiper.isHorizontal() && isArrowRight) ||\n (swiper.isVertical() && isArrowDown) ||\n isPageDown)\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n ((swiper.isHorizontal() && isArrowLeft) || (swiper.isVertical() && isArrowUp) || isPageUp)\n ) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (\n document.activeElement &&\n document.activeElement.nodeName &&\n (document.activeElement.nodeName.toLowerCase() === 'input' ||\n document.activeElement.nodeName.toLowerCase() === 'textarea')\n ) {\n return undefined;\n }\n if (\n swiper.params.keyboard.onlyInViewport &&\n (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)\n ) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (\n swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 &&\n swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0\n ) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiperWidth, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiperHeight],\n [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl))\n swiper.slideNext();\n if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl))\n swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n\n Object.assign(swiper.keyboard, {\n enable,\n disable,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\n\nexport default function Mousewheel({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n },\n });\n\n swiper.mousewheel = {\n enabled: false,\n };\n\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (\n swiper.params.mousewheel.thresholdDelta &&\n newEvent.delta < swiper.params.mousewheel.thresholdDelta\n ) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (\n swiper.params.mousewheel.thresholdTime &&\n now() - lastScrollTime < swiper.params.mousewheel.thresholdTime\n ) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges)\n return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n else return true;\n } else {\n delta =\n Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop\n ? true\n : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (\n newEvent.direction !== prevEvent.direction ||\n newEvent.delta > prevEvent.delta ||\n newEvent.time > prevEvent.time + 150\n ) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n };\n const ignoreWheelEvents =\n lastEventBeforeSnap &&\n newEvent.time < lastEventBeforeSnap.time + 500 &&\n newEvent.delta <= lastEventBeforeSnap.delta &&\n newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (\n prevEvent &&\n (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)\n ) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (\n recentWheelEvents.length >= 15 &&\n newEvent.time - firstEvent.time < 500 &&\n firstEvent.delta - newEvent.delta >= 1 &&\n newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction)\n swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n\n Object.assign(swiper.mousewheel, {\n enable,\n disable,\n });\n}\n","import { getDocument } from 'ssr-window';\n\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach((key) => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Navigation({ swiper, extendParams, on, emit }) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n });\n\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null,\n };\n\n function getEl(el) {\n let $el;\n if (el) {\n $el = $(el);\n if (\n swiper.params.uniqueNavElements &&\n typeof el === 'string' &&\n $el.length > 1 &&\n swiper.$el.find(el).length === 1\n ) {\n $el = swiper.$el.find(el);\n }\n }\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n toggleEl($prevEl, swiper.isBeginning);\n toggleEl($nextEl, swiper.isEnd);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n }\n function init() {\n const params = swiper.params.navigation;\n\n swiper.params.navigation = createElementIfNotDefined(\n swiper,\n swiper.originalParams.navigation,\n swiper.params.navigation,\n {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev',\n },\n );\n if (!(params.nextEl || params.prevEl)) return;\n\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n function destroy() {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n init();\n update();\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const { $nextEl, $prevEl } = swiper.navigation;\n const targetEl = e.target;\n if (\n swiper.params.navigation.hideOnClick &&\n !$(targetEl).is($prevEl) &&\n !$(targetEl).is($nextEl)\n ) {\n if (\n swiper.pagination &&\n swiper.params.pagination &&\n swiper.params.pagination.clickable &&\n (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))\n )\n return;\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n Object.assign(swiper.navigation, {\n update,\n init,\n destroy,\n });\n}\n","export default function classesToSelector(classes = '') {\n return `.${classes\n .trim()\n .replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Pagination({ swiper, extendParams, on, emit }) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n },\n });\n\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: [],\n };\n\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return (\n !swiper.params.pagination.el ||\n !swiper.pagination.el ||\n !swiper.pagination.$el ||\n swiper.pagination.$el.length === 0\n );\n }\n\n function setSideBullets($bulletEl, position) {\n const { bulletActiveClass } = swiper.params.pagination;\n $bulletEl[position]()\n .addClass(`${bulletActiveClass}-${position}`)\n [position]()\n .addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil(\n (swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup,\n );\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (\n params.type === 'bullets' &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length > 0\n ) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(\n swiper.isHorizontal() ? 'width' : 'height',\n `${bulletSize * (params.dynamicMainBullets + 4)}px`,\n );\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - swiper.previousIndex;\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(\n ['', '-next', '-next-next', '-prev', '-prev-prev', '-main']\n .map((suffix) => `${params.bulletActiveClass}${suffix}`)\n .join(' '),\n );\n if ($el.length > 1) {\n bullets.each((bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets\n .eq(bullets.length - params.dynamicMainBullets - 1)\n .addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset =\n (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el\n .find(classesToSelector(params.currentClass))\n .text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el\n .find(classesToSelector(params.progressbarFillClass))\n .transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`)\n .transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.loop &&\n numberOfBullets > slidesLength\n ) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML =\n `` +\n ' / ' +\n ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(\n swiper,\n swiper.originalParams.pagination,\n swiper.params.pagination,\n { el: 'swiper-pagination' },\n );\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el);\n // check if it belongs to another nested Swiper\n if ($el.length > 1) {\n $el = $el.filter((el) => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(params.modifierClass + swiper.params.direction);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0],\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(params.modifierClass + swiper.params.direction);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass)\n swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n init();\n render();\n update();\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $el } = swiper.pagination;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const { $el } = swiper.pagination;\n if (\n swiper.params.pagination.el &&\n swiper.params.pagination.hideOnClick &&\n $el.length > 0 &&\n !$(targetEl).hasClass(swiper.params.pagination.bulletClass)\n ) {\n if (\n swiper.navigation &&\n ((swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) ||\n (swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl))\n )\n return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n Object.assign(swiper.pagination, {\n render,\n update,\n init,\n destroy,\n });\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Scrollbar({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n });\n\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null,\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const { $dragEl, $el } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n divider =\n swiper.size /\n (swiper.virtualSize +\n swiper.params.slidesOffsetBefore -\n (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](\n swiper.params.scrollbar.lockClass,\n );\n }\n }\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientX\n : e.clientX;\n }\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientY\n : e.clientY;\n }\n function setDragPosition(e) {\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const { $el } = scrollbar;\n\n let positionRatio;\n positionRatio =\n (getPointerPosition(e) -\n $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] -\n (dragStartPos !== null ? dragStartPos : dragSize / 2)) /\n (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position =\n swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n isTouched = true;\n dragStartPos =\n e.target === $dragEl[0] || e.target === $dragEl\n ? getPointerPosition(e) -\n e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top']\n : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n\n clearTimeout(dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const { scrollbar, touchEventsTouch, touchEventsDesktop, params, support } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener =\n support.passiveListener && params.passiveListeners\n ? { passive: false, capture: false }\n : false;\n const passiveListener =\n support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('off');\n }\n function init() {\n const { scrollbar, $el: $swiperEl } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(\n swiper,\n swiper.originalParams.scrollbar,\n swiper.params.scrollbar,\n { el: 'swiper-scrollbar' },\n );\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n\n let $el = $(params.el);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.el === 'string' &&\n $el.length > 1 &&\n $swiperEl.find(params.el).length === 1\n ) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n function destroy() {\n disableDraggable();\n }\n\n on('init', () => {\n init();\n updateSize();\n setTranslate();\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const { $el } = swiper.scrollbar;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n Object.assign(swiper.scrollbar, {\n updateSize,\n setTranslate,\n init,\n destroy,\n });\n}\n","import $ from '../../shared/dom.js';\n\nexport default function Parallax({ swiper, extendParams, on }) {\n extendParams({\n parallax: {\n enabled: false,\n },\n });\n\n const setTransform = (el, progress) => {\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n };\n\n const setTranslate = () => {\n const { $el, slides, progress, snapGrid } = swiper;\n $el\n .children(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl)\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = (duration = swiper.params.speed) => {\n const { $el } = swiper;\n $el\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration =\n parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n };\n\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\n\nexport default function Zoom({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n });\n\n swiper.zoom = {\n enabled: false,\n };\n\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n };\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n\n // Events\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n if (\n e.type !== 'touchend' ||\n (e.type === 'touchend' && e.changedTouches.length < 2 && !device.android)\n ) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl\n .transition(swiper.params.speed)\n .transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (\n swiper.isHorizontal() &&\n ((Math.floor(image.minX) === Math.floor(image.startX) &&\n image.touchesCurrent.x < image.touchesStart.x) ||\n (Math.floor(image.maxX) === Math.floor(image.startX) &&\n image.touchesCurrent.x > image.touchesStart.x))\n ) {\n image.isTouched = false;\n return;\n }\n if (\n !swiper.isHorizontal() &&\n ((Math.floor(image.minY) === Math.floor(image.startY) &&\n image.touchesCurrent.y < image.touchesStart.y) ||\n (Math.floor(image.maxY) === Math.floor(image.startY) &&\n image.touchesCurrent.y > image.touchesStart.y))\n ) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x =\n (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y =\n (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0)\n momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0)\n momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl\n .transition(momentumDuration)\n .transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl\n .transition(300)\n .transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n const activeListenerWithCapture = support.passiveListener\n ? { passive: false, capture: true }\n : true;\n return { passiveListener, activeListenerWithCapture };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const { passiveListener } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (\n !swiper.animating &&\n swiper.params.zoom.enabled &&\n swiper.zoom.enabled &&\n swiper.params.zoom.toggle\n ) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle,\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Lazy({ swiper, extendParams, on, emit }) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n });\n\n swiper.lazy = {};\n\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(\n `.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`,\n )\n : swiper.slides.eq(index);\n\n const $images = $slideEl.find(\n `.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`,\n );\n if (\n $slideEl.hasClass(params.elementClass) &&\n !$slideEl.hasClass(params.loadedClass) &&\n !$slideEl.hasClass(params.loadingClass)\n ) {\n $images.push($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (\n typeof swiper === 'undefined' ||\n swiper === null ||\n !swiper ||\n (swiper && !swiper.params) ||\n swiper.destroyed\n )\n return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if ($pictureEl.length) {\n $pictureEl.children('source').each((sourceEl) => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(\n `[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`,\n );\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(\n `.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`,\n );\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const { $wrapperEl, params: swiperParams, slides, activeIndex } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if (\n $wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n .length\n ) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement\n ? $(swiper.params.lazy.scrollingElement)\n : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const { rtlTranslate: rtl } = swiper;\n\n let inView = false;\n\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 &&\n point[0] <= scrollElementWidth &&\n point[1] >= 0 &&\n point[1] <= scrollElementHeight\n ) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n swiper.support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.freeMode.sticky\n ) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (\n swiper.params.lazy.loadOnTransitionStart ||\n (!swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded)\n ) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const { lazy, cssMode, watchSlidesProgress, touchReleaseOnEdges, resistanceRatio } =\n swiper.params;\n if (\n lazy.enabled &&\n (cssMode || (watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0)))\n ) {\n load();\n }\n });\n\n Object.assign(swiper.lazy, {\n load,\n loadInSlide,\n });\n}\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Controller({ swiper, extendParams, on }) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n });\n\n swiper.controller = {\n control: undefined,\n };\n\n function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = (maxIndex + minIndex) >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n })();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (\n ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]\n );\n };\n return this;\n }\n // xxx: for now i will just save one spline function to to\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier =\n (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition,\n });\n}\n","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\n\nexport default function A11y({ swiper, extendParams, on }) {\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n },\n });\n\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n function addElId($el, id) {\n $el.attr('id', id);\n }\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (\n swiper.pagination &&\n $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))\n ) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return (\n swiper.pagination &&\n swiper.params.pagination.clickable &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length\n );\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (hasPagination()) {\n swiper.pagination.bullets.each((bulletEl) => {\n const $bulletEl = $(bulletEl);\n makeElFocusable($bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel(\n $bulletEl,\n params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1),\n );\n }\n });\n }\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n function init() {\n const params = swiper.params.a11y;\n\n swiper.$el.append(liveRegion);\n\n // Container\n const $containerEl = swiper.$el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n }\n\n // Wrapper\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live);\n\n // Slide\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n addElRole($(swiper.slides), params.slideRole);\n\n const slidesLength = swiper.params.loop\n ? swiper.slides.filter((el) => !el.classList.contains(swiper.params.slideDuplicateClass))\n .length\n : swiper.slides.length;\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop\n ? parseInt($slideEl.attr('data-swiper-slide-index'), 10)\n : index;\n const ariaLabelMessage = params.slideLabelMessage\n .replace(/\\{\\{index\\}\\}/, slideIndex + 1)\n .replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n });\n\n // Navigation\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n }\n\n // Pagination\n if (hasPagination()) {\n swiper.pagination.$el.on(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n }\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n }\n\n // Pagination\n if (hasPagination()) {\n swiper.pagination.$el.off(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n }\n\n on('beforeInit', () => {\n liveRegion = $(\n ``,\n );\n });\n\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n updateNavigation();\n });\n on('toEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('fromEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function History({ swiper, extendParams, on }) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n },\n });\n\n let initialized = false;\n let paths = {};\n\n const slugify = (text) => {\n return text\n .toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n };\n\n const getPathValues = (urlOverride) => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname\n .slice(1)\n .split('/')\n .filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, swiper.paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function HashNavigation({ swiper, extendParams, emit, on }) {\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl\n .children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`)\n .index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n if (\n swiper.params.hashNavigation.replaceState &&\n window.history &&\n window.history.replaceState\n ) {\n window.history.replaceState(\n null,\n null,\n `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '',\n );\n emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (\n !swiper.params.hashNavigation.enabled ||\n (swiper.params.history && swiper.params.history.enabled)\n )\n return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n","/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Autoplay({ swiper, extendParams, on, emit }) {\n let timeout;\n\n swiper.autoplay = {\n running: false,\n paused: false,\n };\n\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false,\n },\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(\n swiper.slides.length - 1,\n swiper.params.speed,\n true,\n true,\n );\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) run();\n else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n function onVisibilityChange() {\n const document = getDocument();\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n swiper.autoplay.paused = false;\n run();\n }\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (\n swiper.params.cssMode &&\n swiper.autoplay.paused &&\n !swiper.params.autoplay.disableOnInteraction\n ) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop,\n });\n}\n","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Thumb({ swiper, extendParams, on }) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs',\n },\n });\n\n let initialized = false;\n let swiperCreated = false;\n\n swiper.thumbs = {\n swiper: null,\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass))\n return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides\n .eq(currentIndex)\n .prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n const nextIndex = swiper.slides\n .eq(currentIndex)\n .nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const { thumbs: thumbsParams } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView =\n thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (\n thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .hasClass(thumbsSwiper.params.slideDuplicateClass)\n ) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex =\n thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (\n thumbsSwiper.visibleSlidesIndexes &&\n thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0\n ) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (\n newThumbsIndex > currentThumbsIndex &&\n thumbsSwiper.params.slidesPerGroup === 1\n ) {\n // newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (\n thumbsSwiper.params.loop ||\n (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)\n ) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl\n .children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`)\n .addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n }\n\n on('beforeInit', () => {\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n if (!swiper.thumbs.swiper) return;\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n });\n\n Object.assign(swiper.thumbs, {\n init,\n update,\n });\n}\n","import { now } from '../../shared/utils.js';\n\nexport default function freeMode({ swiper, extendParams, emit, once }) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02,\n },\n });\n\n function onTouchMove() {\n const { touchEventsData: data, touches } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now(),\n });\n }\n\n function onTouchEnd({ currentPos }) {\n const { params, $wrapperEl, rtlTranslate: rtl, snapGrid, touchEventsData: data } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (\n Math.abs(snapGrid[nextSlide] - newPosition) <\n Math.abs(snapGrid[nextSlide - 1] - newPosition) ||\n swiper.swipeDirection === 'next'\n ) {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchMove,\n onTouchEnd,\n },\n });\n}\n","export default function Grid({ swiper, extendParams }) {\n extendParams({\n grid: {\n rows: 1,\n fill: 'column',\n },\n });\n\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n\n const initSlides = (slidesLength) => {\n const { slidesPerView } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const { slidesPerGroup, spaceBetween } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup =\n groupIndex === 0\n ? slidesPerGroup\n : Math.min(\n Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows),\n slidesPerGroup,\n );\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n\n newSlideOrderIndex = column + (row * slidesNumberEvenToRows) / rows;\n slide.css({\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || (column === numFullColumns && row === rows - 1)) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.css(\n getDirectionLabel('margin-top'),\n row !== 0 ? spaceBetween && `${spaceBetween}px` : '',\n );\n };\n\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const { spaceBetween, centeredSlides, roundLengths } = swiper.params;\n const { rows } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.$wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`,\n });\n if (centeredSlides) {\n snapGrid.splice(0, snapGrid.length);\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.push(...newSlidesGrid);\n }\n };\n\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize,\n };\n}\n","export default function appendSlide(slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n}\n","export default function prependSlide(slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","export default function addSlide(index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex =\n activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeAllSlides() {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\n\nexport default function Manipulation({ swiper }) {\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper),\n });\n}\n","export default function effectInit(params) {\n const { effect, swiper, on, setTranslate, setTransition, overwriteParams, perspective } = params;\n\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n}\n","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden',\n });\n }\n return $slideEl;\n}\n","export default function effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides }) {\n const { slides, activeIndex, $wrapperEl } = swiper;\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl\n ? slides.eq(activeIndex).find(transformEl)\n : slides.eq(activeIndex);\n }\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}\n","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFade({ swiper, extendParams, on }) {\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\n\nexport default function EffectCube({ swiper, extendParams, on }) {\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n });\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${\n isHorizontal ? slideAngle : 0\n }deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(\n `
`,\n );\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(\n `
`,\n );\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(\n `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${\n -swiperWidth / 2\n }px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`,\n );\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier =\n 1.5 -\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2 +\n Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(\n `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${\n -swiperHeight / 2 / scale2\n }px) rotateX(-90deg)`,\n );\n }\n }\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(\n `translate3d(0px,0,${zFactor}px) rotateX(${\n swiper.isHorizontal() ? 0 : wrapperRotate\n }deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`,\n );\n };\n const setTransition = (duration) => {\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n }),\n });\n}\n","import $ from './dom.js';\n\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`
`);\n $shadowContainer.append($shadowEl);\n }\n return $shadowEl;\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFlip({ swiper, extendParams, on }) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides, rtlTranslate: rtl } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\n\nexport default function EffectCoverflow({ swiper, extendParams, on }) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { width: swiperWidth, height: swiperHeight, slides, slidesSizesGrid } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier =\n ((center - slideOffset - slideSize / 2) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = (parseFloat(params.stretch) / 100) * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if ($shadowBeforeEl.length)\n $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length)\n $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCreative({ swiper, extendParams, on }) {\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n },\n });\n\n const getTranslateValue = (value) => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const { slides, $wrapperEl, slidesSizesGrid } = swiper;\n const params = swiper.params.creativeEffect;\n const { progressMultiplier: multiplier } = params;\n\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(\n Math.max($slideEl[0].progress, -params.limitProgress),\n params.limitProgress,\n );\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(\n Math.max($slideEl[0].originalProgress, -params.limitProgress),\n params.limitProgress,\n );\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1,\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(\n progress * multiplier,\n )}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString =\n originalProgress < 0\n ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})`\n : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString =\n originalProgress < 0\n ? 1 + (1 - data.opacity) * originalProgress * multiplier\n : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if ((custom && data.shadow) || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress\n ? progress * (1 / params.limitProgress)\n : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({ opacity: opacityString });\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCards({ swiper, extendParams, on }) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides, activeIndex } = swiper;\n const params = swiper.params.cardsEffect;\n const { startTranslate, isTouched } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -2 * progress;\n\n let tXAdd = 8 - Math.abs(progress) * 0.75;\n\n const isSwipeToNext =\n (i === activeIndex || i === activeIndex - 1) &&\n progress > 0 &&\n progress < 1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate < startTranslate;\n const isSwipeToPrev =\n (i === activeIndex || i === activeIndex + 1) &&\n progress < 0 &&\n progress > -1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString =\n progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${rotate}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length)\n $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","// Swiper Class\nimport Swiper from './core/core.js';\n\n//IMPORT_MODULES\n\nconst modules = [\n //INSTALL_MODULES\n];\n\nSwiper.use(modules);\n\n//EXPORT\n"]} \ No newline at end of file diff --git a/resources/web/guide/swiper/swiper-bundle.esm.js b/resources/web/guide/swiper/swiper-bundle.esm.js deleted file mode 100644 index 53bcad1751..0000000000 --- a/resources/web/guide/swiper/swiper-bundle.esm.js +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Swiper 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -import Swiper from './core/core.js'; -export { default as Swiper, default } from './core/core.js'; -import Virtual from './modules/virtual/virtual.js'; -import Keyboard from './modules/keyboard/keyboard.js'; -import Mousewheel from './modules/mousewheel/mousewheel.js'; -import Navigation from './modules/navigation/navigation.js'; -import Pagination from './modules/pagination/pagination.js'; -import Scrollbar from './modules/scrollbar/scrollbar.js'; -import Parallax from './modules/parallax/parallax.js'; -import Zoom from './modules/zoom/zoom.js'; -import Lazy from './modules/lazy/lazy.js'; -import Controller from './modules/controller/controller.js'; -import A11y from './modules/a11y/a11y.js'; -import History from './modules/history/history.js'; -import HashNavigation from './modules/hash-navigation/hash-navigation.js'; -import Autoplay from './modules/autoplay/autoplay.js'; -import Thumbs from './modules/thumbs/thumbs.js'; -import FreeMode from './modules/free-mode/free-mode.js'; -import Grid from './modules/grid/grid.js'; -import Manipulation from './modules/manipulation/manipulation.js'; -import EffectFade from './modules/effect-fade/effect-fade.js'; -import EffectCube from './modules/effect-cube/effect-cube.js'; -import EffectFlip from './modules/effect-flip/effect-flip.js'; -import EffectCoverflow from './modules/effect-coverflow/effect-coverflow.js'; -import EffectCreative from './modules/effect-creative/effect-creative.js'; -import EffectCards from './modules/effect-cards/effect-cards.js'; - -// Swiper Class -const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, Controller, A11y, History, HashNavigation, Autoplay, Thumbs, FreeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; -Swiper.use(modules); diff --git a/resources/web/guide/swiper/swiper-bundle.js b/resources/web/guide/swiper/swiper-bundle.js deleted file mode 100644 index c7c191e3ef..0000000000 --- a/resources/web/guide/swiper/swiper-bundle.js +++ /dev/null @@ -1,10068 +0,0 @@ -/** - * Swiper 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Swiper = factory()); -}(this, (function () { 'use strict'; - - /** - * SSR Window 4.0.1 - * Better handling for window object in SSR environment - * https://github.com/nolimits4web/ssr-window - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: October 27, 2021 - */ - - /* 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 = {}) { - Object.keys(src).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; - } - - /** - * Dom7 4.0.1 - * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API - * https://framework7.io/docs/dom7.html - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: October 27, 2021 - */ - /* eslint-disable no-proto */ - - function makeReactive(obj) { - const proto = obj.__proto__; - Object.defineProperty(obj, '__proto__', { - get() { - return proto; - }, - - set(value) { - proto.__proto__ = value; - } - - }); - } - - class Dom7 extends Array { - constructor(items) { - super(...(items || [])); - makeReactive(this); - } - - } - - function arrayFlat(arr = []) { - const res = []; - arr.forEach(el => { - if (Array.isArray(el)) { - res.push(...arrayFlat(el)); - } else { - res.push(el); - } - }); - return res; - } - - function arrayFilter(arr, callback) { - return Array.prototype.filter.call(arr, callback); - } - - function arrayUnique(arr) { - const uniqueArray = []; - - for (let i = 0; i < arr.length; i += 1) { - if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]); - } - - return uniqueArray; - } - - - function qsa(selector, context) { - if (typeof selector !== 'string') { - return [selector]; - } - - const a = []; - const res = context.querySelectorAll(selector); - - for (let i = 0; i < res.length; i += 1) { - a.push(res[i]); - } - - return a; - } - - function $(selector, context) { - const window = getWindow(); - const document = getDocument(); - let arr = []; - - if (!context && selector instanceof Dom7) { - return selector; - } - - if (!selector) { - return new Dom7(arr); - } - - if (typeof selector === 'string') { - const html = selector.trim(); - - if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { - let toCreate = 'div'; - if (html.indexOf(' c.split(' '))); - this.forEach(el => { - el.classList.add(...classNames); - }); - return this; - } - - function removeClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - this.forEach(el => { - el.classList.remove(...classNames); - }); - return this; - } - - function toggleClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - this.forEach(el => { - classNames.forEach(className => { - el.classList.toggle(className); - }); - }); - } - - function hasClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - return arrayFilter(this, el => { - return classNames.filter(className => el.classList.contains(className)).length > 0; - }).length > 0; - } - - function attr(attrs, value) { - if (arguments.length === 1 && typeof attrs === 'string') { - // Get attr - if (this[0]) return this[0].getAttribute(attrs); - return undefined; - } // Set attrs - - - for (let i = 0; i < this.length; i += 1) { - if (arguments.length === 2) { - // String - this[i].setAttribute(attrs, value); - } else { - // Object - for (const attrName in attrs) { - this[i][attrName] = attrs[attrName]; - this[i].setAttribute(attrName, attrs[attrName]); - } - } - } - - return this; - } - - function removeAttr(attr) { - for (let i = 0; i < this.length; i += 1) { - this[i].removeAttribute(attr); - } - - return this; - } - - function transform(transform) { - for (let i = 0; i < this.length; i += 1) { - this[i].style.transform = transform; - } - - return this; - } - - function transition$1(duration) { - for (let i = 0; i < this.length; i += 1) { - this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration; - } - - return this; - } - - function on(...args) { - let [eventType, targetSelector, listener, capture] = args; - - if (typeof args[1] === 'function') { - [eventType, listener, capture] = args; - targetSelector = undefined; - } - - if (!capture) capture = false; - - function handleLiveEvent(e) { - const target = e.target; - if (!target) return; - const eventData = e.target.dom7EventData || []; - - if (eventData.indexOf(e) < 0) { - eventData.unshift(e); - } - - if ($(target).is(targetSelector)) listener.apply(target, eventData);else { - const parents = $(target).parents(); // eslint-disable-line - - for (let k = 0; k < parents.length; k += 1) { - if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData); - } - } - } - - function handleEvent(e) { - const eventData = e && e.target ? e.target.dom7EventData || [] : []; - - if (eventData.indexOf(e) < 0) { - eventData.unshift(e); - } - - listener.apply(this, eventData); - } - - const events = eventType.split(' '); - let j; - - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (!targetSelector) { - for (j = 0; j < events.length; j += 1) { - const event = events[j]; - if (!el.dom7Listeners) el.dom7Listeners = {}; - if (!el.dom7Listeners[event]) el.dom7Listeners[event] = []; - el.dom7Listeners[event].push({ - listener, - proxyListener: handleEvent - }); - el.addEventListener(event, handleEvent, capture); - } - } else { - // Live events - for (j = 0; j < events.length; j += 1) { - const event = events[j]; - if (!el.dom7LiveListeners) el.dom7LiveListeners = {}; - if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = []; - el.dom7LiveListeners[event].push({ - listener, - proxyListener: handleLiveEvent - }); - el.addEventListener(event, handleLiveEvent, capture); - } - } - } - - return this; - } - - function off(...args) { - let [eventType, targetSelector, listener, capture] = args; - - if (typeof args[1] === 'function') { - [eventType, listener, capture] = args; - targetSelector = undefined; - } - - if (!capture) capture = false; - const events = eventType.split(' '); - - for (let i = 0; i < events.length; i += 1) { - const event = events[i]; - - for (let j = 0; j < this.length; j += 1) { - const el = this[j]; - let handlers; - - if (!targetSelector && el.dom7Listeners) { - handlers = el.dom7Listeners[event]; - } else if (targetSelector && el.dom7LiveListeners) { - handlers = el.dom7LiveListeners[event]; - } - - if (handlers && handlers.length) { - for (let k = handlers.length - 1; k >= 0; k -= 1) { - const handler = handlers[k]; - - if (listener && handler.listener === listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } else if (!listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } - } - } - } - } - - return this; - } - - function trigger(...args) { - const window = getWindow(); - const events = args[0].split(' '); - const eventData = args[1]; - - for (let i = 0; i < events.length; i += 1) { - const event = events[i]; - - for (let j = 0; j < this.length; j += 1) { - const el = this[j]; - - if (window.CustomEvent) { - const evt = new window.CustomEvent(event, { - detail: eventData, - bubbles: true, - cancelable: true - }); - el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0); - el.dispatchEvent(evt); - el.dom7EventData = []; - delete el.dom7EventData; - } - } - } - - return this; - } - - function transitionEnd$1(callback) { - const dom = this; - - function fireCallBack(e) { - if (e.target !== this) return; - callback.call(this, e); - dom.off('transitionend', fireCallBack); - } - - if (callback) { - dom.on('transitionend', fireCallBack); - } - - return this; - } - - function outerWidth(includeMargins) { - if (this.length > 0) { - if (includeMargins) { - const styles = this.styles(); - return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left')); - } - - return this[0].offsetWidth; - } - - return null; - } - - function outerHeight(includeMargins) { - if (this.length > 0) { - if (includeMargins) { - const styles = this.styles(); - return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom')); - } - - return this[0].offsetHeight; - } - - return null; - } - - function offset() { - if (this.length > 0) { - const window = getWindow(); - const document = getDocument(); - const el = this[0]; - 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 - }; - } - - return null; - } - - function styles() { - const window = getWindow(); - if (this[0]) return window.getComputedStyle(this[0], null); - return {}; - } - - function css(props, value) { - const window = getWindow(); - let i; - - if (arguments.length === 1) { - if (typeof props === 'string') { - // .css('width') - if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props); - } else { - // .css({ width: '100px' }) - for (i = 0; i < this.length; i += 1) { - for (const prop in props) { - this[i].style[prop] = props[prop]; - } - } - - return this; - } - } - - if (arguments.length === 2 && typeof props === 'string') { - // .css('width', '100px') - for (i = 0; i < this.length; i += 1) { - this[i].style[props] = value; - } - - return this; - } - - return this; - } - - function each(callback) { - if (!callback) return this; - this.forEach((el, index) => { - callback.apply(el, [el, index]); - }); - return this; - } - - function filter(callback) { - const result = arrayFilter(this, callback); - return $(result); - } - - function html(html) { - if (typeof html === 'undefined') { - return this[0] ? this[0].innerHTML : null; - } - - for (let i = 0; i < this.length; i += 1) { - this[i].innerHTML = html; - } - - return this; - } - - function text(text) { - if (typeof text === 'undefined') { - return this[0] ? this[0].textContent.trim() : null; - } - - for (let i = 0; i < this.length; i += 1) { - this[i].textContent = text; - } - - return this; - } - - function is(selector) { - const window = getWindow(); - const document = getDocument(); - const el = this[0]; - let compareWith; - let i; - if (!el || typeof selector === 'undefined') return false; - - if (typeof selector === 'string') { - if (el.matches) return el.matches(selector); - if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector); - if (el.msMatchesSelector) return el.msMatchesSelector(selector); - compareWith = $(selector); - - for (i = 0; i < compareWith.length; i += 1) { - if (compareWith[i] === el) return true; - } - - return false; - } - - if (selector === document) { - return el === document; - } - - if (selector === window) { - return el === window; - } - - if (selector.nodeType || selector instanceof Dom7) { - compareWith = selector.nodeType ? [selector] : selector; - - for (i = 0; i < compareWith.length; i += 1) { - if (compareWith[i] === el) return true; - } - - return false; - } - - return false; - } - - function index() { - let child = this[0]; - 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 eq(index) { - if (typeof index === 'undefined') return this; - const length = this.length; - - if (index > length - 1) { - return $([]); - } - - if (index < 0) { - const returnIndex = length + index; - if (returnIndex < 0) return $([]); - return $([this[returnIndex]]); - } - - return $([this[index]]); - } - - function append(...els) { - let newChild; - const document = getDocument(); - - for (let k = 0; k < els.length; k += 1) { - newChild = els[k]; - - for (let i = 0; i < this.length; i += 1) { - if (typeof newChild === 'string') { - const tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - - while (tempDiv.firstChild) { - this[i].appendChild(tempDiv.firstChild); - } - } else if (newChild instanceof Dom7) { - for (let j = 0; j < newChild.length; j += 1) { - this[i].appendChild(newChild[j]); - } - } else { - this[i].appendChild(newChild); - } - } - } - - return this; - } - - function prepend(newChild) { - const document = getDocument(); - let i; - let j; - - for (i = 0; i < this.length; i += 1) { - if (typeof newChild === 'string') { - const tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - - for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) { - this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); - } - } else if (newChild instanceof Dom7) { - for (j = 0; j < newChild.length; j += 1) { - this[i].insertBefore(newChild[j], this[i].childNodes[0]); - } - } else { - this[i].insertBefore(newChild, this[i].childNodes[0]); - } - } - - return this; - } - - function next(selector) { - if (this.length > 0) { - if (selector) { - if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { - return $([this[0].nextElementSibling]); - } - - return $([]); - } - - if (this[0].nextElementSibling) return $([this[0].nextElementSibling]); - return $([]); - } - - return $([]); - } - - function nextAll(selector) { - const nextEls = []; - let el = this[0]; - if (!el) return $([]); - - while (el.nextElementSibling) { - const next = el.nextElementSibling; // eslint-disable-line - - if (selector) { - if ($(next).is(selector)) nextEls.push(next); - } else nextEls.push(next); - - el = next; - } - - return $(nextEls); - } - - function prev(selector) { - if (this.length > 0) { - const el = this[0]; - - if (selector) { - if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { - return $([el.previousElementSibling]); - } - - return $([]); - } - - if (el.previousElementSibling) return $([el.previousElementSibling]); - return $([]); - } - - return $([]); - } - - function prevAll(selector) { - const prevEls = []; - let el = this[0]; - if (!el) return $([]); - - while (el.previousElementSibling) { - const prev = el.previousElementSibling; // eslint-disable-line - - if (selector) { - if ($(prev).is(selector)) prevEls.push(prev); - } else prevEls.push(prev); - - el = prev; - } - - return $(prevEls); - } - - function parent(selector) { - const parents = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - if (this[i].parentNode !== null) { - if (selector) { - if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode); - } else { - parents.push(this[i].parentNode); - } - } - } - - return $(parents); - } - - function parents(selector) { - const parents = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - let parent = this[i].parentNode; // eslint-disable-line - - while (parent) { - if (selector) { - if ($(parent).is(selector)) parents.push(parent); - } else { - parents.push(parent); - } - - parent = parent.parentNode; - } - } - - return $(parents); - } - - function closest(selector) { - let closest = this; // eslint-disable-line - - if (typeof selector === 'undefined') { - return $([]); - } - - if (!closest.is(selector)) { - closest = closest.parents(selector).eq(0); - } - - return closest; - } - - function find(selector) { - const foundElements = []; - - for (let i = 0; i < this.length; i += 1) { - const found = this[i].querySelectorAll(selector); - - for (let j = 0; j < found.length; j += 1) { - foundElements.push(found[j]); - } - } - - return $(foundElements); - } - - function children(selector) { - const children = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - const childNodes = this[i].children; - - for (let j = 0; j < childNodes.length; j += 1) { - if (!selector || $(childNodes[j]).is(selector)) { - children.push(childNodes[j]); - } - } - } - - return $(children); - } - - function remove() { - for (let i = 0; i < this.length; i += 1) { - if (this[i].parentNode) this[i].parentNode.removeChild(this[i]); - } - - return this; - } - - const Methods = { - addClass, - removeClass, - hasClass, - toggleClass, - attr, - removeAttr, - transform, - transition: transition$1, - on, - off, - trigger, - transitionEnd: transitionEnd$1, - outerWidth, - outerHeight, - styles, - offset, - css, - each, - html, - text, - is, - index, - eq, - append, - prepend, - next, - nextAll, - prev, - prevAll, - parent, - parents, - closest, - find, - children, - filter, - remove - }; - Object.keys(Methods).forEach(methodName => { - Object.defineProperty($.fn, methodName, { - value: Methods[methodName], - writable: true - }); - }); - - 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]); - const noExtend = ['__proto__', 'constructor', 'prototype']; - - 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 => noExtend.indexOf(key) < 0); - - 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(); - } - - let support; - - function calcSupport() { - const window = getWindow(); - const document = getDocument(); - return { - smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style, - touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch), - passiveListener: function checkPassiveListener() { - let supportsPassive = false; - - try { - const opts = Object.defineProperty({}, 'passive', { - // eslint-disable-next-line - get() { - supportsPassive = true; - } - - }); - window.addEventListener('testPassiveListener', null, opts); - } catch (e) {// No support - } - - return supportsPassive; - }(), - gestures: function checkGestures() { - return 'ongesturestart' in window; - }() - }; - } - - 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).*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(); - - function isSafari() { - const ua = window.navigator.userAgent.toLowerCase(); - return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; - } - - return { - isSafari: isSafari(), - isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) - }; - } - - function getBrowser() { - if (!browser) { - browser = calcBrowser(); - } - - return browser; - } - - function Resize({ - swiper, - on, - emit - }) { - const window = getWindow(); - let observer = 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 => { - 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 (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 (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: 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 = swiper.$el.parents(); - - for (let i = 0; i < containerParents.length; i += 1) { - attach(containerParents[i]); - } - } // Observe container - - - attach(swiper.$el[0], { - childList: swiper.params.observeSlideChildren - }); // Observe wrapper - - attach(swiper.$wrapperEl[0], { - 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 (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 (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 (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.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) 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) 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[0].clientWidth; - } - - if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { - height = swiper.params.height; - } else { - height = $el[0].clientHeight; - } - - if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { - return; - } // Subtract paddings - - - width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10); - height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('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 getDirectionLabel(property) { - if (swiper.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]; - } - - function getDirectionPropertyValue(node, label) { - return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0); - } - - const params = swiper.params; - const { - $wrapperEl, - size: swiperSize, - rtlTranslate: rtl, - wrongRTL - } = swiper; - const isVirtual = swiper.virtual && params.virtual.enabled; - const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; - const slides = $wrapperEl.children(`.${swiper.params.slideClass}`); - 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; - 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; - } - - swiper.virtualSize = -spaceBetween; // reset margins - - if (rtl) slides.css({ - marginLeft: '', - marginBottom: '', - marginTop: '' - });else slides.css({ - marginRight: '', - marginBottom: '', - marginTop: '' - }); // reset cssMode offsets - - if (params.centeredSlides && params.cssMode) { - setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', ''); - setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', ''); - } - - const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; - - if (gridEnabled) { - swiper.grid.initSlides(slidesLength); - } // 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.eq(i); - - if (gridEnabled) { - swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel); - } - - if (slide.css('display') === 'none') continue; // eslint-disable-line - - if (params.slidesPerView === 'auto') { - if (shouldResetSlideSize) { - slides[i].style[getDirectionLabel('width')] = ``; - } - - const slideStyles = getComputedStyle(slide[0]); - const currentTransform = slide[0].style.transform; - const currentWebKitTransform = slide[0].style.webkitTransform; - - if (currentTransform) { - slide[0].style.transform = 'none'; - } - - if (currentWebKitTransform) { - slide[0].style.webkitTransform = 'none'; - } - - if (params.roundLengths) { - slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(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[0]; - slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); - } - } - - if (currentTransform) { - slide[0].style.transform = currentTransform; - } - - if (currentWebKitTransform) { - slide[0].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 (slides[i]) { - slides[i].style[getDirectionLabel('width')] = `${slideSize}px`; - } - } - - if (slides[i]) { - slides[i].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.css({ - width: `${swiper.virtualSize + params.spaceBetween}px` - }); - } - - if (params.setWrapperSize) { - $wrapperEl.css({ - [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px` - }); - } - - if (gridEnabled) { - swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel); - } // Remove last grid elements depending on width - - - if (!params.centeredSlides) { - const newSlidesGrid = []; - - for (let i = 0; i < snapGrid.length; i += 1) { - let slidesGridItem = snapGrid[i]; - if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); - - if (snapGrid[i] <= swiper.virtualSize - swiperSize) { - newSlidesGrid.push(slidesGridItem); - } - } - - snapGrid = newSlidesGrid; - - if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { - snapGrid.push(swiper.virtualSize - swiperSize); - } - } - - if (snapGrid.length === 0) snapGrid = [0]; - - if (params.spaceBetween !== 0) { - const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight'); - slides.filter((_, slideIndex) => { - if (!params.cssMode) return true; - - if (slideIndex === slides.length - 1) { - return false; - } - - return true; - }).css({ - [key]: `${spaceBetween}px` - }); - } - - if (params.centeredSlides && params.centeredSlidesBounds) { - let allSlidesSize = 0; - slidesSizesGrid.forEach(slideSizeValue => { - allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); - }); - allSlidesSize -= params.spaceBetween; - const maxSnap = allSlidesSize - swiperSize; - 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 + (params.spaceBetween ? params.spaceBetween : 0); - }); - allSlidesSize -= params.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(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); - setCSSProperty(swiper.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(); - } - } - - 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.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0]; - } - - return swiper.slides.eq(index)[0]; - }; // Find slides currently in view - - - if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { - if (swiper.params.centeredSlides) { - swiper.visibleSlides.each(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) swiper.$wrapperEl.css('height', `${newHeight}px`); - } - - function updateSlidesOffset() { - const swiper = this; - const slides = swiper.slides; - - for (let i = 0; i < slides.length; i += 1) { - slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; - } - } - - 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; // Visible Slides - - slides.removeClass(params.slideVisibleClass); - swiper.visibleSlidesIndexes = []; - swiper.visibleSlides = []; - - 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 + params.spaceBetween); - const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween); - const slideBefore = -(offsetCenter - slideOffset); - const slideAfter = slideBefore + 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); - slides.eq(i).addClass(params.slideVisibleClass); - } - - slide.progress = rtl ? -slideProgress : slideProgress; - slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; - } - - swiper.visibleSlides = $(swiper.visibleSlides); - } - - 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 - } = swiper; - const wasBeginning = isBeginning; - const wasEnd = isEnd; - - if (translatesDiff === 0) { - progress = 0; - isBeginning = true; - isEnd = true; - } else { - progress = (translate - swiper.minTranslate()) / translatesDiff; - isBeginning = progress <= 0; - isEnd = progress >= 1; - } - - Object.assign(swiper, { - progress, - 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); - } - - function updateSlidesClasses() { - const swiper = this; - const { - slides, - params, - $wrapperEl, - activeIndex, - realIndex - } = swiper; - const isVirtual = swiper.virtual && params.virtual.enabled; - slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`); - let activeSlide; - - if (isVirtual) { - activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`); - } else { - activeSlide = slides.eq(activeIndex); - } // Active classes - - - activeSlide.addClass(params.slideActiveClass); - - if (params.loop) { - // Duplicate to all looped slides - if (activeSlide.hasClass(params.slideDuplicateClass)) { - $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass); - } else { - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass); - } - } // Next Slide - - - let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass); - - if (params.loop && nextSlide.length === 0) { - nextSlide = slides.eq(0); - nextSlide.addClass(params.slideNextClass); - } // Prev Slide - - - let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass); - - if (params.loop && prevSlide.length === 0) { - prevSlide = slides.eq(-1); - prevSlide.addClass(params.slidePrevClass); - } - - if (params.loop) { - // Duplicate to all looped slides - if (nextSlide.hasClass(params.slideDuplicateClass)) { - $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass); - } else { - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass); - } - - if (prevSlide.hasClass(params.slideDuplicateClass)) { - $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass); - } else { - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass); - } - } - - swiper.emitSlidesClasses(); - } - - function updateActiveIndex(newActiveIndex) { - const swiper = this; - const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; - const { - slidesGrid, - snapGrid, - params, - activeIndex: previousIndex, - realIndex: previousRealIndex, - snapIndex: previousSnapIndex - } = swiper; - let activeIndex = newActiveIndex; - let snapIndex; - - if (typeof activeIndex === 'undefined') { - 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; - } - } - - 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) { - if (snapIndex !== previousSnapIndex) { - swiper.snapIndex = snapIndex; - swiper.emit('snapIndexChange'); - } - - return; - } // Get real index - - - const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10); - Object.assign(swiper, { - snapIndex, - realIndex, - previousIndex, - activeIndex - }); - swiper.emit('activeIndexChange'); - swiper.emit('snapIndexChange'); - - if (previousRealIndex !== realIndex) { - swiper.emit('realIndexChange'); - } - - if (swiper.initialized || swiper.params.runCallbacksOnInit) { - swiper.emit('slideChange'); - } - } - - function updateClickedSlide(e) { - const swiper = this; - const params = swiper.params; - const slide = $(e.target).closest(`.${params.slideClass}`)[0]; - 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).attr('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[0], axis); - if (rtl) currentTranslate = -currentTranslate; - return currentTranslate || 0; - } - - function setTranslate(translate, byController) { - const swiper = this; - const { - rtlTranslate: rtl, - params, - $wrapperEl, - 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); - } - - if (params.cssMode) { - wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; - } else if (!params.virtualTranslate) { - $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`); - } - - swiper.previousTranslate = swiper.translate; - swiper.translate = swiper.isHorizontal() ? x : y; // 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[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); - swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); - swiper.onTranslateToWrapperTransitionEnd = null; - delete swiper.onTranslateToWrapperTransitionEnd; - - if (runCallbacks) { - swiper.emit('transitionEnd'); - } - }; - } - - swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); - swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', 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.transition(duration); - } - - 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 && activeIndex !== previousIndex) { - if (dir === 'reset') { - swiper.emit(`slideResetTransition${step}`); - return; - } - - 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 = this.params.speed, runCallbacks = true, internal, initial) { - if (typeof index !== 'number' && typeof index !== 'string') { - throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`); - } - - if (typeof index === 'string') { - /** - * The `index` argument converted from `string` to `number`. - * @type {number} - */ - const indexAsNumber = parseInt(index, 10); - /** - * Determines whether the `index` argument is a valid `number` - * after being converted from the `string` type. - * @type {boolean} - */ - - const isValidNumber = isFinite(indexAsNumber); - - if (!isValidNumber) { - throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`); - } // Knowing that the converted `index` is a valid number, - // we can update the original argument's value. - - - index = indexAsNumber; - } - - const swiper = this; - let slideIndex = index; - if (slideIndex < 0) slideIndex = 0; - const { - params, - snapGrid, - slidesGrid, - previousIndex, - activeIndex, - rtlTranslate: rtl, - wrapperEl, - enabled - } = swiper; - - if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) { - return false; - } - - 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; - - if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { - swiper.emit('beforeSlideChangeStart'); - } - - const translate = -snapGrid[snapIndex]; // Update progress - - swiper.updateProgress(translate); // 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 && translate < swiper.translate && translate < swiper.minTranslate()) { - return false; - } - - if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { - if ((activeIndex || 0) !== slideIndex) return false; - } - } - - let direction; - if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index - - if (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) { - const isVirtual = swiper.virtual && swiper.params.virtual.enabled; - - if (isVirtual) { - swiper.wrapperEl.style.scrollSnapType = 'none'; - swiper._immediateVirtual = true; - } - - wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; - - if (isVirtual) { - requestAnimationFrame(() => { - swiper.wrapperEl.style.scrollSnapType = ''; - swiper._swiperImmediateVirtual = 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; - } - - if (speed === 0) { - swiper.setTransition(0); - swiper.setTranslate(translate); - swiper.updateActiveIndex(slideIndex); - swiper.updateSlidesClasses(); - swiper.emit('beforeTransitionStart', speed, internal); - swiper.transitionStart(runCallbacks, direction); - swiper.transitionEnd(runCallbacks, direction); - } else { - swiper.setTransition(speed); - swiper.setTranslate(translate); - swiper.updateActiveIndex(slideIndex); - swiper.updateSlidesClasses(); - swiper.emit('beforeTransitionStart', speed, internal); - swiper.transitionStart(runCallbacks, direction); - - 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[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); - swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); - swiper.onSlideToWrapperTransitionEnd = null; - delete swiper.onSlideToWrapperTransitionEnd; - swiper.transitionEnd(runCallbacks, direction); - }; - } - - swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); - swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); - } - } - - return true; - } - - function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - let newIndex = index; - - if (swiper.params.loop) { - newIndex += swiper.loopedSlides; - } - - return swiper.slideTo(newIndex, speed, runCallbacks, internal); - } - - /* eslint no-unused-vars: "off" */ - function slideNext(speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - const { - animating, - enabled, - params - } = swiper; - if (!enabled) return swiper; - 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; - - if (params.loop) { - if (animating && params.loopPreventsSlide) return false; - swiper.loopFix(); // eslint-disable-next-line - - swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; - } - - return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); - } - - /* eslint no-unused-vars: "off" */ - function slidePrev(speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - const { - params, - animating, - snapGrid, - slidesGrid, - rtlTranslate, - enabled - } = swiper; - if (!enabled) return swiper; - - if (params.loop) { - if (animating && params.loopPreventsSlide) return false; - swiper.loopFix(); // eslint-disable-next-line - - swiper._clientLeft = swiper.$wrapperEl[0].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)); - let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; - - if (typeof prevSnap === 'undefined' && params.cssMode) { - let prevSnapIndex; - snapGrid.forEach((snap, snapIndex) => { - if (normalizedTranslate >= snap) { - // prevSnap = snap; - prevSnapIndex = snapIndex; - } - }); - - if (typeof prevSnapIndex !== 'undefined') { - prevSnap = 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); - } - } - - return swiper.slideTo(prevIndex, speed, runCallbacks, internal); - } - - /* eslint no-unused-vars: "off" */ - function slideReset(speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); - } - - /* eslint no-unused-vars: "off" */ - function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) { - const swiper = this; - 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; - const { - params, - $wrapperEl - } = swiper; - const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; - let slideToIndex = swiper.clickedIndex; - let realIndex; - - if (params.loop) { - if (swiper.animating) return; - realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10); - - if (params.centeredSlides) { - if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { - swiper.loopFix(); - slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index(); - nextTick(() => { - swiper.slideTo(slideToIndex); - }); - } else { - swiper.slideTo(slideToIndex); - } - } else if (slideToIndex > swiper.slides.length - slidesPerView) { - swiper.loopFix(); - slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index(); - nextTick(() => { - swiper.slideTo(slideToIndex); - }); - } else { - swiper.slideTo(slideToIndex); - } - } else { - swiper.slideTo(slideToIndex); - } - } - - var slide = { - slideTo, - slideToLoop, - slideNext, - slidePrev, - slideReset, - slideToClosest, - slideToClickedSlide - }; - - function loopCreate() { - const swiper = this; - const document = getDocument(); - const { - params, - $wrapperEl - } = swiper; // Remove duplicated slides - - const $selector = $($wrapperEl.children()[0].parentNode); - $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove(); - let slides = $selector.children(`.${params.slideClass}`); - - if (params.loopFillGroupWithBlank) { - const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup; - - if (blankSlidesNum !== params.slidesPerGroup) { - for (let i = 0; i < blankSlidesNum; i += 1) { - const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`); - $selector.append(blankNode); - } - - slides = $selector.children(`.${params.slideClass}`); - } - } - - if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length; - swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10)); - swiper.loopedSlides += params.loopAdditionalSlides; - - if (swiper.loopedSlides > slides.length) { - swiper.loopedSlides = slides.length; - } - - const prependSlides = []; - const appendSlides = []; - slides.each((el, index) => { - const slide = $(el); - - if (index < swiper.loopedSlides) { - appendSlides.push(el); - } - - if (index < slides.length && index >= slides.length - swiper.loopedSlides) { - prependSlides.push(el); - } - - slide.attr('data-swiper-slide-index', index); - }); - - for (let i = 0; i < appendSlides.length; i += 1) { - $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); - } - - for (let i = prependSlides.length - 1; i >= 0; i -= 1) { - $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); - } - } - - function loopFix() { - const swiper = this; - swiper.emit('beforeLoopFix'); - const { - activeIndex, - slides, - loopedSlides, - allowSlidePrev, - allowSlideNext, - snapGrid, - rtlTranslate: rtl - } = swiper; - let newIndex; - swiper.allowSlidePrev = true; - swiper.allowSlideNext = true; - const snapTranslate = -snapGrid[activeIndex]; - const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding - - if (activeIndex < loopedSlides) { - newIndex = slides.length - loopedSlides * 3 + activeIndex; - newIndex += loopedSlides; - const slideChanged = swiper.slideTo(newIndex, 0, false, true); - - if (slideChanged && diff !== 0) { - swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); - } - } else if (activeIndex >= slides.length - loopedSlides) { - // Fix For Positive Oversliding - newIndex = -slides.length + activeIndex + loopedSlides; - newIndex += loopedSlides; - const slideChanged = swiper.slideTo(newIndex, 0, false, true); - - if (slideChanged && diff !== 0) { - swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); - } - } - - swiper.allowSlidePrev = allowSlidePrev; - swiper.allowSlideNext = allowSlideNext; - swiper.emit('loopFix'); - } - - function loopDestroy() { - const swiper = this; - const { - $wrapperEl, - params, - slides - } = swiper; - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove(); - slides.removeAttr('data-swiper-slide-index'); - } - - var loop = { - loopCreate, - loopFix, - loopDestroy - }; - - function setGrabCursor(moving) { - const swiper = this; - if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; - const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; - el.style.cursor = 'move'; - el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab'; - el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab'; - el.style.cursor = moving ? 'grabbing' : 'grab'; - } - - function unsetGrabCursor() { - const swiper = this; - - if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { - return; - } - - swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; - } - - var grabCursor = { - setGrabCursor, - unsetGrabCursor - }; - - 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); - return found || __closestFrom(el.getRootNode().host); - } - - return __closestFrom(base); - } - - function onTouchStart(event) { - const swiper = this; - const document = getDocument(); - const window = getWindow(); - const data = swiper.touchEventsData; - const { - params, - touches, - enabled - } = swiper; - if (!enabled) return; - - if (swiper.animating && params.preventInteractionOnTransition) { - return; - } - - if (!swiper.animating && params.cssMode && params.loop) { - swiper.loopFix(); - } - - let e = event; - if (e.originalEvent) e = e.originalEvent; - let $targetEl = $(e.target); - - if (params.touchEventsTarget === 'wrapper') { - if (!$targetEl.closest(swiper.wrapperEl).length) return; - } - - data.isTouchEvent = e.type === 'touchstart'; - if (!data.isTouchEvent && 'which' in e && e.which === 3) return; - if (!data.isTouchEvent && '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 !== ''; - - if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) { - $targetEl = $(event.path[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, e.target) : $targetEl.closest(noSwipingSelector)[0])) { - swiper.allowClick = true; - return; - } - - if (params.swipeHandler) { - if (!$targetEl.closest(params.swipeHandler)[0]) return; - } - - touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; - touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : 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 - - const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; - const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; - - if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { - if (edgeSwipeDetection === 'prevent') { - event.preventDefault(); - } else { - 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; - - if (e.type !== 'touchstart') { - let preventDefault = true; - if ($targetEl.is(data.focusableElements)) preventDefault = false; - - if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) { - document.activeElement.blur(); - } - - const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; - - if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) { - e.preventDefault(); - } - } - - 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; - let e = event; - if (e.originalEvent) e = e.originalEvent; - - if (!data.isTouched) { - if (data.startMoving && data.isScrolling) { - swiper.emit('touchMoveOpposite', e); - } - - return; - } - - if (data.isTouchEvent && e.type !== 'touchmove') return; - const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]); - const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX; - const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY; - - if (e.preventedByNestedSwiper) { - touches.startX = pageX; - touches.startY = pageY; - return; - } - - if (!swiper.allowTouchMove) { - // isMoved = true; - swiper.allowClick = false; - - if (data.isTouched) { - Object.assign(touches, { - startX: pageX, - startY: pageY, - currentX: pageX, - currentY: pageY - }); - data.touchStartTime = now(); - } - - return; - } - - if (data.isTouchEvent && 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 (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { - return; - } - } - - if (data.isTouchEvent && document.activeElement) { - if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) { - data.isMoved = true; - swiper.allowClick = false; - return; - } - } - - if (data.allowTouchCallbacks) { - swiper.emit('touchMove', e); - } - - if (e.targetTouches && e.targetTouches.length > 1) return; - 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) { - 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(); - } - - if (!data.isMoved) { - if (params.loop && !params.cssMode) { - swiper.loopFix(); - } - - data.startTranslate = swiper.getTranslate(); - swiper.setTransition(0); - - if (swiper.animating) { - swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); - } - - data.allowMomentumBounce = false; // Grab Cursor - - if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { - swiper.setGrabCursor(true); - } - - swiper.emit('sliderFirstMove', e); - } - - swiper.emit('sliderMove', e); - data.isMoved = true; - let diff = swiper.isHorizontal() ? diffX : diffY; - touches.diff = diff; - diff *= params.touchRatio; - if (rtl) diff = -diff; - swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; - data.currentTranslate = diff + data.startTranslate; - let disableParentSwiper = true; - let resistanceRatio = params.resistanceRatio; - - if (params.touchReleaseOnEdges) { - resistanceRatio = 0; - } - - if (diff > 0 && data.currentTranslate > swiper.minTranslate()) { - disableParentSwiper = false; - if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; - } else if (diff < 0 && 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 (swiper.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; - const { - params, - touches, - rtlTranslate: rtl, - slidesGrid, - enabled - } = swiper; - if (!enabled) return; - let e = event; - if (e.originalEvent) e = e.originalEvent; - - 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) { - swiper.updateClickedSlide(e); - 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.currentTranslate === data.startTranslate) { - 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 (swiper.params.freeMode && params.freeMode.enabled) { - swiper.freeMode.onTouchEnd({ - currentPos - }); - return; - } // Find current slide - - - 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 (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { - stopIndex = i; - groupSize = slidesGrid[i + increment] - slidesGrid[i]; - } - } else if (currentPos >= slidesGrid[i]) { - stopIndex = i; - groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; - } - } // 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(stopIndex + increment);else swiper.slideTo(stopIndex); - } - - if (swiper.swipeDirection === 'prev') { - if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);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(stopIndex + increment); - } - - if (swiper.swipeDirection === 'prev') { - swiper.slideTo(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; // Disable locks on resize - - swiper.allowSlideNext = true; - swiper.allowSlidePrev = true; - swiper.updateSize(); - swiper.updateSlides(); - swiper.updateSlidesClasses(); - - if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) { - swiper.slideTo(swiper.slides.length - 1, 0, false, true); - } else { - swiper.slideTo(swiper.activeIndex, 0, false, true); - } - - if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { - swiper.autoplay.run(); - } // 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); - } - - let dummyEventAttached = false; - - function dummyEventListener() {} - - const events = (swiper, method) => { - const document = getDocument(); - const { - params, - touchEvents, - el, - wrapperEl, - device, - support - } = swiper; - const capture = !!params.nested; - const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; - const swiperMethod = method; // Touch Events - - if (!support.touch) { - el[domMethod](touchEvents.start, swiper.onTouchStart, false); - document[domMethod](touchEvents.move, swiper.onTouchMove, capture); - document[domMethod](touchEvents.end, swiper.onTouchEnd, false); - } else { - const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? { - passive: true, - capture: false - } : false; - el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener); - el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? { - passive: false, - capture - } : capture); - el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener); - - if (touchEvents.cancel) { - el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener); - } - } // 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); - } - }; - - function attachEvents() { - const swiper = this; - const document = getDocument(); - const { - params, - support - } = swiper; - swiper.onTouchStart = onTouchStart.bind(swiper); - swiper.onTouchMove = onTouchMove.bind(swiper); - swiper.onTouchEnd = onTouchEnd.bind(swiper); - - if (params.cssMode) { - swiper.onScroll = onScroll.bind(swiper); - } - - swiper.onClick = onClick.bind(swiper); - - if (support.touch && !dummyEventAttached) { - document.addEventListener('touchstart', dummyEventListener); - dummyEventAttached = true; - } - - 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 { - activeIndex, - initialized, - loopedSlides = 0, - params, - $el - } = swiper; - const breakpoints = params.breakpoints; - if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters - - const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); - 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 wasEnabled = params.enabled; - - if (wasMultiRow && !isMultiRow) { - $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`); - swiper.emitContainerClasses(); - } else if (!wasMultiRow && isMultiRow) { - $el.addClass(`${params.containerModifierClass}grid`); - - if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { - $el.addClass(`${params.containerModifierClass}grid-column`); - } - - swiper.emitContainerClasses(); - } - - const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; - const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); - - if (directionChanged && initialized) { - swiper.changeDirection(); - } - - extend(swiper.params, breakpointParams); - const isEnabled = swiper.params.enabled; - 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 (needsReLoop && initialized) { - swiper.loopDestroy(); - swiper.loopCreate(); - swiper.updateSlides(); - swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false); - } - - 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, - support - } = swiper; // prettier-ignore - - const suffixes = prepareClasses(['initialized', params.direction, { - 'pointer-events': !support.touch - }, { - '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 - }], params.containerModifierClass); - classNames.push(...suffixes); - $el.addClass([...classNames].join(' ')); - swiper.emitContainerClasses(); - } - - function removeClasses() { - const swiper = this; - const { - $el, - classNames - } = swiper; - $el.removeClass(classNames.join(' ')); - swiper.emitContainerClasses(); - } - - var classes = { - addClasses, - removeClasses - }; - - function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) { - const window = getWindow(); - let image; - - function onReady() { - if (callback) callback(); - } - - const isPicture = $(imageEl).parent('picture')[0]; - - if (!isPicture && (!imageEl.complete || !checkForComplete)) { - if (src) { - image = new window.Image(); - image.onload = onReady; - image.onerror = onReady; - - if (sizes) { - image.sizes = sizes; - } - - if (srcset) { - image.srcset = srcset; - } - - if (src) { - image.src = src; - } - } else { - onReady(); - } - } else { - // image already loaded... - onReady(); - } - } - - function preloadImages() { - const swiper = this; - swiper.imagesToLoad = swiper.$el.find('img'); - - function onReady() { - if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return; - if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1; - - if (swiper.imagesLoaded === swiper.imagesToLoad.length) { - if (swiper.params.updateOnImagesReady) swiper.update(); - swiper.emit('imagesReady'); - } - } - - for (let i = 0; i < swiper.imagesToLoad.length; i += 1) { - const imageEl = swiper.imagesToLoad[i]; - swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady); - } - } - - var images = { - loadImage, - preloadImages - }; - - 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', - touchEventsTarget: 'wrapper', - initialSlide: 0, - speed: 300, - cssMode: false, - updateOnWindowResize: true, - resizeObserver: true, - nested: false, - createElements: false, - 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, - // 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: 0, - 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, - // Images - preloadImages: true, - updateOnImagesReady: true, - // loop - loop: false, - loopAdditionalSlides: 0, - loopedSlides: null, - loopFillGroupWithBlank: false, - loopPreventsSlide: true, - // Swiping/no swiping - allowSlidePrev: true, - allowSlideNext: true, - swipeHandler: null, - // '.swipe-handler', - noSwiping: true, - noSwipingClass: 'swiper-no-swiping', - noSwipingSelector: null, - // Passive Listeners - passiveListeners: true, - // NS - containerModifierClass: 'swiper-', - // NEW - slideClass: 'swiper-slide', - slideBlankClass: 'swiper-slide-invisible-blank', - slideActiveClass: 'swiper-slide-active', - slideDuplicateActiveClass: 'swiper-slide-duplicate-active', - slideVisibleClass: 'swiper-slide-visible', - slideDuplicateClass: 'swiper-slide-duplicate', - slideNextClass: 'swiper-slide-next', - slideDuplicateNextClass: 'swiper-slide-duplicate-next', - slidePrevClass: 'swiper-slide-prev', - slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', - wrapperClass: 'swiper-wrapper', - // 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 (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) { - params[moduleParamName] = { - auto: true - }; - } - - if (!(moduleParamName in params && 'enabled' in moduleParams)) { - extend(allModulesParams, obj); - return; - } - - if (params[moduleParamName] === true) { - params[moduleParamName] = { - enabled: true - }; - } - - 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, - images - }; - 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; - - if (params.el && $(params.el).length > 1) { - const swipers = []; - $(params.el).each(containerEl => { - const newParams = extend({}, params, { - el: containerEl - }); - swipers.push(new Swiper(newParams)); - }); - 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)) { - swiper.modules.push(...params.modules); - } - - const allModulesParams = {}; - swiper.modules.forEach(mod => { - mod({ - 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); - } // Save Dom lib - - - swiper.$ = $; // 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, - // Locks - allowSlideNext: swiper.params.allowSlideNext, - allowSlidePrev: swiper.params.allowSlidePrev, - // Touch Events - touchEvents: function touchEvents() { - const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel']; - const desktop = ['pointerdown', 'pointermove', 'pointerup']; - swiper.touchEventsTouch = { - start: touch[0], - move: touch[1], - end: touch[2], - cancel: touch[3] - }; - swiper.touchEventsDesktop = { - start: desktop[0], - move: desktop[1], - end: desktop[2] - }; - return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop; - }(), - 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: now(), - clickTimeout: undefined, - // Velocities - velocities: [], - allowMomentumBounce: undefined, - isTouchEvent: undefined, - startMoving: undefined - }, - // 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 - - - return swiper; - } - - 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; - 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.each(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 (params.centeredSlides) { - let slideSize = slides[activeIndex].swiperSlideSize; - let breakLoop; - - for (let i = activeIndex + 1; i < slides.length; i += 1) { - if (slides[i] && !breakLoop) { - slideSize += 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.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 (swiper.params.freeMode && swiper.params.freeMode.enabled) { - setTranslate(); - - if (swiper.params.autoHeight) { - swiper.updateAutoHeight(); - } - } else { - if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { - translated = swiper.slideTo(swiper.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.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`); - swiper.emitContainerClasses(); - swiper.params.direction = newDirection; - swiper.slides.each(slideEl => { - if (newDirection === 'vertical') { - slideEl.style.width = ''; - } else { - slideEl.style.height = ''; - } - }); - swiper.emit('changeDirection'); - if (needUpdate) swiper.update(); - return swiper; - } - - mount(el) { - const swiper = this; - if (swiper.mounted) return true; // Find el - - const $el = $(el || swiper.params.el); - el = $el[0]; - - if (!el) { - return false; - } - - el.swiper = swiper; - - 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 - - res.children = options => $el.children(options); - - return res; - } - - return $el.children(getWrapperSelector()); - }; // Find Wrapper - - - let $wrapperEl = getWrapper(); - - if ($wrapperEl.length === 0 && swiper.params.createElements) { - const document = getDocument(); - const wrapper = document.createElement('div'); - $wrapperEl = $(wrapper); - wrapper.className = swiper.params.wrapperClass; - $el.append(wrapper); - $el.children(`.${swiper.params.slideClass}`).each(slideEl => { - $wrapperEl.append(slideEl); - }); - } - - Object.assign(swiper, { - $el, - el, - $wrapperEl, - wrapperEl: $wrapperEl[0], - mounted: true, - // RTL - rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl', - rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), - wrongRTL: $wrapperEl.css('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(); // Create loop - - if (swiper.params.loop) { - swiper.loopCreate(); - } // 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(); - } - - if (swiper.params.preloadImages) { - swiper.preloadImages(); - } // Slide To Initial Slide - - - if (swiper.params.loop) { - swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true); - } else { - swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); - } // Attach events - - - swiper.attachEvents(); // Init Flag - - swiper.initialized = true; // 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(); - $el.removeAttr('style'); - $wrapperEl.removeAttr('style'); - - if (slides && slides.length) { - slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index'); - } - } - - swiper.emit('destroy'); // Detach emitter events - - Object.keys(swiper.eventsListeners).forEach(eventName => { - swiper.off(eventName); - }); - - if (deleteInstance !== false) { - swiper.$el[0].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 - }) { - extendParams({ - virtual: { - enabled: false, - slides: [], - cache: true, - renderSlide: null, - renderExternal: null, - renderExternalUpdate: true, - addSlidesBefore: 0, - addSlidesAfter: 0 - } - }); - let cssModeTimeout; - swiper.virtual = { - cache: {}, - from: undefined, - to: undefined, - slides: [], - offset: 0, - slidesGrid: [] - }; - - function renderSlide(slide, index) { - const params = swiper.params.virtual; - - if (params.cache && swiper.virtual.cache[index]) { - return swiper.virtual.cache[index]; - } - - const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`
${slide}
`); - if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index); - if (params.cache) swiper.virtual.cache[index] = $slideEl; - return $slideEl; - } - - function update(force) { - const { - slidesPerView, - slidesPerGroup, - centeredSlides - } = swiper.params; - const { - addSlidesBefore, - addSlidesAfter - } = swiper.params.virtual; - const { - from: previousFrom, - to: previousTo, - slides, - slidesGrid: previousSlidesGrid, - offset: previousOffset - } = swiper.virtual; - - if (!swiper.params.cssMode) { - swiper.updateActiveIndex(); - } - - const activeIndex = swiper.activeIndex || 0; - let offsetProp; - if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; - let slidesAfter; - let slidesBefore; - - if (centeredSlides) { - slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; - slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; - } else { - slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; - slidesBefore = slidesPerGroup + addSlidesBefore; - } - - const from = Math.max((activeIndex || 0) - slidesBefore, 0); - const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1); - const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); - Object.assign(swiper.virtual, { - from, - to, - offset, - slidesGrid: swiper.slidesGrid - }); - - function onRendered() { - swiper.updateSlides(); - swiper.updateProgress(); - swiper.updateSlidesClasses(); - - if (swiper.lazy && swiper.params.lazy.enabled) { - swiper.lazy.load(); - } - } - - if (previousFrom === from && previousTo === to && !force) { - if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { - swiper.slides.css(offsetProp, `${offset}px`); - } - - swiper.updateProgress(); - 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(); - } - - return; - } - - const prependIndexes = []; - const appendIndexes = []; - - if (force) { - swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove(); - } else { - for (let i = previousFrom; i <= previousTo; i += 1) { - if (i < from || i > to) { - swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove(); - } - } - } - - for (let i = 0; i < slides.length; i += 1) { - if (i >= from && i <= to) { - if (typeof previousTo === 'undefined' || force) { - appendIndexes.push(i); - } else { - if (i > previousTo) appendIndexes.push(i); - if (i < previousFrom) prependIndexes.push(i); - } - } - } - - appendIndexes.forEach(index => { - swiper.$wrapperEl.append(renderSlide(slides[index], index)); - }); - prependIndexes.sort((a, b) => b - a).forEach(index => { - swiper.$wrapperEl.prepend(renderSlide(slides[index], index)); - }); - swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}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.attr('data-swiper-slide-index'); - - if (cachedElIndex) { - $cachedEl.attr('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) { - swiper.virtual.slides.splice(slidesIndexes[i], 1); - - if (swiper.params.virtual.cache) { - delete swiper.virtual.cache[slidesIndexes[i]]; - } - - if (slidesIndexes[i] < activeIndex) activeIndex -= 1; - activeIndex = Math.max(activeIndex, 0); - } - } else { - swiper.virtual.slides.splice(slidesIndexes, 1); - - if (swiper.params.virtual.cache) { - delete swiper.virtual.cache[slidesIndexes]; - } - - 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; - swiper.virtual.slides = swiper.params.virtual.slides; - swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); - swiper.params.watchSlidesProgress = true; - swiper.originalParams.watchSlidesProgress = true; - - if (!swiper.params.initialSlide) { - update(); - } - }); - 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 - } - }); - - 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.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 (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) { - return undefined; - } - - const $el = swiper.$el; - const swiperWidth = $el[0].clientWidth; - const swiperHeight = $el[0].clientHeight; - const windowWidth = window.innerWidth; - const windowHeight = window.innerHeight; - const swiperOffset = swiper.$el.offset(); - if (rtl) swiperOffset.left -= swiper.$el[0].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; - } - - 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(); - if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); - } else { - if (isPageUp || isPageDown || isArrowUp || isArrowDown) { - if (e.preventDefault) e.preventDefault();else e.returnValue = false; - } - - if (isPageDown || isArrowDown) swiper.slideNext(); - if (isPageUp || isArrowUp) swiper.slidePrev(); - } - - emit('keyPress', kc); - return undefined; - } - - function enable() { - if (swiper.keyboard.enabled) return; - $(document).on('keydown', handle); - swiper.keyboard.enabled = true; - } - - function disable() { - if (!swiper.keyboard.enabled) return; - $(document).off('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 - } - }); - 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; - const params = swiper.params.mousewheel; - - if (swiper.params.cssMode) { - e.preventDefault(); - } - - let target = swiper.$el; - - if (swiper.params.mousewheel.eventsTarget !== 'container') { - target = $(swiper.params.mousewheel.eventsTarget); - } - - if (!swiper.mouseEntered && !target[0].contains(e.target) && !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; - - if (swiper.params.loop) { - swiper.loopFix(); - } - - 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.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(() => { - 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(() => { - 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.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions - - if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true; - } - } - - if (e.preventDefault) e.preventDefault();else e.returnValue = false; - return false; - } - - function events(method) { - let target = swiper.$el; - - if (swiper.params.mousewheel.eventsTarget !== 'container') { - target = $(swiper.params.mousewheel.eventsTarget); - } - - target[method]('mouseenter', handleMouseEnter); - target[method]('mouseleave', handleMouseLeave); - target[method]('wheel', handle); - } - - function enable() { - if (swiper.params.cssMode) { - swiper.wrapperEl.removeEventListener('wheel', handle); - return true; - } - - if (swiper.mousewheel.enabled) return false; - events('on'); - 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('off'); - 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) { - const document = getDocument(); - - if (swiper.params.createElements) { - Object.keys(checkProps).forEach(key => { - if (!params[key] && params.auto === true) { - let element = swiper.$el.children(`.${checkProps[key]}`)[0]; - - if (!element) { - element = document.createElement('div'); - element.className = checkProps[key]; - swiper.$el.append(element); - } - - params[key] = element; - originalParams[key] = element; - } - }); - } - - return params; - } - - function Navigation({ - swiper, - extendParams, - on, - emit - }) { - extendParams({ - navigation: { - nextEl: null, - prevEl: null, - hideOnClick: false, - disabledClass: 'swiper-button-disabled', - hiddenClass: 'swiper-button-hidden', - lockClass: 'swiper-button-lock' - } - }); - swiper.navigation = { - nextEl: null, - $nextEl: null, - prevEl: null, - $prevEl: null - }; - - function getEl(el) { - let $el; - - if (el) { - $el = $(el); - - if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) { - $el = swiper.$el.find(el); - } - } - - return $el; - } - - function toggleEl($el, disabled) { - const params = swiper.params.navigation; - - if ($el && $el.length > 0) { - $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass); - if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled; - - if (swiper.params.watchOverflow && swiper.enabled) { - $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); - } - } - } - - function update() { - // Update Navigation Buttons - if (swiper.params.loop) return; - const { - $nextEl, - $prevEl - } = swiper.navigation; - toggleEl($prevEl, swiper.isBeginning); - toggleEl($nextEl, swiper.isEnd); - } - - function onPrevClick(e) { - e.preventDefault(); - if (swiper.isBeginning && !swiper.params.loop) return; - swiper.slidePrev(); - } - - function onNextClick(e) { - e.preventDefault(); - if (swiper.isEnd && !swiper.params.loop) return; - swiper.slideNext(); - } - - 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; - const $nextEl = getEl(params.nextEl); - const $prevEl = getEl(params.prevEl); - - if ($nextEl && $nextEl.length > 0) { - $nextEl.on('click', onNextClick); - } - - if ($prevEl && $prevEl.length > 0) { - $prevEl.on('click', onPrevClick); - } - - Object.assign(swiper.navigation, { - $nextEl, - nextEl: $nextEl && $nextEl[0], - $prevEl, - prevEl: $prevEl && $prevEl[0] - }); - - if (!swiper.enabled) { - if ($nextEl) $nextEl.addClass(params.lockClass); - if ($prevEl) $prevEl.addClass(params.lockClass); - } - } - - function destroy() { - const { - $nextEl, - $prevEl - } = swiper.navigation; - - if ($nextEl && $nextEl.length) { - $nextEl.off('click', onNextClick); - $nextEl.removeClass(swiper.params.navigation.disabledClass); - } - - if ($prevEl && $prevEl.length) { - $prevEl.off('click', onPrevClick); - $prevEl.removeClass(swiper.params.navigation.disabledClass); - } - } - - on('init', () => { - init(); - update(); - }); - on('toEdge fromEdge lock unlock', () => { - update(); - }); - on('destroy', () => { - destroy(); - }); - on('enable disable', () => { - const { - $nextEl, - $prevEl - } = swiper.navigation; - - if ($nextEl) { - $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass); - } - - if ($prevEl) { - $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass); - } - }); - on('click', (_s, e) => { - const { - $nextEl, - $prevEl - } = swiper.navigation; - const targetEl = e.target; - - if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) { - if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; - let isHidden; - - if ($nextEl) { - isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass); - } else if ($prevEl) { - isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass); - } - - if (isHidden === true) { - emit('navigationShow'); - } else { - emit('navigationHide'); - } - - if ($nextEl) { - $nextEl.toggleClass(swiper.params.navigation.hiddenClass); - } - - if ($prevEl) { - $prevEl.toggleClass(swiper.params.navigation.hiddenClass); - } - } - }); - Object.assign(swiper.navigation, { - update, - init, - destroy - }); - } - - function classesToSelector(classes = '') { - 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` - } - }); - swiper.pagination = { - el: null, - $el: null, - bullets: [] - }; - let bulletSize; - let dynamicBulletIndex = 0; - - function isPaginationDisabled() { - return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0; - } - - function setSideBullets($bulletEl, position) { - const { - bulletActiveClass - } = swiper.params.pagination; - $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`); - } - - function update() { - // Render || Update Pagination bullets/items - const rtl = swiper.rtl; - const params = swiper.params.pagination; - if (isPaginationDisabled()) return; - const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; - const $el = swiper.pagination.$el; // Current/Total - - let current; - const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; - - if (swiper.params.loop) { - current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); - - if (current > slidesLength - 1 - swiper.loopedSlides * 2) { - current -= slidesLength - swiper.loopedSlides * 2; - } - - if (current > total - 1) current -= total; - if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current; - } else if (typeof swiper.snapIndex !== 'undefined') { - current = swiper.snapIndex; - } else { - 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 = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true); - $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`); - - if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { - dynamicBulletIndex += current - swiper.previousIndex; - - if (dynamicBulletIndex > params.dynamicMainBullets - 1) { - dynamicBulletIndex = params.dynamicMainBullets - 1; - } else if (dynamicBulletIndex < 0) { - dynamicBulletIndex = 0; - } - } - - firstIndex = current - dynamicBulletIndex; - lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); - midIndex = (lastIndex + firstIndex) / 2; - } - - bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' ')); - - if ($el.length > 1) { - bullets.each(bullet => { - const $bullet = $(bullet); - const bulletIndex = $bullet.index(); - - if (bulletIndex === current) { - $bullet.addClass(params.bulletActiveClass); - } - - if (params.dynamicBullets) { - if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { - $bullet.addClass(`${params.bulletActiveClass}-main`); - } - - if (bulletIndex === firstIndex) { - setSideBullets($bullet, 'prev'); - } - - if (bulletIndex === lastIndex) { - setSideBullets($bullet, 'next'); - } - } - }); - } else { - const $bullet = bullets.eq(current); - const bulletIndex = $bullet.index(); - $bullet.addClass(params.bulletActiveClass); - - if (params.dynamicBullets) { - const $firstDisplayedBullet = bullets.eq(firstIndex); - const $lastDisplayedBullet = bullets.eq(lastIndex); - - for (let i = firstIndex; i <= lastIndex; i += 1) { - bullets.eq(i).addClass(`${params.bulletActiveClass}-main`); - } - - if (swiper.params.loop) { - if (bulletIndex >= bullets.length - params.dynamicMainBullets) { - for (let i = params.dynamicMainBullets; i >= 0; i -= 1) { - bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`); - } - - bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`); - } else { - setSideBullets($firstDisplayedBullet, 'prev'); - setSideBullets($lastDisplayedBullet, 'next'); - } - } else { - 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.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`); - } - } - - if (params.type === 'fraction') { - $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1)); - $el.find(classesToSelector(params.totalClass)).text(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; - } - - $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed); - } - - if (params.type === 'custom' && params.renderCustom) { - $el.html(params.renderCustom(swiper, current + 1, total)); - emit('paginationRender', $el[0]); - } else { - emit('paginationUpdate', $el[0]); - } - - if (swiper.params.watchOverflow && swiper.enabled) { - $el[swiper.isLocked ? 'addClass' : 'removeClass'](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.slides.length; - const $el = swiper.pagination.$el; - let paginationHTML = ''; - - if (params.type === 'bullets') { - let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; - - if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) { - numberOfBullets = slidesLength; - } - - for (let i = 0; i < numberOfBullets; i += 1) { - if (params.renderBullet) { - paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); - } else { - paginationHTML += `<${params.bulletElement} class="${params.bulletClass}">`; - } - } - - $el.html(paginationHTML); - swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass)); - } - - if (params.type === 'fraction') { - if (params.renderFraction) { - paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); - } else { - paginationHTML = `` + ' / ' + ``; - } - - $el.html(paginationHTML); - } - - if (params.type === 'progressbar') { - if (params.renderProgressbar) { - paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); - } else { - paginationHTML = ``; - } - - $el.html(paginationHTML); - } - - if (params.type !== 'custom') { - emit('paginationRender', swiper.pagination.$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 = $(params.el); - if ($el.length === 0) return; - - if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) { - $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper - - if ($el.length > 1) { - $el = $el.filter(el => { - if ($(el).parents('.swiper')[0] !== swiper.el) return false; - return true; - }); - } - } - - if (params.type === 'bullets' && params.clickable) { - $el.addClass(params.clickableClass); - } - - $el.addClass(params.modifierClass + params.type); - $el.addClass(params.modifierClass + swiper.params.direction); - - if (params.type === 'bullets' && params.dynamicBullets) { - $el.addClass(`${params.modifierClass}${params.type}-dynamic`); - dynamicBulletIndex = 0; - - if (params.dynamicMainBullets < 1) { - params.dynamicMainBullets = 1; - } - } - - if (params.type === 'progressbar' && params.progressbarOpposite) { - $el.addClass(params.progressbarOppositeClass); - } - - if (params.clickable) { - $el.on('click', classesToSelector(params.bulletClass), function onClick(e) { - e.preventDefault(); - let index = $(this).index() * swiper.params.slidesPerGroup; - if (swiper.params.loop) index += swiper.loopedSlides; - swiper.slideTo(index); - }); - } - - Object.assign(swiper.pagination, { - $el, - el: $el[0] - }); - - if (!swiper.enabled) { - $el.addClass(params.lockClass); - } - } - - function destroy() { - const params = swiper.params.pagination; - if (isPaginationDisabled()) return; - const $el = swiper.pagination.$el; - $el.removeClass(params.hiddenClass); - $el.removeClass(params.modifierClass + params.type); - $el.removeClass(params.modifierClass + swiper.params.direction); - if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass); - - if (params.clickable) { - $el.off('click', classesToSelector(params.bulletClass)); - } - } - - on('init', () => { - init(); - render(); - update(); - }); - on('activeIndexChange', () => { - if (swiper.params.loop) { - update(); - } else if (typeof swiper.snapIndex === 'undefined') { - update(); - } - }); - on('snapIndexChange', () => { - if (!swiper.params.loop) { - update(); - } - }); - on('slidesLengthChange', () => { - if (swiper.params.loop) { - render(); - update(); - } - }); - on('snapGridLengthChange', () => { - if (!swiper.params.loop) { - render(); - update(); - } - }); - on('destroy', () => { - destroy(); - }); - on('enable disable', () => { - const { - $el - } = swiper.pagination; - - if ($el) { - $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass); - } - }); - on('lock unlock', () => { - update(); - }); - on('click', (_s, e) => { - const targetEl = e.target; - const { - $el - } = swiper.pagination; - - if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(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.hasClass(swiper.params.pagination.hiddenClass); - - if (isHidden === true) { - emit('paginationShow'); - } else { - emit('paginationHide'); - } - - $el.toggleClass(swiper.params.pagination.hiddenClass); - } - }); - Object.assign(swiper.pagination, { - 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' - } - }); - swiper.scrollbar = { - el: null, - dragEl: null, - $el: null, - $dragEl: null - }; - - function setTranslate() { - if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; - const { - scrollbar, - rtlTranslate: rtl, - progress - } = swiper; - const { - $dragEl, - $el - } = scrollbar; - const params = swiper.params.scrollbar; - 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.transform(`translate3d(${newPos}px, 0, 0)`); - $dragEl[0].style.width = `${newSize}px`; - } else { - $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`); - $dragEl[0].style.height = `${newSize}px`; - } - - if (params.hide) { - clearTimeout(timeout); - $el[0].style.opacity = 1; - timeout = setTimeout(() => { - $el[0].style.opacity = 0; - $el.transition(400); - }, 1000); - } - } - - function setTransition(duration) { - if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; - swiper.scrollbar.$dragEl.transition(duration); - } - - function updateSize() { - if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; - const { - scrollbar - } = swiper; - const { - $dragEl, - $el - } = scrollbar; - $dragEl[0].style.width = ''; - $dragEl[0].style.height = ''; - trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].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[0].style.width = `${dragSize}px`; - } else { - $dragEl[0].style.height = `${dragSize}px`; - } - - if (divider >= 1) { - $el[0].style.display = 'none'; - } else { - $el[0].style.display = ''; - } - - if (swiper.params.scrollbar.hide) { - $el[0].style.opacity = 0; - } - - if (swiper.params.watchOverflow && swiper.enabled) { - scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass); - } - } - - function getPointerPosition(e) { - if (swiper.isHorizontal()) { - return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX; - } - - return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY; - } - - function setDragPosition(e) { - const { - scrollbar, - rtlTranslate: rtl - } = swiper; - const { - $el - } = scrollbar; - let positionRatio; - positionRatio = (getPointerPosition(e) - $el.offset()[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[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; - e.preventDefault(); - e.stopPropagation(); - $wrapperEl.transition(100); - $dragEl.transition(100); - setDragPosition(e); - clearTimeout(dragTimeout); - $el.transition(0); - - if (params.hide) { - $el.css('opacity', 1); - } - - if (swiper.params.cssMode) { - swiper.$wrapperEl.css('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.preventDefault();else e.returnValue = false; - setDragPosition(e); - $wrapperEl.transition(0); - $el.transition(0); - $dragEl.transition(0); - 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.css('scroll-snap-type', ''); - $wrapperEl.transition(''); - } - - if (params.hide) { - clearTimeout(dragTimeout); - dragTimeout = nextTick(() => { - $el.css('opacity', 0); - $el.transition(400); - }, 1000); - } - - emit('scrollbarDragEnd', e); - - if (params.snapOnRelease) { - swiper.slideToClosest(); - } - } - - function events(method) { - const { - scrollbar, - touchEventsTouch, - touchEventsDesktop, - params, - support - } = swiper; - const $el = scrollbar.$el; - const target = $el[0]; - const activeListener = support.passiveListener && params.passiveListeners ? { - passive: false, - capture: false - } : false; - const passiveListener = support.passiveListener && params.passiveListeners ? { - passive: true, - capture: false - } : false; - if (!target) return; - const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; - - if (!support.touch) { - target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener); - document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener); - document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener); - } else { - target[eventMethod](touchEventsTouch.start, onDragStart, activeListener); - target[eventMethod](touchEventsTouch.move, onDragMove, activeListener); - target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener); - } - } - - function enableDraggable() { - if (!swiper.params.scrollbar.el) return; - events('on'); - } - - function disableDraggable() { - if (!swiper.params.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 = $(params.el); - - if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) { - $el = $swiperEl.find(params.el); - } - - let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`); - - if ($dragEl.length === 0) { - $dragEl = $(`
`); - $el.append($dragEl); - } - - Object.assign(scrollbar, { - $el, - el: $el[0], - $dragEl, - dragEl: $dragEl[0] - }); - - if (params.draggable) { - enableDraggable(); - } - - if ($el) { - $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass); - } - } - - function destroy() { - disableDraggable(); - } - - on('init', () => { - init(); - updateSize(); - setTranslate(); - }); - on('update resize observerUpdate lock unlock', () => { - updateSize(); - }); - on('setTranslate', () => { - setTranslate(); - }); - on('setTransition', (_s, duration) => { - setTransition(duration); - }); - on('enable disable', () => { - const { - $el - } = swiper.scrollbar; - - if ($el) { - $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass); - } - }); - on('destroy', () => { - destroy(); - }); - Object.assign(swiper.scrollbar, { - updateSize, - setTranslate, - init, - destroy - }); - } - - function Parallax({ - swiper, - extendParams, - on - }) { - extendParams({ - parallax: { - enabled: false - } - }); - - const setTransform = (el, progress) => { - const { - rtl - } = swiper; - const $el = $(el); - const rtlFactor = rtl ? -1 : 1; - const p = $el.attr('data-swiper-parallax') || '0'; - let x = $el.attr('data-swiper-parallax-x'); - let y = $el.attr('data-swiper-parallax-y'); - const scale = $el.attr('data-swiper-parallax-scale'); - const opacity = $el.attr('data-swiper-parallax-opacity'); - - 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[0].style.opacity = currentOpacity; - } - - if (typeof scale === 'undefined' || scale === null) { - $el.transform(`translate3d(${x}, ${y}, 0px)`); - } else { - const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); - $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`); - } - }; - - const setTranslate = () => { - const { - $el, - slides, - progress, - snapGrid - } = swiper; - $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => { - setTransform(el, progress); - }); - slides.each((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).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => { - setTransform(el, slideProgress); - }); - }); - }; - - const setTransition = (duration = swiper.params.speed) => { - const { - $el - } = swiper; - $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => { - const $parallaxEl = $(parallaxEl); - let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration; - if (duration === 0) parallaxDuration = 0; - $parallaxEl.transition(parallaxDuration); - }); - }; - - 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, - maxRatio: 3, - minRatio: 1, - toggle: true, - containerClass: 'swiper-zoom-container', - zoomedSlideClass: 'swiper-slide-zoomed' - } - }); - swiper.zoom = { - enabled: false - }; - let currentScale = 1; - let isScaling = false; - let gesturesEnabled; - let fakeGestureTouched; - let fakeGestureMoved; - const gesture = { - $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 ? gesture.$imageEl[0] : undefined; - const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined; - emit('zoomChange', value, imageEl, slideEl); - } - - scale = value; - } - - }); - - function getDistanceBetweenTouches(e) { - if (e.targetTouches.length < 2) return 1; - const x1 = e.targetTouches[0].pageX; - const y1 = e.targetTouches[0].pageY; - const x2 = e.targetTouches[1].pageX; - const y2 = e.targetTouches[1].pageY; - const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); - return distance; - } // Events - - - function onGestureStart(e) { - const support = swiper.support; - const params = swiper.params.zoom; - fakeGestureTouched = false; - fakeGestureMoved = false; - - if (!support.gestures) { - if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) { - return; - } - - fakeGestureTouched = true; - gesture.scaleStart = getDistanceBetweenTouches(e); - } - - if (!gesture.$slideEl || !gesture.$slideEl.length) { - gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`); - if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); - gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target'); - gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); - gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; - - if (gesture.$imageWrapEl.length === 0) { - gesture.$imageEl = undefined; - return; - } - } - - if (gesture.$imageEl) { - gesture.$imageEl.transition(0); - } - - isScaling = true; - } - - function onGestureChange(e) { - const support = swiper.support; - const params = swiper.params.zoom; - const zoom = swiper.zoom; - - if (!support.gestures) { - if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) { - return; - } - - fakeGestureMoved = true; - gesture.scaleMove = getDistanceBetweenTouches(e); - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0) { - if (e.type === 'gesturechange') onGestureStart(e); - return; - } - - if (support.gestures) { - zoom.scale = e.scale * currentScale; - } else { - 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.transform(`translate3d(0,0,0) scale(${zoom.scale})`); - } - - function onGestureEnd(e) { - const device = swiper.device; - const support = swiper.support; - const params = swiper.params.zoom; - const zoom = swiper.zoom; - - if (!support.gestures) { - if (!fakeGestureTouched || !fakeGestureMoved) { - return; - } - - if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) { - return; - } - - fakeGestureTouched = false; - fakeGestureMoved = false; - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; - zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); - gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`); - currentScale = zoom.scale; - isScaling = false; - if (zoom.scale === 1) gesture.$slideEl = undefined; - } - - function onTouchStart(e) { - const device = swiper.device; - if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; - if (image.isTouched) return; - if (device.android && e.cancelable) e.preventDefault(); - image.isTouched = true; - image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; - image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; - } - - function onTouchMove(e) { - const zoom = swiper.zoom; - if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; - swiper.allowClick = false; - if (!image.isTouched || !gesture.$slideEl) return; - - if (!image.isMoved) { - image.width = gesture.$imageEl[0].offsetWidth; - image.height = gesture.$imageEl[0].offsetHeight; - image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0; - image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0; - gesture.slideWidth = gesture.$slideEl[0].offsetWidth; - gesture.slideHeight = gesture.$slideEl[0].offsetHeight; - gesture.$imageWrapEl.transition(0); - } // Define if we need image drag - - - const scaledWidth = image.width * zoom.scale; - const scaledHeight = image.height * zoom.scale; - if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; - 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 = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - - 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; - 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; - return; - } - } - - if (e.cancelable) { - e.preventDefault(); - } - - e.stopPropagation(); - image.isMoved = true; - image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX; - image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY; - - 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.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); - } - - function onTouchEnd() { - const zoom = swiper.zoom; - if (!gesture.$imageEl || gesture.$imageEl.length === 0) 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.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); - } - - function onTransitionEnd() { - const zoom = swiper.zoom; - - if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) { - if (gesture.$imageEl) { - gesture.$imageEl.transform('translate3d(0,0,0) scale(1)'); - } - - if (gesture.$imageWrapEl) { - gesture.$imageWrapEl.transform('translate3d(0,0,0)'); - } - - zoom.scale = 1; - currentScale = 1; - gesture.$slideEl = undefined; - gesture.$imageEl = undefined; - gesture.$imageWrapEl = undefined; - } - } - - 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}`); - } - - if (!gesture.$slideEl) { - if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { - gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); - } else { - gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); - } - } - - gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target'); - gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return; - - if (swiper.params.cssMode) { - swiper.wrapperEl.style.overflow = 'hidden'; - swiper.wrapperEl.style.touchAction = 'none'; - } - - gesture.$slideEl.addClass(`${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.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX; - touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY; - } else { - touchX = image.touchesStart.x; - touchY = image.touchesStart.y; - } - - zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; - currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; - - if (e) { - slideWidth = gesture.$slideEl[0].offsetWidth; - slideHeight = gesture.$slideEl[0].offsetHeight; - offsetX = gesture.$slideEl.offset().left + window.scrollX; - offsetY = gesture.$slideEl.offset().top + window.scrollY; - diffX = offsetX + slideWidth / 2 - touchX; - diffY = offsetY + slideHeight / 2 - touchY; - imageWidth = gesture.$imageEl[0].offsetWidth; - imageHeight = gesture.$imageEl[0].offsetHeight; - 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; - 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; - } - - gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`); - gesture.$imageEl.transition(300).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 = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); - } else { - gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); - } - - gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target'); - gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return; - - if (swiper.params.cssMode) { - swiper.wrapperEl.style.overflow = ''; - swiper.wrapperEl.style.touchAction = ''; - } - - zoom.scale = 1; - currentScale = 1; - gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); - gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); - gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`); - gesture.$slideEl = undefined; - } // 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 support = swiper.support; - const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? { - passive: true, - capture: false - } : false; - const activeListenerWithCapture = support.passiveListener ? { - passive: false, - capture: true - } : true; - return { - passiveListener, - activeListenerWithCapture - }; - } - - function getSlideSelector() { - return `.${swiper.params.slideClass}`; - } - - function toggleGestures(method) { - const { - passiveListener - } = getListeners(); - const slideSelector = getSlideSelector(); - swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener); - swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener); - swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener); - } - - function enableGestures() { - if (gesturesEnabled) return; - gesturesEnabled = true; - toggleGestures('on'); - } - - function disableGestures() { - if (!gesturesEnabled) return; - gesturesEnabled = false; - toggleGestures('off'); - } // Attach/Detach Events - - - function enable() { - const zoom = swiper.zoom; - if (zoom.enabled) return; - zoom.enabled = true; - const support = swiper.support; - const { - passiveListener, - activeListenerWithCapture - } = getListeners(); - const slideSelector = getSlideSelector(); // Scale image - - if (support.gestures) { - swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener); - swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener); - } else if (swiper.touchEvents.start === 'touchstart') { - swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener); - swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture); - swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener); - - if (swiper.touchEvents.cancel) { - swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener); - } - } // Move image - - - swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture); - } - - function disable() { - const zoom = swiper.zoom; - if (!zoom.enabled) return; - const support = swiper.support; - zoom.enabled = false; - const { - passiveListener, - activeListenerWithCapture - } = getListeners(); - const slideSelector = getSlideSelector(); // Scale image - - if (support.gestures) { - swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener); - swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener); - } else if (swiper.touchEvents.start === 'touchstart') { - swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener); - swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture); - swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener); - - if (swiper.touchEvents.cancel) { - swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener); - } - } // Move image - - - swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, 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 - }); - } - - function Lazy({ - swiper, - extendParams, - on, - emit - }) { - extendParams({ - lazy: { - checkInView: false, - enabled: false, - loadPrevNext: false, - loadPrevNextAmount: 1, - loadOnTransitionStart: false, - scrollingElement: '', - elementClass: 'swiper-lazy', - loadingClass: 'swiper-lazy-loading', - loadedClass: 'swiper-lazy-loaded', - preloaderClass: 'swiper-lazy-preloader' - } - }); - swiper.lazy = {}; - let scrollHandlerAttached = false; - let initialImageLoaded = false; - - function loadInSlide(index, loadInDuplicate = true) { - const params = swiper.params.lazy; - if (typeof index === 'undefined') return; - if (swiper.slides.length === 0) return; - const isVirtual = swiper.virtual && swiper.params.virtual.enabled; - const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`) : swiper.slides.eq(index); - const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`); - - if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) { - $images.push($slideEl[0]); - } - - if ($images.length === 0) return; - $images.each(imageEl => { - const $imageEl = $(imageEl); - $imageEl.addClass(params.loadingClass); - const background = $imageEl.attr('data-background'); - const src = $imageEl.attr('data-src'); - const srcset = $imageEl.attr('data-srcset'); - const sizes = $imageEl.attr('data-sizes'); - const $pictureEl = $imageEl.parent('picture'); - swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => { - if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return; - - if (background) { - $imageEl.css('background-image', `url("${background}")`); - $imageEl.removeAttr('data-background'); - } else { - if (srcset) { - $imageEl.attr('srcset', srcset); - $imageEl.removeAttr('data-srcset'); - } - - if (sizes) { - $imageEl.attr('sizes', sizes); - $imageEl.removeAttr('data-sizes'); - } - - if ($pictureEl.length) { - $pictureEl.children('source').each(sourceEl => { - const $source = $(sourceEl); - - if ($source.attr('data-srcset')) { - $source.attr('srcset', $source.attr('data-srcset')); - $source.removeAttr('data-srcset'); - } - }); - } - - if (src) { - $imageEl.attr('src', src); - $imageEl.removeAttr('data-src'); - } - } - - $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); - $slideEl.find(`.${params.preloaderClass}`).remove(); - - if (swiper.params.loop && loadInDuplicate) { - const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index'); - - if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) { - const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`); - loadInSlide(originalSlide.index(), false); - } else { - const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`); - loadInSlide(duplicatedSlide.index(), false); - } - } - - emit('lazyImageReady', $slideEl[0], $imageEl[0]); - - if (swiper.params.autoHeight) { - swiper.updateAutoHeight(); - } - }); - emit('lazyImageLoad', $slideEl[0], $imageEl[0]); - }); - } - - function load() { - const { - $wrapperEl, - params: swiperParams, - slides, - activeIndex - } = swiper; - const isVirtual = swiper.virtual && swiperParams.virtual.enabled; - const params = swiperParams.lazy; - let slidesPerView = swiperParams.slidesPerView; - - if (slidesPerView === 'auto') { - slidesPerView = 0; - } - - function slideExist(index) { - if (isVirtual) { - if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) { - return true; - } - } else if (slides[index]) return true; - - return false; - } - - function slideIndex(slideEl) { - if (isVirtual) { - return $(slideEl).attr('data-swiper-slide-index'); - } - - return $(slideEl).index(); - } - - if (!initialImageLoaded) initialImageLoaded = true; - - if (swiper.params.watchSlidesProgress) { - $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => { - const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index(); - loadInSlide(index); - }); - } else if (slidesPerView > 1) { - for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) { - if (slideExist(i)) loadInSlide(i); - } - } else { - loadInSlide(activeIndex); - } - - if (params.loadPrevNext) { - if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) { - const amount = params.loadPrevNextAmount; - const spv = slidesPerView; - const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); - const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides - - for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) { - if (slideExist(i)) loadInSlide(i); - } // Prev Slides - - - for (let i = minIndex; i < activeIndex; i += 1) { - if (slideExist(i)) loadInSlide(i); - } - } else { - const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`); - if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide)); - const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`); - if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide)); - } - } - } - - function checkInViewOnLoad() { - const window = getWindow(); - if (!swiper || swiper.destroyed) return; - const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window); - const isWindow = $scrollElement[0] === window; - const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth; - const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight; - const swiperOffset = swiper.$el.offset(); - const { - rtlTranslate: rtl - } = swiper; - let inView = false; - if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft; - const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]]; - - for (let i = 0; i < swiperCoord.length; i += 1) { - const point = swiperCoord[i]; - - if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) { - if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line - - inView = true; - } - } - - const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? { - passive: true, - capture: false - } : false; - - if (inView) { - load(); - $scrollElement.off('scroll', checkInViewOnLoad, passiveListener); - } else if (!scrollHandlerAttached) { - scrollHandlerAttached = true; - $scrollElement.on('scroll', checkInViewOnLoad, passiveListener); - } - } - - on('beforeInit', () => { - if (swiper.params.lazy.enabled && swiper.params.preloadImages) { - swiper.params.preloadImages = false; - } - }); - on('init', () => { - if (swiper.params.lazy.enabled) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - }); - on('scroll', () => { - if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) { - load(); - } - }); - on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => { - if (swiper.params.lazy.enabled) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - }); - on('transitionStart', () => { - if (swiper.params.lazy.enabled) { - if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - } - }); - on('transitionEnd', () => { - if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - }); - on('slideChange', () => { - const { - lazy, - cssMode, - watchSlidesProgress, - touchReleaseOnEdges, - resistanceRatio - } = swiper.params; - - if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) { - load(); - } - }); - Object.assign(swiper.lazy, { - load, - loadInSlide - }); - } - - /* 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; - } // xxx: for now i will just save one spline function to to - - - function getInterpolateFunction(c) { - if (!swiper.controller.spline) { - 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) { - // 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()); - 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) { - c.setTransition(duration, swiper); - - if (duration !== 0) { - c.transitionStart(); - - if (c.params.autoHeight) { - nextTick(() => { - c.updateAutoHeight(); - }); - } - - c.$wrapperEl.transitionEnd(() => { - if (!controlled) return; - - if (c.params.loop && swiper.params.controller.by === 'slide') { - c.loopFix(); - } - - 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', () => { - 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) return; - swiper.controller.setTranslate(translate, byController); - }); - on('setTransition', (_s, duration, byController) => { - if (!swiper.controller.control) 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, - itemRoleDescriptionMessage: null, - slideRole: 'group' - } - }); - let liveRegion = null; - - function notify(message) { - const notification = liveRegion; - if (notification.length === 0) return; - notification.html(''); - notification.html(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.attr('tabIndex', '0'); - } - - function makeElNotFocusable($el) { - $el.attr('tabIndex', '-1'); - } - - function addElRole($el, role) { - $el.attr('role', role); - } - - function addElRoleDescription($el, description) { - $el.attr('aria-roledescription', description); - } - - function addElControls($el, controls) { - $el.attr('aria-controls', controls); - } - - function addElLabel($el, label) { - $el.attr('aria-label', label); - } - - function addElId($el, id) { - $el.attr('id', id); - } - - function addElLive($el, live) { - $el.attr('aria-live', live); - } - - function disableEl($el) { - $el.attr('aria-disabled', true); - } - - function enableEl($el) { - $el.attr('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.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) { - if (!(swiper.isEnd && !swiper.params.loop)) { - swiper.slideNext(); - } - - if (swiper.isEnd) { - notify(params.lastSlideMessage); - } else { - notify(params.nextSlideMessage); - } - } - - if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) { - if (!(swiper.isBeginning && !swiper.params.loop)) { - swiper.slidePrev(); - } - - if (swiper.isBeginning) { - notify(params.firstSlideMessage); - } else { - notify(params.prevSlideMessage); - } - } - - if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) { - $targetEl[0].click(); - } - } - - function updateNavigation() { - if (swiper.params.loop || !swiper.navigation) return; - const { - $nextEl, - $prevEl - } = swiper.navigation; - - if ($prevEl && $prevEl.length > 0) { - if (swiper.isBeginning) { - disableEl($prevEl); - makeElNotFocusable($prevEl); - } else { - enableEl($prevEl); - makeElFocusable($prevEl); - } - } - - if ($nextEl && $nextEl.length > 0) { - if (swiper.isEnd) { - disableEl($nextEl); - makeElNotFocusable($nextEl); - } else { - enableEl($nextEl); - makeElFocusable($nextEl); - } - } - } - - function hasPagination() { - return swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length; - } - - function updatePagination() { - const params = swiper.params.a11y; - - if (hasPagination()) { - swiper.pagination.bullets.each(bulletEl => { - const $bulletEl = $(bulletEl); - makeElFocusable($bulletEl); - - if (!swiper.params.pagination.renderBullet) { - addElRole($bulletEl, 'button'); - addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1)); - } - }); - } - } - - const initNavEl = ($el, wrapperId, message) => { - makeElFocusable($el); - - if ($el[0].tagName !== 'BUTTON') { - addElRole($el, 'button'); - $el.on('keydown', onEnterOrSpaceKey); - } - - addElLabel($el, message); - addElControls($el, wrapperId); - }; - - function 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); - } // Wrapper - - - const $wrapperEl = swiper.$wrapperEl; - const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`; - const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; - addElId($wrapperEl, wrapperId); - addElLive($wrapperEl, live); // Slide - - if (params.itemRoleDescriptionMessage) { - addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage); - } - - addElRole($(swiper.slides), params.slideRole); - const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length; - swiper.slides.each((slideEl, index) => { - const $slideEl = $(slideEl); - const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index; - const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); - addElLabel($slideEl, ariaLabelMessage); - }); // Navigation - - let $nextEl; - let $prevEl; - - if (swiper.navigation && swiper.navigation.$nextEl) { - $nextEl = swiper.navigation.$nextEl; - } - - if (swiper.navigation && swiper.navigation.$prevEl) { - $prevEl = swiper.navigation.$prevEl; - } - - if ($nextEl && $nextEl.length) { - initNavEl($nextEl, wrapperId, params.nextSlideMessage); - } - - if ($prevEl && $prevEl.length) { - initNavEl($prevEl, wrapperId, params.prevSlideMessage); - } // Pagination - - - if (hasPagination()) { - swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey); - } - } - - function destroy() { - if (liveRegion && liveRegion.length > 0) liveRegion.remove(); - let $nextEl; - let $prevEl; - - if (swiper.navigation && swiper.navigation.$nextEl) { - $nextEl = swiper.navigation.$nextEl; - } - - if (swiper.navigation && swiper.navigation.$prevEl) { - $prevEl = swiper.navigation.$prevEl; - } - - if ($nextEl) { - $nextEl.off('keydown', onEnterOrSpaceKey); - } - - if ($prevEl) { - $prevEl.off('keydown', onEnterOrSpaceKey); - } // Pagination - - - if (hasPagination()) { - swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey); - } - } - - on('beforeInit', () => { - liveRegion = $(``); - }); - on('afterInit', () => { - if (!swiper.params.a11y.enabled) return; - init(); - updateNavigation(); - }); - on('toEdge', () => { - if (!swiper.params.a11y.enabled) return; - updateNavigation(); - }); - on('fromEdge', () => { - 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' - } - }); - 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.slides.eq(index); - let value = slugify(slide.attr('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}/${value}`; - } else if (!location.pathname.includes(key)) { - value = `${key}/${value}`; - } - - 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.eq(i); - const slideHistory = slugify(slide.attr('data-history')); - - if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) { - const index = slide.index(); - swiper.slideTo(index, speed, runCallbacks); - } - } - } else { - swiper.slideTo(0, speed, runCallbacks); - } - }; - - const setHistoryPopState = () => { - paths = getPathValues(swiper.params.url); - scrollToSlide(swiper.params.speed, swiper.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) 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 - } - }); - - const onHashChange = () => { - emit('hashChange'); - const newHash = document.location.hash.replace('#', ''); - const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash'); - - if (newHash !== activeSlideHash) { - const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index(); - if (typeof newIndex === 'undefined') return; - swiper.slideTo(newIndex); - } - }; - - const setHash = () => { - if (!initialized || !swiper.params.hashNavigation.enabled) return; - - if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { - window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''); - emit('hashSet'); - } else { - const slide = swiper.slides.eq(swiper.activeIndex); - const hash = slide.attr('data-hash') || slide.attr('data-history'); - document.location.hash = hash || ''; - 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; - - for (let i = 0, length = swiper.slides.length; i < length; i += 1) { - const slide = swiper.slides.eq(i); - const slideHash = slide.attr('data-hash') || slide.attr('data-history'); - - if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) { - const index = slide.index(); - swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true); - } - } - } - - if (swiper.params.hashNavigation.watchState) { - $(window).on('hashchange', onHashChange); - } - }; - - const destroy = () => { - if (swiper.params.hashNavigation.watchState) { - $(window).off('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" */ - function Autoplay({ - swiper, - extendParams, - on, - emit - }) { - let timeout; - swiper.autoplay = { - running: false, - paused: false - }; - extendParams({ - autoplay: { - enabled: false, - delay: 3000, - waitForTransition: true, - disableOnInteraction: true, - stopOnLastSlide: false, - reverseDirection: false, - pauseOnMouseEnter: false - } - }); - - function run() { - const $activeSlideEl = swiper.slides.eq(swiper.activeIndex); - let delay = swiper.params.autoplay.delay; - - if ($activeSlideEl.attr('data-swiper-autoplay')) { - delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay; - } - - clearTimeout(timeout); - timeout = nextTick(() => { - let autoplayResult; - - if (swiper.params.autoplay.reverseDirection) { - if (swiper.params.loop) { - swiper.loopFix(); - autoplayResult = swiper.slidePrev(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.isBeginning) { - autoplayResult = swiper.slidePrev(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.params.autoplay.stopOnLastSlide) { - autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); - emit('autoplay'); - } else { - stop(); - } - } else if (swiper.params.loop) { - swiper.loopFix(); - autoplayResult = swiper.slideNext(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.isEnd) { - autoplayResult = swiper.slideNext(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.params.autoplay.stopOnLastSlide) { - autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true); - emit('autoplay'); - } else { - stop(); - } - - if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) { - run(); - } - }, delay); - } - - function start() { - if (typeof timeout !== 'undefined') return false; - if (swiper.autoplay.running) return false; - swiper.autoplay.running = true; - emit('autoplayStart'); - run(); - return true; - } - - function stop() { - if (!swiper.autoplay.running) return false; - if (typeof timeout === 'undefined') return false; - - if (timeout) { - clearTimeout(timeout); - timeout = undefined; - } - - swiper.autoplay.running = false; - emit('autoplayStop'); - return true; - } - - function pause(speed) { - if (!swiper.autoplay.running) return; - if (swiper.autoplay.paused) return; - if (timeout) clearTimeout(timeout); - swiper.autoplay.paused = true; - - if (speed === 0 || !swiper.params.autoplay.waitForTransition) { - swiper.autoplay.paused = false; - run(); - } else { - ['transitionend', 'webkitTransitionEnd'].forEach(event => { - swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd); - }); - } - } - - function onVisibilityChange() { - const document = getDocument(); - - if (document.visibilityState === 'hidden' && swiper.autoplay.running) { - pause(); - } - - if (document.visibilityState === 'visible' && swiper.autoplay.paused) { - run(); - swiper.autoplay.paused = false; - } - } - - function onTransitionEnd(e) { - if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return; - if (e.target !== swiper.$wrapperEl[0]) return; - ['transitionend', 'webkitTransitionEnd'].forEach(event => { - swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd); - }); - swiper.autoplay.paused = false; - - if (!swiper.autoplay.running) { - stop(); - } else { - run(); - } - } - - function onMouseEnter() { - if (swiper.params.autoplay.disableOnInteraction) { - stop(); - } else { - pause(); - } - - ['transitionend', 'webkitTransitionEnd'].forEach(event => { - swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd); - }); - } - - function onMouseLeave() { - if (swiper.params.autoplay.disableOnInteraction) { - return; - } - - swiper.autoplay.paused = false; - run(); - } - - function attachMouseEvents() { - if (swiper.params.autoplay.pauseOnMouseEnter) { - swiper.$el.on('mouseenter', onMouseEnter); - swiper.$el.on('mouseleave', onMouseLeave); - } - } - - function detachMouseEvents() { - swiper.$el.off('mouseenter', onMouseEnter); - swiper.$el.off('mouseleave', onMouseLeave); - } - - on('init', () => { - if (swiper.params.autoplay.enabled) { - start(); - const document = getDocument(); - document.addEventListener('visibilitychange', onVisibilityChange); - attachMouseEvents(); - } - }); - on('beforeTransitionStart', (_s, speed, internal) => { - if (swiper.autoplay.running) { - if (internal || !swiper.params.autoplay.disableOnInteraction) { - swiper.autoplay.pause(speed); - } else { - stop(); - } - } - }); - on('sliderFirstMove', () => { - if (swiper.autoplay.running) { - if (swiper.params.autoplay.disableOnInteraction) { - stop(); - } else { - pause(); - } - } - }); - on('touchEnd', () => { - if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) { - run(); - } - }); - on('destroy', () => { - detachMouseEvents(); - - if (swiper.autoplay.running) { - stop(); - } - - const document = getDocument(); - document.removeEventListener('visibilitychange', onVisibilityChange); - }); - Object.assign(swiper.autoplay, { - pause, - run, - start, - stop - }); - } - - 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 onThumbClick() { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) return; - const clickedIndex = thumbsSwiper.clickedIndex; - const clickedSlide = thumbsSwiper.clickedSlide; - if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return; - if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; - let slideToIndex; - - if (thumbsSwiper.params.loop) { - slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10); - } else { - slideToIndex = clickedIndex; - } - - if (swiper.params.loop) { - let currentIndex = swiper.activeIndex; - - if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) { - swiper.loopFix(); // eslint-disable-next-line - - swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; - currentIndex = swiper.activeIndex; - } - - const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); - const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); - if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex; - } - - 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) { - 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 - }); - } 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.addClass(swiper.params.thumbs.thumbsContainerClass); - swiper.thumbs.swiper.on('tap', onThumbClick); - return true; - } - - function update(initial) { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) 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) { - let currentThumbsIndex = thumbsSwiper.activeIndex; - let newThumbsIndex; - let direction; - - if (thumbsSwiper.params.loop) { - if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) { - thumbsSwiper.loopFix(); // eslint-disable-next-line - - thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft; - currentThumbsIndex = thumbsSwiper.activeIndex; - } // Find actual thumbs index to slide to - - - const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index(); - const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index(); - - if (typeof prevThumbsIndex === 'undefined') { - newThumbsIndex = nextThumbsIndex; - } else if (typeof nextThumbsIndex === 'undefined') { - newThumbsIndex = prevThumbsIndex; - } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) { - newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex; - } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { - newThumbsIndex = nextThumbsIndex; - } else { - newThumbsIndex = prevThumbsIndex; - } - - 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, initial ? 0 : undefined); - } - } // 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.removeClass(thumbActiveClass); - - if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { - for (let i = 0; i < thumbsToActivate; i += 1) { - thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass); - } - } else { - for (let i = 0; i < thumbsToActivate; i += 1) { - thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass); - } - } - } - - on('beforeInit', () => { - const { - thumbs - } = swiper.params; - if (!thumbs || !thumbs.swiper) return; - init(); - update(true); - }); - on('slideChange update resize observerUpdate', () => { - if (!swiper.thumbs.swiper) return; - update(); - }); - on('setTransition', (_s, duration) => { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) return; - thumbsSwiper.setTransition(duration); - }); - on('beforeDestroy', () => { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) return; - - if (swiperCreated && thumbsSwiper) { - 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 onTouchMove() { - 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 - }) { - 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; - $wrapperEl.transitionEnd(() => { - if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; - emit('momentumBounce'); - swiper.setTransition(params.speed); - setTimeout(() => { - swiper.setTranslate(afterBouncePosition); - $wrapperEl.transitionEnd(() => { - 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; - $wrapperEl.transitionEnd(() => { - 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) { - swiper.updateProgress(); - swiper.updateActiveIndex(); - swiper.updateSlidesClasses(); - } - } - - Object.assign(swiper, { - freeMode: { - onTouchMove, - onTouchEnd - } - }); - } - - function Grid({ - swiper, - extendParams - }) { - extendParams({ - grid: { - rows: 1, - fill: 'column' - } - }); - let slidesNumberEvenToRows; - let slidesPerRow; - let numFullColumns; - - const initSlides = slidesLength => { - const { - slidesPerView - } = swiper.params; - const { - rows, - fill - } = swiper.params.grid; - slidesPerRow = slidesNumberEvenToRows / rows; - 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); - } - }; - - const updateSlide = (i, slide, slidesLength, getDirectionLabel) => { - const { - slidesPerGroup, - spaceBetween - } = swiper.params; - const { - rows, - fill - } = swiper.params.grid; // 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.css({ - '-webkit-order': newSlideOrderIndex, - 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.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : ''); - }; - - const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => { - const { - spaceBetween, - centeredSlides, - roundLengths - } = swiper.params; - const { - rows - } = swiper.params.grid; - swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; - swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; - swiper.$wrapperEl.css({ - [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px` - }); - - if (centeredSlides) { - snapGrid.splice(0, snapGrid.length); - 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.push(...newSlidesGrid); - } - }; - - swiper.grid = { - initSlides, - updateSlide, - updateWrapperSize - }; - } - - function appendSlide(slides) { - const swiper = this; - const { - $wrapperEl, - params - } = swiper; - - if (params.loop) { - swiper.loopDestroy(); - } - - if (typeof slides === 'object' && 'length' in slides) { - for (let i = 0; i < slides.length; i += 1) { - if (slides[i]) $wrapperEl.append(slides[i]); - } - } else { - $wrapperEl.append(slides); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - swiper.update(); - } - } - - function prependSlide(slides) { - const swiper = this; - const { - params, - $wrapperEl, - activeIndex - } = swiper; - - if (params.loop) { - swiper.loopDestroy(); - } - - let newActiveIndex = activeIndex + 1; - - if (typeof slides === 'object' && 'length' in slides) { - for (let i = 0; i < slides.length; i += 1) { - if (slides[i]) $wrapperEl.prepend(slides[i]); - } - - newActiveIndex = activeIndex + slides.length; - } else { - $wrapperEl.prepend(slides); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - swiper.update(); - } - - swiper.slideTo(newActiveIndex, 0, false); - } - - function addSlide(index, slides) { - const swiper = this; - const { - $wrapperEl, - params, - activeIndex - } = swiper; - let activeIndexBuffer = activeIndex; - - if (params.loop) { - activeIndexBuffer -= swiper.loopedSlides; - swiper.loopDestroy(); - swiper.slides = $wrapperEl.children(`.${params.slideClass}`); - } - - 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.eq(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]) $wrapperEl.append(slides[i]); - } - - newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; - } else { - $wrapperEl.append(slides); - } - - for (let i = 0; i < slidesBuffer.length; i += 1) { - $wrapperEl.append(slidesBuffer[i]); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - 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, - $wrapperEl, - activeIndex - } = swiper; - let activeIndexBuffer = activeIndex; - - if (params.loop) { - activeIndexBuffer -= swiper.loopedSlides; - swiper.loopDestroy(); - swiper.slides = $wrapperEl.children(`.${params.slideClass}`); - } - - 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.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex -= 1; - } - - newActiveIndex = Math.max(newActiveIndex, 0); - } else { - indexToRemove = slidesIndexes; - if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex -= 1; - newActiveIndex = Math.max(newActiveIndex, 0); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - 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 - } = 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', () => { - if (swiper.params.effect !== effect) return; - setTranslate(); - }); - on('setTransition', (_s, duration) => { - if (swiper.params.effect !== effect) return; - setTransition(duration); - }); - } - - function effectTarget(effectParams, $slideEl) { - if (effectParams.transformEl) { - return $slideEl.find(effectParams.transformEl).css({ - 'backface-visibility': 'hidden', - '-webkit-backface-visibility': 'hidden' - }); - } - - return $slideEl; - } - - function effectVirtualTransitionEnd({ - swiper, - duration, - transformEl, - allSlides - }) { - const { - slides, - activeIndex, - $wrapperEl - } = swiper; - - if (swiper.params.virtualTranslate && duration !== 0) { - let eventTriggered = false; - let $transitionEndTarget; - - if (allSlides) { - $transitionEndTarget = transformEl ? slides.find(transformEl) : slides; - } else { - $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex); - } - - $transitionEndTarget.transitionEnd(() => { - if (eventTriggered) return; - if (!swiper || swiper.destroyed) return; - eventTriggered = true; - swiper.animating = false; - const triggerEvents = ['webkitTransitionEnd', 'transitionend']; - - for (let i = 0; i < triggerEvents.length; i += 1) { - $wrapperEl.trigger(triggerEvents[i]); - } - }); - } - } - - function EffectFade({ - swiper, - extendParams, - on - }) { - extendParams({ - fadeEffect: { - crossFade: false, - transformEl: null - } - }); - - const setTranslate = () => { - const { - slides - } = swiper; - const params = swiper.params.fadeEffect; - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = swiper.slides.eq(i); - const offset = $slideEl[0].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[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0); - const $targetEl = effectTarget(params, $slideEl); - $targetEl.css({ - opacity: slideOpacity - }).transform(`translate3d(${tx}px, ${ty}px, 0px)`); - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.fadeEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl, - 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 setTranslate = () => { - const { - $el, - $wrapperEl, - slides, - width: swiperWidth, - height: swiperHeight, - rtlTranslate: rtl, - size: swiperSize, - browser - } = 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 = $wrapperEl.find('.swiper-cube-shadow'); - - if ($cubeShadowEl.length === 0) { - $cubeShadowEl = $('
'); - $wrapperEl.append($cubeShadowEl); - } - - $cubeShadowEl.css({ - height: `${swiperWidth}px` - }); - } else { - $cubeShadowEl = $el.find('.swiper-cube-shadow'); - - if ($cubeShadowEl.length === 0) { - $cubeShadowEl = $('
'); - $el.append($cubeShadowEl); - } - } - } - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - let slideIndex = i; - - if (isVirtual) { - slideIndex = parseInt($slideEl.attr('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[0].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(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${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.transform(transform); - - if (params.slideShadows) { - // Set shadows - let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); - let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); - - if (shadowBefore.length === 0) { - shadowBefore = $(`
`); - $slideEl.append(shadowBefore); - } - - if (shadowAfter.length === 0) { - shadowAfter = $(`
`); - $slideEl.append(shadowAfter); - } - - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - } - - $wrapperEl.css({ - '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`, - 'transform-origin': `50% 50% -${swiperSize / 2}px` - }); - - if (params.shadow) { - if (isHorizontal) { - $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) 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.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`); - } - } - - const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0; - $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`); - }; - - const setTransition = duration => { - const { - $el, - slides - } = swiper; - slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - - if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { - $el.find('.swiper-cube-shadow').transition(duration); - } - }; - - effectInit({ - effect: 'cube', - swiper, - on, - setTranslate, - setTransition, - perspective: () => true, - overwriteParams: () => ({ - slidesPerView: 1, - slidesPerGroup: 1, - watchSlidesProgress: true, - resistanceRatio: 0, - spaceBetween: 0, - centeredSlides: false, - virtualTranslate: true - }) - }); - } - - function createShadow(params, $slideEl, side) { - const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`; - const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl; - let $shadowEl = $shadowContainer.children(`.${shadowClass}`); - - if (!$shadowEl.length) { - $shadowEl = $(`
`); - $shadowContainer.append($shadowEl); - } - - return $shadowEl; - } - - function EffectFlip({ - swiper, - extendParams, - on - }) { - extendParams({ - flipEffect: { - slideShadows: true, - limitRotation: true, - transformEl: null - } - }); - - const setTranslate = () => { - const { - slides, - rtlTranslate: rtl - } = swiper; - const params = swiper.params.flipEffect; - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - let progress = $slideEl[0].progress; - - if (swiper.params.flipEffect.limitRotation) { - progress = Math.max(Math.min($slideEl[0].progress, 1), -1); - } - - const offset = $slideEl[0].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[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length; - - if (params.slideShadows) { - // Set shadows - let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); - let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); - - if (shadowBefore.length === 0) { - shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top'); - } - - if (shadowAfter.length === 0) { - shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); - } - - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - - const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(transform); - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.flipEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl - }); - }; - - effectInit({ - effect: 'flip', - swiper, - on, - setTranslate, - setTransition, - 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, - transformEl: null - } - }); - - 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; // Each slide offset from center - - for (let i = 0, length = slides.length; i < length; i += 1) { - const $slideEl = slides.eq(i); - const slideSize = slidesSizesGrid[i]; - const slideOffset = $slideEl[0].swiperSlideOffset; - const offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * 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(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`; - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(slideTransform); - $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; - - if (params.slideShadows) { - // Set shadows - let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); - let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); - - if ($shadowBeforeEl.length === 0) { - $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top'); - } - - if ($shadowAfterEl.length === 0) { - $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom'); - } - - if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; - if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; - } - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.coverflowEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - }; - - effectInit({ - effect: 'coverflow', - swiper, - on, - setTranslate, - setTransition, - perspective: () => true, - overwriteParams: () => ({ - watchSlidesProgress: true - }) - }); - } - - function EffectCreative({ - swiper, - extendParams, - on - }) { - extendParams({ - creativeEffect: { - transformEl: null, - 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; - - if (isCenteredSlides) { - const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; - $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`); - } - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - const slideProgress = $slideEl[0].progress; - const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress); - let originalProgress = progress; - - if (!isCenteredSlides) { - originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress); - } - - const offset = $slideEl[0].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) => { - r[index] = data.rotate[index] * Math.abs(progress * multiplier); - }); - $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; - const translateString = t.join(', '); - const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${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.children('.swiper-slide-shadow'); - - if ($shadowEl.length === 0 && data.shadow) { - $shadowEl = createShadow(params, $slideEl); - } - - if ($shadowEl.length) { - const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; - $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); - } - } - - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(transform).css({ - opacity: opacityString - }); - - if (data.origin) { - $targetEl.css('transform-origin', data.origin); - } - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.creativeEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl, - 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, - transformEl: null - } - }); - - const setTranslate = () => { - const { - slides, - activeIndex - } = swiper; - const params = swiper.params.cardsEffect; - const { - startTranslate, - isTouched - } = swiper.touchEventsData; - const currentTranslate = swiper.translate; - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - const slideProgress = $slideEl[0].progress; - const progress = Math.min(Math.max(slideProgress, -4), 4); - let offset = $slideEl[0].swiperSlideOffset; - - if (swiper.params.centeredSlides && !swiper.params.cssMode) { - swiper.$wrapperEl.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 = -2 * progress; - let tXAdd = 8 - Math.abs(progress) * 0.75; - const isSwipeToNext = (i === activeIndex || i === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; - const isSwipeToPrev = (i === activeIndex || i === 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 = `${-25 * subProgress * Math.abs(progress)}%`; - } - - if (progress < 0) { - // next - tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`; - } else if (progress > 0) { - // prev - tX = `calc(${tX}px + (-${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}`; - const transform = ` - translate3d(${tX}, ${tY}, ${tZ}px) - rotateZ(${rotate}deg) - scale(${scaleString}) - `; - - if (params.slideShadows) { - // Set shadows - let $shadowEl = $slideEl.find('.swiper-slide-shadow'); - - if ($shadowEl.length === 0) { - $shadowEl = createShadow(params, $slideEl); - } - - if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); - } - - $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(transform); - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.cardsEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl - }); - }; - - effectInit({ - effect: 'cards', - swiper, - on, - setTranslate, - setTransition, - perspective: () => true, - overwriteParams: () => ({ - watchSlidesProgress: true, - virtualTranslate: !swiper.params.cssMode - }) - }); - } - - // Swiper Class - const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; - Swiper.use(modules); - - return Swiper; - -}))); -//# sourceMappingURL=swiper-bundle.js.map diff --git a/resources/web/guide/swiper/swiper-bundle.js.map b/resources/web/guide/swiper/swiper-bundle.js.map deleted file mode 100644 index a334e41bac..0000000000 --- a/resources/web/guide/swiper/swiper-bundle.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"swiper-bundle.js.map","sources":["../node_modules/ssr-window/ssr-window.esm.js","../node_modules/dom7/dom7.esm.js","../src/shared/dom.js","../src/shared/utils.js","../src/shared/get-support.js","../src/shared/get-device.js","../src/shared/get-browser.js","../src/core/modules/resize/resize.js","../src/core/modules/observer/observer.js","../src/core/events-emitter.js","../src/core/update/updateSize.js","../src/core/update/updateSlides.js","../src/core/update/updateAutoHeight.js","../src/core/update/updateSlidesOffset.js","../src/core/update/updateSlidesProgress.js","../src/core/update/updateProgress.js","../src/core/update/updateSlidesClasses.js","../src/core/update/updateActiveIndex.js","../src/core/update/updateClickedSlide.js","../src/core/update/index.js","../src/core/translate/getTranslate.js","../src/core/translate/setTranslate.js","../src/core/translate/minTranslate.js","../src/core/translate/maxTranslate.js","../src/core/translate/translateTo.js","../src/core/translate/index.js","../src/core/transition/setTransition.js","../src/core/transition/transitionEmit.js","../src/core/transition/transitionStart.js","../src/core/transition/transitionEnd.js","../src/core/transition/index.js","../src/core/slide/slideTo.js","../src/core/slide/slideToLoop.js","../src/core/slide/slideNext.js","../src/core/slide/slidePrev.js","../src/core/slide/slideReset.js","../src/core/slide/slideToClosest.js","../src/core/slide/slideToClickedSlide.js","../src/core/slide/index.js","../src/core/loop/loopCreate.js","../src/core/loop/loopFix.js","../src/core/loop/loopDestroy.js","../src/core/loop/index.js","../src/core/grab-cursor/setGrabCursor.js","../src/core/grab-cursor/unsetGrabCursor.js","../src/core/grab-cursor/index.js","../src/core/events/onTouchStart.js","../src/core/events/onTouchMove.js","../src/core/events/onTouchEnd.js","../src/core/events/onResize.js","../src/core/events/onClick.js","../src/core/events/onScroll.js","../src/core/events/index.js","../src/core/breakpoints/setBreakpoint.js","../src/core/breakpoints/getBreakpoint.js","../src/core/breakpoints/index.js","../src/core/classes/addClasses.js","../src/core/classes/removeClasses.js","../src/core/classes/index.js","../src/core/images/loadImage.js","../src/core/images/preloadImages.js","../src/core/images/index.js","../src/core/check-overflow/index.js","../src/core/defaults.js","../src/core/moduleExtendParams.js","../src/core/core.js","../src/modules/virtual/virtual.js","../src/modules/keyboard/keyboard.js","../src/modules/mousewheel/mousewheel.js","../src/shared/create-element-if-not-defined.js","../src/modules/navigation/navigation.js","../src/shared/classes-to-selector.js","../src/modules/pagination/pagination.js","../src/modules/scrollbar/scrollbar.js","../src/modules/parallax/parallax.js","../src/modules/zoom/zoom.js","../src/modules/lazy/lazy.js","../src/modules/controller/controller.js","../src/modules/a11y/a11y.js","../src/modules/history/history.js","../src/modules/hash-navigation/hash-navigation.js","../src/modules/autoplay/autoplay.js","../src/modules/thumbs/thumbs.js","../src/modules/free-mode/free-mode.js","../src/modules/grid/grid.js","../src/modules/manipulation/methods/appendSlide.js","../src/modules/manipulation/methods/prependSlide.js","../src/modules/manipulation/methods/addSlide.js","../src/modules/manipulation/methods/removeSlide.js","../src/modules/manipulation/methods/removeAllSlides.js","../src/modules/manipulation/manipulation.js","../src/shared/effect-init.js","../src/shared/effect-target.js","../src/shared/effect-virtual-transition-end.js","../src/modules/effect-fade/effect-fade.js","../src/modules/effect-cube/effect-cube.js","../src/shared/create-shadow.js","../src/modules/effect-flip/effect-flip.js","../src/modules/effect-coverflow/effect-coverflow.js","../src/modules/effect-creative/effect-creative.js","../src/modules/effect-cards/effect-cards.js","../src/swiper.js"],"sourcesContent":["/**\n * SSR Window 4.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.1\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n super(...(items || []));\n makeReactive(this);\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import {\n $,\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n} from 'dom7';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n Object.defineProperty($.fn, methodName, { value: Methods[methodName], writable: true });\n});\n\nexport default $;\n","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform\n .split(', ')\n .map((a) => a.replace(',', '.'))\n .join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix =\n curStyle.MozTransform ||\n curStyle.OTransform ||\n curStyle.MsTransform ||\n curStyle.msTransform ||\n curStyle.transform ||\n curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return (\n typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n );\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter((key) => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({ swiper, targetPosition, side }) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return (dir === 'next' && current >= target) || (dir === 'prev' && current <= target);\n };\n\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\n\nexport {\n animateCSSModeScroll,\n deleteProps,\n nextTick,\n now,\n getTranslate,\n isObject,\n extend,\n getComputedStyle,\n setCSSProperty,\n};\n","import { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n\n touch: !!(\n 'ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)\n ),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n })(),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n })(),\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nexport { getSupport };\n","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\n\nlet deviceCached;\n\nfunction calcDevice({ userAgent } = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nexport { getDevice };\n","import { getWindow } from 'ssr-window';\n\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nexport { getBrowser };\n","import { getWindow } from 'ssr-window';\n\nexport default function Resize({ swiper, on, emit }) {\n const window = getWindow();\n let observer = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver((entries) => {\n const { width, height } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({ contentBoxSize, contentRect, target }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect\n ? contentRect.width\n : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect\n ? contentRect.height\n : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function Observer({ swiper, extendParams, on, emit }) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren,\n });\n\n // Observe wrapper\n attach(swiper.$wrapperEl[0], { attributes: false });\n };\n const destroy = () => {\n observers.forEach((observer) => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n });\n on('init', init);\n on('destroy', destroy);\n}\n","/* eslint-disable no-underscore-dangle */\n\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (\n eventHandler === handler ||\n (eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler)\n ) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n\n eventsArray.forEach((event) => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach((eventHandler) => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n },\n};\n","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width =\n width -\n parseInt($el.css('padding-left') || 0, 10) -\n parseInt($el.css('padding-right') || 0, 10);\n height =\n height -\n parseInt($el.css('padding-top') || 0, 10) -\n parseInt($el.css('padding-bottom') || 0, 10);\n\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { setCSSProperty } from '../../shared/utils.js';\n\nexport default function updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom',\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n\n const { $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginBottom: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '', marginTop: '' });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n\n const shouldResetSlideSize =\n params.slidesPerView === 'auto' &&\n params.breakpoints &&\n Object.keys(params.breakpoints).filter((key) => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const { clientWidth, offsetWidth } = slide[0];\n slideSize =\n width +\n paddingLeft +\n paddingRight +\n marginLeft +\n marginRight +\n (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0)\n slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (\n (index - Math.min(swiper.params.slidesPerGroupSkip, index)) %\n swiper.params.slidesPerGroup ===\n 0\n )\n snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`,\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n\n if (\n Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) >\n 1\n ) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides\n .filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n })\n .css({ [key]: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(\n swiper.wrapperEl,\n '--swiper-centered-offset-after',\n `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`,\n );\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map((v) => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map((v) => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n}\n","export default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = (index) => {\n if (isVirtual) {\n return swiper.slides.filter(\n (el) => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index,\n )[0];\n }\n return swiper.slides.eq(index)[0];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal()\n ? slides[i].offsetLeft\n : slides[i].offsetTop;\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateSlidesProgress(translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl, snapGrid } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress =\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress =\n (offsetCenter -\n snapGrid[0] +\n (params.centeredSlides ? swiper.minTranslate() : 0) -\n slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible =\n (slideBefore >= 0 && slideBefore < swiper.size - 1) ||\n (slideAfter > 1 && slideAfter <= swiper.size) ||\n (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","export default function updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && swiper.translate * multiplier) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || (params.centeredSlides && params.autoHeight))\n swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function updateSlidesClasses() {\n const swiper = this;\n\n const { slides, params, $wrapperEl, activeIndex, realIndex } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(\n `${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`,\n );\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\n `.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`,\n );\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide\n .nextAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide\n .prevAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n translate >= slidesGrid[i] &&\n translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2\n ) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(\n swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex,\n 10,\n );\n\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (\n params.slideToClickedSlide &&\n swiper.clickedIndex !== undefined &&\n swiper.clickedIndex !== swiper.activeIndex\n ) {\n swiper.slideToClickedSlide();\n }\n}\n","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","import { getTranslate } from '../../shared/utils.js';\n\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const { params, rtlTranslate: rtl, translate, $wrapperEl } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function setTranslate(translate, byController) {\n const swiper = this;\n const { rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function minTranslate() {\n return -this.snapGrid[0];\n}\n","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function translateTo(\n translate = 0,\n speed = this.params.speed,\n runCallbacks = true,\n translateBounds = true,\n internal,\n) {\n const swiper = this;\n\n const { params, wrapperEl } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: -newTranslate, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","export default function transitionEmit({ swiper, runCallbacks, direction, step }) {\n const { activeIndex, previousIndex } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'Start' });\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'End' });\n}\n","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function slideTo(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n initial,\n) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(\n `The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`,\n );\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\n `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`,\n );\n }\n\n // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled,\n } = swiper;\n\n if (\n (swiper.animating && params.preventInteractionOnTransition) ||\n (!enabled && !internal && !initial)\n ) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2\n ) {\n slideIndex = i;\n } else if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext\n ) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (\n !swiper.allowSlideNext &&\n translate < swiper.translate &&\n translate < swiper.minTranslate()\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n translate > swiper.translate &&\n translate > swiper.maxTranslate()\n ) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: t, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","export default function slideToLoop(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { animating, enabled, params } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating, snapGrid, slidesGrid, rtlTranslate, enabled } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (\n params.slidesPerView === 'auto' &&\n params.slidesPerGroup === 1 &&\n params.slidesPerGroupAuto\n ) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n threshold = 0.5,\n) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function slideToClickedSlide() {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView =\n params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n slideToIndex < swiper.loopedSlides - slidesPerView / 2 ||\n slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n const $selector = $($wrapperEl.children()[0].parentNode);\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(\n `${params.slideClass} ${params.slideBlankClass}`,\n );\n $selector.append(blankNode);\n }\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function loopFix() {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function loopDestroy() {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`,\n )\n .remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","export default function setGrabCursor(moving) {\n const swiper = this;\n if (\n swiper.support.touch ||\n !swiper.params.simulateTouch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n )\n return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","export default function unsetGrabCursor() {\n const swiper = this;\n if (\n swiper.support.touch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n ) {\n return;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}\n","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n\n const data = swiper.touchEventsData;\n const { params, touches, enabled } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector\n ? params.noSwipingSelector\n : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (\n params.noSwiping &&\n (isTargetShadow\n ? closestElement(noSwipingSelector, e.target)\n : $targetEl.closest(noSwipingSelector)[0])\n ) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection &&\n (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)\n ) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n if (\n document.activeElement &&\n $(document.activeElement).is(data.focusableElements) &&\n document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault =\n preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (\n (params.touchStartForcePreventDefault || shouldPreventDefault) &&\n !$targetEl[0].isContentEditable\n ) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch =\n e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) ||\n (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) ||\n (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold)\n return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (\n (swiper.isHorizontal() && touches.currentY === touches.startY) ||\n (swiper.isVertical() && touches.currentX === touches.startX)\n ) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal()\n ? touchAngle > params.touchAngle\n : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.minTranslate() -\n 1 +\n (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.maxTranslate() +\n 1 -\n (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n swiper.swipeDirection === 'next' &&\n data.currentTranslate < data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (\n !swiper.allowSlidePrev &&\n swiper.swipeDirection === 'prev' &&\n data.currentTranslate > data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal()\n ? touches.currentX - touches.startX\n : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (\n (params.freeMode && params.freeMode.enabled && swiper.freeMode) ||\n params.watchSlidesProgress\n ) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import { now, nextTick } from '../../shared/utils.js';\n\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const { params, touches, rtlTranslate: rtl, slidesGrid, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (\n params.grabCursor &&\n data.isMoved &&\n data.isTouched &&\n (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)\n ) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (\n !data.isTouched ||\n !data.isMoved ||\n !swiper.swipeDirection ||\n touches.diff === 0 ||\n data.currentTranslate === data.startTranslate\n ) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({ currentPos });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (\n let i = 0;\n i < slidesGrid.length;\n i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup\n ) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget =\n swiper.navigation &&\n (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n","export default function onResize() {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if (\n (params.slidesPerView === 'auto' || params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.isBeginning &&\n !swiper.params.centeredSlides\n ) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","export default function onScroll() {\n const swiper = this;\n const { wrapperEl, rtlTranslate, enabled } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { getDocument } from 'ssr-window';\n\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const { params, touchEvents, el, wrapperEl, device, support } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener =\n touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](\n touchEvents.move,\n swiper.onTouchMove,\n support.passiveListener ? { passive: false, capture } : capture,\n );\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](\n device.ios || device.android\n ? 'resize orientationchange observerUpdate'\n : 'resize observerUpdate',\n onResize,\n true,\n );\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const { params, support } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const { activeIndex, initialized, loopedSlides = 0, params, $el } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(\n `${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`,\n );\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n if (\n (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column') ||\n (!breakpointParams.grid.fill && params.grid.fill === 'column')\n ) {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n const directionChanged =\n breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop =\n params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n\n const isEnabled = swiper.params.enabled;\n\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || (base === 'container' && !containerEl)) return undefined;\n let breakpoint = false;\n\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\n\nexport default { setBreakpoint, getBreakpoint };\n","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach((item) => {\n if (typeof item === 'object') {\n Object.keys(item).forEach((classNames) => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const { classNames, params, rtl, $el, device, support } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses([\n 'initialized',\n params.direction,\n { 'pointer-events': !support.touch },\n { 'free-mode': swiper.params.freeMode && params.freeMode.enabled },\n { 'autoheight': params.autoHeight },\n { 'rtl': rtl },\n { 'grid': params.grid && params.grid.rows > 1 },\n { 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' },\n { 'android': device.android },\n { 'ios': device.ios },\n { 'css-mode': params.cssMode },\n { 'centered': params.cssMode && params.centeredSlides },\n ], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}\n","export default function removeClasses() {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}\n","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\n\nexport default { addClasses, removeClasses };\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n function onReady() {\n if (callback) callback();\n }\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady,\n );\n }\n}\n","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","function checkOverflow() {\n const swiper = this;\n const { isLocked: wasLocked, params } = swiper;\n const { slidesOffsetBefore } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge =\n swiper.slidesGrid[lastSlideIndex] +\n swiper.slidesSizesGrid[lastSlideIndex] +\n slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n\n // Overrides\n width: null,\n height: null,\n\n //\n preventInteractionOnTransition: false,\n\n // ssr\n userAgent: null,\n url: null,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n\n // Internals\n _emitClasses: false,\n};\n","import { extend } from '../shared/utils.js';\n\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (\n ['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 &&\n params[moduleParamName] === true\n ) {\n params[moduleParamName] = { auto: true };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n extend(allModulesParams, obj);\n };\n}\n","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\n\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\n\nimport eventsEmitter from './events-emitter.js';\n\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\n\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\n\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n if (\n args.length === 1 &&\n args[0].constructor &&\n Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object'\n ) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each((containerEl) => {\n const newParams = extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({ userAgent: params.userAgent });\n swiper.browser = getBrowser();\n\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n\n swiper.modules.forEach((mod) => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper),\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach((eventName) => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Save Dom lib\n swiper.$ = $;\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return swiper.support.touch || !swiper.params.simulateTouch\n ? swiper.touchEventsTouch\n : swiper.touchEventsDesktop;\n })(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n });\n\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter((className) => {\n return (\n className.indexOf('swiper') === 0 ||\n className.indexOf(swiper.params.containerModifierClass) === 0\n );\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n\n return slideEl.className\n .split(' ')\n .filter((className) => {\n return (\n className.indexOf('swiper-slide') === 0 ||\n className.indexOf(swiper.params.slideClass) === 0\n );\n })\n .join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each((slideEl) => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({ slideEl, classNames });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const { params, slides, slidesGrid, slidesSizesGrid, size: swiperSize, activeIndex } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact\n ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize\n : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(\n Math.max(translateValue, swiper.maxTranslate()),\n swiper.minTranslate(),\n );\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if (\n (swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.params.centeredSlides\n ) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (\n newDirection === currentDirection ||\n (newDirection !== 'horizontal' && newDirection !== 'vertical')\n ) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector()));\n // Children needs to return slot items\n res.children = (options) => $el.children(options);\n return res;\n }\n return $el.children(getWrapperSelector());\n };\n // Find Wrapper\n let $wrapperEl = getWrapper();\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each((slideEl) => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate:\n swiper.params.direction === 'horizontal' &&\n (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n });\n\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(\n swiper.params.initialSlide + swiper.loopedSlides,\n 0,\n swiper.params.runCallbacksOnInit,\n false,\n true,\n );\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const { params, $el, $wrapperEl, slides } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass(\n [\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '),\n )\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach((m) => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\n\nObject.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\n\nSwiper.use([Resize, Observer]);\n\nexport default Swiper;\n","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\n\nexport default function Virtual({ swiper, extendParams, on }) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n });\n\n let cssModeTimeout;\n\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: [],\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(\n `
${slide}
`,\n );\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset,\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n })(),\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl\n .find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`)\n .remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes\n .sort((a, b) => b - a)\n .forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr(\n 'data-swiper-slide-index',\n parseInt(cachedElIndex, 10) + numberOfNewSlides,\n );\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Keyboard({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false,\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true,\n },\n });\n\n function handle(event) {\n if (!swiper.enabled) return;\n\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n ((swiper.isHorizontal() && isArrowRight) ||\n (swiper.isVertical() && isArrowDown) ||\n isPageDown)\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n ((swiper.isHorizontal() && isArrowLeft) || (swiper.isVertical() && isArrowUp) || isPageUp)\n ) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (\n document.activeElement &&\n document.activeElement.nodeName &&\n (document.activeElement.nodeName.toLowerCase() === 'input' ||\n document.activeElement.nodeName.toLowerCase() === 'textarea')\n ) {\n return undefined;\n }\n if (\n swiper.params.keyboard.onlyInViewport &&\n (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)\n ) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (\n swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 &&\n swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0\n ) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiperWidth, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiperHeight],\n [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl))\n swiper.slideNext();\n if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl))\n swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n\n Object.assign(swiper.keyboard, {\n enable,\n disable,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\n\nexport default function Mousewheel({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n },\n });\n\n swiper.mousewheel = {\n enabled: false,\n };\n\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (\n swiper.params.mousewheel.thresholdDelta &&\n newEvent.delta < swiper.params.mousewheel.thresholdDelta\n ) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (\n swiper.params.mousewheel.thresholdTime &&\n now() - lastScrollTime < swiper.params.mousewheel.thresholdTime\n ) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges)\n return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n else return true;\n } else {\n delta =\n Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop\n ? true\n : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (\n newEvent.direction !== prevEvent.direction ||\n newEvent.delta > prevEvent.delta ||\n newEvent.time > prevEvent.time + 150\n ) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n };\n const ignoreWheelEvents =\n lastEventBeforeSnap &&\n newEvent.time < lastEventBeforeSnap.time + 500 &&\n newEvent.delta <= lastEventBeforeSnap.delta &&\n newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (\n prevEvent &&\n (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)\n ) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (\n recentWheelEvents.length >= 15 &&\n newEvent.time - firstEvent.time < 500 &&\n firstEvent.delta - newEvent.delta >= 1 &&\n newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction)\n swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n\n Object.assign(swiper.mousewheel, {\n enable,\n disable,\n });\n}\n","import { getDocument } from 'ssr-window';\n\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach((key) => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Navigation({ swiper, extendParams, on, emit }) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n });\n\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null,\n };\n\n function getEl(el) {\n let $el;\n if (el) {\n $el = $(el);\n if (\n swiper.params.uniqueNavElements &&\n typeof el === 'string' &&\n $el.length > 1 &&\n swiper.$el.find(el).length === 1\n ) {\n $el = swiper.$el.find(el);\n }\n }\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n toggleEl($prevEl, swiper.isBeginning);\n toggleEl($nextEl, swiper.isEnd);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n }\n function init() {\n const params = swiper.params.navigation;\n\n swiper.params.navigation = createElementIfNotDefined(\n swiper,\n swiper.originalParams.navigation,\n swiper.params.navigation,\n {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev',\n },\n );\n if (!(params.nextEl || params.prevEl)) return;\n\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n function destroy() {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n init();\n update();\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const { $nextEl, $prevEl } = swiper.navigation;\n const targetEl = e.target;\n if (\n swiper.params.navigation.hideOnClick &&\n !$(targetEl).is($prevEl) &&\n !$(targetEl).is($nextEl)\n ) {\n if (\n swiper.pagination &&\n swiper.params.pagination &&\n swiper.params.pagination.clickable &&\n (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))\n )\n return;\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n Object.assign(swiper.navigation, {\n update,\n init,\n destroy,\n });\n}\n","export default function classesToSelector(classes = '') {\n return `.${classes\n .trim()\n .replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Pagination({ swiper, extendParams, on, emit }) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n },\n });\n\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: [],\n };\n\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return (\n !swiper.params.pagination.el ||\n !swiper.pagination.el ||\n !swiper.pagination.$el ||\n swiper.pagination.$el.length === 0\n );\n }\n\n function setSideBullets($bulletEl, position) {\n const { bulletActiveClass } = swiper.params.pagination;\n $bulletEl[position]()\n .addClass(`${bulletActiveClass}-${position}`)\n [position]()\n .addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil(\n (swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup,\n );\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (\n params.type === 'bullets' &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length > 0\n ) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(\n swiper.isHorizontal() ? 'width' : 'height',\n `${bulletSize * (params.dynamicMainBullets + 4)}px`,\n );\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - swiper.previousIndex;\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(\n ['', '-next', '-next-next', '-prev', '-prev-prev', '-main']\n .map((suffix) => `${params.bulletActiveClass}${suffix}`)\n .join(' '),\n );\n if ($el.length > 1) {\n bullets.each((bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets\n .eq(bullets.length - params.dynamicMainBullets - 1)\n .addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset =\n (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el\n .find(classesToSelector(params.currentClass))\n .text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el\n .find(classesToSelector(params.progressbarFillClass))\n .transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`)\n .transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.loop &&\n numberOfBullets > slidesLength\n ) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML =\n `` +\n ' / ' +\n ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(\n swiper,\n swiper.originalParams.pagination,\n swiper.params.pagination,\n { el: 'swiper-pagination' },\n );\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el);\n // check if it belongs to another nested Swiper\n if ($el.length > 1) {\n $el = $el.filter((el) => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(params.modifierClass + swiper.params.direction);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0],\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(params.modifierClass + swiper.params.direction);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass)\n swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n init();\n render();\n update();\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $el } = swiper.pagination;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const { $el } = swiper.pagination;\n if (\n swiper.params.pagination.el &&\n swiper.params.pagination.hideOnClick &&\n $el.length > 0 &&\n !$(targetEl).hasClass(swiper.params.pagination.bulletClass)\n ) {\n if (\n swiper.navigation &&\n ((swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) ||\n (swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl))\n )\n return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n Object.assign(swiper.pagination, {\n render,\n update,\n init,\n destroy,\n });\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Scrollbar({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n });\n\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null,\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const { $dragEl, $el } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n divider =\n swiper.size /\n (swiper.virtualSize +\n swiper.params.slidesOffsetBefore -\n (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](\n swiper.params.scrollbar.lockClass,\n );\n }\n }\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientX\n : e.clientX;\n }\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientY\n : e.clientY;\n }\n function setDragPosition(e) {\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const { $el } = scrollbar;\n\n let positionRatio;\n positionRatio =\n (getPointerPosition(e) -\n $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] -\n (dragStartPos !== null ? dragStartPos : dragSize / 2)) /\n (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position =\n swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n isTouched = true;\n dragStartPos =\n e.target === $dragEl[0] || e.target === $dragEl\n ? getPointerPosition(e) -\n e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top']\n : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n\n clearTimeout(dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const { scrollbar, touchEventsTouch, touchEventsDesktop, params, support } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener =\n support.passiveListener && params.passiveListeners\n ? { passive: false, capture: false }\n : false;\n const passiveListener =\n support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('off');\n }\n function init() {\n const { scrollbar, $el: $swiperEl } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(\n swiper,\n swiper.originalParams.scrollbar,\n swiper.params.scrollbar,\n { el: 'swiper-scrollbar' },\n );\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n\n let $el = $(params.el);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.el === 'string' &&\n $el.length > 1 &&\n $swiperEl.find(params.el).length === 1\n ) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n function destroy() {\n disableDraggable();\n }\n\n on('init', () => {\n init();\n updateSize();\n setTranslate();\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const { $el } = swiper.scrollbar;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n Object.assign(swiper.scrollbar, {\n updateSize,\n setTranslate,\n init,\n destroy,\n });\n}\n","import $ from '../../shared/dom.js';\n\nexport default function Parallax({ swiper, extendParams, on }) {\n extendParams({\n parallax: {\n enabled: false,\n },\n });\n\n const setTransform = (el, progress) => {\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n };\n\n const setTranslate = () => {\n const { $el, slides, progress, snapGrid } = swiper;\n $el\n .children(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl)\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = (duration = swiper.params.speed) => {\n const { $el } = swiper;\n $el\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration =\n parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n };\n\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\n\nexport default function Zoom({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n });\n\n swiper.zoom = {\n enabled: false,\n };\n\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n };\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n\n // Events\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n if (\n e.type !== 'touchend' ||\n (e.type === 'touchend' && e.changedTouches.length < 2 && !device.android)\n ) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl\n .transition(swiper.params.speed)\n .transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (\n swiper.isHorizontal() &&\n ((Math.floor(image.minX) === Math.floor(image.startX) &&\n image.touchesCurrent.x < image.touchesStart.x) ||\n (Math.floor(image.maxX) === Math.floor(image.startX) &&\n image.touchesCurrent.x > image.touchesStart.x))\n ) {\n image.isTouched = false;\n return;\n }\n if (\n !swiper.isHorizontal() &&\n ((Math.floor(image.minY) === Math.floor(image.startY) &&\n image.touchesCurrent.y < image.touchesStart.y) ||\n (Math.floor(image.maxY) === Math.floor(image.startY) &&\n image.touchesCurrent.y > image.touchesStart.y))\n ) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x =\n (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y =\n (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0)\n momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0)\n momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl\n .transition(momentumDuration)\n .transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl\n .transition(300)\n .transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n const activeListenerWithCapture = support.passiveListener\n ? { passive: false, capture: true }\n : true;\n return { passiveListener, activeListenerWithCapture };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const { passiveListener } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (\n !swiper.animating &&\n swiper.params.zoom.enabled &&\n swiper.zoom.enabled &&\n swiper.params.zoom.toggle\n ) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle,\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Lazy({ swiper, extendParams, on, emit }) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n });\n\n swiper.lazy = {};\n\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(\n `.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`,\n )\n : swiper.slides.eq(index);\n\n const $images = $slideEl.find(\n `.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`,\n );\n if (\n $slideEl.hasClass(params.elementClass) &&\n !$slideEl.hasClass(params.loadedClass) &&\n !$slideEl.hasClass(params.loadingClass)\n ) {\n $images.push($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (\n typeof swiper === 'undefined' ||\n swiper === null ||\n !swiper ||\n (swiper && !swiper.params) ||\n swiper.destroyed\n )\n return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if ($pictureEl.length) {\n $pictureEl.children('source').each((sourceEl) => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(\n `[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`,\n );\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(\n `.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`,\n );\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const { $wrapperEl, params: swiperParams, slides, activeIndex } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if (\n $wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n .length\n ) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement\n ? $(swiper.params.lazy.scrollingElement)\n : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const { rtlTranslate: rtl } = swiper;\n\n let inView = false;\n\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 &&\n point[0] <= scrollElementWidth &&\n point[1] >= 0 &&\n point[1] <= scrollElementHeight\n ) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n swiper.support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.freeMode.sticky\n ) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (\n swiper.params.lazy.loadOnTransitionStart ||\n (!swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded)\n ) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const { lazy, cssMode, watchSlidesProgress, touchReleaseOnEdges, resistanceRatio } =\n swiper.params;\n if (\n lazy.enabled &&\n (cssMode || (watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0)))\n ) {\n load();\n }\n });\n\n Object.assign(swiper.lazy, {\n load,\n loadInSlide,\n });\n}\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Controller({ swiper, extendParams, on }) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n });\n\n swiper.controller = {\n control: undefined,\n };\n\n function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = (maxIndex + minIndex) >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n })();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (\n ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]\n );\n };\n return this;\n }\n // xxx: for now i will just save one spline function to to\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier =\n (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition,\n });\n}\n","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\n\nexport default function A11y({ swiper, extendParams, on }) {\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n },\n });\n\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n function addElId($el, id) {\n $el.attr('id', id);\n }\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (\n swiper.pagination &&\n $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))\n ) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return (\n swiper.pagination &&\n swiper.params.pagination.clickable &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length\n );\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (hasPagination()) {\n swiper.pagination.bullets.each((bulletEl) => {\n const $bulletEl = $(bulletEl);\n makeElFocusable($bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel(\n $bulletEl,\n params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1),\n );\n }\n });\n }\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n function init() {\n const params = swiper.params.a11y;\n\n swiper.$el.append(liveRegion);\n\n // Container\n const $containerEl = swiper.$el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n }\n\n // Wrapper\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live);\n\n // Slide\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n addElRole($(swiper.slides), params.slideRole);\n\n const slidesLength = swiper.params.loop\n ? swiper.slides.filter((el) => !el.classList.contains(swiper.params.slideDuplicateClass))\n .length\n : swiper.slides.length;\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop\n ? parseInt($slideEl.attr('data-swiper-slide-index'), 10)\n : index;\n const ariaLabelMessage = params.slideLabelMessage\n .replace(/\\{\\{index\\}\\}/, slideIndex + 1)\n .replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n });\n\n // Navigation\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n }\n\n // Pagination\n if (hasPagination()) {\n swiper.pagination.$el.on(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n }\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n }\n\n // Pagination\n if (hasPagination()) {\n swiper.pagination.$el.off(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n }\n\n on('beforeInit', () => {\n liveRegion = $(\n ``,\n );\n });\n\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n updateNavigation();\n });\n on('toEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('fromEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function History({ swiper, extendParams, on }) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n },\n });\n\n let initialized = false;\n let paths = {};\n\n const slugify = (text) => {\n return text\n .toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n };\n\n const getPathValues = (urlOverride) => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname\n .slice(1)\n .split('/')\n .filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, swiper.paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function HashNavigation({ swiper, extendParams, emit, on }) {\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl\n .children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`)\n .index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n if (\n swiper.params.hashNavigation.replaceState &&\n window.history &&\n window.history.replaceState\n ) {\n window.history.replaceState(\n null,\n null,\n `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '',\n );\n emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (\n !swiper.params.hashNavigation.enabled ||\n (swiper.params.history && swiper.params.history.enabled)\n )\n return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n","/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Autoplay({ swiper, extendParams, on, emit }) {\n let timeout;\n\n swiper.autoplay = {\n running: false,\n paused: false,\n };\n\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false,\n },\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(\n swiper.slides.length - 1,\n swiper.params.speed,\n true,\n true,\n );\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) run();\n else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n function onVisibilityChange() {\n const document = getDocument();\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n swiper.autoplay.paused = false;\n run();\n }\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (\n swiper.params.cssMode &&\n swiper.autoplay.paused &&\n !swiper.params.autoplay.disableOnInteraction\n ) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop,\n });\n}\n","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Thumb({ swiper, extendParams, on }) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs',\n },\n });\n\n let initialized = false;\n let swiperCreated = false;\n\n swiper.thumbs = {\n swiper: null,\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass))\n return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides\n .eq(currentIndex)\n .prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n const nextIndex = swiper.slides\n .eq(currentIndex)\n .nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const { thumbs: thumbsParams } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView =\n thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (\n thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .hasClass(thumbsSwiper.params.slideDuplicateClass)\n ) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex =\n thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (\n thumbsSwiper.visibleSlidesIndexes &&\n thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0\n ) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (\n newThumbsIndex > currentThumbsIndex &&\n thumbsSwiper.params.slidesPerGroup === 1\n ) {\n // newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (\n thumbsSwiper.params.loop ||\n (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)\n ) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl\n .children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`)\n .addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n }\n\n on('beforeInit', () => {\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n if (!swiper.thumbs.swiper) return;\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n });\n\n Object.assign(swiper.thumbs, {\n init,\n update,\n });\n}\n","import { now } from '../../shared/utils.js';\n\nexport default function freeMode({ swiper, extendParams, emit, once }) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02,\n },\n });\n\n function onTouchMove() {\n const { touchEventsData: data, touches } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now(),\n });\n }\n\n function onTouchEnd({ currentPos }) {\n const { params, $wrapperEl, rtlTranslate: rtl, snapGrid, touchEventsData: data } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (\n Math.abs(snapGrid[nextSlide] - newPosition) <\n Math.abs(snapGrid[nextSlide - 1] - newPosition) ||\n swiper.swipeDirection === 'next'\n ) {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchMove,\n onTouchEnd,\n },\n });\n}\n","export default function Grid({ swiper, extendParams }) {\n extendParams({\n grid: {\n rows: 1,\n fill: 'column',\n },\n });\n\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n\n const initSlides = (slidesLength) => {\n const { slidesPerView } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const { slidesPerGroup, spaceBetween } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup =\n groupIndex === 0\n ? slidesPerGroup\n : Math.min(\n Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows),\n slidesPerGroup,\n );\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n\n newSlideOrderIndex = column + (row * slidesNumberEvenToRows) / rows;\n slide.css({\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || (column === numFullColumns && row === rows - 1)) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.css(\n getDirectionLabel('margin-top'),\n row !== 0 ? spaceBetween && `${spaceBetween}px` : '',\n );\n };\n\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const { spaceBetween, centeredSlides, roundLengths } = swiper.params;\n const { rows } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.$wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`,\n });\n if (centeredSlides) {\n snapGrid.splice(0, snapGrid.length);\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.push(...newSlidesGrid);\n }\n };\n\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize,\n };\n}\n","export default function appendSlide(slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n}\n","export default function prependSlide(slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","export default function addSlide(index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex =\n activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeAllSlides() {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\n\nexport default function Manipulation({ swiper }) {\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper),\n });\n}\n","export default function effectInit(params) {\n const { effect, swiper, on, setTranslate, setTransition, overwriteParams, perspective } = params;\n\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n}\n","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden',\n });\n }\n return $slideEl;\n}\n","export default function effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides }) {\n const { slides, activeIndex, $wrapperEl } = swiper;\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl\n ? slides.eq(activeIndex).find(transformEl)\n : slides.eq(activeIndex);\n }\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}\n","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFade({ swiper, extendParams, on }) {\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\n\nexport default function EffectCube({ swiper, extendParams, on }) {\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n });\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${\n isHorizontal ? slideAngle : 0\n }deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(\n `
`,\n );\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(\n `
`,\n );\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(\n `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${\n -swiperWidth / 2\n }px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`,\n );\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier =\n 1.5 -\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2 +\n Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(\n `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${\n -swiperHeight / 2 / scale2\n }px) rotateX(-90deg)`,\n );\n }\n }\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(\n `translate3d(0px,0,${zFactor}px) rotateX(${\n swiper.isHorizontal() ? 0 : wrapperRotate\n }deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`,\n );\n };\n const setTransition = (duration) => {\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n }),\n });\n}\n","import $ from './dom.js';\n\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`
`);\n $shadowContainer.append($shadowEl);\n }\n return $shadowEl;\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFlip({ swiper, extendParams, on }) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides, rtlTranslate: rtl } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\n\nexport default function EffectCoverflow({ swiper, extendParams, on }) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { width: swiperWidth, height: swiperHeight, slides, slidesSizesGrid } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier =\n ((center - slideOffset - slideSize / 2) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = (parseFloat(params.stretch) / 100) * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if ($shadowBeforeEl.length)\n $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length)\n $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCreative({ swiper, extendParams, on }) {\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n },\n });\n\n const getTranslateValue = (value) => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const { slides, $wrapperEl, slidesSizesGrid } = swiper;\n const params = swiper.params.creativeEffect;\n const { progressMultiplier: multiplier } = params;\n\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(\n Math.max($slideEl[0].progress, -params.limitProgress),\n params.limitProgress,\n );\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(\n Math.max($slideEl[0].originalProgress, -params.limitProgress),\n params.limitProgress,\n );\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1,\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(\n progress * multiplier,\n )}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString =\n originalProgress < 0\n ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})`\n : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString =\n originalProgress < 0\n ? 1 + (1 - data.opacity) * originalProgress * multiplier\n : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if ((custom && data.shadow) || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress\n ? progress * (1 / params.limitProgress)\n : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({ opacity: opacityString });\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCards({ swiper, extendParams, on }) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides, activeIndex } = swiper;\n const params = swiper.params.cardsEffect;\n const { startTranslate, isTouched } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -2 * progress;\n\n let tXAdd = 8 - Math.abs(progress) * 0.75;\n\n const isSwipeToNext =\n (i === activeIndex || i === activeIndex - 1) &&\n progress > 0 &&\n progress < 1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate < startTranslate;\n const isSwipeToPrev =\n (i === activeIndex || i === activeIndex + 1) &&\n progress < 0 &&\n progress > -1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString =\n progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${rotate}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length)\n $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","// Swiper Class\nimport Swiper from './core/core.js';\n\n//IMPORT_MODULES\n\nconst modules = [\n //INSTALL_MODULES\n];\n\nSwiper.use(modules);\n\n//EXPORT\n"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","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","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","makeReactive","proto","__proto__","defineProperty","get","set","value","Dom7","Array","items","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","arrayUnique","uniqueArray","i","indexOf","qsa","selector","context","a","$","html","trim","toCreate","tempParent","innerHTML","nodeType","fn","addClass","classes","classNames","map","c","split","classList","add","removeClass","remove","toggleClass","className","toggle","hasClass","contains","attr","attrs","arguments","getAttribute","undefined","attrName","removeAttr","removeAttribute","transform","transition","duration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","events","j","event","dom7Listeners","proxyListener","dom7LiveListeners","off","handlers","handler","splice","dom7proxy","trigger","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","index","result","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","Methods","methodName","writable","deleteProps","object","nextTick","delay","now","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","o","slice","isNode","node","HTMLElement","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","startTime","time","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","calcSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","checkPassiveListener","supportsPassive","opts","gestures","checkGestures","getSupport","deviceCached","calcDevice","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","iPadScreens","os","getDevice","overrides","browser","calcBrowser","isSafari","toLowerCase","isWebView","test","getBrowser","Resize","emit","observer","resizeHandler","destroyed","initialized","createObserver","ResizeObserver","entries","newWidth","newHeight","contentBoxSize","contentRect","inlineSize","blockSize","observe","removeObserver","unobserve","orientationChangeHandler","resizeObserver","Observer","extendParams","observers","attach","options","ObserverFunc","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","init","observeParents","containerParents","$el","observeSlideChildren","$wrapperEl","destroy","disconnect","priority","self","method","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","eventsArray","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","Number","isNaN","assign","size","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","marginRight","centeredSlides","cssMode","gridEnabled","grid","rows","initSlides","slideSize","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","updateAutoHeight","activeSlides","setTransition","getSlideByIndex","visibleSlides","ceil","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","activeSlide","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","getSwiperTranslate","virtualTranslate","currentTranslate","setTranslate","byController","x","y","z","previousTranslate","newProgress","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","transitionStart","slideTo","initial","Error","indexAsNumber","isValidNumber","isFinite","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","snapTranslate","diff","slideChanged","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","closestElement","base","__closestFrom","assignedSlot","getRootNode","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","isTouchEvent","type","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","onTouchEnd","touchEndTime","timeDiff","lastClickTime","currentPos","stopIndex","groupSize","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","isNavButtonTarget","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","start","move","end","passiveListeners","passive","cancel","updateOnWindowResize","attachEvents","bind","detachEvents","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointOnlyParams","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","containerModifierClass","emitContainerClasses","fill","directionChanged","needsReLoop","changeDirection","isEnabled","disable","enable","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","prepareClasses","prefix","resultClasses","item","addClasses","suffixes","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","isPicture","complete","onload","onerror","preloadImages","imagesToLoad","imagesLoaded","updateOnImagesReady","update","currentSrc","wasLocked","lastSlideIndex","lastSlideRightEdge","createElements","url","uniqueNavElements","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","images","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","swiperParams","defaults","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","slideInView","translateValue","translated","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","getWrapper","wrapper","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","Virtual","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","cssModeTimeout","from","$slideEl","force","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","getSlides","slidesToRender","prependIndexes","appendIndexes","appendSlide","prependSlide","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","removeSlide","slidesIndexes","removeAllSlides","Keyboard","keyboard","onlyInViewport","pageUpDown","handle","kc","keyCode","charCode","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","Mousewheel","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","timeout","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","releaseScroll","rtlFactor","positions","sign","shift","prevEvent","ignoreWheelEvents","position","sticky","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","createElementIfNotDefined","checkProps","element","Navigation","hideOnClick","disabledClass","hiddenClass","lockClass","$nextEl","$prevEl","getEl","toggleEl","disabled","tagName","onPrevClick","onNextClick","_s","targetEl","pagination","clickable","isHidden","classesToSelector","Pagination","pfx","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","bullets","bulletSize","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","lastIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","Scrollbar","dragTimeout","dragStartPos","dragSize","trackSize","divider","scrollbar","hide","draggable","snapOnRelease","dragClass","dragEl","$dragEl","newSize","newPos","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","activeListener","eventMethod","enableDraggable","disableDraggable","$swiperEl","Parallax","parallax","setTransform","p","currentOpacity","currentScale","parallaxEl","$parallaxEl","parallaxDuration","_swiper","Zoom","zoom","maxRatio","containerClass","zoomedSlideClass","isScaling","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","gesture","slideWidth","slideHeight","$imageEl","$imageWrapEl","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","distance","onGestureStart","scaleStart","onGestureChange","scaleMove","onGestureEnd","scaledWidth","scaledHeight","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTransitionEnd","zoomIn","touchAction","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","in","out","Lazy","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$images","background","$pictureEl","sourceEl","$source","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","amount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","Controller","controller","control","inverse","by","LinearSpline","binarySearch","guess","array","i1","i3","interpolate","getInterpolateFunction","spline","_t","controlled","controlledTranslate","setControlledTranslate","setControlledTransition","removeSpline","A11y","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","liveRegion","notify","message","notification","getRandomNumber","randomChar","round","random","repeat","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElControls","controls","addElLabel","addElId","addElLive","live","disableEl","enableEl","onEnterOrSpaceKey","click","updateNavigation","hasPagination","updatePagination","bulletEl","initNavEl","wrapperId","$containerEl","ariaLabelMessage","History","root","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","includes","currentState","state","scrollToSlide","slideHistory","setHistoryPopState","hashNavigation","HashNavigation","watchState","onHashChange","newHash","activeSlideHash","setHash","slideHash","Autoplay","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","$activeSlideEl","autoplayResult","pause","onVisibilityChange","visibilityState","onMouseEnter","onMouseLeave","attachMouseEvents","detachMouseEvents","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","useOffset","currentThumbsIndex","newThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","momentumDistance","newPosition","doBounce","afterBouncePosition","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","order","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","indexToRemove","Manipulation","effectInit","overwriteParams","perspective","overwriteParamsResult","effectTarget","effectParams","transformEl","effectVirtualTransitionEnd","allSlides","eventTriggered","$transitionEndTarget","triggerEvents","EffectFade","fadeEffect","crossFade","tx","ty","slideOpacity","$transitionElements","EffectCube","cubeEffect","slideShadows","shadow","shadowOffset","shadowScale","wrapperRotate","$cubeShadowEl","slideAngle","tz","shadowBefore","shadowAfter","shadowAngle","sin","scale1","scale2","zFactor","createShadow","shadowClass","$shadowContainer","$shadowEl","EffectFlip","flipEffect","limitRotation","rotate","rotateY","rotateX","zIndex","EffectCoverflow","coverflowEffect","stretch","depth","modifier","center","offsetMultiplier","translateZ","slideTransform","$shadowBeforeEl","$shadowAfterEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","EffectCards","cardsEffect","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY"],"mappings":"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"} \ No newline at end of file diff --git a/resources/web/guide/swiper/swiper-bundle.min.css b/resources/web/guide/swiper/swiper-bundle.min.css deleted file mode 100644 index 531c09affc..0000000000 --- a/resources/web/guide/swiper/swiper-bundle.min.css +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Swiper 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, 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');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-android .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-pointer-events{touch-action:pan-y}.swiper-pointer-events.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.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-3d,.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide,.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.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>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-horizontal.swiper-css-mode>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-vertical.swiper-css-mode>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-horizontal>.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-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center}.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-button-next,.swiper-button-prev{position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;text-transform:none;font-variant:initial;line-height:1}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.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(.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{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:50%;background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance: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-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.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:.2s transform,.2s 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:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-progressbar{background:rgba(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-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.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{width:4px;height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move}.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%;animation:swiper-preloader-spin 1s infinite linear;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{100%{transform:rotate(360deg)}}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.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-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-next+.swiper-slide,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.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-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/resources/web/guide/swiper/swiper-bundle.min.js b/resources/web/guide/swiper/swiper-bundle.min.js deleted file mode 100644 index 3a0b446768..0000000000 --- a/resources/web/guide/swiper/swiper-bundle.min.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Swiper 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Swiper=t()}(this,(function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s={},a={}){Object.keys(a).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}class n extends Array{constructor(e){super(...e||[]),function(e){const t=e.__proto__;Object.defineProperty(e,"__proto__",{get:()=>t,set(e){t.__proto__=e}})}(this)}}function l(e=[]){const t=[];return e.forEach((e=>{Array.isArray(e)?t.push(...l(e)):t.push(e)})),t}function o(e,t){return Array.prototype.filter.call(e,t)}function d(e,t){const s=r(),i=a();let l=[];if(!t&&e instanceof n)return e;if(!e)return new n(l);if("string"==typeof e){const s=e.trim();if(s.indexOf("<")>=0&&s.indexOf(">")>=0){let e="div";0===s.indexOf("e.split(" "))));return this.forEach((e=>{e.classList.add(...t)})),this},removeClass:function(...e){const t=l(e.map((e=>e.split(" "))));return this.forEach((e=>{e.classList.remove(...t)})),this},hasClass:function(...e){const t=l(e.map((e=>e.split(" "))));return o(this,(e=>t.filter((t=>e.classList.contains(t))).length>0)).length>0},toggleClass:function(...e){const t=l(e.map((e=>e.split(" "))));this.forEach((e=>{t.forEach((t=>{e.classList.toggle(t)}))}))},attr:function(e,t){if(1===arguments.length&&"string"==typeof e)return this[0]?this[0].getAttribute(e):void 0;for(let s=0;s=0;e-=1){const s=n[e];a&&s.listener===a||a&&s.listener&&s.listener.dom7proxy&&s.listener.dom7proxy===a?(r.removeEventListener(t,s.proxyListener,i),n.splice(e,1)):a||(r.removeEventListener(t,s.proxyListener,i),n.splice(e,1))}}}return this},trigger:function(...e){const t=r(),s=e[0].split(" "),a=e[1];for(let i=0;it>0)),i.dispatchEvent(s),i.dom7EventData=[],delete i.dom7EventData}}}return this},transitionEnd:function(e){const t=this;return e&&t.on("transitionend",(function s(a){a.target===this&&(e.call(this,a),t.off("transitionend",s))})),this},outerWidth:function(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetWidth+parseFloat(e.getPropertyValue("margin-right"))+parseFloat(e.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null},outerHeight:function(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetHeight+parseFloat(e.getPropertyValue("margin-top"))+parseFloat(e.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null},styles:function(){const e=r();return this[0]?e.getComputedStyle(this[0],null):{}},offset:function(){if(this.length>0){const e=r(),t=a(),s=this[0],i=s.getBoundingClientRect(),n=t.body,l=s.clientTop||n.clientTop||0,o=s.clientLeft||n.clientLeft||0,d=s===e?e.scrollY:s.scrollTop,c=s===e?e.scrollX:s.scrollLeft;return{top:i.top+d-l,left:i.left+c-o}}return null},css:function(e,t){const s=r();let a;if(1===arguments.length){if("string"!=typeof e){for(a=0;a{e.apply(t,[t,s])})),this):this},html:function(e){if(void 0===e)return this[0]?this[0].innerHTML:null;for(let t=0;tt-1)return d([]);if(e<0){const s=t+e;return d(s<0?[]:[this[s]])}return d([this[e]])},append:function(...e){let t;const s=a();for(let a=0;a=0;i-=1)this[s].insertBefore(a.childNodes[i],this[s].childNodes[0])}else if(e instanceof n)for(i=0;i0?e?this[0].nextElementSibling&&d(this[0].nextElementSibling).is(e)?d([this[0].nextElementSibling]):d([]):this[0].nextElementSibling?d([this[0].nextElementSibling]):d([]):d([])},nextAll:function(e){const t=[];let s=this[0];if(!s)return d([]);for(;s.nextElementSibling;){const a=s.nextElementSibling;e?d(a).is(e)&&t.push(a):t.push(a),s=a}return d(t)},prev:function(e){if(this.length>0){const t=this[0];return e?t.previousElementSibling&&d(t.previousElementSibling).is(e)?d([t.previousElementSibling]):d([]):t.previousElementSibling?d([t.previousElementSibling]):d([])}return d([])},prevAll:function(e){const t=[];let s=this[0];if(!s)return d([]);for(;s.previousElementSibling;){const a=s.previousElementSibling;e?d(a).is(e)&&t.push(a):t.push(a),s=a}return d(t)},parent:function(e){const t=[];for(let s=0;s6&&(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 m(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function f(...e){const t=Object(e[0]),s=["__proto__","constructor","prototype"];for(let i=1;is.indexOf(e)<0));for(let s=0,a=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()}let w,b,x;function y(){return w||(w=function(){const e=r(),t=a();return{smoothScroll:t.documentElement&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch),passiveListener:function(){let t=!1;try{const s=Object.defineProperty({},"passive",{get(){t=!0}});e.addEventListener("testPassiveListener",null,s)}catch(e){}return t}(),gestures:"ongesturestart"in e}}()),w}function E(e={}){return b||(b=function({userAgent:e}={}){const t=y(),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).*OS\s([\d_]+)/);const p=i.match(/(iPod)(.*OS\s([\d_]+))?/),u=!c&&i.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===a;let m="MacIntel"===a;return!c&&m&&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"]),m=!1),d&&!h&&(n.os="android",n.android=!0),(c||u||p)&&(n.os="ios",n.ios=!0),n}(e)),b}function T(){return x||(x=function(){const e=r();return{isSafari:function(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}(),isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}()),x}Object.keys(c).forEach((e=>{Object.defineProperty(d.fn,e,{value:c[e],writable:!0})}));var C={on(e,t,s){const a=this;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("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("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.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?(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)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}};function $({swiper:e,runCallbacks:t,direction:s,step:a}){const{activeIndex:i,previousIndex:r}=e;let n=s;if(n||(n=i>r?"next":i0)return;if(n.isTouched&&n.isMoved)return;!!l.noSwipingClass&&""!==l.noSwipingClass&&p.target&&p.target.shadowRoot&&e.path&&e.path[0]&&(h=d(e.path[0]));const m=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!p.target||!p.target.shadowRoot);if(l.noSwiping&&(f?function(e,t=this){return function t(s){return s&&s!==a()&&s!==r()?(s.assignedSlot&&(s=s.assignedSlot),s.closest(e)||t(s.getRootNode().host)):null}(t)}(m,p.target):h.closest(m)[0]))return void(t.allowClick=!0);if(l.swipeHandler&&!h.closest(l.swipeHandler)[0])return;o.currentX="touchstart"===p.type?p.targetTouches[0].pageX:p.pageX,o.currentY="touchstart"===p.type?p.targetTouches[0].pageY:p.pageY;const g=o.currentX,v=o.currentY,w=l.edgeSwipeDetection||l.iOSEdgeSwipeDetection,b=l.edgeSwipeThreshold||l.iOSEdgeSwipeThreshold;if(w&&(g<=b||g>=i.innerWidth-b)){if("prevent"!==w)return;e.preventDefault()}if(Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),o.startX=g,o.startY=v,n.touchStartTime=u(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1),"touchstart"!==p.type){let e=!0;h.is(n.focusableElements)&&(e=!1),s.activeElement&&d(s.activeElement).is(n.focusableElements)&&s.activeElement!==h[0]&&s.activeElement.blur();const a=e&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!a||h[0].isContentEditable||p.preventDefault()}t.emit("touchStart",p)}function M(e){const t=a(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:o}=s;if(!o)return;let c=e;if(c.originalEvent&&(c=c.originalEvent),!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",c));if(i.isTouchEvent&&"touchmove"!==c.type)return;const p="touchmove"===c.type&&c.targetTouches&&(c.targetTouches[0]||c.changedTouches[0]),h="touchmove"===c.type?p.pageX:c.pageX,m="touchmove"===c.type?p.pageY:c.pageY;if(c.preventedByNestedSwiper)return n.startX=h,void(n.startY=m);if(!s.allowTouchMove)return s.allowClick=!1,void(i.isTouched&&(Object.assign(n,{startX:h,startY:m,currentX:h,currentY:m}),i.touchStartTime=u()));if(i.isTouchEvent&&r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(mn.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(hn.startX&&s.translate>=s.minTranslate())return;if(i.isTouchEvent&&t.activeElement&&c.target===t.activeElement&&d(c.target).is(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);if(i.allowTouchCallbacks&&s.emit("touchMove",c),c.targetTouches&&c.targetTouches.length>1)return;n.currentX=h,n.currentY=m;const f=n.currentX-n.startX,g=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(f**2+g**2)=25&&(e=180*Math.atan2(Math.abs(g),Math.abs(f))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",c),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&c.cancelable&&c.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&c.stopPropagation(),i.isMoved||(r.loop&&!r.cssMode&&s.loopFix(),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating&&s.$wrapperEl.trigger("webkitTransitionEnd transitionend"),i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",c)),s.emit("sliderMove",c),i.isMoved=!0;let v=s.isHorizontal()?f:g;n.diff=v,v*=r.touchRatio,l&&(v=-v),s.swipeDirection=v>0?"prev":"next",i.currentTranslate=v+i.startTranslate;let w=!0,b=r.resistanceRatio;if(r.touchReleaseOnEdges&&(b=0),v>0&&i.currentTranslate>s.minTranslate()?(w=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+v)**b)):v<0&&i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(v)>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()),s.params.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function P(e){const t=this,s=t.touchEventsData,{params:a,touches:i,rtlTranslate:r,slidesGrid:n,enabled:l}=t;if(!l)return;let o=e;if(o.originalEvent&&(o=o.originalEvent),s.allowTouchCallbacks&&t.emit("touchEnd",o),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 d=u(),c=d-s.touchStartTime;if(t.allowClick&&(t.updateClickedSlide(o),t.emit("tap click",o),c<300&&d-s.lastClickTime<300&&t.emit("doubleTap doubleClick",o)),s.lastClickTime=u(),p((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===i.diff||s.currentTranslate===s.startTranslate)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?r?t.translate:-t.translate:-s.currentTranslate,a.cssMode)return;if(t.params.freeMode&&a.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});let m=0,f=t.slidesSizesGrid[0];for(let e=0;e=n[e]&&h=n[e]&&(m=e,f=n[n.length-1]-n[n.length-2])}const g=(h-n[m])/f,v=ma.longSwipesMs){if(!a.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(g>=a.longSwipesRatio?t.slideTo(m+v):t.slideTo(m)),"prev"===t.swipeDirection&&(g>1-a.longSwipesRatio?t.slideTo(m+v):t.slideTo(m))}else{if(!a.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(o.target===t.navigation.nextEl||o.target===t.navigation.prevEl)?o.target===t.navigation.nextEl?t.slideTo(m+v):t.slideTo(m):("next"===t.swipeDirection&&t.slideTo(m+v),"prev"===t.swipeDirection&&t.slideTo(m))}}function k(){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;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses(),("auto"===t.slidesPerView||t.slidesPerView>1)&&e.isEnd&&!e.isBeginning&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.run(),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function z(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function O(){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)}let I=!1;function L(){}const A=(e,t)=>{const s=a(),{params:i,touchEvents:r,el:n,wrapperEl:l,device:o,support:d}=e,c=!!i.nested,p="on"===t?"addEventListener":"removeEventListener",u=t;if(d.touch){const t=!("touchstart"!==r.start||!d.passiveListener||!i.passiveListeners)&&{passive:!0,capture:!1};n[p](r.start,e.onTouchStart,t),n[p](r.move,e.onTouchMove,d.passiveListener?{passive:!1,capture:c}:c),n[p](r.end,e.onTouchEnd,t),r.cancel&&n[p](r.cancel,e.onTouchEnd,t)}else n[p](r.start,e.onTouchStart,!1),s[p](r.move,e.onTouchMove,c),s[p](r.end,e.onTouchEnd,!1);(i.preventClicks||i.preventClicksPropagation)&&n[p]("click",e.onClick,!0),i.cssMode&&l[p]("scroll",e.onScroll),i.updateOnWindowResize?e[u](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",k,!0):e[u]("observerUpdate",k,!0)};const D=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var G={init:!0,direction:"horizontal",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,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,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:0,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,loopFillGroupWithBlank:!1,loopPreventsSlide:!0,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-invisible-blank",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",runCallbacksOnInit:!0,_emitClasses:!1};function N(e,t){return function(s={}){const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(["navigation","pagination","scrollbar"].indexOf(a)>=0&&!0===e[a]&&(e[a]={auto:!0}),a in e&&"enabled"in i?(!0===e[a]&&(e[a]={enabled:!0}),"object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={enabled:!1}),f(t,s)):f(t,s)):f(t,s)}}const B={eventsEmitter:C,update:{updateSize:function(){const e=this;let t,s;const a=e.$el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:a[0].clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:a[0].clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(a.css("padding-left")||0,10)-parseInt(a.css("padding-right")||0,10),s=s-parseInt(a.css("padding-top")||0,10)-parseInt(a.css("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}))},updateSlides:function(){const e=this;function t(t){return e.isHorizontal()?t:{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"}[t]}function s(e,s){return parseFloat(e.getPropertyValue(t(s))||0)}const a=e.params,{$wrapperEl:i,size:r,rtlTranslate:n,wrongRTL:l}=e,o=e.virtual&&a.virtual.enabled,d=o?e.virtual.slides.length:e.slides.length,c=i.children(`.${e.params.slideClass}`),p=o?e.virtual.slides.length:c.length;let u=[];const h=[],m=[];let f=a.slidesOffsetBefore;"function"==typeof f&&(f=a.slidesOffsetBefore.call(e));let v=a.slidesOffsetAfter;"function"==typeof v&&(v=a.slidesOffsetAfter.call(e));const w=e.snapGrid.length,b=e.slidesGrid.length;let x=a.spaceBetween,y=-f,E=0,T=0;if(void 0===r)return;"string"==typeof x&&x.indexOf("%")>=0&&(x=parseFloat(x.replace("%",""))/100*r),e.virtualSize=-x,n?c.css({marginLeft:"",marginBottom:"",marginTop:""}):c.css({marginRight:"",marginBottom:"",marginTop:""}),a.centeredSlides&&a.cssMode&&(g(e.wrapperEl,"--swiper-centered-offset-before",""),g(e.wrapperEl,"--swiper-centered-offset-after",""));const C=a.grid&&a.grid.rows>1&&e.grid;let $;C&&e.grid.initSlides(p);const S="auto"===a.slidesPerView&&a.breakpoints&&Object.keys(a.breakpoints).filter((e=>void 0!==a.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&u.push(e.virtualSize-r)}if(0===u.length&&(u=[0]),0!==a.spaceBetween){const s=e.isHorizontal()&&n?"marginLeft":t("marginRight");c.filter(((e,t)=>!a.cssMode||t!==c.length-1)).css({[s]:`${x}px`})}if(a.centeredSlides&&a.centeredSlidesBounds){let e=0;m.forEach((t=>{e+=t+(a.spaceBetween?a.spaceBetween:0)})),e-=a.spaceBetween;const t=e-r;u=u.map((e=>e<0?-f:e>t?t+v:e))}if(a.centerInsufficientSlides){let e=0;if(m.forEach((t=>{e+=t+(a.spaceBetween?a.spaceBetween:0)})),e-=a.spaceBetween,e{u[s]=e-t})),h.forEach(((e,s)=>{h[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:u,slidesGrid:h,slidesSizesGrid:m}),a.centeredSlides&&a.cssMode&&!a.centeredSlidesBounds){g(e.wrapperEl,"--swiper-centered-offset-before",-u[0]+"px"),g(e.wrapperEl,"--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))}p!==d&&e.emit("slidesLengthChange"),u.length!==w&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==b&&e.emit("slidesGridLengthChange"),a.watchSlidesProgress&&e.updateSlidesOffset()},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.filter((t=>parseInt(t.getAttribute("data-swiper-slide-index"),10)===e))[0]:t.slides.eq(e)[0];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)t.visibleSlides.each((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&&t.$wrapperEl.css("height",`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides;for(let s=0;s=0&&p1&&u<=t.size||p<=0&&u>=t.size)&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e),a.eq(e).addClass(s.slideVisibleClass)),l.progress=i?-d:d,l.originalProgress=i?-c:c}t.visibleSlides=d(t.visibleSlides)},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}=t;const l=r,o=n;0===a?(i=0,r=!0,n=!0):(i=(e-t.minTranslate())/a,r=i<=0,n=i>=1),Object.assign(t,{progress:i,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!l&&t.emit("reachBeginning toEdge"),n&&!o&&t.emit("reachEnd toEdge"),(l&&!r||o&&!n)&&t.emit("fromEdge"),t.emit("progress",i)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,$wrapperEl:a,activeIndex:i,realIndex:r}=e,n=e.virtual&&s.virtual.enabled;let l;t.removeClass(`${s.slideActiveClass} ${s.slideNextClass} ${s.slidePrevClass} ${s.slideDuplicateActiveClass} ${s.slideDuplicateNextClass} ${s.slideDuplicatePrevClass}`),l=n?e.$wrapperEl.find(`.${s.slideClass}[data-swiper-slide-index="${i}"]`):t.eq(i),l.addClass(s.slideActiveClass),s.loop&&(l.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${r}"]`).addClass(s.slideDuplicateActiveClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${r}"]`).addClass(s.slideDuplicateActiveClass));let o=l.nextAll(`.${s.slideClass}`).eq(0).addClass(s.slideNextClass);s.loop&&0===o.length&&(o=t.eq(0),o.addClass(s.slideNextClass));let d=l.prevAll(`.${s.slideClass}`).eq(0).addClass(s.slidePrevClass);s.loop&&0===d.length&&(d=t.eq(-1),d.addClass(s.slidePrevClass)),s.loop&&(o.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass),d.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass)),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{slidesGrid:a,snapGrid:i,params:r,activeIndex:n,realIndex:l,snapIndex:o}=t;let d,c=e;if(void 0===c){for(let e=0;e=a[e]&&s=a[e]&&s=a[e]&&(c=e);r.normalizeSlideIndex&&(c<0||void 0===c)&&(c=0)}if(i.indexOf(s)>=0)d=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,c);d=e+Math.floor((c-e)/r.slidesPerGroup)}if(d>=i.length&&(d=i.length-1),c===n)return void(d!==o&&(t.snapIndex=d,t.emit("snapIndexChange")));const p=parseInt(t.slides.eq(c).attr("data-swiper-slide-index")||c,10);Object.assign(t,{snapIndex:d,realIndex:p,previousIndex:n,activeIndex:c}),t.emit("activeIndexChange"),t.emit("snapIndexChange"),l!==p&&t.emit("realIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&t.emit("slideChange")},updateClickedSlide:function(e){const t=this,s=t.params,a=d(e.target).closest(`.${s.slideClass}`)[0];let i,r=!1;if(a)for(let e=0;eo?o:a&&e=o.length&&(g=o.length-1),(p||l.initialSlide||0)===(c||0)&&s&&r.emit("beforeSlideChangeStart");const w=-o[g];if(r.updateProgress(w),l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&wr.translate&&w>r.maxTranslate()&&(p||0)!==n)return!1}let b;if(b=n>p?"next":n{r.wrapperEl.style.scrollSnapType="",r._swiperImmediateVirtual=!1}))}else{if(!r.support.smoothScroll)return v({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return 0===t?(r.setTransition(0),r.setTranslate(w),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,b),r.transitionEnd(s,b)):(r.setTransition(t),r.setTranslate(w),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,b),r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.$wrapperEl[0].removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].removeEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.$wrapperEl[0].addEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].addEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd))),!0},slideToLoop:function(e=0,t=this.params.speed,s=!0,a){const i=this;let r=e;return i.params.loop&&(r+=i.loopedSlides),i.slideTo(r,t,s,a)},slideNext:function(e=this.params.speed,t=!0,s){const a=this,{animating:i,enabled:r,params:n}=a;if(!r)return a;let l=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndexc(e)));let h=n[u.indexOf(p)-1];if(void 0===h&&i.cssMode){let e;n.forEach(((t,s)=>{p>=t&&(e=s)})),void 0!==e&&(h=n[e>0?e-1:e])}let m=0;return void 0!==h&&(m=l.indexOf(h),m<0&&(m=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(m=m-a.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),a.slideTo(m,e,t,s)},slideReset:function(e=this.params.speed,t=!0,s){return this.slideTo(this.activeIndex,e,t,s)},slideToClosest:function(e=this.params.speed,t=!0,s,a=.5){const i=this;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,{params:t,$wrapperEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.clickedIndex;if(t.loop){if(e.animating)return;i=parseInt(d(e.clickedSlide).attr("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+a/2?(e.loopFix(),r=s.children(`.${t.slideClass}[data-swiper-slide-index="${i}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),p((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-a?(e.loopFix(),r=s.children(`.${t.slideClass}[data-swiper-slide-index="${i}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),p((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}},loop:{loopCreate:function(){const e=this,t=a(),{params:s,$wrapperEl:i}=e,r=d(i.children()[0].parentNode);r.children(`.${s.slideClass}.${s.slideDuplicateClass}`).remove();let n=r.children(`.${s.slideClass}`);if(s.loopFillGroupWithBlank){const e=s.slidesPerGroup-n.length%s.slidesPerGroup;if(e!==s.slidesPerGroup){for(let a=0;an.length&&(e.loopedSlides=n.length);const l=[],o=[];n.each(((t,s)=>{const a=d(t);s=n.length-e.loopedSlides&&l.push(t),a.attr("data-swiper-slide-index",s)}));for(let e=0;e=0;e-=1)r.prepend(d(l[e].cloneNode(!0)).addClass(s.slideDuplicateClass))},loopFix:function(){const e=this;e.emit("beforeLoopFix");const{activeIndex:t,slides:s,loopedSlides:a,allowSlidePrev:i,allowSlideNext:r,snapGrid:n,rtlTranslate:l}=e;let o;e.allowSlidePrev=!0,e.allowSlideNext=!0;const d=-n[t]-e.getTranslate();if(t=s.length-a){o=-s.length+t+a,o+=a;e.slideTo(o,0,!1,!0)&&0!==d&&e.setTranslate((l?-e.translate:e.translate)-d)}e.allowSlidePrev=i,e.allowSlideNext=r,e.emit("loopFix")},loopDestroy:function(){const{$wrapperEl:e,params:t,slides:s}=this;e.children(`.${t.slideClass}.${t.slideDuplicateClass},.${t.slideClass}.${t.slideBlankClass}`).remove(),s.removeAttr("data-swiper-slide-index")}},grabCursor:{setGrabCursor:function(e){const t=this;if(t.support.touch||!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;s.style.cursor="move",s.style.cursor=e?"-webkit-grabbing":"-webkit-grab",s.style.cursor=e?"-moz-grabbin":"-moz-grab",s.style.cursor=e?"grabbing":"grab"},unsetGrabCursor:function(){const e=this;e.support.touch||e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="")}},events:{attachEvents:function(){const e=this,t=a(),{params:s,support:i}=e;e.onTouchStart=S.bind(e),e.onTouchMove=M.bind(e),e.onTouchEnd=P.bind(e),s.cssMode&&(e.onScroll=O.bind(e)),e.onClick=z.bind(e),i.touch&&!I&&(t.addEventListener("touchstart",L),I=!0),A(e,"on")},detachEvents:function(){A(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{activeIndex:t,initialized:s,loopedSlides:a=0,params:i,$el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const l=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!l||e.currentBreakpoint===l)return;const o=(l in n?n[l]:void 0)||e.originalParams,d=D(e,i),c=D(e,o),p=i.enabled;d&&!c?(r.removeClass(`${i.containerModifierClass}grid ${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!d&&c&&(r.addClass(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.addClass(`${i.containerModifierClass}grid-column`),e.emitContainerClasses());const u=o.direction&&o.direction!==i.direction,h=i.loop&&(o.slidesPerView!==i.slidesPerView||u);u&&s&&e.changeDirection(),f(e.params,o);const m=e.params.enabled;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!m?e.disable():!p&&m&&e.enable(),e.currentBreakpoint=l,e.emit("_beforeBreakpoint",o),h&&s&&(e.loopDestroy(),e.loopCreate(),e.updateSlides(),e.slideTo(t-a+e.loopedSlides,0,!1)),e.emit("breakpoint",o)},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,support:n}=e,l=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,{"pointer-events":!n.touch},{"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}],s.containerModifierClass);t.push(...l),i.addClass([...t].join(" ")),e.emitContainerClasses()},removeClasses:function(){const{$el:e,classNames:t}=this;e.removeClass(t.join(" ")),this.emitContainerClasses()}},images:{loadImage:function(e,t,s,a,i,n){const l=r();let o;function c(){n&&n()}d(e).parent("picture")[0]||e.complete&&i?c():t?(o=new l.Image,o.onload=c,o.onerror=c,a&&(o.sizes=a),s&&(o.srcset=s),t&&(o.src=t)):c()},preloadImages:function(){const e=this;function t(){null!=e&&e&&!e.destroyed&&(void 0!==e.imagesLoaded&&(e.imagesLoaded+=1),e.imagesLoaded===e.imagesToLoad.length&&(e.params.updateOnImagesReady&&e.update(),e.emit("imagesReady")))}e.imagesToLoad=e.$el.find("img");for(let s=0;s1){const e=[];return d(s.el).each((t=>{const a=f({},s,{el:t});e.push(new H(a))})),e}const a=this;a.__swiper__=!0,a.support=y(),a.device=E({userAgent:s.userAgent}),a.browser=T(),a.eventsListeners={},a.eventsAnyListeners=[],a.modules=[...a.__modules__],s.modules&&Array.isArray(s.modules)&&a.modules.push(...s.modules);const i={};a.modules.forEach((e=>{e({swiper:a,extendParams:N(s,i),on:a.on.bind(a),once:a.once.bind(a),off:a.off.bind(a),emit:a.emit.bind(a)})}));const r=f({},G,i);return a.params=f({},r,X,s),a.originalParams=f({},a.params),a.passedParams=f({},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),a.$=d,Object.assign(a,{enabled:a.params.enabled,el:t,classNames:[],slides:d(),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,allowSlideNext:a.params.allowSlideNext,allowSlidePrev:a.params.allowSlidePrev,touchEvents:function(){const e=["touchstart","touchmove","touchend","touchcancel"],t=["pointerdown","pointermove","pointerup"];return a.touchEventsTouch={start:e[0],move:e[1],end:e[2],cancel:e[3]},a.touchEventsDesktop={start:t[0],move:t[1],end:t[2]},a.support.touch||!a.params.simulateTouch?a.touchEventsTouch:a.touchEventsDesktop}(),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:u(),clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,isTouchEvent:void 0,startMoving:void 0},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}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 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.each((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(s.centeredSlides){let e,t=a[l].swiperSlideSize;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]1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):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.removeClass(`${s.params.containerModifierClass}${a}`).addClass(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.each((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}mount(e){const t=this;if(t.mounted)return!0;const s=d(e||t.params.el);if(!(e=s[0]))return!1;e.swiper=t;const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(e&&e.shadowRoot&&e.shadowRoot.querySelector){const t=d(e.shadowRoot.querySelector(i()));return t.children=e=>s.children(e),t}return s.children(i())})();if(0===r.length&&t.params.createElements){const e=a().createElement("div");r=d(e),e.className=t.params.wrapperClass,s.append(e),s.children(`.${t.params.slideClass}`).each((e=>{r.append(e)}))}return Object.assign(t,{$el:s,el:e,$wrapperEl:r,wrapperEl:r[0],mounted:!0,rtl:"rtl"===e.dir.toLowerCase()||"rtl"===s.css("direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===e.dir.toLowerCase()||"rtl"===s.css("direction")),wrongRTL:"-webkit-box"===r.css("display")}),!0}init(e){const t=this;if(t.initialized)return t;return!1===t.mount(e)||(t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.params.loop&&t.loopCreate(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.preloadImages&&t.preloadImages(),t.params.loop?t.slideTo(t.params.initialSlide+t.loopedSlides,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.attachEvents(),t.initialized=!0,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.removeAttr("style"),r.removeAttr("style"),n&&n.length&&n.removeClass([a.slideVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.$el[0].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){f(X,e)}static get extendedDefaults(){return X}static get defaults(){return G}static installModule(e){H.prototype.__modules__||(H.prototype.__modules__=[]);const t=H.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>H.installModule(e))),H):(H.installModule(e),H)}}function Y(e,t,s,i){const r=a();return e.params.createElements&&Object.keys(i).forEach((a=>{if(!s[a]&&!0===s.auto){let n=e.$el.children(`.${i[a]}`)[0];n||(n=r.createElement("div"),n.className=i[a],e.$el.append(n)),s[a]=n,t[a]=n}})),s}function W(e=""){return`.${e.trim().replace(/([\.:!\/])/g,"\\$1").replace(/ /g,".")}`}function R(e){const t=this,{$wrapperEl:s,params:a}=t;if(a.loop&&t.loopDestroy(),"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.eq(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)})),a("setTranslate",(()=>{s.params.effect===t&&i()})),a("setTransition",((e,a)=>{s.params.effect===t&&r(a)}))}function U(e,t){return e.transformEl?t.find(e.transformEl).css({"backface-visibility":"hidden","-webkit-backface-visibility":"hidden"}):t}function K({swiper:e,duration:t,transformEl:s,allSlides:a}){const{slides:i,activeIndex:r,$wrapperEl:n}=e;if(e.params.virtualTranslate&&0!==t){let t,l=!1;t=a?s?i.find(s):i:s?i.eq(r).find(s):i.eq(r),t.transitionEnd((()=>{if(l)return;if(!e||e.destroyed)return;l=!0,e.animating=!1;const t=["webkitTransitionEnd","transitionend"];for(let e=0;e
`),i.append(r)),r}Object.keys(B).forEach((e=>{Object.keys(B[e]).forEach((t=>{H.prototype[t]=B[e][t]}))})),H.use([function({swiper:e,on:t,emit:s}){const a=r();let i=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!==a.ResizeObserver?e&&!e.destroyed&&e.initialized&&(i=new ResizeObserver((t=>{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||n()})),i.observe(e.el)):(a.addEventListener("resize",n),a.addEventListener("orientationchange",l))})),t("destroy",(()=>{i&&i.unobserve&&e.el&&(i.unobserve(e.el),i=null),a.removeEventListener("resize",n),a.removeEventListener("orientationchange",l)}))},function({swiper:e,extendParams:t,on:s,emit:a}){const i=[],n=r(),l=(e,t={})=>{const s=new(n.MutationObserver||n.WebkitMutationObserver)((e=>{if(1===e.length)return void a("observerUpdate",e[0]);const t=function(){a("observerUpdate",e[0])};n.requestAnimationFrame?n.requestAnimationFrame(t):n.setTimeout(t,0)}));s.observe(e,{attributes:void 0===t.attributes||t.attributes,childList:void 0===t.childList||t.childList,characterData:void 0===t.characterData||t.characterData}),i.push(s)};t({observer:!1,observeParents:!1,observeSlideChildren:!1}),s("init",(()=>{if(e.params.observer){if(e.params.observeParents){const t=e.$el.parents();for(let e=0;e{i.forEach((e=>{e.disconnect()})),i.splice(0,i.length)}))}]);const J=[function({swiper:e,extendParams:t,on:s}){let a;function i(t,s){const a=e.params.virtual;if(a.cache&&e.virtual.cache[s])return e.virtual.cache[s];const i=a.renderSlide?d(a.renderSlide.call(e,t,s)):d(`
${t}
`);return i.attr("data-swiper-slide-index")||i.attr("data-swiper-slide-index",s),a.cache&&(e.virtual.cache[s]=i),i}function r(t){const{slidesPerView:s,slidesPerGroup:a,centeredSlides:r}=e.params,{addSlidesBefore:n,addSlidesAfter:l}=e.params.virtual,{from:o,to:d,slides:c,slidesGrid:p,offset:u}=e.virtual;e.params.cssMode||e.updateActiveIndex();const h=e.activeIndex||0;let m,f,g;m=e.rtlTranslate?"right":e.isHorizontal()?"left":"top",r?(f=Math.floor(s/2)+a+l,g=Math.floor(s/2)+a+n):(f=s+(a-1)+l,g=a+n);const v=Math.max((h||0)-g,0),w=Math.min((h||0)+f,c.length-1),b=(e.slidesGrid[v]||0)-(e.slidesGrid[0]||0);function x(){e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),e.lazy&&e.params.lazy.enabled&&e.lazy.load()}if(Object.assign(e.virtual,{from:v,to:w,offset:b,slidesGrid:e.slidesGrid}),o===v&&d===w&&!t)return e.slidesGrid!==p&&b!==u&&e.slides.css(m,`${b}px`),void e.updateProgress();if(e.params.virtual.renderExternal)return e.params.virtual.renderExternal.call(e,{offset:b,from:v,to:w,slides:function(){const e=[];for(let t=v;t<=w;t+=1)e.push(c[t]);return e}()}),void(e.params.virtual.renderExternalUpdate&&x());const y=[],E=[];if(t)e.$wrapperEl.find(`.${e.params.slideClass}`).remove();else for(let t=o;t<=d;t+=1)(tw)&&e.$wrapperEl.find(`.${e.params.slideClass}[data-swiper-slide-index="${t}"]`).remove();for(let e=0;e=v&&e<=w&&(void 0===d||t?E.push(e):(e>d&&E.push(e),e{e.$wrapperEl.append(i(c[t],t))})),y.sort(((e,t)=>t-e)).forEach((t=>{e.$wrapperEl.prepend(i(c[t],t))})),e.$wrapperEl.children(".swiper-slide").css(m,`${b}px`),x()}t({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}}),e.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]},s("beforeInit",(()=>{e.params.virtual.enabled&&(e.virtual.slides=e.params.virtual.slides,e.classNames.push(`${e.params.containerModifierClass}virtual`),e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0,e.params.initialSlide||r())})),s("setTranslate",(()=>{e.params.virtual.enabled&&(e.params.cssMode&&!e._immediateVirtual?(clearTimeout(a),a=setTimeout((()=>{r()}),100)):r())})),s("init update resize",(()=>{e.params.virtual.enabled&&e.params.cssMode&&g(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.attr("data-swiper-slide-index");r&&a.attr("data-swiper-slide-index",parseInt(r,10)+i),s[parseInt(e,10)+i]=a})),e.virtual.cache=s}r(!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.virtual.slides.splice(t[a],1),e.params.virtual.cache&&delete e.virtual.cache[t[a]],t[a]0&&0===e.$el.parents(`.${e.params.slideActiveClass}`).length)return;const a=e.$el,i=a[0].clientWidth,r=a[0].clientHeight,n=l.innerWidth,o=l.innerHeight,d=e.$el.offset();s&&(d.left-=e.$el[0].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}e.isHorizontal()?((d||c||p||u)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((c||u)&&!s||(d||p)&&s)&&e.slideNext(),((d||p)&&!s||(c||u)&&s)&&e.slidePrev()):((d||c||h||m)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(c||m)&&e.slideNext(),(d||h)&&e.slidePrev()),i("keyPress",r)}}function c(){e.keyboard.enabled||(d(n).on("keydown",o),e.keyboard.enabled=!0)}function p(){e.keyboard.enabled&&(d(n).off("keydown",o),e.keyboard.enabled=!1)}e.keyboard={enabled:!1},t({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),s("init",(()=>{e.params.keyboard.enabled&&c()})),s("destroy",(()=>{e.keyboard.enabled&&p()})),Object.assign(e.keyboard,{enable:c,disable:p})},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}}),e.mousewheel={enabled:!1};let l,o=u();const c=[];function h(){e.enabled&&(e.mouseEntered=!0)}function m(){e.enabled&&(e.mouseEntered=!1)}function f(t){return!(e.params.mousewheel.thresholdDelta&&t.delta=6&&u()-o<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)),o=(new i.Date).getTime(),!1)))}function g(t){let s=t,i=!0;if(!e.enabled)return;const r=e.params.mousewheel;e.params.cssMode&&s.preventDefault();let o=e.$el;if("container"!==e.params.mousewheel.eventsTarget&&(o=d(e.params.mousewheel.eventsTarget)),!e.mouseEntered&&!o[0].contains(s.target)&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let h=0;const m=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;h=-g.pixelX*m}else{if(!(Math.abs(g.pixelY)>Math.abs(g.pixelX)))return!0;h=-g.pixelY}else h=Math.abs(g.pixelX)>Math.abs(g.pixelY)?-g.pixelX*m:-g.pixelY;if(0===h)return!0;r.invert&&(h=-h);let v=e.getTranslate()+h*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:u(),delta:Math.abs(h),direction:Math.sign(h)},i=l&&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(),(!d&&e.isBeginning||!u&&e.isEnd)&&e.updateSlidesClasses(),e.params.freeMode.sticky){clearTimeout(n),n=void 0,c.length>=15&&c.shift();const s=c.length?c[c.length-1]:void 0,a=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-a.time<500&&a.delta-t.delta>=1&&t.delta<=6){const s=h>0?.8:.2;l=t,c.splice(0),n=p((()=>{e.slideToClosest(e.params.speed,!0,void 0,s)}),0)}n||(n=p((()=>{l=t,c.splice(0),e.slideToClosest(e.params.speed,!0,void 0,.5)}),500))}if(i||a("scroll",s),e.params.autoplay&&e.params.autoplayDisableOnInteraction&&e.autoplay.stop(),o===e.minTranslate()||o===e.maxTranslate())return!0}}else{const s={time:u(),delta:Math.abs(h),direction:Math.sign(h),raw:t};c.length>=2&&c.shift();const a=c.length?c[c.length-1]:void 0;if(c.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&f(s):f(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 v(t){let s=e.$el;"container"!==e.params.mousewheel.eventsTarget&&(s=d(e.params.mousewheel.eventsTarget)),s[t]("mouseenter",h),s[t]("mouseleave",m),s[t]("wheel",g)}function w(){return e.params.cssMode?(e.wrapperEl.removeEventListener("wheel",g),!0):!e.mousewheel.enabled&&(v("on"),e.mousewheel.enabled=!0,!0)}function b(){return e.params.cssMode?(e.wrapperEl.addEventListener(event,g),!0):!!e.mousewheel.enabled&&(v("off"),e.mousewheel.enabled=!1,!0)}s("init",(()=>{!e.params.mousewheel.enabled&&e.params.cssMode&&b(),e.params.mousewheel.enabled&&w()})),s("destroy",(()=>{e.params.cssMode&&w(),e.mousewheel.enabled&&b()})),Object.assign(e.mousewheel,{enable:w,disable:b})},function({swiper:e,extendParams:t,on:s,emit:a}){function i(t){let s;return t&&(s=d(t),e.params.uniqueNavElements&&"string"==typeof t&&s.length>1&&1===e.$el.find(t).length&&(s=e.$el.find(t))),s}function r(t,s){const a=e.params.navigation;t&&t.length>0&&(t[s?"addClass":"removeClass"](a.disabledClass),t[0]&&"BUTTON"===t[0].tagName&&(t[0].disabled=s),e.params.watchOverflow&&e.enabled&&t[e.isLocked?"addClass":"removeClass"](a.lockClass))}function n(){if(e.params.loop)return;const{$nextEl:t,$prevEl:s}=e.navigation;r(s,e.isBeginning),r(t,e.isEnd)}function l(t){t.preventDefault(),e.isBeginning&&!e.params.loop||e.slidePrev()}function o(t){t.preventDefault(),e.isEnd&&!e.params.loop||e.slideNext()}function c(){const t=e.params.navigation;if(e.params.navigation=Y(e,e.originalParams.navigation,e.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!t.nextEl&&!t.prevEl)return;const s=i(t.nextEl),a=i(t.prevEl);s&&s.length>0&&s.on("click",o),a&&a.length>0&&a.on("click",l),Object.assign(e.navigation,{$nextEl:s,nextEl:s&&s[0],$prevEl:a,prevEl:a&&a[0]}),e.enabled||(s&&s.addClass(t.lockClass),a&&a.addClass(t.lockClass))}function p(){const{$nextEl:t,$prevEl:s}=e.navigation;t&&t.length&&(t.off("click",o),t.removeClass(e.params.navigation.disabledClass)),s&&s.length&&(s.off("click",l),s.removeClass(e.params.navigation.disabledClass))}t({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock"}}),e.navigation={nextEl:null,$nextEl:null,prevEl:null,$prevEl:null},s("init",(()=>{c(),n()})),s("toEdge fromEdge lock unlock",(()=>{n()})),s("destroy",(()=>{p()})),s("enable disable",(()=>{const{$nextEl:t,$prevEl:s}=e.navigation;t&&t[e.enabled?"removeClass":"addClass"](e.params.navigation.lockClass),s&&s[e.enabled?"removeClass":"addClass"](e.params.navigation.lockClass)})),s("click",((t,s)=>{const{$nextEl:i,$prevEl:r}=e.navigation,n=s.target;if(e.params.navigation.hideOnClick&&!d(n).is(r)&&!d(n).is(i)){if(e.pagination&&e.params.pagination&&e.params.pagination.clickable&&(e.pagination.el===n||e.pagination.el.contains(n)))return;let t;i?t=i.hasClass(e.params.navigation.hiddenClass):r&&(t=r.hasClass(e.params.navigation.hiddenClass)),a(!0===t?"navigationShow":"navigationHide"),i&&i.toggleClass(e.params.navigation.hiddenClass),r&&r.toggleClass(e.params.navigation.hiddenClass)}})),Object.assign(e.navigation,{update:n,init:c,destroy:p})},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`}}),e.pagination={el:null,$el:null,bullets:[]};let n=0;function l(){return!e.params.pagination.el||!e.pagination.el||!e.pagination.$el||0===e.pagination.$el.length}function o(t,s){const{bulletActiveClass:a}=e.params.pagination;t[s]().addClass(`${a}-${s}`)[s]().addClass(`${a}-${s}-${s}`)}function c(){const t=e.rtl,s=e.params.pagination;if(l())return;const i=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,c=e.pagination.$el;let p;const u=e.params.loop?Math.ceil((i-2*e.loopedSlides)/e.params.slidesPerGroup):e.snapGrid.length;if(e.params.loop?(p=Math.ceil((e.activeIndex-e.loopedSlides)/e.params.slidesPerGroup),p>i-1-2*e.loopedSlides&&(p-=i-2*e.loopedSlides),p>u-1&&(p-=u),p<0&&"bullets"!==e.params.paginationType&&(p=u+p)):p=void 0!==e.snapIndex?e.snapIndex:e.activeIndex||0,"bullets"===s.type&&e.pagination.bullets&&e.pagination.bullets.length>0){const a=e.pagination.bullets;let i,l,u;if(s.dynamicBullets&&(r=a.eq(0)[e.isHorizontal()?"outerWidth":"outerHeight"](!0),c.css(e.isHorizontal()?"width":"height",r*(s.dynamicMainBullets+4)+"px"),s.dynamicMainBullets>1&&void 0!==e.previousIndex&&(n+=p-e.previousIndex,n>s.dynamicMainBullets-1?n=s.dynamicMainBullets-1:n<0&&(n=0)),i=p-n,l=i+(Math.min(a.length,s.dynamicMainBullets)-1),u=(l+i)/2),a.removeClass(["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`)).join(" ")),c.length>1)a.each((e=>{const t=d(e),a=t.index();a===p&&t.addClass(s.bulletActiveClass),s.dynamicBullets&&(a>=i&&a<=l&&t.addClass(`${s.bulletActiveClass}-main`),a===i&&o(t,"prev"),a===l&&o(t,"next"))}));else{const t=a.eq(p),r=t.index();if(t.addClass(s.bulletActiveClass),s.dynamicBullets){const t=a.eq(i),n=a.eq(l);for(let e=i;e<=l;e+=1)a.eq(e).addClass(`${s.bulletActiveClass}-main`);if(e.params.loop)if(r>=a.length-s.dynamicMainBullets){for(let e=s.dynamicMainBullets;e>=0;e-=1)a.eq(a.length-e).addClass(`${s.bulletActiveClass}-main`);a.eq(a.length-s.dynamicMainBullets-1).addClass(`${s.bulletActiveClass}-prev`)}else o(t,"prev"),o(n,"next");else o(t,"prev"),o(n,"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.css(e.isHorizontal()?l:"top",`${n}px`)}}if("fraction"===s.type&&(c.find(W(s.currentClass)).text(s.formatFractionCurrent(p+1)),c.find(W(s.totalClass)).text(s.formatFractionTotal(u))),"progressbar"===s.type){let t;t=s.progressbarOpposite?e.isHorizontal()?"vertical":"horizontal":e.isHorizontal()?"horizontal":"vertical";const a=(p+1)/u;let i=1,r=1;"horizontal"===t?i=a:r=a,c.find(W(s.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${i}) scaleY(${r})`).transition(e.params.speed)}"custom"===s.type&&s.renderCustom?(c.html(s.renderCustom(e,p+1,u)),a("paginationRender",c[0])):a("paginationUpdate",c[0]),e.params.watchOverflow&&e.enabled&&c[e.isLocked?"addClass":"removeClass"](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.slides.length,i=e.pagination.$el;let r="";if("bullets"===t.type){let a=e.params.loop?Math.ceil((s-2*e.loopedSlides)/e.params.slidesPerGroup):e.snapGrid.length;e.params.freeMode&&e.params.freeMode.enabled&&!e.params.loop&&a>s&&(a=s);for(let s=0;s`;i.html(r),e.pagination.bullets=i.find(W(t.bulletClass))}"fraction"===t.type&&(r=t.renderFraction?t.renderFraction.call(e,t.currentClass,t.totalClass):` / `,i.html(r)),"progressbar"===t.type&&(r=t.renderProgressbar?t.renderProgressbar.call(e,t.progressbarFillClass):``,i.html(r)),"custom"!==t.type&&a("paginationRender",e.pagination.$el[0])}function u(){e.params.pagination=Y(e,e.originalParams.pagination,e.params.pagination,{el:"swiper-pagination"});const t=e.params.pagination;if(!t.el)return;let s=d(t.el);0!==s.length&&(e.params.uniqueNavElements&&"string"==typeof t.el&&s.length>1&&(s=e.$el.find(t.el),s.length>1&&(s=s.filter((t=>d(t).parents(".swiper")[0]===e.el)))),"bullets"===t.type&&t.clickable&&s.addClass(t.clickableClass),s.addClass(t.modifierClass+t.type),s.addClass(t.modifierClass+e.params.direction),"bullets"===t.type&&t.dynamicBullets&&(s.addClass(`${t.modifierClass}${t.type}-dynamic`),n=0,t.dynamicMainBullets<1&&(t.dynamicMainBullets=1)),"progressbar"===t.type&&t.progressbarOpposite&&s.addClass(t.progressbarOppositeClass),t.clickable&&s.on("click",W(t.bulletClass),(function(t){t.preventDefault();let s=d(this).index()*e.params.slidesPerGroup;e.params.loop&&(s+=e.loopedSlides),e.slideTo(s)})),Object.assign(e.pagination,{$el:s,el:s[0]}),e.enabled||s.addClass(t.lockClass))}function h(){const t=e.params.pagination;if(l())return;const s=e.pagination.$el;s.removeClass(t.hiddenClass),s.removeClass(t.modifierClass+t.type),s.removeClass(t.modifierClass+e.params.direction),e.pagination.bullets&&e.pagination.bullets.removeClass&&e.pagination.bullets.removeClass(t.bulletActiveClass),t.clickable&&s.off("click",W(t.bulletClass))}s("init",(()=>{u(),p(),c()})),s("activeIndexChange",(()=>{(e.params.loop||void 0===e.snapIndex)&&c()})),s("snapIndexChange",(()=>{e.params.loop||c()})),s("slidesLengthChange",(()=>{e.params.loop&&(p(),c())})),s("snapGridLengthChange",(()=>{e.params.loop||(p(),c())})),s("destroy",(()=>{h()})),s("enable disable",(()=>{const{$el:t}=e.pagination;t&&t[e.enabled?"removeClass":"addClass"](e.params.pagination.lockClass)})),s("lock unlock",(()=>{c()})),s("click",((t,s)=>{const i=s.target,{$el:r}=e.pagination;if(e.params.pagination.el&&e.params.pagination.hideOnClick&&r.length>0&&!d(i).hasClass(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.hasClass(e.params.pagination.hiddenClass);a(!0===t?"paginationShow":"paginationHide"),r.toggleClass(e.params.pagination.hiddenClass)}})),Object.assign(e.pagination,{render:p,update:c,init:u,destroy:h})},function({swiper:e,extendParams:t,on:s,emit:i}){const r=a();let n,l,o,c,u=!1,h=null,m=null;function f(){if(!e.params.scrollbar.el||!e.scrollbar.el)return;const{scrollbar:t,rtlTranslate:s,progress:a}=e,{$dragEl:i,$el:r}=t,n=e.params.scrollbar;let d=l,c=(o-l)*a;s?(c=-c,c>0?(d=l-c,c=0):-c+l>o&&(d=o+c)):c<0?(d=l+c,c=0):c+l>o&&(d=o-c),e.isHorizontal()?(i.transform(`translate3d(${c}px, 0, 0)`),i[0].style.width=`${d}px`):(i.transform(`translate3d(0px, ${c}px, 0)`),i[0].style.height=`${d}px`),n.hide&&(clearTimeout(h),r[0].style.opacity=1,h=setTimeout((()=>{r[0].style.opacity=0,r.transition(400)}),1e3))}function g(){if(!e.params.scrollbar.el||!e.scrollbar.el)return;const{scrollbar:t}=e,{$dragEl:s,$el:a}=t;s[0].style.width="",s[0].style.height="",o=e.isHorizontal()?a[0].offsetWidth:a[0].offsetHeight,c=e.size/(e.virtualSize+e.params.slidesOffsetBefore-(e.params.centeredSlides?e.snapGrid[0]:0)),l="auto"===e.params.scrollbar.dragSize?o*c:parseInt(e.params.scrollbar.dragSize,10),e.isHorizontal()?s[0].style.width=`${l}px`:s[0].style.height=`${l}px`,a[0].style.display=c>=1?"none":"",e.params.scrollbar.hide&&(a[0].style.opacity=0),e.params.watchOverflow&&e.enabled&&t.$el[e.isLocked?"addClass":"removeClass"](e.params.scrollbar.lockClass)}function v(t){return e.isHorizontal()?"touchstart"===t.type||"touchmove"===t.type?t.targetTouches[0].clientX:t.clientX:"touchstart"===t.type||"touchmove"===t.type?t.targetTouches[0].clientY:t.clientY}function w(t){const{scrollbar:s,rtlTranslate:a}=e,{$el:i}=s;let r;r=(v(t)-i.offset()[e.isHorizontal()?"left":"top"]-(null!==n?n:l/2))/(o-l),r=Math.max(Math.min(r,1),0),a&&(r=1-r);const d=e.minTranslate()+(e.maxTranslate()-e.minTranslate())*r;e.updateProgress(d),e.setTranslate(d),e.updateActiveIndex(),e.updateSlidesClasses()}function b(t){const s=e.params.scrollbar,{scrollbar:a,$wrapperEl:r}=e,{$el:l,$dragEl:o}=a;u=!0,n=t.target===o[0]||t.target===o?v(t)-t.target.getBoundingClientRect()[e.isHorizontal()?"left":"top"]:null,t.preventDefault(),t.stopPropagation(),r.transition(100),o.transition(100),w(t),clearTimeout(m),l.transition(0),s.hide&&l.css("opacity",1),e.params.cssMode&&e.$wrapperEl.css("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.preventDefault():t.returnValue=!1,w(t),a.transition(0),r.transition(0),n.transition(0),i("scrollbarDragMove",t))}function y(t){const s=e.params.scrollbar,{scrollbar:a,$wrapperEl:r}=e,{$el:n}=a;u&&(u=!1,e.params.cssMode&&(e.$wrapperEl.css("scroll-snap-type",""),r.transition("")),s.hide&&(clearTimeout(m),m=p((()=>{n.css("opacity",0),n.transition(400)}),1e3)),i("scrollbarDragEnd",t),s.snapOnRelease&&e.slideToClosest())}function E(t){const{scrollbar:s,touchEventsTouch:a,touchEventsDesktop:i,params:n,support:l}=e,o=s.$el[0],d=!(!l.passiveListener||!n.passiveListeners)&&{passive:!1,capture:!1},c=!(!l.passiveListener||!n.passiveListeners)&&{passive:!0,capture:!1};if(!o)return;const p="on"===t?"addEventListener":"removeEventListener";l.touch?(o[p](a.start,b,d),o[p](a.move,x,d),o[p](a.end,y,c)):(o[p](i.start,b,d),r[p](i.move,x,d),r[p](i.end,y,c))}function T(){const{scrollbar:t,$el:s}=e;e.params.scrollbar=Y(e,e.originalParams.scrollbar,e.params.scrollbar,{el:"swiper-scrollbar"});const a=e.params.scrollbar;if(!a.el)return;let i=d(a.el);e.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.find(a.el).length&&(i=s.find(a.el));let r=i.find(`.${e.params.scrollbar.dragClass}`);0===r.length&&(r=d(`
`),i.append(r)),Object.assign(t,{$el:i,el:i[0],$dragEl:r,dragEl:r[0]}),a.draggable&&e.params.scrollbar.el&&E("on"),i&&i[e.enabled?"removeClass":"addClass"](e.params.scrollbar.lockClass)}function C(){e.params.scrollbar.el&&E("off")}t({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag"}}),e.scrollbar={el:null,dragEl:null,$el:null,$dragEl:null},s("init",(()=>{T(),g(),f()})),s("update resize observerUpdate lock unlock",(()=>{g()})),s("setTranslate",(()=>{f()})),s("setTransition",((t,s)=>{!function(t){e.params.scrollbar.el&&e.scrollbar.el&&e.scrollbar.$dragEl.transition(t)}(s)})),s("enable disable",(()=>{const{$el:t}=e.scrollbar;t&&t[e.enabled?"removeClass":"addClass"](e.params.scrollbar.lockClass)})),s("destroy",(()=>{C()})),Object.assign(e.scrollbar,{updateSize:g,setTranslate:f,init:T,destroy:C})},function({swiper:e,extendParams:t,on:s}){t({parallax:{enabled:!1}});const a=(t,s)=>{const{rtl:a}=e,i=d(t),r=a?-1:1,n=i.attr("data-swiper-parallax")||"0";let l=i.attr("data-swiper-parallax-x"),o=i.attr("data-swiper-parallax-y");const c=i.attr("data-swiper-parallax-scale"),p=i.attr("data-swiper-parallax-opacity");if(l||o?(l=l||"0",o=o||"0"):e.isHorizontal()?(l=n,o="0"):(o=n,l="0"),l=l.indexOf("%")>=0?parseInt(l,10)*s*r+"%":l*s*r+"px",o=o.indexOf("%")>=0?parseInt(o,10)*s+"%":o*s+"px",null!=p){const e=p-(p-1)*(1-Math.abs(s));i[0].style.opacity=e}if(null==c)i.transform(`translate3d(${l}, ${o}, 0px)`);else{const e=c-(c-1)*(1-Math.abs(s));i.transform(`translate3d(${l}, ${o}, 0px) scale(${e})`)}},i=()=>{const{$el:t,slides:s,progress:i,snapGrid:r}=e;t.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{a(e,i)})),s.each(((t,s)=>{let n=t.progress;e.params.slidesPerGroup>1&&"auto"!==e.params.slidesPerView&&(n+=Math.ceil(s/2)-i*(r.length-1)),n=Math.min(Math.max(n,-1),1),d(t).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{a(e,n)}))}))};s("beforeInit",(()=>{e.params.parallax.enabled&&(e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0)})),s("init",(()=>{e.params.parallax.enabled&&i()})),s("setTranslate",(()=>{e.params.parallax.enabled&&i()})),s("setTransition",((t,s)=>{e.params.parallax.enabled&&((t=e.params.speed)=>{const{$el:s}=e;s.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{const s=d(e);let a=parseInt(s.attr("data-swiper-parallax-duration"),10)||t;0===t&&(a=0),s.transition(a)}))})(s)}))},function({swiper:e,extendParams:t,on:s,emit:a}){const i=r();t({zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),e.zoom={enabled:!1};let n,l,o,c=1,p=!1;const u={$slideEl:void 0,slideWidth:void 0,slideHeight:void 0,$imageEl:void 0,$imageWrapEl:void 0,maxRatio:3},m={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:{}},f={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let g=1;function v(e){if(e.targetTouches.length<2)return 1;const t=e.targetTouches[0].pageX,s=e.targetTouches[0].pageY,a=e.targetTouches[1].pageX,i=e.targetTouches[1].pageY;return Math.sqrt((a-t)**2+(i-s)**2)}function w(t){const s=e.support,a=e.params.zoom;if(l=!1,o=!1,!s.gestures){if("touchstart"!==t.type||"touchstart"===t.type&&t.targetTouches.length<2)return;l=!0,u.scaleStart=v(t)}u.$slideEl&&u.$slideEl.length||(u.$slideEl=d(t.target).closest(`.${e.params.slideClass}`),0===u.$slideEl.length&&(u.$slideEl=e.slides.eq(e.activeIndex)),u.$imageEl=u.$slideEl.find(`.${a.containerClass}`).eq(0).find("img, svg, canvas, picture, .swiper-zoom-target"),u.$imageWrapEl=u.$imageEl.parent(`.${a.containerClass}`),u.maxRatio=u.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,0!==u.$imageWrapEl.length)?(u.$imageEl&&u.$imageEl.transition(0),p=!0):u.$imageEl=void 0}function b(t){const s=e.support,a=e.params.zoom,i=e.zoom;if(!s.gestures){if("touchmove"!==t.type||"touchmove"===t.type&&t.targetTouches.length<2)return;o=!0,u.scaleMove=v(t)}u.$imageEl&&0!==u.$imageEl.length?(s.gestures?i.scale=t.scale*c:i.scale=u.scaleMove/u.scaleStart*c,i.scale>u.maxRatio&&(i.scale=u.maxRatio-1+(i.scale-u.maxRatio+1)**.5),i.scalem.touchesStart.x))return void(m.isTouched=!1);if(!e.isHorizontal()&&(Math.floor(m.minY)===Math.floor(m.startY)&&m.touchesCurrent.ym.touchesStart.y))return void(m.isTouched=!1)}t.cancelable&&t.preventDefault(),t.stopPropagation(),m.isMoved=!0,m.currentX=m.touchesCurrent.x-m.touchesStart.x+m.startX,m.currentY=m.touchesCurrent.y-m.touchesStart.y+m.startY,m.currentXm.maxX&&(m.currentX=m.maxX-1+(m.currentX-m.maxX+1)**.8),m.currentYm.maxY&&(m.currentY=m.maxY-1+(m.currentY-m.maxY+1)**.8),f.prevPositionX||(f.prevPositionX=m.touchesCurrent.x),f.prevPositionY||(f.prevPositionY=m.touchesCurrent.y),f.prevTime||(f.prevTime=Date.now()),f.x=(m.touchesCurrent.x-f.prevPositionX)/(Date.now()-f.prevTime)/2,f.y=(m.touchesCurrent.y-f.prevPositionY)/(Date.now()-f.prevTime)/2,Math.abs(m.touchesCurrent.x-f.prevPositionX)<2&&(f.x=0),Math.abs(m.touchesCurrent.y-f.prevPositionY)<2&&(f.y=0),f.prevPositionX=m.touchesCurrent.x,f.prevPositionY=m.touchesCurrent.y,f.prevTime=Date.now(),u.$imageWrapEl.transform(`translate3d(${m.currentX}px, ${m.currentY}px,0)`)}}function E(){const t=e.zoom;u.$slideEl&&e.previousIndex!==e.activeIndex&&(u.$imageEl&&u.$imageEl.transform("translate3d(0,0,0) scale(1)"),u.$imageWrapEl&&u.$imageWrapEl.transform("translate3d(0,0,0)"),t.scale=1,c=1,u.$slideEl=void 0,u.$imageEl=void 0,u.$imageWrapEl=void 0)}function T(t){const s=e.zoom,a=e.params.zoom;if(u.$slideEl||(t&&t.target&&(u.$slideEl=d(t.target).closest(`.${e.params.slideClass}`)),u.$slideEl||(e.params.virtual&&e.params.virtual.enabled&&e.virtual?u.$slideEl=e.$wrapperEl.children(`.${e.params.slideActiveClass}`):u.$slideEl=e.slides.eq(e.activeIndex)),u.$imageEl=u.$slideEl.find(`.${a.containerClass}`).eq(0).find("img, svg, canvas, picture, .swiper-zoom-target"),u.$imageWrapEl=u.$imageEl.parent(`.${a.containerClass}`)),!u.$imageEl||0===u.$imageEl.length||!u.$imageWrapEl||0===u.$imageWrapEl.length)return;let r,n,l,o,p,h,f,g,v,w,b,x,y,E,T,C,$,S;e.params.cssMode&&(e.wrapperEl.style.overflow="hidden",e.wrapperEl.style.touchAction="none"),u.$slideEl.addClass(`${a.zoomedSlideClass}`),void 0===m.touchesStart.x&&t?(r="touchend"===t.type?t.changedTouches[0].pageX:t.pageX,n="touchend"===t.type?t.changedTouches[0].pageY:t.pageY):(r=m.touchesStart.x,n=m.touchesStart.y),s.scale=u.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,c=u.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,t?($=u.$slideEl[0].offsetWidth,S=u.$slideEl[0].offsetHeight,l=u.$slideEl.offset().left+i.scrollX,o=u.$slideEl.offset().top+i.scrollY,p=l+$/2-r,h=o+S/2-n,v=u.$imageEl[0].offsetWidth,w=u.$imageEl[0].offsetHeight,b=v*s.scale,x=w*s.scale,y=Math.min($/2-b/2,0),E=Math.min(S/2-x/2,0),T=-y,C=-E,f=p*s.scale,g=h*s.scale,fT&&(f=T),gC&&(g=C)):(f=0,g=0),u.$imageWrapEl.transition(300).transform(`translate3d(${f}px, ${g}px,0)`),u.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${s.scale})`)}function C(){const t=e.zoom,s=e.params.zoom;u.$slideEl||(e.params.virtual&&e.params.virtual.enabled&&e.virtual?u.$slideEl=e.$wrapperEl.children(`.${e.params.slideActiveClass}`):u.$slideEl=e.slides.eq(e.activeIndex),u.$imageEl=u.$slideEl.find(`.${s.containerClass}`).eq(0).find("img, svg, canvas, picture, .swiper-zoom-target"),u.$imageWrapEl=u.$imageEl.parent(`.${s.containerClass}`)),u.$imageEl&&0!==u.$imageEl.length&&u.$imageWrapEl&&0!==u.$imageWrapEl.length&&(e.params.cssMode&&(e.wrapperEl.style.overflow="",e.wrapperEl.style.touchAction=""),t.scale=1,c=1,u.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"),u.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"),u.$slideEl.removeClass(`${s.zoomedSlideClass}`),u.$slideEl=void 0)}function $(t){const s=e.zoom;s.scale&&1!==s.scale?C():T(t)}function S(){const t=e.support;return{passiveListener:!("touchstart"!==e.touchEvents.start||!t.passiveListener||!e.params.passiveListeners)&&{passive:!0,capture:!1},activeListenerWithCapture:!t.passiveListener||{passive:!1,capture:!0}}}function M(){return`.${e.params.slideClass}`}function P(t){const{passiveListener:s}=S(),a=M();e.$wrapperEl[t]("gesturestart",a,w,s),e.$wrapperEl[t]("gesturechange",a,b,s),e.$wrapperEl[t]("gestureend",a,x,s)}function k(){n||(n=!0,P("on"))}function z(){n&&(n=!1,P("off"))}function O(){const t=e.zoom;if(t.enabled)return;t.enabled=!0;const s=e.support,{passiveListener:a,activeListenerWithCapture:i}=S(),r=M();s.gestures?(e.$wrapperEl.on(e.touchEvents.start,k,a),e.$wrapperEl.on(e.touchEvents.end,z,a)):"touchstart"===e.touchEvents.start&&(e.$wrapperEl.on(e.touchEvents.start,r,w,a),e.$wrapperEl.on(e.touchEvents.move,r,b,i),e.$wrapperEl.on(e.touchEvents.end,r,x,a),e.touchEvents.cancel&&e.$wrapperEl.on(e.touchEvents.cancel,r,x,a)),e.$wrapperEl.on(e.touchEvents.move,`.${e.params.zoom.containerClass}`,y,i)}function I(){const t=e.zoom;if(!t.enabled)return;const s=e.support;t.enabled=!1;const{passiveListener:a,activeListenerWithCapture:i}=S(),r=M();s.gestures?(e.$wrapperEl.off(e.touchEvents.start,k,a),e.$wrapperEl.off(e.touchEvents.end,z,a)):"touchstart"===e.touchEvents.start&&(e.$wrapperEl.off(e.touchEvents.start,r,w,a),e.$wrapperEl.off(e.touchEvents.move,r,b,i),e.$wrapperEl.off(e.touchEvents.end,r,x,a),e.touchEvents.cancel&&e.$wrapperEl.off(e.touchEvents.cancel,r,x,a)),e.$wrapperEl.off(e.touchEvents.move,`.${e.params.zoom.containerClass}`,y,i)}Object.defineProperty(e.zoom,"scale",{get:()=>g,set(e){if(g!==e){const t=u.$imageEl?u.$imageEl[0]:void 0,s=u.$slideEl?u.$slideEl[0]:void 0;a("zoomChange",e,t,s)}g=e}}),s("init",(()=>{e.params.zoom.enabled&&O()})),s("destroy",(()=>{I()})),s("touchStart",((t,s)=>{e.zoom.enabled&&function(t){const s=e.device;u.$imageEl&&0!==u.$imageEl.length&&(m.isTouched||(s.android&&t.cancelable&&t.preventDefault(),m.isTouched=!0,m.touchesStart.x="touchstart"===t.type?t.targetTouches[0].pageX:t.pageX,m.touchesStart.y="touchstart"===t.type?t.targetTouches[0].pageY:t.pageY))}(s)})),s("touchEnd",((t,s)=>{e.zoom.enabled&&function(){const t=e.zoom;if(!u.$imageEl||0===u.$imageEl.length)return;if(!m.isTouched||!m.isMoved)return m.isTouched=!1,void(m.isMoved=!1);m.isTouched=!1,m.isMoved=!1;let s=300,a=300;const i=f.x*s,r=m.currentX+i,n=f.y*a,l=m.currentY+n;0!==f.x&&(s=Math.abs((r-m.currentX)/f.x)),0!==f.y&&(a=Math.abs((l-m.currentY)/f.y));const o=Math.max(s,a);m.currentX=r,m.currentY=l;const d=m.width*t.scale,c=m.height*t.scale;m.minX=Math.min(u.slideWidth/2-d/2,0),m.maxX=-m.minX,m.minY=Math.min(u.slideHeight/2-c/2,0),m.maxY=-m.minY,m.currentX=Math.max(Math.min(m.currentX,m.maxX),m.minX),m.currentY=Math.max(Math.min(m.currentY,m.maxY),m.minY),u.$imageWrapEl.transition(o).transform(`translate3d(${m.currentX}px, ${m.currentY}px,0)`)}()})),s("doubleTap",((t,s)=>{!e.animating&&e.params.zoom.enabled&&e.zoom.enabled&&e.params.zoom.toggle&&$(s)})),s("transitionEnd",(()=>{e.zoom.enabled&&e.params.zoom.enabled&&E()})),s("slideChange",(()=>{e.zoom.enabled&&e.params.zoom.enabled&&e.params.cssMode&&E()})),Object.assign(e.zoom,{enable:O,disable:I,in:T,out:C,toggle:$})},function({swiper:e,extendParams:t,on:s,emit:a}){t({lazy:{checkInView:!1,enabled:!1,loadPrevNext:!1,loadPrevNextAmount:1,loadOnTransitionStart:!1,scrollingElement:"",elementClass:"swiper-lazy",loadingClass:"swiper-lazy-loading",loadedClass:"swiper-lazy-loaded",preloaderClass:"swiper-lazy-preloader"}}),e.lazy={};let i=!1,n=!1;function l(t,s=!0){const i=e.params.lazy;if(void 0===t)return;if(0===e.slides.length)return;const r=e.virtual&&e.params.virtual.enabled?e.$wrapperEl.children(`.${e.params.slideClass}[data-swiper-slide-index="${t}"]`):e.slides.eq(t),n=r.find(`.${i.elementClass}:not(.${i.loadedClass}):not(.${i.loadingClass})`);!r.hasClass(i.elementClass)||r.hasClass(i.loadedClass)||r.hasClass(i.loadingClass)||n.push(r[0]),0!==n.length&&n.each((t=>{const n=d(t);n.addClass(i.loadingClass);const o=n.attr("data-background"),c=n.attr("data-src"),p=n.attr("data-srcset"),u=n.attr("data-sizes"),h=n.parent("picture");e.loadImage(n[0],c||o,p,u,!1,(()=>{if(null!=e&&e&&(!e||e.params)&&!e.destroyed){if(o?(n.css("background-image",`url("${o}")`),n.removeAttr("data-background")):(p&&(n.attr("srcset",p),n.removeAttr("data-srcset")),u&&(n.attr("sizes",u),n.removeAttr("data-sizes")),h.length&&h.children("source").each((e=>{const t=d(e);t.attr("data-srcset")&&(t.attr("srcset",t.attr("data-srcset")),t.removeAttr("data-srcset"))})),c&&(n.attr("src",c),n.removeAttr("data-src"))),n.addClass(i.loadedClass).removeClass(i.loadingClass),r.find(`.${i.preloaderClass}`).remove(),e.params.loop&&s){const t=r.attr("data-swiper-slide-index");if(r.hasClass(e.params.slideDuplicateClass)){l(e.$wrapperEl.children(`[data-swiper-slide-index="${t}"]:not(.${e.params.slideDuplicateClass})`).index(),!1)}else{l(e.$wrapperEl.children(`.${e.params.slideDuplicateClass}[data-swiper-slide-index="${t}"]`).index(),!1)}}a("lazyImageReady",r[0],n[0]),e.params.autoHeight&&e.updateAutoHeight()}})),a("lazyImageLoad",r[0],n[0])}))}function o(){const{$wrapperEl:t,params:s,slides:a,activeIndex:i}=e,r=e.virtual&&s.virtual.enabled,o=s.lazy;let c=s.slidesPerView;function p(e){if(r){if(t.children(`.${s.slideClass}[data-swiper-slide-index="${e}"]`).length)return!0}else if(a[e])return!0;return!1}function u(e){return r?d(e).attr("data-swiper-slide-index"):d(e).index()}if("auto"===c&&(c=0),n||(n=!0),e.params.watchSlidesProgress)t.children(`.${s.slideVisibleClass}`).each((e=>{l(r?d(e).attr("data-swiper-slide-index"):d(e).index())}));else if(c>1)for(let e=i;e1||o.loadPrevNextAmount&&o.loadPrevNextAmount>1){const e=o.loadPrevNextAmount,t=c,s=Math.min(i+t+Math.max(e,t),a.length),r=Math.max(i-Math.max(t,e),0);for(let e=i+c;e0&&l(u(e));const a=t.children(`.${s.slidePrevClass}`);a.length>0&&l(u(a))}}function c(){const t=r();if(!e||e.destroyed)return;const s=e.params.lazy.scrollingElement?d(e.params.lazy.scrollingElement):d(t),a=s[0]===t,n=a?t.innerWidth:s[0].offsetWidth,l=a?t.innerHeight:s[0].offsetHeight,p=e.$el.offset(),{rtlTranslate:u}=e;let h=!1;u&&(p.left-=e.$el[0].scrollLeft);const m=[[p.left,p.top],[p.left+e.width,p.top],[p.left,p.top+e.height],[p.left+e.width,p.top+e.height]];for(let e=0;e=0&&t[0]<=n&&t[1]>=0&&t[1]<=l){if(0===t[0]&&0===t[1])continue;h=!0}}const f=!("touchstart"!==e.touchEvents.start||!e.support.passiveListener||!e.params.passiveListeners)&&{passive:!0,capture:!1};h?(o(),s.off("scroll",c,f)):i||(i=!0,s.on("scroll",c,f))}s("beforeInit",(()=>{e.params.lazy.enabled&&e.params.preloadImages&&(e.params.preloadImages=!1)})),s("init",(()=>{e.params.lazy.enabled&&(e.params.lazy.checkInView?c():o())})),s("scroll",(()=>{e.params.freeMode&&e.params.freeMode.enabled&&!e.params.freeMode.sticky&&o()})),s("scrollbarDragMove resize _freeModeNoMomentumRelease",(()=>{e.params.lazy.enabled&&(e.params.lazy.checkInView?c():o())})),s("transitionStart",(()=>{e.params.lazy.enabled&&(e.params.lazy.loadOnTransitionStart||!e.params.lazy.loadOnTransitionStart&&!n)&&(e.params.lazy.checkInView?c():o())})),s("transitionEnd",(()=>{e.params.lazy.enabled&&!e.params.lazy.loadOnTransitionStart&&(e.params.lazy.checkInView?c():o())})),s("slideChange",(()=>{const{lazy:t,cssMode:s,watchSlidesProgress:a,touchReleaseOnEdges:i,resistanceRatio:r}=e.params;t.enabled&&(s||a&&(i||0===r))&&o()})),Object.assign(e.lazy,{load:o,loadInSlide:l})},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",(()=>{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.setTranslate(s,a)})),s("setTransition",((t,s,a)=>{e.controller.control&&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){const s=e.rtlTranslate?-e.translate:e.translate;"slide"===e.params.controller.by&&(!function(t){e.controller.spline||(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()),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.$wrapperEl.transitionEnd((()=>{i&&(s.params.loop&&"slide"===e.params.controller.by&&s.loopFix(),s.transitionEnd())})))}if(Array.isArray(i))for(r=0;r0&&(e.isBeginning?(p(s),n(s)):(u(s),r(s))),t&&t.length>0&&(e.isEnd?(p(t),n(t)):(u(t),r(t)))}function f(){return e.pagination&&e.params.pagination.clickable&&e.pagination.bullets&&e.pagination.bullets.length}const g=(e,t,s)=>{r(e),"BUTTON"!==e[0].tagName&&(l(e,"button"),e.on("keydown",h)),c(e,s),function(e,t){e.attr("aria-controls",t)}(e,t)};function v(){const t=e.params.a11y;e.$el.append(a);const s=e.$el;t.containerRoleDescriptionMessage&&o(s,t.containerRoleDescriptionMessage),t.containerMessage&&c(s,t.containerMessage);const i=e.$wrapperEl,r=i.attr("id")||`swiper-wrapper-${function(e=16){return"x".repeat(e).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}(16)}`,n=e.params.autoplay&&e.params.autoplay.enabled?"off":"polite";var p;p=r,i.attr("id",p),function(e,t){e.attr("aria-live",t)}(i,n),t.itemRoleDescriptionMessage&&o(d(e.slides),t.itemRoleDescriptionMessage),l(d(e.slides),t.slideRole);const u=e.params.loop?e.slides.filter((t=>!t.classList.contains(e.params.slideDuplicateClass))).length:e.slides.length;let m,v;e.slides.each(((s,a)=>{const i=d(s),r=e.params.loop?parseInt(i.attr("data-swiper-slide-index"),10):a;c(i,t.slideLabelMessage.replace(/\{\{index\}\}/,r+1).replace(/\{\{slidesLength\}\}/,u))})),e.navigation&&e.navigation.$nextEl&&(m=e.navigation.$nextEl),e.navigation&&e.navigation.$prevEl&&(v=e.navigation.$prevEl),m&&m.length&&g(m,r,t.nextSlideMessage),v&&v.length&&g(v,r,t.prevSlideMessage),f()&&e.pagination.$el.on("keydown",W(e.params.pagination.bulletClass),h)}s("beforeInit",(()=>{a=d(``)})),s("afterInit",(()=>{e.params.a11y.enabled&&(v(),m())})),s("toEdge",(()=>{e.params.a11y.enabled&&m()})),s("fromEdge",(()=>{e.params.a11y.enabled&&m()})),s("paginationUpdate",(()=>{e.params.a11y.enabled&&function(){const t=e.params.a11y;f()&&e.pagination.bullets.each((s=>{const a=d(s);r(a),e.params.pagination.renderBullet||(l(a,"button"),c(a,t.paginationBulletMessage.replace(/\{\{index\}\}/,a.index()+1)))}))}()})),s("destroy",(()=>{e.params.a11y.enabled&&function(){let t,s;a&&a.length>0&&a.remove(),e.navigation&&e.navigation.$nextEl&&(t=e.navigation.$nextEl),e.navigation&&e.navigation.$prevEl&&(s=e.navigation.$prevEl),t&&t.off("keydown",h),s&&s.off("keydown",h),f()&&e.pagination.$el.off("keydown",W(e.params.pagination.bulletClass),h)}()}))},function({swiper:e,extendParams:t,on:s}){t({history:{enabled:!1,root:"",replaceState:!1,key:"slides"}});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.slides.eq(s);let d=n(o.attr("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}/${d}`}else l.pathname.includes(t)||(d=`${t}/${d}`);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,e.paths.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))}})()})),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}});const c=()=>{s("hashChange");const t=l.location.hash.replace("#","");if(t!==e.slides.eq(e.activeIndex).attr("data-hash")){const s=e.$wrapperEl.children(`.${e.params.slideClass}[data-hash="${t}"]`).index();if(void 0===s)return;e.slideTo(s)}},p=()=>{if(n&&e.params.hashNavigation.enabled)if(e.params.hashNavigation.replaceState&&o.history&&o.history.replaceState)o.history.replaceState(null,null,`#${e.slides.eq(e.activeIndex).attr("data-hash")}`||""),s("hashSet");else{const t=e.slides.eq(e.activeIndex),a=t.attr("data-hash")||t.attr("data-history");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;for(let a=0,i=e.slides.length;a{e.params.hashNavigation.enabled&&e.params.hashNavigation.watchState&&d(o).off("hashchange",c)})),i("transitionEnd _freeModeNoMomentumRelease",(()=>{n&&p()})),i("slideChange",(()=>{n&&e.params.cssMode&&p()}))},function({swiper:e,extendParams:t,on:s,emit:i}){let r;function n(){const t=e.slides.eq(e.activeIndex);let s=e.params.autoplay.delay;t.attr("data-swiper-autoplay")&&(s=t.attr("data-swiper-autoplay")||e.params.autoplay.delay),clearTimeout(r),r=p((()=>{let t;e.params.autoplay.reverseDirection?e.params.loop?(e.loopFix(),t=e.slidePrev(e.params.speed,!0,!0),i("autoplay")):e.isBeginning?e.params.autoplay.stopOnLastSlide?o():(t=e.slideTo(e.slides.length-1,e.params.speed,!0,!0),i("autoplay")):(t=e.slidePrev(e.params.speed,!0,!0),i("autoplay")):e.params.loop?(e.loopFix(),t=e.slideNext(e.params.speed,!0,!0),i("autoplay")):e.isEnd?e.params.autoplay.stopOnLastSlide?o():(t=e.slideTo(0,e.params.speed,!0,!0),i("autoplay")):(t=e.slideNext(e.params.speed,!0,!0),i("autoplay")),(e.params.cssMode&&e.autoplay.running||!1===t)&&n()}),s)}function l(){return void 0===r&&(!e.autoplay.running&&(e.autoplay.running=!0,i("autoplayStart"),n(),!0))}function o(){return!!e.autoplay.running&&(void 0!==r&&(r&&(clearTimeout(r),r=void 0),e.autoplay.running=!1,i("autoplayStop"),!0))}function d(t){e.autoplay.running&&(e.autoplay.paused||(r&&clearTimeout(r),e.autoplay.paused=!0,0!==t&&e.params.autoplay.waitForTransition?["transitionend","webkitTransitionEnd"].forEach((t=>{e.$wrapperEl[0].addEventListener(t,u)})):(e.autoplay.paused=!1,n())))}function c(){const t=a();"hidden"===t.visibilityState&&e.autoplay.running&&d(),"visible"===t.visibilityState&&e.autoplay.paused&&(n(),e.autoplay.paused=!1)}function u(t){e&&!e.destroyed&&e.$wrapperEl&&t.target===e.$wrapperEl[0]&&(["transitionend","webkitTransitionEnd"].forEach((t=>{e.$wrapperEl[0].removeEventListener(t,u)})),e.autoplay.paused=!1,e.autoplay.running?n():o())}function h(){e.params.autoplay.disableOnInteraction?o():d(),["transitionend","webkitTransitionEnd"].forEach((t=>{e.$wrapperEl[0].removeEventListener(t,u)}))}function m(){e.params.autoplay.disableOnInteraction||(e.autoplay.paused=!1,n())}e.autoplay={running:!1,paused:!1},t({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}}),s("init",(()=>{if(e.params.autoplay.enabled){l();a().addEventListener("visibilitychange",c),e.params.autoplay.pauseOnMouseEnter&&(e.$el.on("mouseenter",h),e.$el.on("mouseleave",m))}})),s("beforeTransitionStart",((t,s,a)=>{e.autoplay.running&&(a||!e.params.autoplay.disableOnInteraction?e.autoplay.pause(s):o())})),s("sliderFirstMove",(()=>{e.autoplay.running&&(e.params.autoplay.disableOnInteraction?o():d())})),s("touchEnd",(()=>{e.params.cssMode&&e.autoplay.paused&&!e.params.autoplay.disableOnInteraction&&n()})),s("destroy",(()=>{e.$el.off("mouseenter",h),e.$el.off("mouseleave",m),e.autoplay.running&&o();a().removeEventListener("visibilitychange",c)})),Object.assign(e.autoplay,{pause:d,run:n,start:l,stop:o})},function({swiper:e,extendParams:t,on:s}){t({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let a=!1,i=!1;function r(){const t=e.thumbs.swiper;if(!t)return;const s=t.clickedIndex,a=t.clickedSlide;if(a&&d(a).hasClass(e.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;if(i=t.params.loop?parseInt(d(t.clickedSlide).attr("data-swiper-slide-index"),10):s,e.params.loop){let t=e.activeIndex;e.slides.eq(t).hasClass(e.params.slideDuplicateClass)&&(e.loopFix(),e._clientLeft=e.$wrapperEl[0].clientLeft,t=e.activeIndex);const s=e.slides.eq(t).prevAll(`[data-swiper-slide-index="${i}"]`).eq(0).index(),a=e.slides.eq(t).nextAll(`[data-swiper-slide-index="${i}"]`).eq(0).index();i=void 0===s?a:void 0===a?s:a-t1?a:o:a-oe.previousIndex?"next":"prev"}else n=e.realIndex,l=n>e.previousIndex?"next":"prev";r&&(n+="next"===l?i:-1*i),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(n)<0&&(s.params.centeredSlides?n=n>o?n-Math.floor(a/2)+1:n+Math.floor(a/2)-1:n>o&&s.params.slidesPerGroup,s.slideTo(n,t?0:void 0))}let n=1;const l=e.params.thumbs.slideThumbActiveClass;if(e.params.slidesPerView>1&&!e.params.centeredSlides&&(n=e.params.slidesPerView),e.params.thumbs.multipleActiveThumbs||(n=1),n=Math.floor(n),s.slides.removeClass(l),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let t=0;t{const{thumbs:t}=e.params;t&&t.swiper&&(n(),l(!0))})),s("slideChange update resize observerUpdate",(()=>{e.thumbs.swiper&&l()})),s("setTransition",((t,s)=>{const a=e.thumbs.swiper;a&&a.setTransition(s)})),s("beforeDestroy",(()=>{const t=e.thumbs.swiper;t&&i&&t&&t.destroy()})),Object.assign(e.thumbs,{init:n,update:l})},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:{onTouchMove:function(){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:u()})},onTouchEnd:function({currentPos:t}){const{params:i,$wrapperEl:r,rtlTranslate:n,snapGrid:l,touchEventsData:o}=e,d=u()-o.touchStartTime;if(t<-e.minTranslate())e.slideTo(e.activeIndex);else if(t>-e.maxTranslate())e.slides.length1){const t=o.velocities.pop(),s=o.velocities.pop(),a=t.position-s.position,r=t.time-s.time;e.velocity=a/r,e.velocity/=2,Math.abs(e.velocity)150||u()-t.time>300)&&(e.velocity=0)}else e.velocity=0;e.velocity*=i.freeMode.momentumVelocityRatio,o.velocities.length=0;let t=1e3*i.freeMode.momentumRatio;const d=e.velocity*t;let c=e.translate+d;n&&(c=-c);let p,h=!1;const m=20*Math.abs(e.velocity)*i.freeMode.momentumBounceRatio;let f;if(ce.minTranslate())i.freeMode.momentumBounce?(c-e.minTranslate()>m&&(c=e.minTranslate()+m),p=e.minTranslate(),h=!0,o.allowMomentumBounce=!0):c=e.minTranslate(),i.loop&&i.centeredSlides&&(f=!0);else if(i.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),i.freeMode.sticky){const s=Math.abs((n?-c:c)-e.translate),a=e.slidesSizesGrid[e.activeIndex];t=s{e&&!e.destroyed&&o.allowMomentumBounce&&(s("momentumBounce"),e.setTransition(i.speed),setTimeout((()=>{e.setTranslate(p),r.transitionEnd((()=>{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,r.transitionEnd((()=>{e&&!e.destroyed&&e.transitionEnd()})))):e.updateProgress(c),e.updateActiveIndex(),e.updateSlidesClasses()}else{if(i.freeMode.sticky)return void e.slideToClosest();i.freeMode&&s("_freeModeNoMomentumRelease")}(!i.freeMode.momentum||d>=i.longSwipesMs)&&(e.updateProgress(),e.updateActiveIndex(),e.updateSlidesClasses())}}}})},function({swiper:e,extendParams:t}){let s,a,i;t({grid:{rows:1,fill:"column"}}),e.grid={initSlides:t=>{const{slidesPerView:r}=e.params,{rows:n,fill:l}=e.params.grid;a=s/n,i=Math.floor(t/n),s=Math.floor(t/n)===t/n?t:Math.ceil(t/n)*n,"auto"!==r&&"row"===l&&(s=Math.max(s,r*n))},updateSlide:(t,r,n,l)=>{const{slidesPerGroup:o,spaceBetween:d}=e.params,{rows:c,fill:p}=e.params.grid;let u,h,m;if("row"===p&&o>1){const e=Math.floor(t/(o*c)),a=t-c*o*e,i=0===e?o:Math.min(Math.ceil((n-e*c*o)/c),o);m=Math.floor(a/i),h=a-m*i+e*o,u=h+m*s/c,r.css({"-webkit-order":u,order:u})}else"column"===p?(h=Math.floor(t/c),m=t-h*c,(h>i||h===i&&m===c-1)&&(m+=1,m>=c&&(m=0,h+=1))):(m=Math.floor(t/a),h=t-m*a);r.css(l("margin-top"),0!==m?d&&`${d}px`:"")},updateWrapperSize:(t,a,i)=>{const{spaceBetween:r,centeredSlides:n,roundLengths:l}=e.params,{rows:o}=e.params.grid;if(e.virtualSize=(t+r)*s,e.virtualSize=Math.ceil(e.virtualSize/o)-r,e.$wrapperEl.css({[i("width")]:`${e.virtualSize+r}px`}),n){a.splice(0,a.length);const t=[];for(let s=0;s{const{slides:t}=e,s=e.params.fadeEffect;for(let a=0;a{const{transformEl:s}=e.params.fadeEffect;(s?e.slides.find(s):e.slides).transition(t),K({swiper:e,duration:t,transformEl: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}}),F({effect:"cube",swiper:e,on:s,setTranslate:()=>{const{$el:t,$wrapperEl:s,slides:a,width:i,height:r,rtlTranslate:n,size:l,browser:o}=e,c=e.params.cubeEffect,p=e.isHorizontal(),u=e.virtual&&e.params.virtual.enabled;let h,m=0;c.shadow&&(p?(h=s.find(".swiper-cube-shadow"),0===h.length&&(h=d('
'),s.append(h)),h.css({height:`${i}px`})):(h=t.find(".swiper-cube-shadow"),0===h.length&&(h=d('
'),t.append(h))));for(let e=0;e-1&&(m=90*s+90*o,n&&(m=90*-s-90*o)),t.transform(v),c.slideShadows){let e=p?t.find(".swiper-slide-shadow-left"):t.find(".swiper-slide-shadow-top"),s=p?t.find(".swiper-slide-shadow-right"):t.find(".swiper-slide-shadow-bottom");0===e.length&&(e=d(`
`),t.append(e)),0===s.length&&(s=d(`
`),t.append(s)),e.length&&(e[0].style.opacity=Math.max(-o,0)),s.length&&(s[0].style.opacity=Math.max(o,0))}}if(s.css({"-webkit-transform-origin":`50% 50% -${l/2}px`,"transform-origin":`50% 50% -${l/2}px`}),c.shadow)if(p)h.transform(`translate3d(0px, ${i/2+c.shadowOffset}px, ${-i/2}px) rotateX(90deg) 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,i=c.shadowOffset;h.transform(`scale3d(${s}, 1, ${a}) translate3d(0px, ${r/2+i}px, ${-r/2/a}px) rotateX(-90deg)`)}const f=o.isSafari||o.isWebView?-l/2:0;s.transform(`translate3d(0px,0,${f}px) rotateX(${e.isHorizontal()?0:m}deg) rotateY(${e.isHorizontal()?-m:0}deg)`)},setTransition:t=>{const{$el:s,slides:a}=e;a.transition(t).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(t),e.params.cubeEffect.shadow&&!e.isHorizontal()&&s.find(".swiper-cube-shadow").transition(t)},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,transformEl:null}}),F({effect:"flip",swiper:e,on:s,setTranslate:()=>{const{slides:t,rtlTranslate:s}=e,a=e.params.flipEffect;for(let i=0;i{const{transformEl:s}=e.params.flipEffect;(s?e.slides.find(s):e.slides).transition(t).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(t),K({swiper:e,duration:t,transformEl:s})},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,transformEl:null}}),F({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;for(let e=0,t=a.length;e0?l:0),s.length&&(s[0].style.opacity=-l>0?-l:0)}}},setTransition:t=>{const{transformEl:s}=e.params.coverflowEffect;(s?e.slides.find(s):e.slides).transition(t).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(t)},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function({swiper:e,extendParams:t,on:s}){t({creativeEffect:{transformEl:null,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`;F({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;if(l){const t=i[0]/2-e.params.slidesOffsetBefore||0;s.transform(`translateX(calc(50% - ${t}px))`)}for(let s=0;s0&&(f=r.prev,m=!0),u.forEach(((e,t)=>{u[t]=`calc(${e}px + (${a(f.translate[t])} * ${Math.abs(d*n)}))`})),h.forEach(((e,t)=>{h[t]=f.rotate[t]*Math.abs(d*n)})),i[0].style.zIndex=-Math.abs(Math.round(o))+t.length;const g=u.join(", "),v=`rotateX(${h[0]}deg) rotateY(${h[1]}deg) rotateZ(${h[2]}deg)`,w=c<0?`scale(${1+(1-f.scale)*c*n})`:`scale(${1-(1-f.scale)*c*n})`,b=c<0?1+(1-f.opacity)*c*n:1-(1-f.opacity)*c*n,x=`translate3d(${g}) ${v} ${w}`;if(m&&f.shadow||!m){let e=i.children(".swiper-slide-shadow");if(0===e.length&&f.shadow&&(e=Z(r,i)),e.length){const t=r.shadowPerProgress?d*(1/r.limitProgress):d;e[0].style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const y=U(r,i);y.transform(x).css({opacity:b}),f.origin&&y.css("transform-origin",f.origin)}},setTransition:t=>{const{transformEl:s}=e.params.creativeEffect;(s?e.slides.find(s):e.slides).transition(t).find(".swiper-slide-shadow").transition(t),K({swiper:e,duration:t,transformEl: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,transformEl:null}}),F({effect:"cards",swiper:e,on:s,setTranslate:()=>{const{slides:t,activeIndex:s}=e,a=e.params.cardsEffect,{startTranslate:i,isTouched:r}=e.touchEventsData,n=e.translate;for(let l=0;l0&&c<1&&(r||e.params.cssMode)&&n-1&&(r||e.params.cssMode)&&n>i;if(w||b){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;g+=-28*c*e,f+=-.5*e,v+=96*e,h=-25*e*Math.abs(c)+"%"}if(u=c<0?`calc(${u}px + (${v*Math.abs(c)}%))`:c>0?`calc(${u}px + (-${v*Math.abs(c)}%))`:`${u}px`,!e.isHorizontal()){const e=h;h=u,u=e}const x=`\n translate3d(${u}, ${h}, ${m}px)\n rotateZ(${g}deg)\n scale(${c<0?""+(1+(1-f)*c):""+(1-(1-f)*c)})\n `;if(a.slideShadows){let e=o.find(".swiper-slide-shadow");0===e.length&&(e=Z(a,o)),e.length&&(e[0].style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}o[0].style.zIndex=-Math.abs(Math.round(d))+t.length;U(a,o).transform(x)}},setTransition:t=>{const{transformEl:s}=e.params.cardsEffect;(s?e.slides.find(s):e.slides).transition(t).find(".swiper-slide-shadow").transition(t),K({swiper:e,duration:t,transformEl:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!e.params.cssMode})})}];return H.use(J),H})); -//# sourceMappingURL=swiper-bundle.min.js.map \ No newline at end of file diff --git a/resources/web/guide/swiper/swiper-bundle.min.js.map b/resources/web/guide/swiper/swiper-bundle.min.js.map deleted file mode 100644 index 1828e94139..0000000000 --- a/resources/web/guide/swiper/swiper-bundle.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../node_modules/ssr-window/ssr-window.esm.js","../node_modules/dom7/dom7.esm.js","../src/shared/dom.js","../src/shared/utils.js","../src/shared/get-support.js","../src/shared/get-device.js","../src/shared/get-browser.js","../src/core/events-emitter.js","../src/core/transition/transitionEmit.js","../src/core/events/onTouchStart.js","../src/core/events/onTouchMove.js","../src/core/events/onTouchEnd.js","../src/core/events/onResize.js","../src/core/events/onClick.js","../src/core/events/onScroll.js","../src/core/events/index.js","../src/core/breakpoints/setBreakpoint.js","../src/core/check-overflow/index.js","../src/core/defaults.js","../src/core/moduleExtendParams.js","../src/core/core.js","../src/core/update/index.js","../src/core/update/updateSize.js","../src/core/update/updateSlides.js","../src/core/update/updateAutoHeight.js","../src/core/update/updateSlidesOffset.js","../src/core/update/updateSlidesProgress.js","../src/core/update/updateProgress.js","../src/core/update/updateSlidesClasses.js","../src/core/update/updateActiveIndex.js","../src/core/update/updateClickedSlide.js","../src/core/translate/index.js","../src/core/translate/getTranslate.js","../src/core/translate/setTranslate.js","../src/core/translate/minTranslate.js","../src/core/translate/maxTranslate.js","../src/core/translate/translateTo.js","../src/core/transition/index.js","../src/core/transition/setTransition.js","../src/core/transition/transitionStart.js","../src/core/transition/transitionEnd.js","../src/core/slide/index.js","../src/core/slide/slideTo.js","../src/core/slide/slideToLoop.js","../src/core/slide/slideNext.js","../src/core/slide/slidePrev.js","../src/core/slide/slideReset.js","../src/core/slide/slideToClosest.js","../src/core/slide/slideToClickedSlide.js","../src/core/loop/index.js","../src/core/loop/loopCreate.js","../src/core/loop/loopFix.js","../src/core/loop/loopDestroy.js","../src/core/grab-cursor/index.js","../src/core/grab-cursor/setGrabCursor.js","../src/core/grab-cursor/unsetGrabCursor.js","../src/core/breakpoints/index.js","../src/core/breakpoints/getBreakpoint.js","../src/core/classes/index.js","../src/core/classes/addClasses.js","../src/core/classes/removeClasses.js","../src/core/images/index.js","../src/core/images/loadImage.js","../src/core/images/preloadImages.js","../src/shared/create-element-if-not-defined.js","../src/shared/classes-to-selector.js","../src/modules/manipulation/methods/appendSlide.js","../src/modules/manipulation/methods/prependSlide.js","../src/modules/manipulation/methods/addSlide.js","../src/modules/manipulation/methods/removeSlide.js","../src/modules/manipulation/methods/removeAllSlides.js","../src/shared/effect-init.js","../src/shared/effect-target.js","../src/shared/effect-virtual-transition-end.js","../src/shared/create-shadow.js","../src/core/modules/resize/resize.js","../src/core/modules/observer/observer.js","../src/swiper.js","../src/modules/virtual/virtual.js","../src/modules/keyboard/keyboard.js","../src/modules/mousewheel/mousewheel.js","../src/modules/navigation/navigation.js","../src/modules/pagination/pagination.js","../src/modules/scrollbar/scrollbar.js","../src/modules/parallax/parallax.js","../src/modules/zoom/zoom.js","../src/modules/lazy/lazy.js","../src/modules/controller/controller.js","../src/modules/a11y/a11y.js","../src/modules/history/history.js","../src/modules/hash-navigation/hash-navigation.js","../src/modules/autoplay/autoplay.js","../src/modules/thumbs/thumbs.js","../src/modules/free-mode/free-mode.js","../src/modules/grid/grid.js","../src/modules/manipulation/manipulation.js","../src/modules/effect-fade/effect-fade.js","../src/modules/effect-cube/effect-cube.js","../src/modules/effect-flip/effect-flip.js","../src/modules/effect-coverflow/effect-coverflow.js","../src/modules/effect-creative/effect-creative.js","../src/modules/effect-cards/effect-cards.js"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","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","Dom7","Array","items","super","proto","__proto__","defineProperty","get","set","value","makeReactive","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","$","selector","context","html","trim","indexOf","toCreate","tempParent","innerHTML","i","a","qsa","nodeType","uniqueArray","arrayUnique","fn","Methods","addClass","classes","classNames","map","c","split","classList","add","removeClass","remove","hasClass","className","contains","toggleClass","toggle","attr","attrs","arguments","getAttribute","attrName","removeAttr","removeAttribute","transform","transition","duration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","j","event","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","splice","trigger","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","index","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","o","slice","to","noExtend","nextSource","node","HTMLElement","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","time","startTime","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","supportsPassive","opts","gestures","calcSupport","getDevice","overrides","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","isSafari","toLowerCase","isWebView","test","calcBrowser","methodName","writable","eventsEmitter","priority","self","method","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","emit","transitionEmit","runCallbacks","direction","step","activeIndex","previousIndex","onTouchStart","touchEventsData","touches","enabled","animating","preventInteractionOnTransition","cssMode","loop","loopFix","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","assign","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","updateSize","swipeDirection","threshold","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","rtlTranslate","rtl","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","isVertical","maxTranslate","minTranslate","diffX","diffY","sqrt","touchAngle","isHorizontal","atan2","abs","touchMoveStopPropagation","nested","stopPropagation","startTranslate","setTransition","$wrapperEl","allowMomentumBounce","grabCursor","allowSlideNext","allowSlidePrev","setGrabCursor","diff","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","watchSlidesProgress","updateActiveIndex","updateSlidesClasses","updateProgress","setTranslate","onTouchEnd","slidesGrid","touchEndTime","timeDiff","updateClickedSlide","lastClickTime","destroyed","currentPos","stopIndex","groupSize","slidesSizesGrid","slidesPerGroupSkip","slidesPerGroup","increment","ratio","longSwipesMs","longSwipes","slideTo","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","snapGrid","updateSlides","slidesPerView","isEnd","isBeginning","centeredSlides","slides","autoplay","running","paused","run","watchOverflow","checkOverflow","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","translatesDiff","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","start","passiveListeners","passive","move","end","cancel","updateOnWindowResize","isGridEnabled","grid","rows","defaults","init","initialSlide","resizeObserver","createElements","url","autoHeight","setWrapperSize","virtualTranslate","effect","breakpointsBase","spaceBetween","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","simulateTouch","uniqueNavElements","slideToClickedSlide","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlides","loopFillGroupWithBlank","loopPreventsSlide","containerModifierClass","slideClass","slideBlankClass","slideActiveClass","slideDuplicateActiveClass","slideVisibleClass","slideDuplicateClass","slideNextClass","slideDuplicateNextClass","slidePrevClass","slideDuplicatePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","update","$el","clientWidth","clientHeight","parseInt","Number","isNaN","size","getDirectionLabel","property","marginRight","getDirectionPropertyValue","label","swiperSize","wrongRTL","isVirtual","virtual","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","gridEnabled","slideSize","initSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","updateSlidesOffset","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","visibleSlides","ceil","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","originalProgress","multiplier","wasBeginning","wasEnd","realIndex","activeSlide","nextSlide","prevSlide","emitSlidesClasses","newActiveIndex","previousRealIndex","previousSnapIndex","skip","initialized","slideFound","clickedSlide","clickedIndex","byController","x","y","translateTo","translateBounds","internal","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionStart","initial","Error","indexAsNumber","isFinite","normalizedTranslate","normalizedGrid","normalizedGridNext","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerViewDynamic","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","currentSnap","slideToIndex","loopCreate","$selector","blankSlidesNum","blankNode","prependSlides","appendSlides","cloneNode","loopDestroy","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","directionChanged","needsReLoop","changeDirection","isEnabled","disable","enable","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","wasLocked","lastSlideIndex","lastSlideRightEdge","addClasses","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","options","getWrapper","wrapper","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","createElementIfNotDefined","checkProps","element","classesToSelector","appendSlide","observer","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","overwriteParamsResult","_s","effectTarget","effectParams","$slideEl","transformEl","effectVirtualTransitionEnd","allSlides","$transitionEndTarget","eventTriggered","triggerEvents","createShadow","shadowClass","$shadowContainer","$shadowEl","prototypeGroup","protoMethod","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","renderSlide","cache","force","addSlidesBefore","addSlidesAfter","from","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","renderExternalUpdate","prependIndexes","appendIndexes","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","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","shift","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","getEl","toggleEl","disabled","disabledClass","tagName","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","targetEl","pagination","clickable","isHidden","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","lastIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","progressbarDirection","scale","scaleX","scaleY","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","eventMethod","$swiperEl","dragClass","dragEl","draggable","parallax","setTransform","p","currentOpacity","currentScale","_swiper","parallaxEl","$parallaxEl","parallaxDuration","zoom","maxRatio","containerClass","zoomedSlideClass","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","isScaling","gesture","slideWidth","slideHeight","$imageEl","$imageWrapEl","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","scaleStart","onGestureChange","scaleMove","onGestureEnd","scaledWidth","scaledHeight","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","touchAction","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$images","background","$pictureEl","sourceEl","$source","slideOriginalIndex","slideExist","amount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","LinearSpline","binarySearch","guess","array","i1","i3","interpolate","removeSpline","controller","control","spline","inverse","by","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","liveRegion","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","updateNavigation","hasPagination","initNavEl","wrapperId","controls","addElControls","$containerEl","repeat","round","random","getRandomNumber","live","addElLive","bulletEl","updatePagination","root","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","includes","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","onHashChange","newHash","setHash","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","slideShadows","shadow","shadowOffset","shadowScale","$cubeShadowEl","wrapperRotate","slideAngle","tz","shadowBefore","shadowAfter","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateY","rotateX","zIndex","coverflowEffect","rotate","stretch","depth","modifier","center","offsetMultiplier","translateZ","slideTransform","$shadowBeforeEl","$shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY"],"mappings":"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","file":"swiper-bundle.min.js","sourcesContent":["/**\n * SSR Window 4.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.1\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n super(...(items || []));\n makeReactive(this);\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import {\n $,\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n} from 'dom7';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n Object.defineProperty($.fn, methodName, { value: Methods[methodName], writable: true });\n});\n\nexport default $;\n","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform\n .split(', ')\n .map((a) => a.replace(',', '.'))\n .join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix =\n curStyle.MozTransform ||\n curStyle.OTransform ||\n curStyle.MsTransform ||\n curStyle.msTransform ||\n curStyle.transform ||\n curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return (\n typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n );\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter((key) => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({ swiper, targetPosition, side }) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return (dir === 'next' && current >= target) || (dir === 'prev' && current <= target);\n };\n\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\n\nexport {\n animateCSSModeScroll,\n deleteProps,\n nextTick,\n now,\n getTranslate,\n isObject,\n extend,\n getComputedStyle,\n setCSSProperty,\n};\n","import { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n\n touch: !!(\n 'ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)\n ),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n })(),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n })(),\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nexport { getSupport };\n","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\n\nlet deviceCached;\n\nfunction calcDevice({ userAgent } = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nexport { getDevice };\n","import { getWindow } from 'ssr-window';\n\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nexport { getBrowser };\n","/* eslint-disable no-underscore-dangle */\n\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (\n eventHandler === handler ||\n (eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler)\n ) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n\n eventsArray.forEach((event) => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach((eventHandler) => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n },\n};\n","export default function transitionEmit({ swiper, runCallbacks, direction, step }) {\n const { activeIndex, previousIndex } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n\n const data = swiper.touchEventsData;\n const { params, touches, enabled } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector\n ? params.noSwipingSelector\n : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (\n params.noSwiping &&\n (isTargetShadow\n ? closestElement(noSwipingSelector, e.target)\n : $targetEl.closest(noSwipingSelector)[0])\n ) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection &&\n (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)\n ) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n if (\n document.activeElement &&\n $(document.activeElement).is(data.focusableElements) &&\n document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault =\n preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (\n (params.touchStartForcePreventDefault || shouldPreventDefault) &&\n !$targetEl[0].isContentEditable\n ) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch =\n e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) ||\n (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) ||\n (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold)\n return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (\n (swiper.isHorizontal() && touches.currentY === touches.startY) ||\n (swiper.isVertical() && touches.currentX === touches.startX)\n ) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal()\n ? touchAngle > params.touchAngle\n : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.minTranslate() -\n 1 +\n (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.maxTranslate() +\n 1 -\n (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n swiper.swipeDirection === 'next' &&\n data.currentTranslate < data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (\n !swiper.allowSlidePrev &&\n swiper.swipeDirection === 'prev' &&\n data.currentTranslate > data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal()\n ? touches.currentX - touches.startX\n : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (\n (params.freeMode && params.freeMode.enabled && swiper.freeMode) ||\n params.watchSlidesProgress\n ) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import { now, nextTick } from '../../shared/utils.js';\n\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const { params, touches, rtlTranslate: rtl, slidesGrid, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (\n params.grabCursor &&\n data.isMoved &&\n data.isTouched &&\n (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)\n ) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (\n !data.isTouched ||\n !data.isMoved ||\n !swiper.swipeDirection ||\n touches.diff === 0 ||\n data.currentTranslate === data.startTranslate\n ) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({ currentPos });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (\n let i = 0;\n i < slidesGrid.length;\n i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup\n ) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget =\n swiper.navigation &&\n (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n","export default function onResize() {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if (\n (params.slidesPerView === 'auto' || params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.isBeginning &&\n !swiper.params.centeredSlides\n ) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","export default function onScroll() {\n const swiper = this;\n const { wrapperEl, rtlTranslate, enabled } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { getDocument } from 'ssr-window';\n\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const { params, touchEvents, el, wrapperEl, device, support } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener =\n touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](\n touchEvents.move,\n swiper.onTouchMove,\n support.passiveListener ? { passive: false, capture } : capture,\n );\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](\n device.ios || device.android\n ? 'resize orientationchange observerUpdate'\n : 'resize observerUpdate',\n onResize,\n true,\n );\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const { params, support } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const { activeIndex, initialized, loopedSlides = 0, params, $el } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(\n `${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`,\n );\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n if (\n (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column') ||\n (!breakpointParams.grid.fill && params.grid.fill === 'column')\n ) {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n const directionChanged =\n breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop =\n params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n\n const isEnabled = swiper.params.enabled;\n\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}\n","function checkOverflow() {\n const swiper = this;\n const { isLocked: wasLocked, params } = swiper;\n const { slidesOffsetBefore } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge =\n swiper.slidesGrid[lastSlideIndex] +\n swiper.slidesSizesGrid[lastSlideIndex] +\n slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n\n // Overrides\n width: null,\n height: null,\n\n //\n preventInteractionOnTransition: false,\n\n // ssr\n userAgent: null,\n url: null,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n\n // Internals\n _emitClasses: false,\n};\n","import { extend } from '../shared/utils.js';\n\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (\n ['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 &&\n params[moduleParamName] === true\n ) {\n params[moduleParamName] = { auto: true };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n extend(allModulesParams, obj);\n };\n}\n","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\n\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\n\nimport eventsEmitter from './events-emitter.js';\n\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\n\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\n\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n if (\n args.length === 1 &&\n args[0].constructor &&\n Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object'\n ) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each((containerEl) => {\n const newParams = extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({ userAgent: params.userAgent });\n swiper.browser = getBrowser();\n\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n\n swiper.modules.forEach((mod) => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper),\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach((eventName) => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Save Dom lib\n swiper.$ = $;\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return swiper.support.touch || !swiper.params.simulateTouch\n ? swiper.touchEventsTouch\n : swiper.touchEventsDesktop;\n })(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n });\n\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter((className) => {\n return (\n className.indexOf('swiper') === 0 ||\n className.indexOf(swiper.params.containerModifierClass) === 0\n );\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n\n return slideEl.className\n .split(' ')\n .filter((className) => {\n return (\n className.indexOf('swiper-slide') === 0 ||\n className.indexOf(swiper.params.slideClass) === 0\n );\n })\n .join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each((slideEl) => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({ slideEl, classNames });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const { params, slides, slidesGrid, slidesSizesGrid, size: swiperSize, activeIndex } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact\n ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize\n : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(\n Math.max(translateValue, swiper.maxTranslate()),\n swiper.minTranslate(),\n );\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if (\n (swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.params.centeredSlides\n ) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (\n newDirection === currentDirection ||\n (newDirection !== 'horizontal' && newDirection !== 'vertical')\n ) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector()));\n // Children needs to return slot items\n res.children = (options) => $el.children(options);\n return res;\n }\n return $el.children(getWrapperSelector());\n };\n // Find Wrapper\n let $wrapperEl = getWrapper();\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each((slideEl) => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate:\n swiper.params.direction === 'horizontal' &&\n (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n });\n\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(\n swiper.params.initialSlide + swiper.loopedSlides,\n 0,\n swiper.params.runCallbacksOnInit,\n false,\n true,\n );\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const { params, $el, $wrapperEl, slides } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass(\n [\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '),\n )\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach((m) => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\n\nObject.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\n\nSwiper.use([Resize, Observer]);\n\nexport default Swiper;\n","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width =\n width -\n parseInt($el.css('padding-left') || 0, 10) -\n parseInt($el.css('padding-right') || 0, 10);\n height =\n height -\n parseInt($el.css('padding-top') || 0, 10) -\n parseInt($el.css('padding-bottom') || 0, 10);\n\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { setCSSProperty } from '../../shared/utils.js';\n\nexport default function updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom',\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n\n const { $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginBottom: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '', marginTop: '' });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n\n const shouldResetSlideSize =\n params.slidesPerView === 'auto' &&\n params.breakpoints &&\n Object.keys(params.breakpoints).filter((key) => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const { clientWidth, offsetWidth } = slide[0];\n slideSize =\n width +\n paddingLeft +\n paddingRight +\n marginLeft +\n marginRight +\n (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0)\n slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (\n (index - Math.min(swiper.params.slidesPerGroupSkip, index)) %\n swiper.params.slidesPerGroup ===\n 0\n )\n snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`,\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n\n if (\n Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) >\n 1\n ) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides\n .filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n })\n .css({ [key]: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(\n swiper.wrapperEl,\n '--swiper-centered-offset-after',\n `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`,\n );\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map((v) => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map((v) => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n}\n","export default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = (index) => {\n if (isVirtual) {\n return swiper.slides.filter(\n (el) => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index,\n )[0];\n }\n return swiper.slides.eq(index)[0];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal()\n ? slides[i].offsetLeft\n : slides[i].offsetTop;\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateSlidesProgress(translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl, snapGrid } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress =\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress =\n (offsetCenter -\n snapGrid[0] +\n (params.centeredSlides ? swiper.minTranslate() : 0) -\n slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible =\n (slideBefore >= 0 && slideBefore < swiper.size - 1) ||\n (slideAfter > 1 && slideAfter <= swiper.size) ||\n (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","export default function updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && swiper.translate * multiplier) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || (params.centeredSlides && params.autoHeight))\n swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function updateSlidesClasses() {\n const swiper = this;\n\n const { slides, params, $wrapperEl, activeIndex, realIndex } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(\n `${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`,\n );\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\n `.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`,\n );\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide\n .nextAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide\n .prevAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n translate >= slidesGrid[i] &&\n translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2\n ) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(\n swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex,\n 10,\n );\n\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (\n params.slideToClickedSlide &&\n swiper.clickedIndex !== undefined &&\n swiper.clickedIndex !== swiper.activeIndex\n ) {\n swiper.slideToClickedSlide();\n }\n}\n","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","import { getTranslate } from '../../shared/utils.js';\n\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const { params, rtlTranslate: rtl, translate, $wrapperEl } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function setTranslate(translate, byController) {\n const swiper = this;\n const { rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function minTranslate() {\n return -this.snapGrid[0];\n}\n","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function translateTo(\n translate = 0,\n speed = this.params.speed,\n runCallbacks = true,\n translateBounds = true,\n internal,\n) {\n const swiper = this;\n\n const { params, wrapperEl } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: -newTranslate, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'Start' });\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'End' });\n}\n","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function slideTo(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n initial,\n) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(\n `The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`,\n );\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\n `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`,\n );\n }\n\n // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled,\n } = swiper;\n\n if (\n (swiper.animating && params.preventInteractionOnTransition) ||\n (!enabled && !internal && !initial)\n ) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2\n ) {\n slideIndex = i;\n } else if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext\n ) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (\n !swiper.allowSlideNext &&\n translate < swiper.translate &&\n translate < swiper.minTranslate()\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n translate > swiper.translate &&\n translate > swiper.maxTranslate()\n ) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: t, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","export default function slideToLoop(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { animating, enabled, params } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating, snapGrid, slidesGrid, rtlTranslate, enabled } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (\n params.slidesPerView === 'auto' &&\n params.slidesPerGroup === 1 &&\n params.slidesPerGroupAuto\n ) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n threshold = 0.5,\n) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function slideToClickedSlide() {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView =\n params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n slideToIndex < swiper.loopedSlides - slidesPerView / 2 ||\n slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n const $selector = $($wrapperEl.children()[0].parentNode);\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(\n `${params.slideClass} ${params.slideBlankClass}`,\n );\n $selector.append(blankNode);\n }\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function loopFix() {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function loopDestroy() {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`,\n )\n .remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","export default function setGrabCursor(moving) {\n const swiper = this;\n if (\n swiper.support.touch ||\n !swiper.params.simulateTouch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n )\n return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","export default function unsetGrabCursor() {\n const swiper = this;\n if (\n swiper.support.touch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n ) {\n return;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}\n","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\n\nexport default { setBreakpoint, getBreakpoint };\n","import { getWindow } from 'ssr-window';\n\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || (base === 'container' && !containerEl)) return undefined;\n let breakpoint = false;\n\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\n\nexport default { addClasses, removeClasses };\n","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach((item) => {\n if (typeof item === 'object') {\n Object.keys(item).forEach((classNames) => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const { classNames, params, rtl, $el, device, support } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses([\n 'initialized',\n params.direction,\n { 'pointer-events': !support.touch },\n { 'free-mode': swiper.params.freeMode && params.freeMode.enabled },\n { 'autoheight': params.autoHeight },\n { 'rtl': rtl },\n { 'grid': params.grid && params.grid.rows > 1 },\n { 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' },\n { 'android': device.android },\n { 'ios': device.ios },\n { 'css-mode': params.cssMode },\n { 'centered': params.cssMode && params.centeredSlides },\n ], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}\n","export default function removeClasses() {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}\n","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n function onReady() {\n if (callback) callback();\n }\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady,\n );\n }\n}\n","import { getDocument } from 'ssr-window';\n\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach((key) => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n","export default function classesToSelector(classes = '') {\n return `.${classes\n .trim()\n .replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n","export default function appendSlide(slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n}\n","export default function prependSlide(slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","export default function addSlide(index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex =\n activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeAllSlides() {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","export default function effectInit(params) {\n const { effect, swiper, on, setTranslate, setTransition, overwriteParams, perspective } = params;\n\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n}\n","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden',\n });\n }\n return $slideEl;\n}\n","export default function effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides }) {\n const { slides, activeIndex, $wrapperEl } = swiper;\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl\n ? slides.eq(activeIndex).find(transformEl)\n : slides.eq(activeIndex);\n }\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}\n","import $ from './dom.js';\n\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`
`);\n $shadowContainer.append($shadowEl);\n }\n return $shadowEl;\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function Resize({ swiper, on, emit }) {\n const window = getWindow();\n let observer = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver((entries) => {\n const { width, height } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({ contentBoxSize, contentRect, target }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect\n ? contentRect.width\n : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect\n ? contentRect.height\n : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function Observer({ swiper, extendParams, on, emit }) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren,\n });\n\n // Observe wrapper\n attach(swiper.$wrapperEl[0], { attributes: false });\n };\n const destroy = () => {\n observers.forEach((observer) => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n });\n on('init', init);\n on('destroy', destroy);\n}\n","// Swiper Class\nimport Swiper from './core/core.js';\n\n//IMPORT_MODULES\n\nconst modules = [\n //INSTALL_MODULES\n];\n\nSwiper.use(modules);\n\n//EXPORT\n","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\n\nexport default function Virtual({ swiper, extendParams, on }) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n });\n\n let cssModeTimeout;\n\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: [],\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(\n `
${slide}
`,\n );\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset,\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n })(),\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl\n .find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`)\n .remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes\n .sort((a, b) => b - a)\n .forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr(\n 'data-swiper-slide-index',\n parseInt(cachedElIndex, 10) + numberOfNewSlides,\n );\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Keyboard({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false,\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true,\n },\n });\n\n function handle(event) {\n if (!swiper.enabled) return;\n\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n ((swiper.isHorizontal() && isArrowRight) ||\n (swiper.isVertical() && isArrowDown) ||\n isPageDown)\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n ((swiper.isHorizontal() && isArrowLeft) || (swiper.isVertical() && isArrowUp) || isPageUp)\n ) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (\n document.activeElement &&\n document.activeElement.nodeName &&\n (document.activeElement.nodeName.toLowerCase() === 'input' ||\n document.activeElement.nodeName.toLowerCase() === 'textarea')\n ) {\n return undefined;\n }\n if (\n swiper.params.keyboard.onlyInViewport &&\n (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)\n ) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (\n swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 &&\n swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0\n ) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiperWidth, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiperHeight],\n [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl))\n swiper.slideNext();\n if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl))\n swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n\n Object.assign(swiper.keyboard, {\n enable,\n disable,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\n\nexport default function Mousewheel({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n },\n });\n\n swiper.mousewheel = {\n enabled: false,\n };\n\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (\n swiper.params.mousewheel.thresholdDelta &&\n newEvent.delta < swiper.params.mousewheel.thresholdDelta\n ) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (\n swiper.params.mousewheel.thresholdTime &&\n now() - lastScrollTime < swiper.params.mousewheel.thresholdTime\n ) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges)\n return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n else return true;\n } else {\n delta =\n Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop\n ? true\n : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (\n newEvent.direction !== prevEvent.direction ||\n newEvent.delta > prevEvent.delta ||\n newEvent.time > prevEvent.time + 150\n ) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n };\n const ignoreWheelEvents =\n lastEventBeforeSnap &&\n newEvent.time < lastEventBeforeSnap.time + 500 &&\n newEvent.delta <= lastEventBeforeSnap.delta &&\n newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (\n prevEvent &&\n (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)\n ) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (\n recentWheelEvents.length >= 15 &&\n newEvent.time - firstEvent.time < 500 &&\n firstEvent.delta - newEvent.delta >= 1 &&\n newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction)\n swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n\n Object.assign(swiper.mousewheel, {\n enable,\n disable,\n });\n}\n","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Navigation({ swiper, extendParams, on, emit }) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n });\n\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null,\n };\n\n function getEl(el) {\n let $el;\n if (el) {\n $el = $(el);\n if (\n swiper.params.uniqueNavElements &&\n typeof el === 'string' &&\n $el.length > 1 &&\n swiper.$el.find(el).length === 1\n ) {\n $el = swiper.$el.find(el);\n }\n }\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n toggleEl($prevEl, swiper.isBeginning);\n toggleEl($nextEl, swiper.isEnd);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n }\n function init() {\n const params = swiper.params.navigation;\n\n swiper.params.navigation = createElementIfNotDefined(\n swiper,\n swiper.originalParams.navigation,\n swiper.params.navigation,\n {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev',\n },\n );\n if (!(params.nextEl || params.prevEl)) return;\n\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n function destroy() {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n init();\n update();\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const { $nextEl, $prevEl } = swiper.navigation;\n const targetEl = e.target;\n if (\n swiper.params.navigation.hideOnClick &&\n !$(targetEl).is($prevEl) &&\n !$(targetEl).is($nextEl)\n ) {\n if (\n swiper.pagination &&\n swiper.params.pagination &&\n swiper.params.pagination.clickable &&\n (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))\n )\n return;\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n Object.assign(swiper.navigation, {\n update,\n init,\n destroy,\n });\n}\n","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Pagination({ swiper, extendParams, on, emit }) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n },\n });\n\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: [],\n };\n\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return (\n !swiper.params.pagination.el ||\n !swiper.pagination.el ||\n !swiper.pagination.$el ||\n swiper.pagination.$el.length === 0\n );\n }\n\n function setSideBullets($bulletEl, position) {\n const { bulletActiveClass } = swiper.params.pagination;\n $bulletEl[position]()\n .addClass(`${bulletActiveClass}-${position}`)\n [position]()\n .addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil(\n (swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup,\n );\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (\n params.type === 'bullets' &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length > 0\n ) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(\n swiper.isHorizontal() ? 'width' : 'height',\n `${bulletSize * (params.dynamicMainBullets + 4)}px`,\n );\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - swiper.previousIndex;\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(\n ['', '-next', '-next-next', '-prev', '-prev-prev', '-main']\n .map((suffix) => `${params.bulletActiveClass}${suffix}`)\n .join(' '),\n );\n if ($el.length > 1) {\n bullets.each((bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets\n .eq(bullets.length - params.dynamicMainBullets - 1)\n .addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset =\n (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el\n .find(classesToSelector(params.currentClass))\n .text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el\n .find(classesToSelector(params.progressbarFillClass))\n .transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`)\n .transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.loop &&\n numberOfBullets > slidesLength\n ) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML =\n `` +\n ' / ' +\n ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(\n swiper,\n swiper.originalParams.pagination,\n swiper.params.pagination,\n { el: 'swiper-pagination' },\n );\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el);\n // check if it belongs to another nested Swiper\n if ($el.length > 1) {\n $el = $el.filter((el) => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(params.modifierClass + swiper.params.direction);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0],\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(params.modifierClass + swiper.params.direction);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass)\n swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n init();\n render();\n update();\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $el } = swiper.pagination;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const { $el } = swiper.pagination;\n if (\n swiper.params.pagination.el &&\n swiper.params.pagination.hideOnClick &&\n $el.length > 0 &&\n !$(targetEl).hasClass(swiper.params.pagination.bulletClass)\n ) {\n if (\n swiper.navigation &&\n ((swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) ||\n (swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl))\n )\n return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n Object.assign(swiper.pagination, {\n render,\n update,\n init,\n destroy,\n });\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Scrollbar({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n });\n\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null,\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const { $dragEl, $el } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n divider =\n swiper.size /\n (swiper.virtualSize +\n swiper.params.slidesOffsetBefore -\n (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](\n swiper.params.scrollbar.lockClass,\n );\n }\n }\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientX\n : e.clientX;\n }\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientY\n : e.clientY;\n }\n function setDragPosition(e) {\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const { $el } = scrollbar;\n\n let positionRatio;\n positionRatio =\n (getPointerPosition(e) -\n $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] -\n (dragStartPos !== null ? dragStartPos : dragSize / 2)) /\n (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position =\n swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n isTouched = true;\n dragStartPos =\n e.target === $dragEl[0] || e.target === $dragEl\n ? getPointerPosition(e) -\n e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top']\n : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n\n clearTimeout(dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const { scrollbar, touchEventsTouch, touchEventsDesktop, params, support } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener =\n support.passiveListener && params.passiveListeners\n ? { passive: false, capture: false }\n : false;\n const passiveListener =\n support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('off');\n }\n function init() {\n const { scrollbar, $el: $swiperEl } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(\n swiper,\n swiper.originalParams.scrollbar,\n swiper.params.scrollbar,\n { el: 'swiper-scrollbar' },\n );\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n\n let $el = $(params.el);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.el === 'string' &&\n $el.length > 1 &&\n $swiperEl.find(params.el).length === 1\n ) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n function destroy() {\n disableDraggable();\n }\n\n on('init', () => {\n init();\n updateSize();\n setTranslate();\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const { $el } = swiper.scrollbar;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n Object.assign(swiper.scrollbar, {\n updateSize,\n setTranslate,\n init,\n destroy,\n });\n}\n","import $ from '../../shared/dom.js';\n\nexport default function Parallax({ swiper, extendParams, on }) {\n extendParams({\n parallax: {\n enabled: false,\n },\n });\n\n const setTransform = (el, progress) => {\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n };\n\n const setTranslate = () => {\n const { $el, slides, progress, snapGrid } = swiper;\n $el\n .children(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl)\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = (duration = swiper.params.speed) => {\n const { $el } = swiper;\n $el\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration =\n parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n };\n\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\n\nexport default function Zoom({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n });\n\n swiper.zoom = {\n enabled: false,\n };\n\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n };\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n\n // Events\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n if (\n e.type !== 'touchend' ||\n (e.type === 'touchend' && e.changedTouches.length < 2 && !device.android)\n ) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl\n .transition(swiper.params.speed)\n .transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (\n swiper.isHorizontal() &&\n ((Math.floor(image.minX) === Math.floor(image.startX) &&\n image.touchesCurrent.x < image.touchesStart.x) ||\n (Math.floor(image.maxX) === Math.floor(image.startX) &&\n image.touchesCurrent.x > image.touchesStart.x))\n ) {\n image.isTouched = false;\n return;\n }\n if (\n !swiper.isHorizontal() &&\n ((Math.floor(image.minY) === Math.floor(image.startY) &&\n image.touchesCurrent.y < image.touchesStart.y) ||\n (Math.floor(image.maxY) === Math.floor(image.startY) &&\n image.touchesCurrent.y > image.touchesStart.y))\n ) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x =\n (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y =\n (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0)\n momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0)\n momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl\n .transition(momentumDuration)\n .transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl\n .transition(300)\n .transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n const activeListenerWithCapture = support.passiveListener\n ? { passive: false, capture: true }\n : true;\n return { passiveListener, activeListenerWithCapture };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const { passiveListener } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (\n !swiper.animating &&\n swiper.params.zoom.enabled &&\n swiper.zoom.enabled &&\n swiper.params.zoom.toggle\n ) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle,\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Lazy({ swiper, extendParams, on, emit }) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n });\n\n swiper.lazy = {};\n\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(\n `.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`,\n )\n : swiper.slides.eq(index);\n\n const $images = $slideEl.find(\n `.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`,\n );\n if (\n $slideEl.hasClass(params.elementClass) &&\n !$slideEl.hasClass(params.loadedClass) &&\n !$slideEl.hasClass(params.loadingClass)\n ) {\n $images.push($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (\n typeof swiper === 'undefined' ||\n swiper === null ||\n !swiper ||\n (swiper && !swiper.params) ||\n swiper.destroyed\n )\n return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if ($pictureEl.length) {\n $pictureEl.children('source').each((sourceEl) => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(\n `[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`,\n );\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(\n `.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`,\n );\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const { $wrapperEl, params: swiperParams, slides, activeIndex } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if (\n $wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n .length\n ) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement\n ? $(swiper.params.lazy.scrollingElement)\n : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const { rtlTranslate: rtl } = swiper;\n\n let inView = false;\n\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 &&\n point[0] <= scrollElementWidth &&\n point[1] >= 0 &&\n point[1] <= scrollElementHeight\n ) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n swiper.support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.freeMode.sticky\n ) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (\n swiper.params.lazy.loadOnTransitionStart ||\n (!swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded)\n ) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const { lazy, cssMode, watchSlidesProgress, touchReleaseOnEdges, resistanceRatio } =\n swiper.params;\n if (\n lazy.enabled &&\n (cssMode || (watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0)))\n ) {\n load();\n }\n });\n\n Object.assign(swiper.lazy, {\n load,\n loadInSlide,\n });\n}\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Controller({ swiper, extendParams, on }) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n });\n\n swiper.controller = {\n control: undefined,\n };\n\n function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = (maxIndex + minIndex) >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n })();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (\n ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]\n );\n };\n return this;\n }\n // xxx: for now i will just save one spline function to to\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier =\n (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition,\n });\n}\n","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\n\nexport default function A11y({ swiper, extendParams, on }) {\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n },\n });\n\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n function addElId($el, id) {\n $el.attr('id', id);\n }\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (\n swiper.pagination &&\n $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))\n ) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return (\n swiper.pagination &&\n swiper.params.pagination.clickable &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length\n );\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (hasPagination()) {\n swiper.pagination.bullets.each((bulletEl) => {\n const $bulletEl = $(bulletEl);\n makeElFocusable($bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel(\n $bulletEl,\n params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1),\n );\n }\n });\n }\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n function init() {\n const params = swiper.params.a11y;\n\n swiper.$el.append(liveRegion);\n\n // Container\n const $containerEl = swiper.$el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n }\n\n // Wrapper\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live);\n\n // Slide\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n addElRole($(swiper.slides), params.slideRole);\n\n const slidesLength = swiper.params.loop\n ? swiper.slides.filter((el) => !el.classList.contains(swiper.params.slideDuplicateClass))\n .length\n : swiper.slides.length;\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop\n ? parseInt($slideEl.attr('data-swiper-slide-index'), 10)\n : index;\n const ariaLabelMessage = params.slideLabelMessage\n .replace(/\\{\\{index\\}\\}/, slideIndex + 1)\n .replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n });\n\n // Navigation\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n }\n\n // Pagination\n if (hasPagination()) {\n swiper.pagination.$el.on(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n }\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n }\n\n // Pagination\n if (hasPagination()) {\n swiper.pagination.$el.off(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n }\n\n on('beforeInit', () => {\n liveRegion = $(\n ``,\n );\n });\n\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n updateNavigation();\n });\n on('toEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('fromEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function History({ swiper, extendParams, on }) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n },\n });\n\n let initialized = false;\n let paths = {};\n\n const slugify = (text) => {\n return text\n .toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n };\n\n const getPathValues = (urlOverride) => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname\n .slice(1)\n .split('/')\n .filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, swiper.paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function HashNavigation({ swiper, extendParams, emit, on }) {\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl\n .children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`)\n .index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n if (\n swiper.params.hashNavigation.replaceState &&\n window.history &&\n window.history.replaceState\n ) {\n window.history.replaceState(\n null,\n null,\n `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '',\n );\n emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (\n !swiper.params.hashNavigation.enabled ||\n (swiper.params.history && swiper.params.history.enabled)\n )\n return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n","/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Autoplay({ swiper, extendParams, on, emit }) {\n let timeout;\n\n swiper.autoplay = {\n running: false,\n paused: false,\n };\n\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false,\n },\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(\n swiper.slides.length - 1,\n swiper.params.speed,\n true,\n true,\n );\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) run();\n else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n function onVisibilityChange() {\n const document = getDocument();\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n swiper.autoplay.paused = false;\n run();\n }\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (\n swiper.params.cssMode &&\n swiper.autoplay.paused &&\n !swiper.params.autoplay.disableOnInteraction\n ) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop,\n });\n}\n","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Thumb({ swiper, extendParams, on }) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs',\n },\n });\n\n let initialized = false;\n let swiperCreated = false;\n\n swiper.thumbs = {\n swiper: null,\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass))\n return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides\n .eq(currentIndex)\n .prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n const nextIndex = swiper.slides\n .eq(currentIndex)\n .nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const { thumbs: thumbsParams } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView =\n thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (\n thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .hasClass(thumbsSwiper.params.slideDuplicateClass)\n ) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex =\n thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (\n thumbsSwiper.visibleSlidesIndexes &&\n thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0\n ) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (\n newThumbsIndex > currentThumbsIndex &&\n thumbsSwiper.params.slidesPerGroup === 1\n ) {\n // newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (\n thumbsSwiper.params.loop ||\n (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)\n ) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl\n .children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`)\n .addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n }\n\n on('beforeInit', () => {\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n if (!swiper.thumbs.swiper) return;\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n });\n\n Object.assign(swiper.thumbs, {\n init,\n update,\n });\n}\n","import { now } from '../../shared/utils.js';\n\nexport default function freeMode({ swiper, extendParams, emit, once }) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02,\n },\n });\n\n function onTouchMove() {\n const { touchEventsData: data, touches } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now(),\n });\n }\n\n function onTouchEnd({ currentPos }) {\n const { params, $wrapperEl, rtlTranslate: rtl, snapGrid, touchEventsData: data } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (\n Math.abs(snapGrid[nextSlide] - newPosition) <\n Math.abs(snapGrid[nextSlide - 1] - newPosition) ||\n swiper.swipeDirection === 'next'\n ) {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchMove,\n onTouchEnd,\n },\n });\n}\n","export default function Grid({ swiper, extendParams }) {\n extendParams({\n grid: {\n rows: 1,\n fill: 'column',\n },\n });\n\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n\n const initSlides = (slidesLength) => {\n const { slidesPerView } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const { slidesPerGroup, spaceBetween } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup =\n groupIndex === 0\n ? slidesPerGroup\n : Math.min(\n Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows),\n slidesPerGroup,\n );\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n\n newSlideOrderIndex = column + (row * slidesNumberEvenToRows) / rows;\n slide.css({\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || (column === numFullColumns && row === rows - 1)) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.css(\n getDirectionLabel('margin-top'),\n row !== 0 ? spaceBetween && `${spaceBetween}px` : '',\n );\n };\n\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const { spaceBetween, centeredSlides, roundLengths } = swiper.params;\n const { rows } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.$wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`,\n });\n if (centeredSlides) {\n snapGrid.splice(0, snapGrid.length);\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.push(...newSlidesGrid);\n }\n };\n\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize,\n };\n}\n","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\n\nexport default function Manipulation({ swiper }) {\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper),\n });\n}\n","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFade({ swiper, extendParams, on }) {\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\n\nexport default function EffectCube({ swiper, extendParams, on }) {\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n });\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${\n isHorizontal ? slideAngle : 0\n }deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(\n `
`,\n );\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(\n `
`,\n );\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(\n `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${\n -swiperWidth / 2\n }px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`,\n );\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier =\n 1.5 -\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2 +\n Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(\n `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${\n -swiperHeight / 2 / scale2\n }px) rotateX(-90deg)`,\n );\n }\n }\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(\n `translate3d(0px,0,${zFactor}px) rotateX(${\n swiper.isHorizontal() ? 0 : wrapperRotate\n }deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`,\n );\n };\n const setTransition = (duration) => {\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFlip({ swiper, extendParams, on }) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides, rtlTranslate: rtl } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\n\nexport default function EffectCoverflow({ swiper, extendParams, on }) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { width: swiperWidth, height: swiperHeight, slides, slidesSizesGrid } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier =\n ((center - slideOffset - slideSize / 2) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = (parseFloat(params.stretch) / 100) * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if ($shadowBeforeEl.length)\n $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length)\n $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCreative({ swiper, extendParams, on }) {\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n },\n });\n\n const getTranslateValue = (value) => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const { slides, $wrapperEl, slidesSizesGrid } = swiper;\n const params = swiper.params.creativeEffect;\n const { progressMultiplier: multiplier } = params;\n\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(\n Math.max($slideEl[0].progress, -params.limitProgress),\n params.limitProgress,\n );\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(\n Math.max($slideEl[0].originalProgress, -params.limitProgress),\n params.limitProgress,\n );\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1,\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(\n progress * multiplier,\n )}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString =\n originalProgress < 0\n ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})`\n : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString =\n originalProgress < 0\n ? 1 + (1 - data.opacity) * originalProgress * multiplier\n : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if ((custom && data.shadow) || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress\n ? progress * (1 / params.limitProgress)\n : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({ opacity: opacityString });\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCards({ swiper, extendParams, on }) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides, activeIndex } = swiper;\n const params = swiper.params.cardsEffect;\n const { startTranslate, isTouched } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -2 * progress;\n\n let tXAdd = 8 - Math.abs(progress) * 0.75;\n\n const isSwipeToNext =\n (i === activeIndex || i === activeIndex - 1) &&\n progress > 0 &&\n progress < 1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate < startTranslate;\n const isSwipeToPrev =\n (i === activeIndex || i === activeIndex + 1) &&\n progress < 0 &&\n progress > -1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString =\n progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${rotate}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length)\n $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n"]} \ No newline at end of file diff --git a/resources/web/guide/swiper/swiper-vars.less b/resources/web/guide/swiper/swiper-vars.less deleted file mode 100644 index a068f6d42e..0000000000 --- a/resources/web/guide/swiper/swiper-vars.less +++ /dev/null @@ -1 +0,0 @@ -@themeColor: #007aff; diff --git a/resources/web/guide/swiper/swiper-vars.scss b/resources/web/guide/swiper/swiper-vars.scss deleted file mode 100644 index 819dec449a..0000000000 --- a/resources/web/guide/swiper/swiper-vars.scss +++ /dev/null @@ -1 +0,0 @@ -$themeColor: #007aff !default; diff --git a/resources/web/guide/swiper/swiper.d.ts b/resources/web/guide/swiper/swiper.d.ts deleted file mode 100644 index 1dd69a54ad..0000000000 --- a/resources/web/guide/swiper/swiper.d.ts +++ /dev/null @@ -1,58 +0,0 @@ -import Swiper from './types/swiper-class'; -import { SwiperOptions } from './types/swiper-options'; -import { SwiperModule } from './types/shared'; - -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 Lazy: 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 default Swiper; -export { - Swiper, - SwiperOptions, - A11y, - Autoplay, - Controller, - EffectCoverflow, - EffectCube, - EffectFade, - EffectFlip, - EffectCreative, - EffectCards, - HashNavigation, - History, - Keyboard, - Lazy, - Mousewheel, - Navigation, - Pagination, - Parallax, - Scrollbar, - Thumbs, - Virtual, - Zoom, - FreeMode, - Grid, - Manipulation, -}; diff --git a/resources/web/guide/swiper/swiper.esm.js b/resources/web/guide/swiper/swiper.esm.js deleted file mode 100644 index 6386d6658b..0000000000 --- a/resources/web/guide/swiper/swiper.esm.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Swiper 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -export { default as Swiper, default } from './core/core.js'; -export { default as Virtual } from './modules/virtual/virtual.js'; -export { default as Keyboard } from './modules/keyboard/keyboard.js'; -export { default as Mousewheel } from './modules/mousewheel/mousewheel.js'; -export { default as Navigation } from './modules/navigation/navigation.js'; -export { default as Pagination } from './modules/pagination/pagination.js'; -export { default as Scrollbar } from './modules/scrollbar/scrollbar.js'; -export { default as Parallax } from './modules/parallax/parallax.js'; -export { default as Zoom } from './modules/zoom/zoom.js'; -export { default as Lazy } from './modules/lazy/lazy.js'; -export { default as Controller } from './modules/controller/controller.js'; -export { default as A11y } from './modules/a11y/a11y.js'; -export { default as History } from './modules/history/history.js'; -export { default as HashNavigation } from './modules/hash-navigation/hash-navigation.js'; -export { default as Autoplay } from './modules/autoplay/autoplay.js'; -export { default as Thumbs } from './modules/thumbs/thumbs.js'; -export { default as FreeMode } from './modules/free-mode/free-mode.js'; -export { default as Grid } from './modules/grid/grid.js'; -export { default as Manipulation } from './modules/manipulation/manipulation.js'; -export { default as EffectFade } from './modules/effect-fade/effect-fade.js'; -export { default as EffectCube } from './modules/effect-cube/effect-cube.js'; -export { default as EffectFlip } from './modules/effect-flip/effect-flip.js'; -export { default as EffectCoverflow } from './modules/effect-coverflow/effect-coverflow.js'; -export { default as EffectCreative } from './modules/effect-creative/effect-creative.js'; -export { default as EffectCards } from './modules/effect-cards/effect-cards.js'; \ No newline at end of file diff --git a/resources/web/guide/swiper/swiper.less b/resources/web/guide/swiper/swiper.less deleted file mode 100644 index 356f93c5f0..0000000000 --- a/resources/web/guide/swiper/swiper.less +++ /dev/null @@ -1,169 +0,0 @@ -@themeColor: #007aff; - -@font-face { - font-family: 'swiper-icons'; - src: url('data:application/font-woff;charset=utf-8;base64, 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'); - font-weight: 400; - font-style: normal; -} - -:root { - --swiper-theme-color: @themeColor; -} -.swiper { - margin-left: auto; - margin-right: auto; - position: relative; - overflow: hidden; - list-style: none; - padding: 0; - /* Fix of Webkit flickering */ - z-index: 1; -} -.swiper-vertical > .swiper-wrapper { - flex-direction: column; -} -.swiper-wrapper { - position: relative; - width: 100%; - height: 100%; - z-index: 1; - display: flex; - transition-property: transform; - box-sizing: content-box; -} -.swiper-android .swiper-slide, -.swiper-wrapper { - transform: translate3d(0px, 0, 0); -} - -.swiper-pointer-events { - touch-action: pan-y; - &.swiper-vertical { - touch-action: pan-x; - } -} -.swiper-slide { - flex-shrink: 0; - width: 100%; - height: 100%; - position: relative; - transition-property: transform; -} -.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; -} - -/* 3D Effects */ -.swiper-3d { - &, - &.swiper-css-mode .swiper-wrapper { - perspective: 1200px; - } - .swiper-wrapper, - .swiper-slide, - .swiper-slide-shadow, - .swiper-slide-shadow-left, - .swiper-slide-shadow-right, - .swiper-slide-shadow-top, - .swiper-slide-shadow-bottom, - .swiper-cube-shadow { - transform-style: preserve-3d; - } - .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)); - } -} - -/* 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-css-mode { - > .swiper-wrapper { - scroll-snap-type: x mandatory; - } -} -.swiper-vertical.swiper-css-mode { - > .swiper-wrapper { - scroll-snap-type: y mandatory; - } -} -.swiper-centered { - > .swiper-wrapper::before { - content: ''; - flex-shrink: 0; - order: 9999; - } - &.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-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); - } - } - - > .swiper-wrapper > .swiper-slide { - scroll-snap-align: center center; - } -} - - - diff --git a/resources/web/guide/swiper/swiper.min.css b/resources/web/guide/swiper/swiper.min.css deleted file mode 100644 index d9e9e5abc4..0000000000 --- a/resources/web/guide/swiper/swiper.min.css +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Swiper 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, 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');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-android .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-pointer-events{touch-action:pan-y}.swiper-pointer-events.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.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-3d,.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide,.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.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>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-horizontal.swiper-css-mode>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-vertical.swiper-css-mode>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-horizontal>.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-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center} \ No newline at end of file diff --git a/resources/web/guide/swiper/swiper.scss b/resources/web/guide/swiper/swiper.scss deleted file mode 100644 index f3d800a222..0000000000 --- a/resources/web/guide/swiper/swiper.scss +++ /dev/null @@ -1,170 +0,0 @@ -@import 'swiper-vars.scss'; - -@font-face { - font-family: 'swiper-icons'; - src: url('data:application/font-woff;charset=utf-8;base64, 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') - format('woff'); - font-weight: 400; - font-style: normal; -} - -:root { - --swiper-theme-color: #{$themeColor}; -} -.swiper { - margin-left: auto; - margin-right: auto; - position: relative; - overflow: hidden; - list-style: none; - padding: 0; - /* Fix of Webkit flickering */ - z-index: 1; -} -.swiper-vertical > .swiper-wrapper { - flex-direction: column; -} -.swiper-wrapper { - position: relative; - width: 100%; - height: 100%; - z-index: 1; - display: flex; - transition-property: transform; - box-sizing: content-box; -} -.swiper-android .swiper-slide, -.swiper-wrapper { - transform: translate3d(0px, 0, 0); -} -.swiper-pointer-events { - touch-action: pan-y; - &.swiper-vertical { - touch-action: pan-x; - } -} -.swiper-slide { - flex-shrink: 0; - width: 100%; - height: 100%; - position: relative; - transition-property: transform; -} -.swiper-slide-invisible-blank { - visibility: hidden; -} -/* Auto Height */ -.swiper-autoheight { - &, - .swiper-slide { - height: auto; - } - - .swiper-wrapper { - align-items: flex-start; - transition-property: transform, height; - } -} - -/* 3D Effects */ -.swiper-3d { - &, - &.swiper-css-mode .swiper-wrapper { - perspective: 1200px; - } - .swiper-wrapper, - .swiper-slide, - .swiper-slide-shadow, - .swiper-slide-shadow-left, - .swiper-slide-shadow-right, - .swiper-slide-shadow-top, - .swiper-slide-shadow-bottom, - .swiper-cube-shadow { - transform-style: preserve-3d; - } - .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)); - } -} - -/* 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-css-mode { - > .swiper-wrapper { - scroll-snap-type: x mandatory; - } -} -.swiper-vertical.swiper-css-mode { - > .swiper-wrapper { - scroll-snap-type: y mandatory; - } -} -.swiper-centered { - > .swiper-wrapper::before { - content: ''; - flex-shrink: 0; - order: 9999; - } - &.swiper-horizontal { - > .swiper-wrapper > .swiper-slide:first-child { - margin-inline-start: var(--swiper-centered-offset-before); - } - > .swiper-wrapper::before { - height: 100%; - width: var(--swiper-centered-offset-after); - } - } - &.swiper-vertical { - > .swiper-wrapper > .swiper-slide:first-child { - margin-block-start: var(--swiper-centered-offset-before); - } - > .swiper-wrapper::before { - width: 100%; - height: var(--swiper-centered-offset-after); - } - } - - > .swiper-wrapper > .swiper-slide { - scroll-snap-align: center center; - } -} - - - diff --git a/resources/web/guide/swiper/types/index.d.ts b/resources/web/guide/swiper/types/index.d.ts deleted file mode 100644 index ee0ced809b..0000000000 --- a/resources/web/guide/swiper/types/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './shared'; -export { default as Swiper } from './swiper-class'; -export * from './swiper-events'; -export * from './swiper-options'; -export * from './modules/public-api'; diff --git a/resources/web/guide/swiper/types/modules/a11y.d.ts b/resources/web/guide/swiper/types/modules/a11y.d.ts deleted file mode 100644 index ef0cc244c4..0000000000 --- a/resources/web/guide/swiper/types/modules/a11y.d.ts +++ /dev/null @@ -1,89 +0,0 @@ -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; - - /** - * 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; -} diff --git a/resources/web/guide/swiper/types/modules/autoplay.d.ts b/resources/web/guide/swiper/types/modules/autoplay.d.ts deleted file mode 100644 index eba380f1e2..0000000000 --- a/resources/web/guide/swiper/types/modules/autoplay.d.ts +++ /dev/null @@ -1,101 +0,0 @@ -import Swiper from '../swiper-class'; - -export interface AutoplayMethods { - /** - * Whether autoplay enabled and running - */ - running: boolean; - - /** - * 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 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 mouse enter over Swiper container. If `disableOnInteraction` is also enabled, it will stop autoplay instead of pause - * - * @default false - */ - pauseOnMouseEnter?: boolean; -} diff --git a/resources/web/guide/swiper/types/modules/controller.d.ts b/resources/web/guide/swiper/types/modules/controller.d.ts deleted file mode 100644 index 74b99c80b5..0000000000 --- a/resources/web/guide/swiper/types/modules/controller.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import Swiper from '../swiper-class'; - -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 - */ - control?: Swiper | Swiper[]; - - /** - * 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/resources/web/guide/swiper/types/modules/effect-cards.d.ts b/resources/web/guide/swiper/types/modules/effect-cards.d.ts deleted file mode 100644 index 9630ae0169..0000000000 --- a/resources/web/guide/swiper/types/modules/effect-cards.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { CSSSelector } from '../shared'; - -export interface CardsEffectMethods {} - -export interface CardsEffectEvents {} - -export interface CardsEffectOptions { - /** - * Enables slides shadows - * - * @default true - */ - slideShadows?: boolean; - /** - * CSS selector of the element inside of the slide to transform instead of the slide itself. Useful to use with cssMode - * - * @default null - */ - transformEl?: CSSSelector; -} diff --git a/resources/web/guide/swiper/types/modules/effect-coverflow.d.ts b/resources/web/guide/swiper/types/modules/effect-coverflow.d.ts deleted file mode 100644 index e95dde7892..0000000000 --- a/resources/web/guide/swiper/types/modules/effect-coverflow.d.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { CSSSelector } from '../shared'; - -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 (in px) - * - * @default 0 - */ - stretch?: 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; - /** - * CSS selector of the element inside of the slide to transform instead of the slide itself. Useful to use with cssMode - * - * @default null - */ - transformEl?: CSSSelector; -} diff --git a/resources/web/guide/swiper/types/modules/effect-creative.d.ts b/resources/web/guide/swiper/types/modules/effect-creative.d.ts deleted file mode 100644 index ac34c9fed2..0000000000 --- a/resources/web/guide/swiper/types/modules/effect-creative.d.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { CSSSelector } from '../shared'; - -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; - /** - * CSS selector of the element inside of the slide to transform instead of the slide itself. Useful to use with cssMode - * - * @default null - */ - transformEl?: CSSSelector; - /** - * 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 - */ - progressMultipler?: number; - /** - * Enable this parameter if your custom transforms require 3D transformations (`translateZ`, `rotateX`, `rotateY` ) - * - * @default true - */ - perspective?: boolean; -} diff --git a/resources/web/guide/swiper/types/modules/effect-cube.d.ts b/resources/web/guide/swiper/types/modules/effect-cube.d.ts deleted file mode 100644 index c59535c5aa..0000000000 --- a/resources/web/guide/swiper/types/modules/effect-cube.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -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/resources/web/guide/swiper/types/modules/effect-fade.d.ts b/resources/web/guide/swiper/types/modules/effect-fade.d.ts deleted file mode 100644 index 8478d4bea8..0000000000 --- a/resources/web/guide/swiper/types/modules/effect-fade.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { CSSSelector } from '../shared'; - -export interface FadeEffectMethods {} - -export interface FadeEffectEvents {} - -export interface FadeEffectOptions { - /** - * Enables slides cross fade - * - * @default false - */ - crossFade?: boolean; - /** - * CSS selector of the element inside of the slide to transform instead of the slide itself. Useful to use with cssMode - * - * @default null - */ - transformEl?: CSSSelector; -} diff --git a/resources/web/guide/swiper/types/modules/effect-flip.d.ts b/resources/web/guide/swiper/types/modules/effect-flip.d.ts deleted file mode 100644 index f3de1e6b57..0000000000 --- a/resources/web/guide/swiper/types/modules/effect-flip.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { CSSSelector } from '../shared'; - -export interface FlipEffectMethods {} - -export interface FlipEffectEvents {} - -export interface FlipEffectOptions { - /** - * Enables slides shadows - * - * @default true - */ - slideShadows?: boolean; - /** - * Limit edge slides rotation - * - * @default true - */ - limitRotation?: boolean; - /** - * CSS selector of the element inside of the slide to transform instead of the slide itself. Useful to use with cssMode - * - * @default null - */ - transformEl?: CSSSelector; -} diff --git a/resources/web/guide/swiper/types/modules/free-mode.d.ts b/resources/web/guide/swiper/types/modules/free-mode.d.ts deleted file mode 100644 index e82a57c700..0000000000 --- a/resources/web/guide/swiper/types/modules/free-mode.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -export interface FreeModeMethods { - onTouchMove(): void; - onTouchEnd(): void; -} - -export interface FreeModeEvents {} - -export interface FreeModeOptions { - 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/resources/web/guide/swiper/types/modules/grid.d.ts b/resources/web/guide/swiper/types/modules/grid.d.ts deleted file mode 100644 index a7626c8c68..0000000000 --- a/resources/web/guide/swiper/types/modules/grid.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -export interface GridMethods {} - -export interface GridEvents {} - -export interface GridOptions { - /** - * Number of slides rows, for multirow layout - * - * @note `rows` > 1 is currently not compatible with loop mode (`loop: true`) - * - * @default 1 - */ - rows?: number; - - /** - * Can be `'column'` or `'row'`. Defines how slides should fill rows, by column or by row - * - * @default 'column' - */ - fill?: 'row' | 'column'; -} diff --git a/resources/web/guide/swiper/types/modules/hash-navigation.d.ts b/resources/web/guide/swiper/types/modules/hash-navigation.d.ts deleted file mode 100644 index ac490cfbae..0000000000 --- a/resources/web/guide/swiper/types/modules/hash-navigation.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -import Swiper from '../swiper-class'; - -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; -} diff --git a/resources/web/guide/swiper/types/modules/history.d.ts b/resources/web/guide/swiper/types/modules/history.d.ts deleted file mode 100644 index 0003b08d72..0000000000 --- a/resources/web/guide/swiper/types/modules/history.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -export interface HistoryMethods {} - -export interface HistoryEvents {} - -export interface HistoryOptions { - /** - * 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; -} diff --git a/resources/web/guide/swiper/types/modules/keyboard.d.ts b/resources/web/guide/swiper/types/modules/keyboard.d.ts deleted file mode 100644 index 1e9a3127c3..0000000000 --- a/resources/web/guide/swiper/types/modules/keyboard.d.ts +++ /dev/null @@ -1,46 +0,0 @@ -import Swiper from '../swiper-class'; - -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; -} diff --git a/resources/web/guide/swiper/types/modules/lazy.d.ts b/resources/web/guide/swiper/types/modules/lazy.d.ts deleted file mode 100644 index 815c861494..0000000000 --- a/resources/web/guide/swiper/types/modules/lazy.d.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { Dom7Array } from 'dom7'; -import { CSSSelector } from '../shared'; -import Swiper from '../swiper-class'; - -export interface LazyMethods { - /** - * Load/update lazy images based on current slider state (position) - */ - load(): void; - - /** - * Force to load lazy images in slide by specified index - * @param number index number of slide to load lazy images in - */ - loadInSlide(index: number): void; -} - -export interface LazyEvents { - /** - * Event will be fired in the beginning of lazy loading of image - */ - lazyImageLoad: (swiper: Swiper, slideEl: HTMLElement, imageEl: HTMLElement) => void; - /** - * Event will be fired when lazy loading image will be loaded - */ - lazyImageReady: (swiper: Swiper, slideEl: HTMLElement, imageEl: HTMLElement) => void; -} - -export interface LazyOptions { - /** - * Enables to check is the Swiper in view before lazy loading images on initial slides - * - * @default false - */ - checkInView?: boolean; - /** - * Element to check scrolling on for `checkInView`. Defaults to `window` - * */ - scrollingElement?: CSSSelector | null | Dom7Array | HTMLElement; - /** - * Set to `true` to enable lazy loading for the closest slides images (for previous and next slide images) - * - * @default false - * */ - loadPrevNext?: boolean; - /** - * Amount of next/prev slides to preload lazy images in. Can't be less than `slidesPerView` - * - * @default 1 - * */ - loadPrevNextAmount?: number; - /** - * By default, Swiper will load lazy images after transition to this slide, so you may enable this parameter if you need it to start loading of new image in the beginning of transition - * - * @default false - * */ - loadOnTransitionStart?: boolean; - /** - * CSS class name of lazy element - * - * @default 'swiper-lazy' - * */ - elementClass?: string; - /** - * CSS class name of lazy loading element - * - * @default 'swiper-lazy-loading' - * */ - loadingClass?: string; - /** - * CSS class name of lazy loaded element - * - * @default 'swiper-lazy-loaded' - * */ - loadedClass?: string; - /** - * CSS class name of lazy preloader - * - * @default 'swiper-lazy-preloader' - * */ - preloaderClass?: string; -} diff --git a/resources/web/guide/swiper/types/modules/manipulation.d.ts b/resources/web/guide/swiper/types/modules/manipulation.d.ts deleted file mode 100644 index 3366eaf031..0000000000 --- a/resources/web/guide/swiper/types/modules/manipulation.d.ts +++ /dev/null @@ -1,70 +0,0 @@ -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/resources/web/guide/swiper/types/modules/mousewheel.d.ts b/resources/web/guide/swiper/types/modules/mousewheel.d.ts deleted file mode 100644 index 43c980998c..0000000000 --- a/resources/web/guide/swiper/types/modules/mousewheel.d.ts +++ /dev/null @@ -1,75 +0,0 @@ -import Swiper from '../swiper-class'; -import { CSSSelector } from '../shared'; - -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 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; -} diff --git a/resources/web/guide/swiper/types/modules/navigation.d.ts b/resources/web/guide/swiper/types/modules/navigation.d.ts deleted file mode 100644 index 89a5cfb14f..0000000000 --- a/resources/web/guide/swiper/types/modules/navigation.d.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { CSSSelector } from '../shared'; -import Swiper from '../swiper-class'; - -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; -} - -export interface NavigationOptions { - /** - * 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; - - /** - * 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; -} diff --git a/resources/web/guide/swiper/types/modules/pagination.d.ts b/resources/web/guide/swiper/types/modules/pagination.d.ts deleted file mode 100644 index 7e444a0ccf..0000000000 --- a/resources/web/guide/swiper/types/modules/pagination.d.ts +++ /dev/null @@ -1,285 +0,0 @@ -import { Dom7Array } from 'dom7'; -import { CSSSelector } from '../shared'; -import Swiper from '../swiper-class'; - -export interface PaginationMethods { - /** - * HTMLElement of pagination container element - */ - el: HTMLElement; - - /** - * Dom7 array-like collection of pagination bullets - * HTML elements. To get specific slide HTMLElement - * use `swiper.pagination.bullets[1]`. - */ - bullets: Dom7Array[]; - - /** - * 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 { - /** - * 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; - - /** - * format fraction pagination total number. Function receives total number, and you - * need to return formatted value - */ - formatFractionTotal?: (number: number) => number; - - /** - * 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', { - * //... - * renderBullet: function (index, className) { - * return '' + (index + 1) + ''; - * } - * }); - * ``` - */ - renderBullet?: (index: number, className: string) => void; - - /** - * This parameter allows to customize "fraction" pagination html. Only for `'fraction'` pagination type - * - * @default null - * - * @example - * ```js - * const swiper = new Swiper('.swiper', { - * //... - * renderFraction: function (currentClass, totalClass) { - * return '' + - * ' of ' + - * ''; - * } - * }); - * ``` - */ - renderFraction?: (currentClass: string, totalClass: string) => void; - - /** - * This parameter allows to customize "progress" pagination. Only for `'progress'` pagination type - * - * @default null - * - * @example - * ```js - * const swiper = new Swiper('.swiper', { - * //... - * renderProgressbar: function (progressbarFillClass) { - * return ''; - * } - * }); - * ``` - */ - renderProgressbar?: (progressbarFillClass: string) => void; - - /** - * 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', { - * //... - * renderCustom: function (swiper, current, total) { - * return current + ' of ' + total; - * } - * }); - * ``` - */ - renderCustom?: (swiper: Swiper, current: number, total: number) => void; - - /** - * 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; -} diff --git a/resources/web/guide/swiper/types/modules/parallax.d.ts b/resources/web/guide/swiper/types/modules/parallax.d.ts deleted file mode 100644 index 27e8e6fc6b..0000000000 --- a/resources/web/guide/swiper/types/modules/parallax.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -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/resources/web/guide/swiper/types/modules/public-api.d.ts b/resources/web/guide/swiper/types/modules/public-api.d.ts deleted file mode 100644 index 316772c0c8..0000000000 --- a/resources/web/guide/swiper/types/modules/public-api.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -export * from './a11y'; -export * from './autoplay'; -export * from './controller'; -export * from './effect-coverflow'; -export * from './effect-cube'; -export * from './effect-fade'; -export * from './effect-flip'; -export * from './effect-creative'; -export * from './effect-cards'; -export * from './hash-navigation'; -export * from './history'; -export * from './keyboard'; -export * from './lazy'; -export * from './mousewheel'; -export * from './navigation'; -export * from './pagination'; -export * from './parallax'; -export * from './scrollbar'; -export * from './thumbs'; -export * from './virtual'; -export * from './zoom'; -export * from './free-mode'; -export * from './grid'; -export * from './manipulation'; diff --git a/resources/web/guide/swiper/types/modules/scrollbar.d.ts b/resources/web/guide/swiper/types/modules/scrollbar.d.ts deleted file mode 100644 index 9577568cf6..0000000000 --- a/resources/web/guide/swiper/types/modules/scrollbar.d.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { CSSSelector } from '../shared'; -import Swiper from '../swiper-class'; - -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 { - /** - * 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; -} diff --git a/resources/web/guide/swiper/types/modules/thumbs.d.ts b/resources/web/guide/swiper/types/modules/thumbs.d.ts deleted file mode 100644 index 98fa98b324..0000000000 --- a/resources/web/guide/swiper/types/modules/thumbs.d.ts +++ /dev/null @@ -1,54 +0,0 @@ -import Swiper from '../swiper-class'; - -export interface ThumbsMethods { - /** - * Swiper instance of thumbs swiper - */ - swiper: Swiper; - - /** - * Update thumbs - */ - update(initial: 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 | 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/resources/web/guide/swiper/types/modules/virtual.d.ts b/resources/web/guide/swiper/types/modules/virtual.d.ts deleted file mode 100644 index 48b270868c..0000000000 --- a/resources/web/guide/swiper/types/modules/virtual.d.ts +++ /dev/null @@ -1,122 +0,0 @@ -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: any[]; - - /* - * Methods - */ - - /** - * Append slide. `slides` can be a single slide item or array with such slides. - */ - appendSlide(slide: HTMLElement | string | HTMLElement[] | string[]): void; - - /** - * Prepend slide. `slides` can be a single slide item or array with such slides. - */ - 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. - */ - removeSlide(slideIndexes: number[]): void; - - /** - * Remove all slides - */ - 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: any[]; -} - -export interface VirtualOptions { - enabled?: boolean; - /** - * Array with slides - * - * @default [] - */ - slides?: any[]; - /** - * 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 outter HTML of the swiper slide. - * - * @default null - */ - renderSlide?: (slide: any, 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/resources/web/guide/swiper/types/modules/zoom.d.ts b/resources/web/guide/swiper/types/modules/zoom.d.ts deleted file mode 100644 index 40ebfaaf11..0000000000 --- a/resources/web/guide/swiper/types/modules/zoom.d.ts +++ /dev/null @@ -1,79 +0,0 @@ -import Swiper from '../swiper-class'; - -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 - */ - in(): void; - - /** - * Zoom out image of the currently active slide - */ - out(): void; - - /** - * Toggle image zoom of the currently active slide - */ - toggle(): void; -} - -export interface ZoomEvents { - /** - * Event will be fired on zoom change - */ - zoomChange: (swiper: Swiper, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; -} - -export interface ZoomOptions { - /** - * Maximum image zoom multiplier - * - * @default 3 - */ - maxRatio?: number; - /** - * Minimal image zoom multiplier - * - * @default 1 - */ - minRatio?: number; - /** - * 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/resources/web/guide/swiper/types/shared.d.ts b/resources/web/guide/swiper/types/shared.d.ts deleted file mode 100644 index 1e174ff75c..0000000000 --- a/resources/web/guide/swiper/types/shared.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface CSSSelector extends String {} - -export interface SwiperModule {} diff --git a/resources/web/guide/swiper/types/swiper-class.d.ts b/resources/web/guide/swiper/types/swiper-class.d.ts deleted file mode 100644 index 387990a76c..0000000000 --- a/resources/web/guide/swiper/types/swiper-class.d.ts +++ /dev/null @@ -1,472 +0,0 @@ -import { Dom7Array } from 'dom7'; -import { SwiperOptions } from './swiper-options'; -import { CSSSelector, SwiperModule } from './shared'; -import { SwiperEvents } from './swiper-events'; - -import { A11yMethods } from './modules/a11y'; -import { AutoplayMethods } from './modules/autoplay'; -import { ControllerMethods } from './modules/controller'; -import { CoverflowEffectMethods } from './modules/effect-coverflow'; -import { CubeEffectMethods } from './modules/effect-cube'; -import { FadeEffectMethods } from './modules/effect-fade'; -import { FlipEffectMethods } from './modules/effect-flip'; -import { CreativeEffectMethods } from './modules/effect-creative'; -import { CardsEffectMethods } from './modules/effect-cards'; -import { HashNavigationMethods } from './modules/hash-navigation'; -import { HistoryMethods } from './modules/history'; -import { KeyboardMethods } from './modules/keyboard'; -import { LazyMethods } from './modules/lazy'; -import { MousewheelMethods } from './modules/mousewheel'; -import { NavigationMethods } from './modules/navigation'; -import { PaginationMethods } from './modules/pagination'; -import { ParallaxMethods } from './modules/parallax'; -import { ScrollbarMethods } from './modules/scrollbar'; -import { ThumbsMethods } from './modules/thumbs'; -import { VirtualMethods } from './modules/virtual'; -import { ZoomMethods } from './modules/zoom'; -import { FreeModeMethods } from './modules/free-mode'; -import { ManipulationMethods } from './modules/manipulation'; - -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; - - /** - * Dom7 element with slider container HTML element. To get vanilla HTMLElement use `swiper.el` - */ - $el: Dom7Array; - - /** - * Slider container HTML element - */ - el: HTMLElement; - - /** - * Dom7 element with slider wrapper HTML element. To get vanilla HTMLElement use `swiper.wrapperEl` - */ - $wrapperEl: Dom7Array; - - /** - * Wrapper HTML element - */ - wrapperEl: HTMLElement; - - /** - * Dom7 array-like collection of slides HTML elements. To get specific slide HTMLElement use `swiper.slides[1]` - */ - slides: Dom7Array; - - /** - * !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/duplicated slides - */ - activeIndex: number; - - /** - * Index number of currently active slide considering duplicated slides in loop mode - */ - realIndex: number; - - /** - * Index number of previously active slide - */ - previousIndex: number; - - /** - * `true` if slider on most "left"/"top" position - */ - isBeginning: boolean; - - /** - * `true` if slider on most "right"/"bottom" position - */ - isEnd: 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; - - /** - * !INTERNAL - */ - rtlTranslate: 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): void; - - /** - * 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): void; - - /** - * 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): void; - - /** - * 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): void; - - /** - * 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): void; - - /** - * 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): void; - - /** - * 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; - - /** - * 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; - - /** - * 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; - lazy: LazyMethods; - 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/resources/web/guide/swiper/types/swiper-events.d.ts b/resources/web/guide/swiper/types/swiper-events.d.ts deleted file mode 100644 index 54bba290d3..0000000000 --- a/resources/web/guide/swiper/types/swiper-events.d.ts +++ /dev/null @@ -1,362 +0,0 @@ -import { SwiperOptions } from './swiper-options'; -import Swiper from './swiper-class'; - -import { A11yEvents } from './modules/a11y'; -import { AutoplayEvents } from './modules/autoplay'; -import { ControllerEvents } from './modules/controller'; -import { CoverflowEffectEvents } from './modules/effect-coverflow'; -import { CubeEffectEvents } from './modules/effect-cube'; -import { FadeEffectEvents } from './modules/effect-fade'; -import { FlipEffectEvents } from './modules/effect-flip'; -import { CreativeEffectEvents } from './modules/effect-creative'; -import { CardsEffectEvents } from './modules/effect-cards'; -import { HashNavigationEvents } from './modules/hash-navigation'; -import { HistoryEvents } from './modules/history'; -import { KeyboardEvents } from './modules/keyboard'; -import { LazyEvents } from './modules/lazy'; -import { MousewheelEvents } from './modules/mousewheel'; -import { NavigationEvents } from './modules/navigation'; -import { PaginationEvents } from './modules/pagination'; -import { ParallaxEvents } from './modules/parallax'; -import { ScrollbarEvents } from './modules/scrollbar'; -import { ThumbsEvents } from './modules/thumbs'; -import { VirtualEvents } from './modules/virtual'; -import { ZoomEvents } from './modules/zoom'; -import { FreeModeEvents } from './modules/free-mode'; - -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 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 `touchstart` 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 `touchmove` 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 `touchmove` 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 `touchmove` event as an arguments. - */ - sliderMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired when user release Swiper. Receives `touchend` event as an arguments. - */ - touchEnd: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired when user click/tap on Swiper. Receives `touchend` event as an arguments. - */ - click: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired when user click/tap on Swiper. Receives `touchend` 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 `touchend` event as an arguments - */ - doubleTap: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired right after all inner images are loaded. updateOnImagesReady should be also enabled - */ - imagesReady: (swiper: Swiper) => 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 LazyEvents {} -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/resources/web/guide/swiper/types/swiper-options.d.ts b/resources/web/guide/swiper/types/swiper-options.d.ts deleted file mode 100644 index b8b49027d5..0000000000 --- a/resources/web/guide/swiper/types/swiper-options.d.ts +++ /dev/null @@ -1,1205 +0,0 @@ -import { A11yOptions } from './modules/a11y'; -import { AutoplayOptions } from './modules/autoplay'; -import { ControllerOptions } from './modules/controller'; -import { CoverflowEffectOptions } from './modules/effect-coverflow'; -import { CubeEffectOptions } from './modules/effect-cube'; -import { FadeEffectOptions } from './modules/effect-fade'; -import { FlipEffectOptions } from './modules/effect-flip'; -import { CreativeEffectOptions } from './modules/effect-creative'; -import { CardsEffectOptions } from './modules/effect-cards'; -import { HashNavigationOptions } from './modules/hash-navigation'; -import { HistoryOptions } from './modules/history'; -import { KeyboardOptions } from './modules/keyboard'; -import { LazyOptions } from './modules/lazy'; -import { MousewheelOptions } from './modules/mousewheel'; -import { NavigationOptions } from './modules/navigation'; -import { PaginationOptions } from './modules/pagination'; -import { ParallaxOptions } from './modules/parallax'; -import { ScrollbarOptions } from './modules/scrollbar'; -import { ThumbsOptions } from './modules/thumbs'; -import { VirtualOptions } from './modules/virtual'; -import { ZoomOptions } from './modules/zoom'; -import { FreeModeOptions } from './modules/free-mode'; -import { GridOptions } from './modules/grid'; - -import { CSSSelector, SwiperModule } from './shared'; -import { SwiperEvents } from './swiper-events'; - -export interface SwiperOptions { - /** - * Array with Swiper modules - * - * @example - * ```js - * import Swiper, { Navigation, Pagination } from 'swiper'; - * - * const swiper = new Swiper('.swiper', { - * modules: [ Navigation, Pagination ], - * }); - * ``` - */ - modules?: SwiperModule[]; - /** - * 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'; - - /** - * 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; - - /** - * 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'` or `'creative'` - * - * @default 'slide' - */ - effect?: 'slide' | 'fade' | 'cube' | 'coverflow' | 'flip' | 'creative' | 'cards'; - - /** - * 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 and Cards effects - * - `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` - * - `freeMode` and all relevant features - * - * @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 property. - */ - spaceBetween?: number; - - /** - * Number of slides per view (slides visible at the same time on slider's container). - * @note If you use it with "auto" value and along with `loop: true` then you need to specify `loopedSlides` parameter with amount of slides to loop (duplicate) - * @note `slidesPerView: 'auto'` is currently not compatible with multirow mode, when `grid.rows` > 1 - * - * @default 1 - */ - slidesPerView?: number | 'auto'; - - /** - * 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; - - /** - * 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 0 - */ - threshold?: number; - - /** - * If disabled, `touchstart` (`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 - * - * @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 - * - * @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; - - // Images - /** - * When enabled Swiper will force to load all images - * - * @default true - */ - preloadImages?: boolean; - - /** - * When enabled Swiper will be reinitialized after all inner images ( tags) are loaded. Required `preloadImages: true` - * - * @default true - */ - updateOnImagesReady?: boolean; - - /** - * Set to `true` to enable continuous loop mode - * - * Because of nature of how the loop mode works, it will add duplicated slides. Such duplicated slides will have additional classes: - * - `swiper-slide-duplicate` - represents duplicated slide - * - `swiper-slide-duplicate-active` - represents slide duplicated to the currently active slide - * - `swiper-slide-duplicate-next` - represents slide duplicated to the slide next to active - * - `swiper-slide-duplicate-prev` - represents slide duplicated to the slide previous to active - * - * @default false - * - * @note If you use it along with `slidesPerView: 'auto'` then you need to specify `loopedSlides` parameter with amount of slides to loop (duplicate) - */ - loop?: boolean; - - /** - * Addition number of slides that will be cloned after creating of loop - * - * @default 0 - */ - loopAdditionalSlides?: number; - - /** - * If you use `slidesPerView:'auto'` with loop mode you should tell to Swiper how many slides it should loop (duplicate) using this parameter - * - * @default null - */ - loopedSlides?: number | null; - - /** - * Enable and loop mode will fill groups with insufficient number of slides with blank slides. Good to be used with `slidesPerGroup` parameter - * - * @default false - */ - loopFillGroupWithBlank?: boolean; - /** - * When enabled it prevents Swiper slide prev/next transitions when transitions is already in progress (has effect when `loop` enabled) - * - * @default true - */ - loopPreventsSlide?: boolean; - - /** - * Allows to set different parameter for different responsive breakpoints (screen sizes). Not all parameters can be changed in breakpoints, only those which are not required 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' - * - * @note Currently in beta and not supported by Swiper Angular, React, Svelte and Vue components - */ - breakpointsBase?: string; - - // 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 Angular/React/Svelte/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 Angular/React/Svelte/Vue components - */ - slideActiveClass?: string; - - /** - * CSS class name of duplicated slide which represents the currently active slide - * - * @default 'swiper-slide-duplicate-active' - * - * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes - * - * @note Not supported in Swiper Angular/React/Svelte/Vue components - */ - slideDuplicateActiveClass?: string; - - /** - * CSS class name of currently 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 Angular/React/Svelte/Vue - */ - slideVisibleClass?: string; - - /** - * CSS class name of slide duplicated by loop mode - * - * @default 'swiper-slide-duplicate' - * - * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes - * - * @note Not supported in Swiper Angular/React/Svelte/Vue - */ - slideDuplicateClass?: 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 Angular/React/Svelte/Vue - */ - slideNextClass?: string; - - /** - * CSS class name of duplicated slide which represents the slide next to active slide - * - * @default 'swiper-slide-duplicate-next' - * - * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes - * - * @note Not supported in Swiper Angular/React/Svelte/Vue - */ - slideDuplicateNextClass?: 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 Angular/React/Svelte/Vue - */ - slidePrevClass?: string; - - /** - * CSS class name of duplicated slide which represents the slide previous to active slide - * - * @default 'swiper-slide-duplicate-prev' - * - * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes - * - * @note Not supported in Swiper Angular/React/Svelte/Vue - */ - slideDuplicatePrevClass?: string; - - /** - * CSS class name of blank slide append to fill groups in loop mode when `loopFillGroupWithBlank` is also enabled - * - * @default 'swiper-slide-invisible-blank' - * - * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes - * - * @note Not supported in Swiper Angular/React/Svelte/Vue - */ - slideBlankClass?: 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 Angular/React/Svelte/Vue - * - */ - wrapperClass?: string; - - /** - * 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; - - /** - * 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 images lazy loading. Object with lazy loading parameters or boolean `true` to enable with default settings - * - * @example - * ```js - * const swiper = new Swiper('.swiper', { - * lazy: { - * loadPrevNext: true, - * }, - * }); - * ``` - */ - lazy?: LazyOptions | 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/resources/web/guide/swiper/vue/get-changed-params.js b/resources/web/guide/swiper/vue/get-changed-params.js deleted file mode 100644 index 22dacd31ef..0000000000 --- a/resources/web/guide/swiper/vue/get-changed-params.js +++ /dev/null @@ -1,43 +0,0 @@ -import { paramsList } from './params-list.js'; -import { isObject } from './utils.js'; - -function getChangedParams(swiperParams, oldParams, children, oldChildren) { - const keys = []; - if (!oldParams) return keys; - - const addKey = key => { - if (keys.indexOf(key) < 0) keys.push(key); - }; - - const oldChildrenKeys = oldChildren.map(child => child.props && child.props.key); - const childrenKeys = children.map(child => child.props && child.props.key); - if (oldChildrenKeys.join('') !== childrenKeys.join('')) keys.push('children'); - if (oldChildren.length !== children.length) keys.push('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; -} - -export { getChangedParams }; \ No newline at end of file diff --git a/resources/web/guide/swiper/vue/get-children.js b/resources/web/guide/swiper/vue/get-children.js deleted file mode 100644 index f09d3874ef..0000000000 --- a/resources/web/guide/swiper/vue/get-children.js +++ /dev/null @@ -1,41 +0,0 @@ -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, 'default'); - } else if (vnode.type && (vnode.type.name === 'SwiperSlide' || vnode.type.name === 'AsyncComponentWrapper')) { - slides.push(vnode); - } else if (slots[slotName]) { - slots[slotName].push(vnode); - } - }); - }; - - Object.keys(originalSlots).forEach(slotName => { - const els = originalSlots[slotName](); - getSlidesFromElements(els, slotName); - }); - oldSlidesRef.value = slidesRef.value; - slidesRef.value = slides; - return { - slides, - slots - }; -} - -export { getChildren }; \ No newline at end of file diff --git a/resources/web/guide/swiper/vue/get-params.js b/resources/web/guide/swiper/vue/get-params.js deleted file mode 100644 index 118f72fda9..0000000000 --- a/resources/web/guide/swiper/vue/get-params.js +++ /dev/null @@ -1,48 +0,0 @@ -import Swiper from 'swiper'; -import { isObject, extend } from './utils.js'; -import { paramsList } from './params-list.js'; - -function getParams(obj = {}) { - const params = { - on: {} - }; - const passedParams = {}; - extend(params, Swiper.defaults); - extend(params, Swiper.extendedDefaults); - params._emitClasses = true; - params.init = false; - const rest = {}; - const allowedParams = paramsList.map(key => key.replace(/_/, '')); // Prevent empty Object.keys(obj) array on ios. - - 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') { - 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 - }; -} - -export { getParams }; \ No newline at end of file diff --git a/resources/web/guide/swiper/vue/init-swiper.js b/resources/web/guide/swiper/vue/init-swiper.js deleted file mode 100644 index aaf5568971..0000000000 --- a/resources/web/guide/swiper/vue/init-swiper.js +++ /dev/null @@ -1,36 +0,0 @@ -import Swiper from 'swiper'; -import { needsNavigation, needsPagination, needsScrollbar } from './utils.js'; - -function initSwiper(swiperParams) { - return new Swiper(swiperParams); -} - -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); -} - -export { initSwiper, mountSwiper }; \ No newline at end of file diff --git a/resources/web/guide/swiper/vue/loop.js b/resources/web/guide/swiper/vue/loop.js deleted file mode 100644 index 591a07a199..0000000000 --- a/resources/web/guide/swiper/vue/loop.js +++ /dev/null @@ -1,79 +0,0 @@ -import { h } from 'vue'; -import Swiper from 'swiper'; - -function calcLoopedSlides(slides, swiperParams) { - let slidesPerViewParams = swiperParams.slidesPerView; - - if (swiperParams.breakpoints) { - const breakpoint = Swiper.prototype.getBreakpoint(swiperParams.breakpoints); - const breakpointOnlyParams = breakpoint in swiperParams.breakpoints ? swiperParams.breakpoints[breakpoint] : undefined; - - if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) { - slidesPerViewParams = breakpointOnlyParams.slidesPerView; - } - } - - let loopedSlides = Math.ceil(parseFloat(swiperParams.loopedSlides || slidesPerViewParams, 10)); - loopedSlides += swiperParams.loopAdditionalSlides; - - if (loopedSlides > slides.length) { - loopedSlides = slides.length; - } - - return loopedSlides; -} - -function renderLoop(swiperRef, slides, swiperParams) { - const modifiedSlides = slides.map((child, index) => { - if (!child.props) child.props = {}; - child.props.swiperRef = swiperRef; - child.props['data-swiper-slide-index'] = index; - return child; - }); - - function duplicateSlide(child, index, position) { - if (!child.props) child.props = {}; - return h(child.type, { ...child.props, - key: `${child.key}-duplicate-${index}-${position}`, - class: `${child.props.className || ''} ${swiperParams.slideDuplicateClass} ${child.props.class || ''}` - }, child.children); - } - - if (swiperParams.loopFillGroupWithBlank) { - const blankSlidesNum = swiperParams.slidesPerGroup - modifiedSlides.length % swiperParams.slidesPerGroup; - - if (blankSlidesNum !== swiperParams.slidesPerGroup) { - for (let i = 0; i < blankSlidesNum; i += 1) { - const blankSlide = h('div', { - class: `${swiperParams.slideClass} ${swiperParams.slideBlankClass}` - }); - modifiedSlides.push(blankSlide); - } - } - } - - if (swiperParams.slidesPerView === 'auto' && !swiperParams.loopedSlides) { - swiperParams.loopedSlides = modifiedSlides.length; - } - - const loopedSlides = calcLoopedSlides(modifiedSlides, swiperParams); - const prependSlides = []; - const appendSlides = []; - modifiedSlides.forEach((child, index) => { - if (index < loopedSlides) { - appendSlides.push(duplicateSlide(child, index, 'prepend')); - } - - if (index < modifiedSlides.length && index >= modifiedSlides.length - loopedSlides) { - prependSlides.push(duplicateSlide(child, index, 'append')); - } - }); - - if (swiperRef.value) { - swiperRef.value.loopedSlides = loopedSlides; - } - - return [...prependSlides, ...modifiedSlides, ...appendSlides]; -} - -export { calcLoopedSlides, renderLoop }; \ No newline at end of file diff --git a/resources/web/guide/swiper/vue/params-list.js b/resources/web/guide/swiper/vue/params-list.js deleted file mode 100644 index 2d25f8f2d2..0000000000 --- a/resources/web/guide/swiper/vue/params-list.js +++ /dev/null @@ -1,4 +0,0 @@ -/* underscore in name -> watch for changes */ -const paramsList = ['modules', 'init', '_direction', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_preloadImages', 'updateOnImagesReady', '_loop', '_loopAdditionalSlides', '_loopedSlides', '_loopFillGroupWithBlank', 'loopPreventsSlide', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideBlankClass', 'slideActiveClass', 'slideDuplicateActiveClass', 'slideVisibleClass', 'slideDuplicateClass', 'slideNextClass', 'slideDuplicateNextClass', 'slidePrevClass', 'slideDuplicatePrevClass', 'wrapperClass', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', // modules -'a11y', 'autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'lazy', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom']; -export { paramsList }; \ No newline at end of file diff --git a/resources/web/guide/swiper/vue/swiper-slide.js b/resources/web/guide/swiper/vue/swiper-slide.js deleted file mode 100644 index a9e9e95f3d..0000000000 --- a/resources/web/guide/swiper/vue/swiper-slide.js +++ /dev/null @@ -1,83 +0,0 @@ -import { h, ref, onMounted, onUpdated, onBeforeUpdate, computed, onBeforeUnmount } from 'vue'; -import { uniqueClasses } from './utils.js'; -const SwiperSlide = { - name: 'SwiperSlide', - props: { - tag: { - type: String, - default: 'div' - }, - swiperRef: { - type: Object, - required: false - }, - zoom: { - type: Boolean, - default: undefined - }, - virtualIndex: { - type: [String, Number], - default: undefined - } - }, - - setup(props, { - slots - }) { - let eventAttached = false; - const { - swiperRef - } = props; - const slideElRef = ref(null); - const slideClasses = ref('swiper-slide'); - - function updateClasses(swiper, el, classNames) { - if (el === slideElRef.value) { - slideClasses.value = classNames; - } - } - - onMounted(() => { - if (!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 (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 || slideClasses.value.indexOf('swiper-slide-duplicate-active') >= 0, - isVisible: slideClasses.value.indexOf('swiper-slide-visible') >= 0, - isDuplicate: slideClasses.value.indexOf('swiper-slide-duplicate') >= 0, - isPrev: slideClasses.value.indexOf('swiper-slide-prev') >= 0 || slideClasses.value.indexOf('swiper-slide-duplicate-prev') >= 0, - isNext: slideClasses.value.indexOf('swiper-slide-next') >= 0 || slideClasses.value.indexOf('swiper-slide-duplicate-next') >= 0 - })); - return () => { - return h(props.tag, { - class: uniqueClasses(`${slideClasses.value}`), - ref: slideElRef, - 'data-swiper-slide-index': props.virtualIndex - }, props.zoom ? h('div', { - class: 'swiper-zoom-container', - 'data-swiper-zoom': typeof props.zoom === 'number' ? props.zoom : undefined - }, slots.default && slots.default(slideData.value)) : slots.default && slots.default(slideData.value)); - }; - } - -}; -export { SwiperSlide }; \ No newline at end of file diff --git a/resources/web/guide/swiper/vue/swiper-vue.d.ts b/resources/web/guide/swiper/vue/swiper-vue.d.ts deleted file mode 100644 index 9cb48917af..0000000000 --- a/resources/web/guide/swiper/vue/swiper-vue.d.ts +++ /dev/null @@ -1,859 +0,0 @@ -import { - A11yOptions, - AutoplayOptions, - ControllerOptions, - CoverflowEffectOptions, - CubeEffectOptions, - FadeEffectOptions, - FlipEffectOptions, - CreativeEffectOptions, - CardsEffectOptions, - HashNavigationOptions, - HistoryOptions, - KeyboardOptions, - LazyOptions, - MousewheelOptions, - NavigationOptions, - PaginationOptions, - ParallaxOptions, - ScrollbarOptions, - ThumbsOptions, - VirtualOptions, - ZoomOptions, - FreeModeOptions, - GridOptions, -} from '../types'; -import { ComponentOptionsMixin, DefineComponent, PropType } from 'vue'; -import { SwiperOptions, Swiper as SwiperClass } from '../types'; - -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']; - }; - 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: NumberConstructor; - default: undefined; - }; - slidesPerView: { - type: PropType; - 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; - }; - 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; - }; - preloadImages: { - type: BooleanConstructor; - default: undefined; - }; - updateOnImagesReady: { - type: BooleanConstructor; - default: undefined; - }; - loop: { type: BooleanConstructor; default: undefined }; - loopAdditionalSlides: { - type: NumberConstructor; - default: undefined; - }; - loopedSlides: { - type: NumberConstructor; - default: undefined; - }; - loopFillGroupWithBlank: { - type: BooleanConstructor; - default: undefined; - }; - loopPreventsSlide: { - 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; - }; - slideBlankClass: { - type: StringConstructor; - default: undefined; - }; - slideActiveClass: { - type: StringConstructor; - default: undefined; - }; - slideDuplicateActiveClass: { - type: StringConstructor; - default: undefined; - }; - slideVisibleClass: { - type: StringConstructor; - default: undefined; - }; - slideDuplicateClass: { - type: StringConstructor; - default: undefined; - }; - slideNextClass: { - type: StringConstructor; - default: undefined; - }; - slideDuplicateNextClass: { - type: StringConstructor; - default: undefined; - }; - slidePrevClass: { - type: StringConstructor; - default: undefined; - }; - slideDuplicatePrevClass: { - type: StringConstructor; - default: undefined; - }; - wrapperClass: { - type: StringConstructor; - 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; - }; - lazy: { - 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 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 mousewheel scroll - */ - scroll: (swiper: SwiperClass, event: WheelEvent) => void;/** - * Event will be fired in the beginning of lazy loading of image - */ - lazyImageLoad: (swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement) => void; - /** - * Event will be fired when lazy loading image will be loaded - */ - lazyImageReady: (swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement) => void;/** - * Event will be fired on key press - */ - keyPress: (swiper: SwiperClass, keyCode: string) => 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 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 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;/** - * Event will be fired on zoom change - */ - zoomChange: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => 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 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 `touchstart` 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 `touchmove` 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 `touchmove` 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 `touchmove` event as an arguments. - */ - sliderMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired when user release Swiper. Receives `touchend` event as an arguments. - */ - touchEnd: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired when user click/tap on Swiper. Receives `touchend` event as an arguments. - */ - click: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired when user click/tap on Swiper. Receives `touchend` 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 `touchend` event as an arguments - */ - doubleTap: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired right after all inner images are loaded. updateOnImagesReady should be also enabled - */ - imagesReady: (swiper: SwiperClass) => 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 }; - zoom: { type: BooleanConstructor; default: undefined }; - virtualIndex: { - type: StringConstructor | NumberConstructor; - default: undefined; - }; -}>; - -export { Swiper, SwiperSlide }; diff --git a/resources/web/guide/swiper/vue/swiper-vue.js b/resources/web/guide/swiper/vue/swiper-vue.js deleted file mode 100644 index 621d2460dd..0000000000 --- a/resources/web/guide/swiper/vue/swiper-vue.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Swiper Vue 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -import { Swiper } from './swiper.js'; -import { SwiperSlide } from './swiper-slide.js'; -export { Swiper, SwiperSlide }; \ No newline at end of file diff --git a/resources/web/guide/swiper/vue/swiper.js b/resources/web/guide/swiper/vue/swiper.js deleted file mode 100644 index 575325087e..0000000000 --- a/resources/web/guide/swiper/vue/swiper.js +++ /dev/null @@ -1,640 +0,0 @@ -import { h, ref, onMounted, onUpdated, onBeforeUnmount, watch, nextTick } from 'vue'; -import { getParams } from './get-params.js'; -import { initSwiper, mountSwiper } from './init-swiper.js'; -import { needsScrollbar, needsNavigation, needsPagination, uniqueClasses, extend } from './utils.js'; -import { renderLoop, calcLoopedSlides } from './loop.js'; -import { getChangedParams } from './get-changed-params.js'; -import { getChildren } from './get-children.js'; -import { updateSwiper } from './update-swiper.js'; -import { renderVirtual, updateOnVirtualData } from './virtual.js'; -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 - }, - 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 - }, - spaceBetween: { - type: Number, - default: undefined - }, - slidesPerView: { - type: [Number, String], - 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 - }, - preloadImages: { - type: Boolean, - default: undefined - }, - updateOnImagesReady: { - type: Boolean, - default: undefined - }, - loop: { - type: Boolean, - default: undefined - }, - loopAdditionalSlides: { - type: Number, - default: undefined - }, - loopedSlides: { - type: Number, - default: undefined - }, - loopFillGroupWithBlank: { - type: Boolean, - default: undefined - }, - loopPreventsSlide: { - 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 - }, - slideBlankClass: { - type: String, - default: undefined - }, - slideActiveClass: { - type: String, - default: undefined - }, - slideDuplicateActiveClass: { - type: String, - default: undefined - }, - slideVisibleClass: { - type: String, - default: undefined - }, - slideDuplicateClass: { - type: String, - default: undefined - }, - slideNextClass: { - type: String, - default: undefined - }, - slideDuplicateNextClass: { - type: String, - default: undefined - }, - slidePrevClass: { - type: String, - default: undefined - }, - slideDuplicatePrevClass: { - type: String, - default: undefined - }, - wrapperClass: { - type: String, - 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 - }, - lazy: { - 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 - } - }, - emits: ['_beforeBreakpoint', '_containerClasses', '_slideClass', '_slideClasses', '_swiper', 'activeIndexChange', 'afterInit', 'autoplay', 'autoplayStart', 'autoplayStop', 'beforeDestroy', 'beforeInit', 'beforeLoopFix', 'beforeResize', 'beforeSlideChangeStart', 'beforeTransitionStart', 'breakpoint', 'changeDirection', 'click', 'disable', 'doubleTap', 'doubleClick', 'destroy', 'enable', 'fromEdge', 'hashChange', 'hashSet', 'imagesReady', 'init', 'keyPress', 'lazyImageLoad', 'lazyImageReady', 'lock', 'loopFix', 'momentumBounce', 'navigationHide', 'navigationShow', 'observerUpdate', 'orientationchange', 'paginationHide', 'paginationRender', 'paginationShow', 'paginationUpdate', 'progress', 'reachBeginning', 'reachEnd', 'realIndexChange', 'resize', 'scroll', 'scrollbarDragEnd', 'scrollbarDragMove', 'scrollbarDragStart', 'setTransition', 'setTranslate', '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', '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); - 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 - - swiperRef.value = initSwiper(swiperParams); - - swiperRef.value.loopCreate = () => {}; - - swiperRef.value.loopDestroy = () => {}; - - if (swiperParams.loop) { - swiperRef.value.loopedSlides = calcLoopedSlides(slidesRef.value, swiperParams); - } - - 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); - const changedParams = getChangedParams(newPassedParams, oldPassedParamsRef.value, slidesRef.value, oldSlidesRef.value); - 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; - }); // 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); - } - - if (!swiperParams.loop || swiperRef.value && swiperRef.value.destroyed) { - slides.forEach(slide => { - if (!slide.props) slide.props = {}; - slide.props.swiperRef = swiperRef; - }); - return slides; - } - - return renderLoop(swiperRef, slides, swiperParams); - } - - return () => { - const { - slides, - slots - } = getChildren(originalSlots, slidesRef, oldSlidesRef); - return h(Tag, { - ref: swiperElRef, - class: uniqueClasses(containerClasses.value) - }, [slots['container-start'], 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' - }), h(WrapperTag, { - class: 'swiper-wrapper' - }, [slots['wrapper-start'], renderSlides(slides), slots['wrapper-end']]), slots['container-end']]); - }; - } - -}; -export { Swiper }; \ No newline at end of file diff --git a/resources/web/guide/swiper/vue/update-swiper.js b/resources/web/guide/swiper/vue/update-swiper.js deleted file mode 100644 index 4824d48b56..0000000000 --- a/resources/web/guide/swiper/vue/update-swiper.js +++ /dev/null @@ -1,131 +0,0 @@ -import { isObject, extend } from './utils.js'; - -function updateSwiper({ - swiper, - slides, - passedParams, - changedParams, - nextEl, - prevEl, - paginationEl, - scrollbarEl -}) { - const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction'); - const { - params: currentParams, - pagination, - navigation, - scrollbar, - virtual, - thumbs - } = swiper; - let needThumbsInit; - let needControllerInit; - let needPaginationInit; - let needScrollbarInit; - let needNavigationInit; - - if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { - 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') { - currentParams[mod].prevEl = undefined; - currentParams[mod].nextEl = undefined; - swiper[mod].prevEl = undefined; - swiper[mod].nextEl = undefined; - } else { - currentParams[mod].el = undefined; - swiper[mod].el = undefined; - } - }; - - updateParams.forEach(key => { - if (isObject(currentParams[key]) && isObject(passedParams[key])) { - extend(currentParams[key], passedParams[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 (changedParams.includes('children') && virtual && currentParams.virtual.enabled) { - virtual.slides = slides; - virtual.update(true); - } else if (changedParams.includes('children') && swiper.lazy && swiper.params.lazy.enabled) { - swiper.lazy.load(); - } - - if (needThumbsInit) { - const initialized = thumbs.init(); - if (initialized) thumbs.update(true); - } - - if (needControllerInit) { - swiper.controller.control = currentParams.controller.control; - } - - if (needPaginationInit) { - if (paginationEl) currentParams.pagination.el = paginationEl; - pagination.init(); - pagination.render(); - pagination.update(); - } - - if (needScrollbarInit) { - if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; - scrollbar.init(); - scrollbar.updateSize(); - scrollbar.setTranslate(); - } - - if (needNavigationInit) { - 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); - } - - swiper.update(); -} - -export { updateSwiper }; \ No newline at end of file diff --git a/resources/web/guide/swiper/vue/utils.js b/resources/web/guide/swiper/vue/utils.js deleted file mode 100644 index 6c38df53f8..0000000000 --- a/resources/web/guide/swiper/vue/utils.js +++ /dev/null @@ -1,37 +0,0 @@ -function isObject(o) { - return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === '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) { - if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); - } else { - target[key] = src[key]; - } - }); -} - -function needsNavigation(props = {}) { - return props.navigation && typeof props.navigation.nextEl === 'undefined' && typeof props.navigation.prevEl === 'undefined'; -} - -function needsPagination(props = {}) { - return props.pagination && typeof props.pagination.el === 'undefined'; -} - -function needsScrollbar(props = {}) { - return props.scrollbar && typeof props.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(' '); -} - -export { isObject, extend, needsNavigation, needsPagination, needsScrollbar, uniqueClasses }; \ No newline at end of file diff --git a/resources/web/guide/swiper/vue/virtual.js b/resources/web/guide/swiper/vue/virtual.js deleted file mode 100644 index bd3b35dd06..0000000000 --- a/resources/web/guide/swiper/vue/virtual.js +++ /dev/null @@ -1,35 +0,0 @@ -import { h } from 'vue'; - -function updateOnVirtualData(swiper) { - if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return; - swiper.updateSlides(); - swiper.updateProgress(); - swiper.updateSlidesClasses(); - - if (swiper.lazy && swiper.params.lazy.enabled) { - swiper.lazy.load(); - } - - if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) { - swiper.parallax.setTranslate(); - } -} - -function renderVirtual(swiperRef, slides, virtualData) { - if (!virtualData) return null; - const style = swiperRef.value.isHorizontal() ? { - [swiperRef.value.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` - } : { - top: `${virtualData.offset}px` - }; - return slides.filter((slide, index) => index >= virtualData.from && index <= virtualData.to).map(slide => { - if (!slide.props) slide.props = {}; - if (!slide.props.style) slide.props.style = {}; - slide.props.swiperRef = swiperRef; - slide.props.style = style; - return h(slide.type, { ...slide.props - }, slide.children); - }); -} - -export { renderVirtual, updateOnVirtualData }; \ No newline at end of file diff --git a/resources/web/include/swiper/README.md b/resources/web/include/swiper/README.md deleted file mode 100644 index d4e726ca5b..0000000000 --- a/resources/web/include/swiper/README.md +++ /dev/null @@ -1,11 +0,0 @@ -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/resources/web/include/swiper/angular/angular/src/public-api.d.ts b/resources/web/include/swiper/angular/angular/src/public-api.d.ts deleted file mode 100644 index 5add4120da..0000000000 --- a/resources/web/include/swiper/angular/angular/src/public-api.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './swiper.module'; -export * from './swiper.component'; -export * from './swiper-slide.directive'; diff --git a/resources/web/include/swiper/angular/angular/src/swiper-slide.directive.d.ts b/resources/web/include/swiper/angular/angular/src/swiper-slide.directive.d.ts deleted file mode 100644 index 3a51adf7ee..0000000000 --- a/resources/web/include/swiper/angular/angular/src/swiper-slide.directive.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { TemplateRef } from '@angular/core'; -import * as i0 from "@angular/core"; -export declare class SwiperSlideDirective { - template: TemplateRef; - virtualIndex: number; - class: string; - autoplayDelay: string | null; - set zoom(val: boolean); - get zoom(): boolean; - private _zoom; - slideIndex: number; - get classNames(): string; - set classNames(val: string); - private _hasClass; - slideData: { - isActive: boolean; - isPrev: boolean; - isNext: boolean; - isVisible: boolean; - isDuplicate: boolean; - }; - private _classNames; - constructor(template: TemplateRef); - static ɵfac: i0.ɵɵFactoryDeclaration; - static ɵdir: i0.ɵɵDirectiveDeclaration; -} diff --git a/resources/web/include/swiper/angular/angular/src/swiper.component.d.ts b/resources/web/include/swiper/angular/angular/src/swiper.component.d.ts deleted file mode 100644 index bf85023b8f..0000000000 --- a/resources/web/include/swiper/angular/angular/src/swiper.component.d.ts +++ /dev/null @@ -1,252 +0,0 @@ -import { ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnInit, QueryList, SimpleChanges } from '@angular/core'; -import Swiper from 'swiper'; -import { Observable, Subject } from 'rxjs'; -import { SwiperSlideDirective } from './swiper-slide.directive'; -import { SwiperOptions, SwiperEvents, NavigationOptions, PaginationOptions, ScrollbarOptions, VirtualOptions } from 'swiper/types'; -import * as i0 from "@angular/core"; -export declare class SwiperComponent implements OnInit { - private _ngZone; - private elementRef; - private _changeDetectorRef; - private _platformId; - enabled: SwiperOptions['enabled']; - direction: SwiperOptions['direction']; - touchEventsTarget: SwiperOptions['touchEventsTarget']; - initialSlide: SwiperOptions['initialSlide']; - speed: SwiperOptions['speed']; - cssMode: SwiperOptions['cssMode']; - updateOnWindowResize: SwiperOptions['updateOnWindowResize']; - resizeObserver: SwiperOptions['resizeObserver']; - nested: SwiperOptions['nested']; - focusableElements: SwiperOptions['focusableElements']; - width: SwiperOptions['width']; - height: SwiperOptions['height']; - preventInteractionOnTransition: SwiperOptions['preventInteractionOnTransition']; - userAgent: SwiperOptions['userAgent']; - url: SwiperOptions['url']; - edgeSwipeDetection: boolean | string; - edgeSwipeThreshold: number; - freeMode: SwiperOptions['freeMode']; - autoHeight: SwiperOptions['autoHeight']; - setWrapperSize: SwiperOptions['setWrapperSize']; - virtualTranslate: SwiperOptions['virtualTranslate']; - effect: SwiperOptions['effect']; - breakpoints: SwiperOptions['breakpoints']; - spaceBetween: SwiperOptions['spaceBetween']; - slidesPerView: SwiperOptions['slidesPerView']; - grid: SwiperOptions['grid']; - slidesPerGroup: SwiperOptions['slidesPerGroup']; - slidesPerGroupSkip: SwiperOptions['slidesPerGroupSkip']; - centeredSlides: SwiperOptions['centeredSlides']; - centeredSlidesBounds: SwiperOptions['centeredSlidesBounds']; - slidesOffsetBefore: SwiperOptions['slidesOffsetBefore']; - slidesOffsetAfter: SwiperOptions['slidesOffsetAfter']; - normalizeSlideIndex: SwiperOptions['normalizeSlideIndex']; - centerInsufficientSlides: SwiperOptions['centerInsufficientSlides']; - watchOverflow: SwiperOptions['watchOverflow']; - roundLengths: SwiperOptions['roundLengths']; - touchRatio: SwiperOptions['touchRatio']; - touchAngle: SwiperOptions['touchAngle']; - simulateTouch: SwiperOptions['simulateTouch']; - shortSwipes: SwiperOptions['shortSwipes']; - longSwipes: SwiperOptions['longSwipes']; - longSwipesRatio: SwiperOptions['longSwipesRatio']; - longSwipesMs: SwiperOptions['longSwipesMs']; - followFinger: SwiperOptions['followFinger']; - allowTouchMove: SwiperOptions['allowTouchMove']; - threshold: SwiperOptions['threshold']; - touchMoveStopPropagation: SwiperOptions['touchMoveStopPropagation']; - touchStartPreventDefault: SwiperOptions['touchStartPreventDefault']; - touchStartForcePreventDefault: SwiperOptions['touchStartForcePreventDefault']; - touchReleaseOnEdges: SwiperOptions['touchReleaseOnEdges']; - uniqueNavElements: SwiperOptions['uniqueNavElements']; - resistance: SwiperOptions['resistance']; - resistanceRatio: SwiperOptions['resistanceRatio']; - watchSlidesProgress: SwiperOptions['watchSlidesProgress']; - grabCursor: SwiperOptions['grabCursor']; - preventClicks: SwiperOptions['preventClicks']; - preventClicksPropagation: SwiperOptions['preventClicksPropagation']; - slideToClickedSlide: SwiperOptions['slideToClickedSlide']; - preloadImages: SwiperOptions['preloadImages']; - updateOnImagesReady: SwiperOptions['updateOnImagesReady']; - loop: SwiperOptions['loop']; - loopAdditionalSlides: SwiperOptions['loopAdditionalSlides']; - loopedSlides: SwiperOptions['loopedSlides']; - loopFillGroupWithBlank: SwiperOptions['loopFillGroupWithBlank']; - loopPreventsSlide: SwiperOptions['loopPreventsSlide']; - allowSlidePrev: SwiperOptions['allowSlidePrev']; - allowSlideNext: SwiperOptions['allowSlideNext']; - swipeHandler: SwiperOptions['swipeHandler']; - noSwiping: SwiperOptions['noSwiping']; - noSwipingClass: SwiperOptions['noSwipingClass']; - noSwipingSelector: SwiperOptions['noSwipingSelector']; - passiveListeners: SwiperOptions['passiveListeners']; - containerModifierClass: SwiperOptions['containerModifierClass']; - slideClass: SwiperOptions['slideClass']; - slideBlankClass: SwiperOptions['slideBlankClass']; - slideActiveClass: SwiperOptions['slideActiveClass']; - slideDuplicateActiveClass: SwiperOptions['slideDuplicateActiveClass']; - slideVisibleClass: SwiperOptions['slideVisibleClass']; - slideDuplicateClass: SwiperOptions['slideDuplicateClass']; - slideNextClass: SwiperOptions['slideNextClass']; - slideDuplicateNextClass: SwiperOptions['slideDuplicateNextClass']; - slidePrevClass: SwiperOptions['slidePrevClass']; - slideDuplicatePrevClass: SwiperOptions['slideDuplicatePrevClass']; - wrapperClass: SwiperOptions['wrapperClass']; - runCallbacksOnInit: SwiperOptions['runCallbacksOnInit']; - observeParents: SwiperOptions['observeParents']; - observeSlideChildren: SwiperOptions['observeSlideChildren']; - a11y: SwiperOptions['a11y']; - autoplay: SwiperOptions['autoplay']; - controller: SwiperOptions['controller']; - coverflowEffect: SwiperOptions['coverflowEffect']; - cubeEffect: SwiperOptions['cubeEffect']; - fadeEffect: SwiperOptions['fadeEffect']; - flipEffect: SwiperOptions['flipEffect']; - creativeEffect: SwiperOptions['creativeEffect']; - cardsEffect: SwiperOptions['cardsEffect']; - hashNavigation: SwiperOptions['hashNavigation']; - history: SwiperOptions['history']; - keyboard: SwiperOptions['keyboard']; - lazy: SwiperOptions['lazy']; - mousewheel: SwiperOptions['mousewheel']; - parallax: SwiperOptions['parallax']; - thumbs: SwiperOptions['thumbs']; - zoom: SwiperOptions['zoom']; - class: string; - id: string; - set navigation(val: boolean | "" | NavigationOptions); - get navigation(): boolean | "" | NavigationOptions; - private _navigation; - showNavigation: boolean; - set pagination(val: boolean | "" | PaginationOptions); - get pagination(): boolean | "" | PaginationOptions; - private _pagination; - showPagination: boolean; - set scrollbar(val: boolean | "" | ScrollbarOptions); - get scrollbar(): boolean | "" | ScrollbarOptions; - private _scrollbar; - showScrollbar: boolean; - set virtual(val: boolean | "" | VirtualOptions); - get virtual(): boolean | "" | VirtualOptions; - private _virtual; - set index(index: number); - set config(val: SwiperOptions); - s__beforeBreakpoint: EventEmitter; - s__containerClasses: EventEmitter; - s__slideClass: EventEmitter; - s__swiper: EventEmitter; - s_activeIndexChange: EventEmitter; - s_afterInit: EventEmitter; - s_autoplay: EventEmitter; - s_autoplayStart: EventEmitter; - s_autoplayStop: EventEmitter; - s_beforeDestroy: EventEmitter; - s_beforeInit: EventEmitter; - s_beforeLoopFix: EventEmitter; - s_beforeResize: EventEmitter; - s_beforeSlideChangeStart: EventEmitter; - s_beforeTransitionStart: EventEmitter; - s_breakpoint: EventEmitter; - s_changeDirection: EventEmitter; - s_click: EventEmitter; - s_doubleTap: EventEmitter; - s_doubleClick: EventEmitter; - s_destroy: EventEmitter; - s_fromEdge: EventEmitter; - s_hashChange: EventEmitter; - s_hashSet: EventEmitter; - s_imagesReady: EventEmitter; - s_init: EventEmitter; - s_keyPress: EventEmitter; - s_lazyImageLoad: EventEmitter; - s_lazyImageReady: EventEmitter; - s_loopFix: EventEmitter; - s_momentumBounce: EventEmitter; - s_navigationHide: EventEmitter; - s_navigationShow: EventEmitter; - s_observerUpdate: EventEmitter; - s_orientationchange: EventEmitter; - s_paginationHide: EventEmitter; - s_paginationRender: EventEmitter; - s_paginationShow: EventEmitter; - s_paginationUpdate: EventEmitter; - s_progress: EventEmitter; - s_reachBeginning: EventEmitter; - s_reachEnd: EventEmitter; - s_realIndexChange: EventEmitter; - s_resize: EventEmitter; - s_scroll: EventEmitter; - s_scrollbarDragEnd: EventEmitter; - s_scrollbarDragMove: EventEmitter; - s_scrollbarDragStart: EventEmitter; - s_setTransition: EventEmitter; - s_setTranslate: EventEmitter; - s_slideChange: EventEmitter; - s_slideChangeTransitionEnd: EventEmitter; - s_slideChangeTransitionStart: EventEmitter; - s_slideNextTransitionEnd: EventEmitter; - s_slideNextTransitionStart: EventEmitter; - s_slidePrevTransitionEnd: EventEmitter; - s_slidePrevTransitionStart: EventEmitter; - s_slideResetTransitionStart: EventEmitter; - s_slideResetTransitionEnd: EventEmitter; - s_sliderMove: EventEmitter; - s_sliderFirstMove: EventEmitter; - s_slidesLengthChange: EventEmitter; - s_slidesGridLengthChange: EventEmitter; - s_snapGridLengthChange: EventEmitter; - s_snapIndexChange: EventEmitter; - s_tap: EventEmitter; - s_toEdge: EventEmitter; - s_touchEnd: EventEmitter; - s_touchMove: EventEmitter; - s_touchMoveOpposite: EventEmitter; - s_touchStart: EventEmitter; - s_transitionEnd: EventEmitter; - s_transitionStart: EventEmitter; - s_update: EventEmitter; - s_zoomChange: EventEmitter; - s_swiper: EventEmitter; - indexChange: EventEmitter; - set prevElRef(el: ElementRef); - _prevElRef: ElementRef; - set nextElRef(el: ElementRef); - _nextElRef: ElementRef; - set scrollbarElRef(el: ElementRef); - _scrollbarElRef: ElementRef; - set paginationElRef(el: ElementRef); - _paginationElRef: ElementRef; - slidesEl: QueryList; - private slides; - prependSlides: Observable; - appendSlides: Observable; - swiperRef: Swiper; - readonly _activeSlides: Subject; - get activeSlides(): Observable; - get zoomContainerClass(): string; - containerClasses: string; - constructor(_ngZone: NgZone, elementRef: ElementRef, _changeDetectorRef: ChangeDetectorRef, _platformId: Object); - private _setElement; - ngOnInit(): void; - ngAfterViewInit(): void; - private childrenSlidesInit; - private slidesChanges; - get isSwiperActive(): boolean; - initSwiper(): void; - style: any; - currentVirtualData: any; - private updateVirtualSlides; - ngOnChanges(changedParams: SimpleChanges): void; - updateInitSwiper(changedParams: any): void; - updateSwiper(changedParams: SimpleChanges | any): void; - calcLoopedSlides(): number; - updateParameter(key: string, value: any): void; - /** - * @deprecated will be removed in upcoming versions - */ - setIndex(index: number, speed?: number, silent?: boolean): void; - ngOnDestroy(): void; - static ɵfac: i0.ɵɵFactoryDeclaration; - static ɵcmp: i0.ɵɵComponentDeclaration; -} diff --git a/resources/web/include/swiper/angular/angular/src/swiper.module.d.ts b/resources/web/include/swiper/angular/angular/src/swiper.module.d.ts deleted file mode 100644 index 9567f38f2a..0000000000 --- a/resources/web/include/swiper/angular/angular/src/swiper.module.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import * as i0 from "@angular/core"; -import * as i1 from "./swiper.component"; -import * as i2 from "./swiper-slide.directive"; -import * as i3 from "@angular/common"; -export declare class SwiperModule { - static ɵfac: i0.ɵɵFactoryDeclaration; - static ɵmod: i0.ɵɵNgModuleDeclaration; - static ɵinj: i0.ɵɵInjectorDeclaration; -} diff --git a/resources/web/include/swiper/angular/angular/src/utils/get-params.d.ts b/resources/web/include/swiper/angular/angular/src/utils/get-params.d.ts deleted file mode 100644 index 25ffc821e0..0000000000 --- a/resources/web/include/swiper/angular/angular/src/utils/get-params.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export declare const allowedParams: string[]; -export declare function getParams(obj?: any): { - params: any; - passedParams: any; - rest: any; -}; diff --git a/resources/web/include/swiper/angular/angular/src/utils/params-list.d.ts b/resources/web/include/swiper/angular/angular/src/utils/params-list.d.ts deleted file mode 100644 index 7f2dc1dcd5..0000000000 --- a/resources/web/include/swiper/angular/angular/src/utils/params-list.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const paramsList: string[]; diff --git a/resources/web/include/swiper/angular/angular/src/utils/utils.d.ts b/resources/web/include/swiper/angular/angular/src/utils/utils.d.ts deleted file mode 100644 index a4ce4b05a9..0000000000 --- a/resources/web/include/swiper/angular/angular/src/utils/utils.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export declare function isObject(o: any): boolean; -export declare function isShowEl(val: any, obj: any, el: any): boolean; -export declare function extend(target: any, src: any): void; -export declare function coerceBooleanProperty(value: any): boolean; -export declare const ignoreNgOnChanges: string[]; -export declare function setProperty(val: any, obj?: {}): {} | false; diff --git a/resources/web/include/swiper/angular/bundles/swiper_angular.umd.js b/resources/web/include/swiper/angular/bundles/swiper_angular.umd.js deleted file mode 100644 index a6b110e499..0000000000 --- a/resources/web/include/swiper/angular/bundles/swiper_angular.umd.js +++ /dev/null @@ -1,1830 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('swiper'), require('rxjs')) : - typeof define === 'function' && define.amd ? define('swiper_angular', ['exports', '@angular/core', '@angular/common', 'swiper', 'rxjs'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.swiper_angular = {}, global.ng.core, global.ng.common, global.Swiper, global.rxjs)); -}(this, (function (exports, i0, i1, Swiper, rxjs) { 'use strict'; - - function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } - - function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { - return e[k]; - } - }); - } - }); - } - n['default'] = e; - return Object.freeze(n); - } - - var i0__namespace = /*#__PURE__*/_interopNamespace(i0); - var i1__namespace = /*#__PURE__*/_interopNamespace(i1); - var Swiper__default = /*#__PURE__*/_interopDefaultLegacy(Swiper); - - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. - ***************************************************************************** */ - /* global Reflect, Promise */ - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) - if (Object.prototype.hasOwnProperty.call(b, p)) - d[p] = b[p]; }; - return extendStatics(d, b); - }; - function __extends(d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - var __assign = function () { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) - if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - }; - function __rest(s, e) { - var t = {}; - for (var p in s) - if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; - } - function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") - r = Reflect.decorate(decorators, target, key, desc); - else - for (var i = decorators.length - 1; i >= 0; i--) - if (d = decorators[i]) - r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - } - function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); }; - } - function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") - return Reflect.metadata(metadataKey, metadataValue); - } - function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { - step(generator.next(value)); - } - catch (e) { - reject(e); - } } - function rejected(value) { try { - step(generator["throw"](value)); - } - catch (e) { - reject(e); - } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - } - function __generator(thisArg, body) { - var _ = { label: 0, sent: function () { if (t[0] & 1) - throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) - throw new TypeError("Generator is already executing."); - while (_) - try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) - return t; - if (y = 0, t) - op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: - case 1: - t = op; - break; - case 4: - _.label++; - return { value: op[1], done: false }; - case 5: - _.label++; - y = op[1]; - op = [0]; - continue; - case 7: - op = _.ops.pop(); - _.trys.pop(); - continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { - _ = 0; - continue; - } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { - _.label = op[1]; - break; - } - if (op[0] === 6 && _.label < t[1]) { - _.label = t[1]; - t = op; - break; - } - if (t && _.label < t[2]) { - _.label = t[2]; - _.ops.push(op); - break; - } - if (t[2]) - _.ops.pop(); - _.trys.pop(); - continue; - } - op = body.call(thisArg, _); - } - catch (e) { - op = [6, e]; - y = 0; - } - finally { - f = t = 0; - } - if (op[0] & 5) - throw op[1]; - return { value: op[0] ? op[1] : void 0, done: true }; - } - } - var __createBinding = Object.create ? (function (o, m, k, k2) { - if (k2 === undefined) - k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } }); - }) : (function (o, m, k, k2) { - if (k2 === undefined) - k2 = k; - o[k2] = m[k]; - }); - function __exportStar(m, o) { - for (var p in m) - if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) - __createBinding(o, m, p); - } - function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) - return m.call(o); - if (o && typeof o.length === "number") - return { - next: function () { - if (o && i >= o.length) - o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); - } - function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) - return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) - ar.push(r.value); - } - catch (error) { - e = { error: error }; - } - finally { - try { - if (r && !r.done && (m = i["return"])) - m.call(i); - } - finally { - if (e) - throw e.error; - } - } - return ar; - } - /** @deprecated */ - function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; - } - /** @deprecated */ - function __spreadArrays() { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) - s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; - } - function __spreadArray(to, from, pack) { - if (pack || arguments.length === 2) - for (var i = 0, l = from.length, ar; i < l; i++) { - if (ar || !(i in from)) { - if (!ar) - ar = Array.prototype.slice.call(from, 0, i); - ar[i] = from[i]; - } - } - return to.concat(ar || Array.prototype.slice.call(from)); - } - function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); - } - function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) - throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; - function verb(n) { if (g[n]) - i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } - function resume(n, v) { try { - step(g[n](v)); - } - catch (e) { - settle(q[0][3], e); - } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) - resume(q[0][0], q[0][1]); } - } - function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } - } - function __asyncValues(o) { - if (!Symbol.asyncIterator) - throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); } - } - function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { value: raw }); - } - else { - cooked.raw = raw; - } - return cooked; - } - ; - var __setModuleDefault = Object.create ? (function (o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - }) : function (o, v) { - o["default"] = v; - }; - function __importStar(mod) { - if (mod && mod.__esModule) - return mod; - var result = {}; - if (mod != null) - for (var k in mod) - if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - } - function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; - } - function __classPrivateFieldGet(receiver, state, kind, f) { - if (kind === "a" && !f) - throw new TypeError("Private accessor was defined without a getter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) - throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); - } - function __classPrivateFieldSet(receiver, state, value, kind, f) { - if (kind === "m") - throw new TypeError("Private method is not writable"); - if (kind === "a" && !f) - throw new TypeError("Private accessor was defined without a setter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) - throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; - } - - function isObject(o) { - return (typeof o === 'object' && - o !== null && - o.constructor && - Object.prototype.toString.call(o).slice(8, -1) === 'Object'); - } - function isShowEl(val, obj, el) { - return ((coerceBooleanProperty(val) === true && obj && !obj.el) || - !(typeof obj !== 'boolean' && - obj.el !== (el === null || el === void 0 ? void 0 : el.nativeElement) && - (typeof obj.el === 'string' || typeof obj.el === 'object'))); - } - function extend(target, src) { - var noExtend = ['__proto__', 'constructor', 'prototype']; - Object.keys(src) - .filter(function (key) { return noExtend.indexOf(key) < 0; }) - .forEach(function (key) { - if (typeof target[key] === 'undefined') { - target[key] = src[key]; - return; - } - if (target[key] && !src[key]) { - return; - } - 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 coerceBooleanProperty(value) { - return value != null && "" + value !== 'false'; - } - var ignoreNgOnChanges = ['pagination', 'navigation', 'scrollbar', 'virtual']; - function setProperty(val, obj) { - if (obj === void 0) { obj = {}; } - if (isObject(val)) { - return val; - } - if (coerceBooleanProperty(val) === true) { - return obj; - } - return false; - } - - /* underscore in name -> watch for changes */ - var paramsList = [ - 'init', - 'enabled', - '_direction', - 'touchEventsTarget', - 'initialSlide', - '_speed', - 'cssMode', - 'updateOnWindowResize', - 'resizeObserver', - 'nested', - 'focusableElements', - '_width', - '_height', - 'preventInteractionOnTransition', - 'userAgent', - 'url', - '_edgeSwipeDetection', - '_edgeSwipeThreshold', - '_freeMode', - '_autoHeight', - 'setWrapperSize', - 'virtualTranslate', - '_effect', - 'breakpoints', - '_spaceBetween', - '_slidesPerView', - '_grid', - '_slidesPerGroup', - '_slidesPerGroupSkip', - '_centeredSlides', - '_centeredSlidesBounds', - '_slidesOffsetBefore', - '_slidesOffsetAfter', - 'normalizeSlideIndex', - '_centerInsufficientSlides', - '_watchOverflow', - 'roundLengths', - 'touchRatio', - 'touchAngle', - 'simulateTouch', - '_shortSwipes', - '_longSwipes', - 'longSwipesRatio', - 'longSwipesMs', - '_followFinger', - 'allowTouchMove', - '_threshold', - 'touchMoveStopPropagation', - 'touchStartPreventDefault', - 'touchStartForcePreventDefault', - 'touchReleaseOnEdges', - 'uniqueNavElements', - '_resistance', - '_resistanceRatio', - '_watchSlidesProgress', - '_grabCursor', - 'preventClicks', - 'preventClicksPropagation', - '_slideToClickedSlide', - '_preloadImages', - 'updateOnImagesReady', - '_loop', - '_loopAdditionalSlides', - '_loopedSlides', - '_loopFillGroupWithBlank', - 'loopPreventsSlide', - '_allowSlidePrev', - '_allowSlideNext', - '_swipeHandler', - '_noSwiping', - 'noSwipingClass', - 'noSwipingSelector', - 'passiveListeners', - 'containerModifierClass', - 'slideClass', - 'slideBlankClass', - 'slideActiveClass', - 'slideDuplicateActiveClass', - 'slideVisibleClass', - 'slideDuplicateClass', - 'slideNextClass', - 'slideDuplicateNextClass', - 'slidePrevClass', - 'slideDuplicatePrevClass', - 'wrapperClass', - 'runCallbacksOnInit', - 'observer', - 'observeParents', - 'observeSlideChildren', - // modules - 'a11y', - 'autoplay', - '_controller', - 'coverflowEffect', - 'cubeEffect', - 'fadeEffect', - 'flipEffect', - 'creativeEffect', - 'cardsEffect', - 'hashNavigation', - 'history', - 'keyboard', - 'lazy', - 'mousewheel', - '_navigation', - '_pagination', - 'parallax', - '_scrollbar', - '_thumbs', - 'virtual', - 'zoom', - ]; - - // eslint-disable-next-line - var allowedParams = paramsList.map(function (key) { return key.replace(/_/, ''); }); - function getParams(obj) { - if (obj === void 0) { obj = {}; } - var params = { - on: {}, - }; - var passedParams = {}; - extend(params, Swiper__default['default'].defaults); - extend(params, Swiper__default['default'].extendedDefaults); - params._emitClasses = true; - var rest = {}; - Object.keys(obj).forEach(function (key) { - var _key = key.replace(/^_/, ''); - 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 { - rest[_key] = obj[_key]; - } - }); - return { params: params, passedParams: passedParams, rest: rest }; - } - - var SwiperSlideDirective = /** @class */ (function () { - function SwiperSlideDirective(template) { - this.template = template; - this.class = ''; - this.autoplayDelay = null; - this.slideData = { - isActive: false, - isPrev: false, - isNext: false, - isVisible: false, - isDuplicate: false, - }; - } - Object.defineProperty(SwiperSlideDirective.prototype, "zoom", { - get: function () { - return this._zoom; - }, - set: function (val) { - this._zoom = coerceBooleanProperty(val); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperSlideDirective.prototype, "classNames", { - get: function () { - return this._classNames; - }, - set: function (val) { - if (this._classNames === val) { - return; - } - this._classNames = val; - this.slideData = { - isActive: this._hasClass(['swiper-slide-active', 'swiper-slide-duplicate-active']), - isVisible: this._hasClass(['swiper-slide-visible']), - isDuplicate: this._hasClass(['swiper-slide-duplicate']), - isPrev: this._hasClass(['swiper-slide-prev', 'swiper-slide-duplicate-prev']), - isNext: this._hasClass(['swiper-slide-next', 'swiper-slide-duplicate-next']), - }; - }, - enumerable: false, - configurable: true - }); - SwiperSlideDirective.prototype._hasClass = function (classNames) { - var _this = this; - return classNames.some(function (className) { return _this._classNames.indexOf(className) >= 0; }); - }; - return SwiperSlideDirective; - }()); - SwiperSlideDirective.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0__namespace, type: SwiperSlideDirective, deps: [{ token: i0__namespace.TemplateRef }], target: i0__namespace.ɵɵFactoryTarget.Directive }); - SwiperSlideDirective.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.2", type: SwiperSlideDirective, selector: "ng-template[swiperSlide]", inputs: { virtualIndex: "virtualIndex", class: "class", autoplayDelay: ["data-swiper-autoplay", "autoplayDelay"], zoom: "zoom" }, ngImport: i0__namespace }); - i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0__namespace, type: SwiperSlideDirective, decorators: [{ - type: i0.Directive, - args: [{ - selector: 'ng-template[swiperSlide]', - }] - }], ctorParameters: function () { return [{ type: i0__namespace.TemplateRef }]; }, propDecorators: { virtualIndex: [{ - type: i0.Input - }], class: [{ - type: i0.Input - }], autoplayDelay: [{ - type: i0.Input, - args: ['data-swiper-autoplay'] - }], zoom: [{ - type: i0.Input - }] } }); - - var SwiperComponent = /** @class */ (function () { - function SwiperComponent(_ngZone, elementRef, _changeDetectorRef, _platformId) { - var _this = this; - this._ngZone = _ngZone; - this.elementRef = elementRef; - this._changeDetectorRef = _changeDetectorRef; - this._platformId = _platformId; - this.slideClass = 'swiper-slide'; - this.wrapperClass = 'swiper-wrapper'; - this.showNavigation = true; - this.showPagination = true; - this.showScrollbar = true; - // prettier-ignore - this.s__beforeBreakpoint = new i0.EventEmitter(); - // prettier-ignore - this.s__containerClasses = new i0.EventEmitter(); - // prettier-ignore - this.s__slideClass = new i0.EventEmitter(); - // prettier-ignore - this.s__swiper = new i0.EventEmitter(); - // prettier-ignore - this.s_activeIndexChange = new i0.EventEmitter(); - // prettier-ignore - this.s_afterInit = new i0.EventEmitter(); - // prettier-ignore - this.s_autoplay = new i0.EventEmitter(); - // prettier-ignore - this.s_autoplayStart = new i0.EventEmitter(); - // prettier-ignore - this.s_autoplayStop = new i0.EventEmitter(); - // prettier-ignore - this.s_beforeDestroy = new i0.EventEmitter(); - // prettier-ignore - this.s_beforeInit = new i0.EventEmitter(); - // prettier-ignore - this.s_beforeLoopFix = new i0.EventEmitter(); - // prettier-ignore - this.s_beforeResize = new i0.EventEmitter(); - // prettier-ignore - this.s_beforeSlideChangeStart = new i0.EventEmitter(); - // prettier-ignore - this.s_beforeTransitionStart = new i0.EventEmitter(); - // prettier-ignore - this.s_breakpoint = new i0.EventEmitter(); - // prettier-ignore - this.s_changeDirection = new i0.EventEmitter(); - // prettier-ignore - this.s_click = new i0.EventEmitter(); - // prettier-ignore - this.s_doubleTap = new i0.EventEmitter(); - // prettier-ignore - this.s_doubleClick = new i0.EventEmitter(); - // prettier-ignore - this.s_destroy = new i0.EventEmitter(); - // prettier-ignore - this.s_fromEdge = new i0.EventEmitter(); - // prettier-ignore - this.s_hashChange = new i0.EventEmitter(); - // prettier-ignore - this.s_hashSet = new i0.EventEmitter(); - // prettier-ignore - this.s_imagesReady = new i0.EventEmitter(); - // prettier-ignore - this.s_init = new i0.EventEmitter(); - // prettier-ignore - this.s_keyPress = new i0.EventEmitter(); - // prettier-ignore - this.s_lazyImageLoad = new i0.EventEmitter(); - // prettier-ignore - this.s_lazyImageReady = new i0.EventEmitter(); - // prettier-ignore - this.s_loopFix = new i0.EventEmitter(); - // prettier-ignore - this.s_momentumBounce = new i0.EventEmitter(); - // prettier-ignore - this.s_navigationHide = new i0.EventEmitter(); - // prettier-ignore - this.s_navigationShow = new i0.EventEmitter(); - // prettier-ignore - this.s_observerUpdate = new i0.EventEmitter(); - // prettier-ignore - this.s_orientationchange = new i0.EventEmitter(); - // prettier-ignore - this.s_paginationHide = new i0.EventEmitter(); - // prettier-ignore - this.s_paginationRender = new i0.EventEmitter(); - // prettier-ignore - this.s_paginationShow = new i0.EventEmitter(); - // prettier-ignore - this.s_paginationUpdate = new i0.EventEmitter(); - // prettier-ignore - this.s_progress = new i0.EventEmitter(); - // prettier-ignore - this.s_reachBeginning = new i0.EventEmitter(); - // prettier-ignore - this.s_reachEnd = new i0.EventEmitter(); - // prettier-ignore - this.s_realIndexChange = new i0.EventEmitter(); - // prettier-ignore - this.s_resize = new i0.EventEmitter(); - // prettier-ignore - this.s_scroll = new i0.EventEmitter(); - // prettier-ignore - this.s_scrollbarDragEnd = new i0.EventEmitter(); - // prettier-ignore - this.s_scrollbarDragMove = new i0.EventEmitter(); - // prettier-ignore - this.s_scrollbarDragStart = new i0.EventEmitter(); - // prettier-ignore - this.s_setTransition = new i0.EventEmitter(); - // prettier-ignore - this.s_setTranslate = new i0.EventEmitter(); - // prettier-ignore - this.s_slideChange = new i0.EventEmitter(); - // prettier-ignore - this.s_slideChangeTransitionEnd = new i0.EventEmitter(); - // prettier-ignore - this.s_slideChangeTransitionStart = new i0.EventEmitter(); - // prettier-ignore - this.s_slideNextTransitionEnd = new i0.EventEmitter(); - // prettier-ignore - this.s_slideNextTransitionStart = new i0.EventEmitter(); - // prettier-ignore - this.s_slidePrevTransitionEnd = new i0.EventEmitter(); - // prettier-ignore - this.s_slidePrevTransitionStart = new i0.EventEmitter(); - // prettier-ignore - this.s_slideResetTransitionStart = new i0.EventEmitter(); - // prettier-ignore - this.s_slideResetTransitionEnd = new i0.EventEmitter(); - // prettier-ignore - this.s_sliderMove = new i0.EventEmitter(); - // prettier-ignore - this.s_sliderFirstMove = new i0.EventEmitter(); - // prettier-ignore - this.s_slidesLengthChange = new i0.EventEmitter(); - // prettier-ignore - this.s_slidesGridLengthChange = new i0.EventEmitter(); - // prettier-ignore - this.s_snapGridLengthChange = new i0.EventEmitter(); - // prettier-ignore - this.s_snapIndexChange = new i0.EventEmitter(); - // prettier-ignore - this.s_tap = new i0.EventEmitter(); - // prettier-ignore - this.s_toEdge = new i0.EventEmitter(); - // prettier-ignore - this.s_touchEnd = new i0.EventEmitter(); - // prettier-ignore - this.s_touchMove = new i0.EventEmitter(); - // prettier-ignore - this.s_touchMoveOpposite = new i0.EventEmitter(); - // prettier-ignore - this.s_touchStart = new i0.EventEmitter(); - // prettier-ignore - this.s_transitionEnd = new i0.EventEmitter(); - // prettier-ignore - this.s_transitionStart = new i0.EventEmitter(); - // prettier-ignore - this.s_update = new i0.EventEmitter(); - // prettier-ignore - this.s_zoomChange = new i0.EventEmitter(); - // prettier-ignore - this.s_swiper = new i0.EventEmitter(); - this.indexChange = new i0.EventEmitter(); - this._activeSlides = new rxjs.Subject(); - this.containerClasses = 'swiper'; - this.slidesChanges = function (val) { - _this.slides = val.map(function (slide, index) { - slide.slideIndex = index; - slide.classNames = _this.slideClass || ''; - return slide; - }); - if (_this.loop && !_this.loopedSlides) { - _this.calcLoopedSlides(); - } - if (!_this.virtual) { - if (_this.loopedSlides) { - _this.prependSlides = rxjs.of(_this.slides.slice(_this.slides.length - _this.loopedSlides)); - _this.appendSlides = rxjs.of(_this.slides.slice(0, _this.loopedSlides)); - } - } - else if (_this.swiperRef && _this.swiperRef.virtual) { - _this._ngZone.runOutsideAngular(function () { - _this.swiperRef.virtual.slides = _this.slides; - _this.swiperRef.virtual.update(true); - }); - } - _this._changeDetectorRef.detectChanges(); - }; - this.style = null; - this.updateVirtualSlides = function (virtualData) { - var _d; - // TODO: type virtualData - if (!_this.swiperRef || - (_this.currentVirtualData && - _this.currentVirtualData.from === virtualData.from && - _this.currentVirtualData.to === virtualData.to && - _this.currentVirtualData.offset === virtualData.offset)) { - return; - } - _this.style = _this.swiperRef.isHorizontal() - ? (_d = {}, - _d[_this.swiperRef.rtlTranslate ? 'right' : 'left'] = virtualData.offset + "px", - _d) : { - top: virtualData.offset + "px", - }; - _this.currentVirtualData = virtualData; - _this._activeSlides.next(virtualData.slides); - _this._ngZone.run(function () { - _this._changeDetectorRef.detectChanges(); - }); - _this._ngZone.runOutsideAngular(function () { - _this.swiperRef.updateSlides(); - _this.swiperRef.updateProgress(); - _this.swiperRef.updateSlidesClasses(); - if (_this.swiperRef.lazy && _this.swiperRef.params.lazy['enabled']) { - _this.swiperRef.lazy.load(); - } - _this.swiperRef.virtual.update(true); - }); - return; - }; - } - Object.defineProperty(SwiperComponent.prototype, "navigation", { - get: function () { - return this._navigation; - }, - set: function (val) { - var _a, _b, _c; - var currentNext = typeof this._navigation !== 'boolean' && this._navigation !== '' - ? (_a = this._navigation) === null || _a === void 0 ? void 0 : _a.nextEl - : null; - var currentPrev = typeof this._navigation !== 'boolean' && this._navigation !== '' - ? (_b = this._navigation) === null || _b === void 0 ? void 0 : _b.prevEl - : null; - this._navigation = setProperty(val, { - nextEl: currentNext || null, - prevEl: currentPrev || null, - }); - this.showNavigation = !(coerceBooleanProperty(val) !== true || - (this._navigation && - typeof this._navigation !== 'boolean' && - this._navigation.prevEl !== ((_c = this._prevElRef) === null || _c === void 0 ? void 0 : _c.nativeElement) && - (this._navigation.prevEl !== null || this._navigation.nextEl !== null) && - (typeof this._navigation.nextEl === 'string' || - typeof this._navigation.prevEl === 'string' || - typeof this._navigation.nextEl === 'object' || - typeof this._navigation.prevEl === 'object'))); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "pagination", { - get: function () { - return this._pagination; - }, - set: function (val) { - var _a; - var current = typeof this._pagination !== 'boolean' && this._pagination !== '' - ? (_a = this._pagination) === null || _a === void 0 ? void 0 : _a.el - : null; - this._pagination = setProperty(val, { - el: current || null, - }); - this.showPagination = isShowEl(val, this._pagination, this._paginationElRef); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "scrollbar", { - get: function () { - return this._scrollbar; - }, - set: function (val) { - var _a; - var current = typeof this._scrollbar !== 'boolean' && this._scrollbar !== '' ? (_a = this._scrollbar) === null || _a === void 0 ? void 0 : _a.el : null; - this._scrollbar = setProperty(val, { - el: current || null, - }); - this.showScrollbar = isShowEl(val, this._scrollbar, this._scrollbarElRef); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "virtual", { - get: function () { - return this._virtual; - }, - set: function (val) { - this._virtual = setProperty(val); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "index", { - set: function (index) { - console.warn('`[(index)]` prop is deprecated and will be removed in upcoming versions'); - this.setIndex(index); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "config", { - set: function (val) { - this.updateSwiper(val); - var params = getParams(val).params; - Object.assign(this, params); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "prevElRef", { - set: function (el) { - this._prevElRef = el; - this._setElement(el, this.navigation, 'navigation', 'prevEl'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "nextElRef", { - set: function (el) { - this._nextElRef = el; - this._setElement(el, this.navigation, 'navigation', 'nextEl'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "scrollbarElRef", { - set: function (el) { - this._scrollbarElRef = el; - this._setElement(el, this.scrollbar, 'scrollbar'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "paginationElRef", { - set: function (el) { - this._paginationElRef = el; - this._setElement(el, this.pagination, 'pagination'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "activeSlides", { - get: function () { - if (this.virtual) { - return this._activeSlides; - } - return rxjs.of(this.slides); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(SwiperComponent.prototype, "zoomContainerClass", { - get: function () { - return this.zoom && typeof this.zoom !== 'boolean' - ? this.zoom.containerClass - : 'swiper-zoom-container'; - }, - enumerable: false, - configurable: true - }); - SwiperComponent.prototype._setElement = function (el, ref, update, key) { - if (key === void 0) { key = 'el'; } - if (!el || !ref) { - return; - } - if (ref && el.nativeElement) { - if (ref[key] === el.nativeElement) { - return; - } - ref[key] = el.nativeElement; - } - var updateObj = {}; - updateObj[update] = true; - this.updateInitSwiper(updateObj); - }; - SwiperComponent.prototype.ngOnInit = function () { - var params = getParams(this).params; - Object.assign(this, params); - }; - SwiperComponent.prototype.ngAfterViewInit = function () { - var _this = this; - this.childrenSlidesInit(); - this.initSwiper(); - this._changeDetectorRef.detectChanges(); - setTimeout(function () { - _this.s_swiper.emit(_this.swiperRef); - }); - }; - SwiperComponent.prototype.childrenSlidesInit = function () { - this.slidesChanges(this.slidesEl); - this.slidesEl.changes.subscribe(this.slidesChanges); - }; - Object.defineProperty(SwiperComponent.prototype, "isSwiperActive", { - get: function () { - return this.swiperRef && !this.swiperRef.destroyed; - }, - enumerable: false, - configurable: true - }); - SwiperComponent.prototype.initSwiper = function () { - var _this = this; - var _d = getParams(this), swiperParams = _d.params, passedParams = _d.passedParams; - Object.assign(this, swiperParams); - this._ngZone.runOutsideAngular(function () { - swiperParams.init = false; - if (!swiperParams.virtual) { - swiperParams.observer = true; - } - swiperParams.onAny = function (eventName) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - var emitter = _this[('s_' + eventName)]; - if (emitter) { - emitter.emit.apply(emitter, __spreadArray([], __read(args))); - } - }; - var _slideClasses = function (_, updated) { - updated.forEach(function (_d, index) { - var slideEl = _d.slideEl, classNames = _d.classNames; - var dataIndex = slideEl.getAttribute('data-swiper-slide-index'); - var slideIndex = dataIndex ? parseInt(dataIndex) : index; - if (_this.virtual) { - var virtualSlide = _this.slides.find(function (item) { - return item.virtualIndex && item.virtualIndex === slideIndex; - }); - if (virtualSlide) { - virtualSlide.classNames = classNames; - return; - } - } - if (_this.slides[slideIndex]) { - _this.slides[slideIndex].classNames = classNames; - } - }); - _this._changeDetectorRef.detectChanges(); - }; - var _containerClasses = function (_, classes) { - setTimeout(function () { - _this.containerClasses = classes; - }); - }; - Object.assign(swiperParams.on, { - _containerClasses: _containerClasses, - _slideClasses: _slideClasses, - }); - var swiperRef = new Swiper__default['default'](swiperParams); - swiperRef.loopCreate = function () { }; - swiperRef.loopDestroy = function () { }; - if (swiperParams.loop) { - swiperRef.loopedSlides = _this.loopedSlides; - } - var isVirtualEnabled = typeof swiperRef.params.virtual !== 'undefined' && - typeof swiperRef.params.virtual !== 'boolean' && - swiperRef.params.virtual.enabled; - if (swiperRef.virtual && isVirtualEnabled) { - swiperRef.virtual.slides = _this.slides; - var extendWith = { - cache: false, - slides: _this.slides, - renderExternal: _this.updateVirtualSlides, - renderExternalUpdate: false, - }; - extend(swiperRef.params.virtual, extendWith); - extend(swiperRef.originalParams.virtual, extendWith); - } - if (i1.isPlatformBrowser(_this._platformId)) { - _this.swiperRef = swiperRef.init(_this.elementRef.nativeElement); - var isEnabled = typeof _this.swiperRef.params.virtual !== 'undefined' && - typeof _this.swiperRef.params.virtual !== 'boolean' && - _this.swiperRef.params.virtual.enabled; - if (_this.swiperRef.virtual && isEnabled) { - _this.swiperRef.virtual.update(true); - } - _this._changeDetectorRef.detectChanges(); - swiperRef.on('slideChange', function () { - _this.indexChange.emit(_this.swiperRef.realIndex); - }); - } - }); - }; - SwiperComponent.prototype.ngOnChanges = function (changedParams) { - this.updateSwiper(changedParams); - this._changeDetectorRef.detectChanges(); - }; - SwiperComponent.prototype.updateInitSwiper = function (changedParams) { - var _this = this; - if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) { - return; - } - this._ngZone.runOutsideAngular(function () { - var _d = _this.swiperRef, currentParams = _d.params, pagination = _d.pagination, navigation = _d.navigation, scrollbar = _d.scrollbar, virtual = _d.virtual, thumbs = _d.thumbs; - if (changedParams.pagination) { - if (_this.pagination && - typeof _this.pagination !== 'boolean' && - _this.pagination.el && - pagination && - !pagination.el) { - _this.updateParameter('pagination', _this.pagination); - pagination.init(); - pagination.render(); - pagination.update(); - } - else { - pagination.destroy(); - pagination.el = null; - } - } - if (changedParams.scrollbar) { - if (_this.scrollbar && - typeof _this.scrollbar !== 'boolean' && - _this.scrollbar.el && - scrollbar && - !scrollbar.el) { - _this.updateParameter('scrollbar', _this.scrollbar); - scrollbar.init(); - scrollbar.updateSize(); - scrollbar.setTranslate(); - } - else { - scrollbar.destroy(); - scrollbar.el = null; - } - } - if (changedParams.navigation) { - if (_this.navigation && - typeof _this.navigation !== 'boolean' && - _this.navigation.prevEl && - _this.navigation.nextEl && - navigation && - !navigation.prevEl && - !navigation.nextEl) { - _this.updateParameter('navigation', _this.navigation); - navigation.init(); - navigation.update(); - } - else if (navigation.prevEl && navigation.nextEl) { - navigation.destroy(); - navigation.nextEl = null; - navigation.prevEl = null; - } - } - if (changedParams.thumbs && _this.thumbs && _this.thumbs.swiper) { - _this.updateParameter('thumbs', _this.thumbs); - var initialized = thumbs.init(); - if (initialized) - thumbs.update(true); - } - if (changedParams.controller && _this.controller && _this.controller.control) { - _this.swiperRef.controller.control = _this.controller.control; - } - _this.swiperRef.update(); - }); - }; - SwiperComponent.prototype.updateSwiper = function (changedParams) { - var _this = this; - this._ngZone.runOutsideAngular(function () { - var _a, _b; - if (changedParams.config) { - return; - } - if (!(changedParams && _this.swiperRef && !_this.swiperRef.destroyed)) { - return; - } - for (var key in changedParams) { - if (ignoreNgOnChanges.indexOf(key) >= 0) { - continue; - } - var newValue = (_b = (_a = changedParams[key]) === null || _a === void 0 ? void 0 : _a.currentValue) !== null && _b !== void 0 ? _b : changedParams[key]; - _this.updateParameter(key, newValue); - } - if (changedParams.allowSlideNext) { - _this.swiperRef.allowSlideNext = _this.allowSlideNext; - } - if (changedParams.allowSlidePrev) { - _this.swiperRef.allowSlidePrev = _this.allowSlidePrev; - } - if (changedParams.direction) { - _this.swiperRef.changeDirection(_this.direction, false); - } - if (changedParams.breakpoints) { - if (_this.loop && !_this.loopedSlides) { - _this.calcLoopedSlides(); - } - _this.swiperRef.currentBreakpoint = null; - _this.swiperRef.setBreakpoint(); - } - if (changedParams.thumbs || changedParams.controller) { - _this.updateInitSwiper(changedParams); - } - _this.swiperRef.update(); - }); - }; - SwiperComponent.prototype.calcLoopedSlides = function () { - if (!this.loop) { - return; - } - var slidesPerViewParams = this.slidesPerView; - if (this.breakpoints) { - var breakpoint = Swiper__default['default'].prototype.getBreakpoint(this.breakpoints); - var breakpointOnlyParams = breakpoint in this.breakpoints ? this.breakpoints[breakpoint] : undefined; - if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) { - slidesPerViewParams = breakpointOnlyParams.slidesPerView; - } - } - if (slidesPerViewParams === 'auto') { - this.loopedSlides = this.slides.length; - return this.slides.length; - } - var loopedSlides = this.loopedSlides || slidesPerViewParams; - if (!loopedSlides) { - // ? - return; - } - if (this.loopAdditionalSlides) { - loopedSlides += this.loopAdditionalSlides; - } - if (loopedSlides > this.slides.length) { - loopedSlides = this.slides.length; - } - this.loopedSlides = loopedSlides; - return loopedSlides; - }; - SwiperComponent.prototype.updateParameter = function (key, value) { - if (!(this.swiperRef && !this.swiperRef.destroyed)) { - return; - } - var _key = key.replace(/^_/, ''); - var isCurrentParamObj = isObject(this.swiperRef.params[_key]); - if (Object.keys(this.swiperRef.modules).indexOf(_key) >= 0) { - var defaultParams = this.swiperRef.modules[_key].params[_key]; - if (isCurrentParamObj) { - extend(this.swiperRef.params[_key], defaultParams); - } - else { - this.swiperRef.params[_key] = defaultParams; - } - } - if (_key === 'enabled') { - if (value === true) { - this.swiperRef.enable(); - } - else if (value === false) { - this.swiperRef.disable(); - } - return; - } - if (isCurrentParamObj && isObject(value)) { - extend(this.swiperRef.params[_key], value); - } - else { - this.swiperRef.params[_key] = value; - } - }; - /** - * @deprecated will be removed in upcoming versions - */ - SwiperComponent.prototype.setIndex = function (index, speed, silent) { - var _this = this; - if (!this.isSwiperActive) { - this.initialSlide = index; - return; - } - if (index === this.swiperRef.activeIndex) { - return; - } - this._ngZone.runOutsideAngular(function () { - if (_this.loop) { - _this.swiperRef.slideToLoop(index, speed, !silent); - } - else { - _this.swiperRef.slideTo(index, speed, !silent); - } - }); - }; - SwiperComponent.prototype.ngOnDestroy = function () { - var _this = this; - this._ngZone.runOutsideAngular(function () { - var _a; - (_a = _this.swiperRef) === null || _a === void 0 ? void 0 : _a.destroy(true, false); - }); - }; - return SwiperComponent; - }()); - SwiperComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0__namespace, type: SwiperComponent, deps: [{ token: i0__namespace.NgZone }, { token: i0__namespace.ElementRef }, { token: i0__namespace.ChangeDetectorRef }, { token: i0.PLATFORM_ID }], target: i0__namespace.ɵɵFactoryTarget.Component }); - SwiperComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.2", type: SwiperComponent, selector: "swiper, [swiper]", inputs: { enabled: "enabled", direction: "direction", touchEventsTarget: "touchEventsTarget", initialSlide: "initialSlide", speed: "speed", cssMode: "cssMode", updateOnWindowResize: "updateOnWindowResize", resizeObserver: "resizeObserver", nested: "nested", focusableElements: "focusableElements", width: "width", height: "height", preventInteractionOnTransition: "preventInteractionOnTransition", userAgent: "userAgent", url: "url", edgeSwipeDetection: "edgeSwipeDetection", edgeSwipeThreshold: "edgeSwipeThreshold", freeMode: "freeMode", autoHeight: "autoHeight", setWrapperSize: "setWrapperSize", virtualTranslate: "virtualTranslate", effect: "effect", breakpoints: "breakpoints", spaceBetween: "spaceBetween", slidesPerView: "slidesPerView", grid: "grid", slidesPerGroup: "slidesPerGroup", slidesPerGroupSkip: "slidesPerGroupSkip", centeredSlides: "centeredSlides", centeredSlidesBounds: "centeredSlidesBounds", slidesOffsetBefore: "slidesOffsetBefore", slidesOffsetAfter: "slidesOffsetAfter", normalizeSlideIndex: "normalizeSlideIndex", centerInsufficientSlides: "centerInsufficientSlides", watchOverflow: "watchOverflow", roundLengths: "roundLengths", touchRatio: "touchRatio", touchAngle: "touchAngle", simulateTouch: "simulateTouch", shortSwipes: "shortSwipes", longSwipes: "longSwipes", longSwipesRatio: "longSwipesRatio", longSwipesMs: "longSwipesMs", followFinger: "followFinger", allowTouchMove: "allowTouchMove", threshold: "threshold", touchMoveStopPropagation: "touchMoveStopPropagation", touchStartPreventDefault: "touchStartPreventDefault", touchStartForcePreventDefault: "touchStartForcePreventDefault", touchReleaseOnEdges: "touchReleaseOnEdges", uniqueNavElements: "uniqueNavElements", resistance: "resistance", resistanceRatio: "resistanceRatio", watchSlidesProgress: "watchSlidesProgress", grabCursor: "grabCursor", preventClicks: "preventClicks", preventClicksPropagation: "preventClicksPropagation", slideToClickedSlide: "slideToClickedSlide", preloadImages: "preloadImages", updateOnImagesReady: "updateOnImagesReady", loop: "loop", loopAdditionalSlides: "loopAdditionalSlides", loopedSlides: "loopedSlides", loopFillGroupWithBlank: "loopFillGroupWithBlank", loopPreventsSlide: "loopPreventsSlide", allowSlidePrev: "allowSlidePrev", allowSlideNext: "allowSlideNext", swipeHandler: "swipeHandler", noSwiping: "noSwiping", noSwipingClass: "noSwipingClass", noSwipingSelector: "noSwipingSelector", passiveListeners: "passiveListeners", containerModifierClass: "containerModifierClass", slideClass: "slideClass", slideBlankClass: "slideBlankClass", slideActiveClass: "slideActiveClass", slideDuplicateActiveClass: "slideDuplicateActiveClass", slideVisibleClass: "slideVisibleClass", slideDuplicateClass: "slideDuplicateClass", slideNextClass: "slideNextClass", slideDuplicateNextClass: "slideDuplicateNextClass", slidePrevClass: "slidePrevClass", slideDuplicatePrevClass: "slideDuplicatePrevClass", wrapperClass: "wrapperClass", runCallbacksOnInit: "runCallbacksOnInit", observeParents: "observeParents", observeSlideChildren: "observeSlideChildren", a11y: "a11y", autoplay: "autoplay", controller: "controller", coverflowEffect: "coverflowEffect", cubeEffect: "cubeEffect", fadeEffect: "fadeEffect", flipEffect: "flipEffect", creativeEffect: "creativeEffect", cardsEffect: "cardsEffect", hashNavigation: "hashNavigation", history: "history", keyboard: "keyboard", lazy: "lazy", mousewheel: "mousewheel", parallax: "parallax", thumbs: "thumbs", zoom: "zoom", class: "class", id: "id", navigation: "navigation", pagination: "pagination", scrollbar: "scrollbar", virtual: "virtual", index: "index", config: "config" }, outputs: { s__beforeBreakpoint: "_beforeBreakpoint", s__containerClasses: "_containerClasses", s__slideClass: "_slideClass", s__swiper: "_swiper", s_activeIndexChange: "activeIndexChange", s_afterInit: "afterInit", s_autoplay: "autoplay", s_autoplayStart: "autoplayStart", s_autoplayStop: "autoplayStop", s_beforeDestroy: "beforeDestroy", s_beforeInit: "beforeInit", s_beforeLoopFix: "beforeLoopFix", s_beforeResize: "beforeResize", s_beforeSlideChangeStart: "beforeSlideChangeStart", s_beforeTransitionStart: "beforeTransitionStart", s_breakpoint: "breakpoint", s_changeDirection: "changeDirection", s_click: "click", s_doubleTap: "doubleTap", s_doubleClick: "doubleClick", s_destroy: "destroy", s_fromEdge: "fromEdge", s_hashChange: "hashChange", s_hashSet: "hashSet", s_imagesReady: "imagesReady", s_init: "init", s_keyPress: "keyPress", s_lazyImageLoad: "lazyImageLoad", s_lazyImageReady: "lazyImageReady", s_loopFix: "loopFix", s_momentumBounce: "momentumBounce", s_navigationHide: "navigationHide", s_navigationShow: "navigationShow", s_observerUpdate: "observerUpdate", s_orientationchange: "orientationchange", s_paginationHide: "paginationHide", s_paginationRender: "paginationRender", s_paginationShow: "paginationShow", s_paginationUpdate: "paginationUpdate", s_progress: "progress", s_reachBeginning: "reachBeginning", s_reachEnd: "reachEnd", s_realIndexChange: "realIndexChange", s_resize: "resize", s_scroll: "scroll", s_scrollbarDragEnd: "scrollbarDragEnd", s_scrollbarDragMove: "scrollbarDragMove", s_scrollbarDragStart: "scrollbarDragStart", s_setTransition: "setTransition", s_setTranslate: "setTranslate", s_slideChange: "slideChange", s_slideChangeTransitionEnd: "slideChangeTransitionEnd", s_slideChangeTransitionStart: "slideChangeTransitionStart", s_slideNextTransitionEnd: "slideNextTransitionEnd", s_slideNextTransitionStart: "slideNextTransitionStart", s_slidePrevTransitionEnd: "slidePrevTransitionEnd", s_slidePrevTransitionStart: "slidePrevTransitionStart", s_slideResetTransitionStart: "slideResetTransitionStart", s_slideResetTransitionEnd: "slideResetTransitionEnd", s_sliderMove: "sliderMove", s_sliderFirstMove: "sliderFirstMove", s_slidesLengthChange: "slidesLengthChange", s_slidesGridLengthChange: "slidesGridLengthChange", s_snapGridLengthChange: "snapGridLengthChange", s_snapIndexChange: "snapIndexChange", s_tap: "tap", s_toEdge: "toEdge", s_touchEnd: "touchEnd", s_touchMove: "touchMove", s_touchMoveOpposite: "touchMoveOpposite", s_touchStart: "touchStart", s_transitionEnd: "transitionEnd", s_transitionStart: "transitionStart", s_update: "update", s_zoomChange: "zoomChange", s_swiper: "swiper", indexChange: "indexChange" }, host: { properties: { "class": "this.containerClasses" } }, queries: [{ propertyName: "slidesEl", predicate: SwiperSlideDirective }], viewQueries: [{ propertyName: "prevElRef", first: true, predicate: ["prevElRef"], descendants: true }, { propertyName: "nextElRef", first: true, predicate: ["nextElRef"], descendants: true }, { propertyName: "scrollbarElRef", first: true, predicate: ["scrollbarElRef"], descendants: true }, { propertyName: "paginationElRef", first: true, predicate: ["paginationElRef"], descendants: true }], usesOnChanges: true, ngImport: i0__namespace, template: "\n\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n\n\n\n \n
\n \n
\n \n
\n \n
\n\n", styles: ["\n swiper {\n display: block;\n }\n "], directives: [{ type: i1__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1__namespace.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1__namespace.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1__namespace.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "async": i1__namespace.AsyncPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush, encapsulation: i0__namespace.ViewEncapsulation.None }); - i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0__namespace, type: SwiperComponent, decorators: [{ - type: i0.Component, - args: [{ - selector: 'swiper, [swiper]', - templateUrl: './swiper.component.html', - changeDetection: i0.ChangeDetectionStrategy.OnPush, - encapsulation: i0.ViewEncapsulation.None, - styles: [ - "\n swiper {\n display: block;\n }\n ", - ], - }] - }], ctorParameters: function () { - return [{ type: i0__namespace.NgZone }, { type: i0__namespace.ElementRef }, { type: i0__namespace.ChangeDetectorRef }, { type: Object, decorators: [{ - type: i0.Inject, - args: [i0.PLATFORM_ID] - }] }]; - }, propDecorators: { enabled: [{ - type: i0.Input - }], direction: [{ - type: i0.Input - }], touchEventsTarget: [{ - type: i0.Input - }], initialSlide: [{ - type: i0.Input - }], speed: [{ - type: i0.Input - }], cssMode: [{ - type: i0.Input - }], updateOnWindowResize: [{ - type: i0.Input - }], resizeObserver: [{ - type: i0.Input - }], nested: [{ - type: i0.Input - }], focusableElements: [{ - type: i0.Input - }], width: [{ - type: i0.Input - }], height: [{ - type: i0.Input - }], preventInteractionOnTransition: [{ - type: i0.Input - }], userAgent: [{ - type: i0.Input - }], url: [{ - type: i0.Input - }], edgeSwipeDetection: [{ - type: i0.Input - }], edgeSwipeThreshold: [{ - type: i0.Input - }], freeMode: [{ - type: i0.Input - }], autoHeight: [{ - type: i0.Input - }], setWrapperSize: [{ - type: i0.Input - }], virtualTranslate: [{ - type: i0.Input - }], effect: [{ - type: i0.Input - }], breakpoints: [{ - type: i0.Input - }], spaceBetween: [{ - type: i0.Input - }], slidesPerView: [{ - type: i0.Input - }], grid: [{ - type: i0.Input - }], slidesPerGroup: [{ - type: i0.Input - }], slidesPerGroupSkip: [{ - type: i0.Input - }], centeredSlides: [{ - type: i0.Input - }], centeredSlidesBounds: [{ - type: i0.Input - }], slidesOffsetBefore: [{ - type: i0.Input - }], slidesOffsetAfter: [{ - type: i0.Input - }], normalizeSlideIndex: [{ - type: i0.Input - }], centerInsufficientSlides: [{ - type: i0.Input - }], watchOverflow: [{ - type: i0.Input - }], roundLengths: [{ - type: i0.Input - }], touchRatio: [{ - type: i0.Input - }], touchAngle: [{ - type: i0.Input - }], simulateTouch: [{ - type: i0.Input - }], shortSwipes: [{ - type: i0.Input - }], longSwipes: [{ - type: i0.Input - }], longSwipesRatio: [{ - type: i0.Input - }], longSwipesMs: [{ - type: i0.Input - }], followFinger: [{ - type: i0.Input - }], allowTouchMove: [{ - type: i0.Input - }], threshold: [{ - type: i0.Input - }], touchMoveStopPropagation: [{ - type: i0.Input - }], touchStartPreventDefault: [{ - type: i0.Input - }], touchStartForcePreventDefault: [{ - type: i0.Input - }], touchReleaseOnEdges: [{ - type: i0.Input - }], uniqueNavElements: [{ - type: i0.Input - }], resistance: [{ - type: i0.Input - }], resistanceRatio: [{ - type: i0.Input - }], watchSlidesProgress: [{ - type: i0.Input - }], grabCursor: [{ - type: i0.Input - }], preventClicks: [{ - type: i0.Input - }], preventClicksPropagation: [{ - type: i0.Input - }], slideToClickedSlide: [{ - type: i0.Input - }], preloadImages: [{ - type: i0.Input - }], updateOnImagesReady: [{ - type: i0.Input - }], loop: [{ - type: i0.Input - }], loopAdditionalSlides: [{ - type: i0.Input - }], loopedSlides: [{ - type: i0.Input - }], loopFillGroupWithBlank: [{ - type: i0.Input - }], loopPreventsSlide: [{ - type: i0.Input - }], allowSlidePrev: [{ - type: i0.Input - }], allowSlideNext: [{ - type: i0.Input - }], swipeHandler: [{ - type: i0.Input - }], noSwiping: [{ - type: i0.Input - }], noSwipingClass: [{ - type: i0.Input - }], noSwipingSelector: [{ - type: i0.Input - }], passiveListeners: [{ - type: i0.Input - }], containerModifierClass: [{ - type: i0.Input - }], slideClass: [{ - type: i0.Input - }], slideBlankClass: [{ - type: i0.Input - }], slideActiveClass: [{ - type: i0.Input - }], slideDuplicateActiveClass: [{ - type: i0.Input - }], slideVisibleClass: [{ - type: i0.Input - }], slideDuplicateClass: [{ - type: i0.Input - }], slideNextClass: [{ - type: i0.Input - }], slideDuplicateNextClass: [{ - type: i0.Input - }], slidePrevClass: [{ - type: i0.Input - }], slideDuplicatePrevClass: [{ - type: i0.Input - }], wrapperClass: [{ - type: i0.Input - }], runCallbacksOnInit: [{ - type: i0.Input - }], observeParents: [{ - type: i0.Input - }], observeSlideChildren: [{ - type: i0.Input - }], a11y: [{ - type: i0.Input - }], autoplay: [{ - type: i0.Input - }], controller: [{ - type: i0.Input - }], coverflowEffect: [{ - type: i0.Input - }], cubeEffect: [{ - type: i0.Input - }], fadeEffect: [{ - type: i0.Input - }], flipEffect: [{ - type: i0.Input - }], creativeEffect: [{ - type: i0.Input - }], cardsEffect: [{ - type: i0.Input - }], hashNavigation: [{ - type: i0.Input - }], history: [{ - type: i0.Input - }], keyboard: [{ - type: i0.Input - }], lazy: [{ - type: i0.Input - }], mousewheel: [{ - type: i0.Input - }], parallax: [{ - type: i0.Input - }], thumbs: [{ - type: i0.Input - }], zoom: [{ - type: i0.Input - }], class: [{ - type: i0.Input - }], id: [{ - type: i0.Input - }], navigation: [{ - type: i0.Input - }], pagination: [{ - type: i0.Input - }], scrollbar: [{ - type: i0.Input - }], virtual: [{ - type: i0.Input - }], index: [{ - type: i0.Input - }], config: [{ - type: i0.Input - }], s__beforeBreakpoint: [{ - type: i0.Output, - args: ['_beforeBreakpoint'] - }], s__containerClasses: [{ - type: i0.Output, - args: ['_containerClasses'] - }], s__slideClass: [{ - type: i0.Output, - args: ['_slideClass'] - }], s__swiper: [{ - type: i0.Output, - args: ['_swiper'] - }], s_activeIndexChange: [{ - type: i0.Output, - args: ['activeIndexChange'] - }], s_afterInit: [{ - type: i0.Output, - args: ['afterInit'] - }], s_autoplay: [{ - type: i0.Output, - args: ['autoplay'] - }], s_autoplayStart: [{ - type: i0.Output, - args: ['autoplayStart'] - }], s_autoplayStop: [{ - type: i0.Output, - args: ['autoplayStop'] - }], s_beforeDestroy: [{ - type: i0.Output, - args: ['beforeDestroy'] - }], s_beforeInit: [{ - type: i0.Output, - args: ['beforeInit'] - }], s_beforeLoopFix: [{ - type: i0.Output, - args: ['beforeLoopFix'] - }], s_beforeResize: [{ - type: i0.Output, - args: ['beforeResize'] - }], s_beforeSlideChangeStart: [{ - type: i0.Output, - args: ['beforeSlideChangeStart'] - }], s_beforeTransitionStart: [{ - type: i0.Output, - args: ['beforeTransitionStart'] - }], s_breakpoint: [{ - type: i0.Output, - args: ['breakpoint'] - }], s_changeDirection: [{ - type: i0.Output, - args: ['changeDirection'] - }], s_click: [{ - type: i0.Output, - args: ['click'] - }], s_doubleTap: [{ - type: i0.Output, - args: ['doubleTap'] - }], s_doubleClick: [{ - type: i0.Output, - args: ['doubleClick'] - }], s_destroy: [{ - type: i0.Output, - args: ['destroy'] - }], s_fromEdge: [{ - type: i0.Output, - args: ['fromEdge'] - }], s_hashChange: [{ - type: i0.Output, - args: ['hashChange'] - }], s_hashSet: [{ - type: i0.Output, - args: ['hashSet'] - }], s_imagesReady: [{ - type: i0.Output, - args: ['imagesReady'] - }], s_init: [{ - type: i0.Output, - args: ['init'] - }], s_keyPress: [{ - type: i0.Output, - args: ['keyPress'] - }], s_lazyImageLoad: [{ - type: i0.Output, - args: ['lazyImageLoad'] - }], s_lazyImageReady: [{ - type: i0.Output, - args: ['lazyImageReady'] - }], s_loopFix: [{ - type: i0.Output, - args: ['loopFix'] - }], s_momentumBounce: [{ - type: i0.Output, - args: ['momentumBounce'] - }], s_navigationHide: [{ - type: i0.Output, - args: ['navigationHide'] - }], s_navigationShow: [{ - type: i0.Output, - args: ['navigationShow'] - }], s_observerUpdate: [{ - type: i0.Output, - args: ['observerUpdate'] - }], s_orientationchange: [{ - type: i0.Output, - args: ['orientationchange'] - }], s_paginationHide: [{ - type: i0.Output, - args: ['paginationHide'] - }], s_paginationRender: [{ - type: i0.Output, - args: ['paginationRender'] - }], s_paginationShow: [{ - type: i0.Output, - args: ['paginationShow'] - }], s_paginationUpdate: [{ - type: i0.Output, - args: ['paginationUpdate'] - }], s_progress: [{ - type: i0.Output, - args: ['progress'] - }], s_reachBeginning: [{ - type: i0.Output, - args: ['reachBeginning'] - }], s_reachEnd: [{ - type: i0.Output, - args: ['reachEnd'] - }], s_realIndexChange: [{ - type: i0.Output, - args: ['realIndexChange'] - }], s_resize: [{ - type: i0.Output, - args: ['resize'] - }], s_scroll: [{ - type: i0.Output, - args: ['scroll'] - }], s_scrollbarDragEnd: [{ - type: i0.Output, - args: ['scrollbarDragEnd'] - }], s_scrollbarDragMove: [{ - type: i0.Output, - args: ['scrollbarDragMove'] - }], s_scrollbarDragStart: [{ - type: i0.Output, - args: ['scrollbarDragStart'] - }], s_setTransition: [{ - type: i0.Output, - args: ['setTransition'] - }], s_setTranslate: [{ - type: i0.Output, - args: ['setTranslate'] - }], s_slideChange: [{ - type: i0.Output, - args: ['slideChange'] - }], s_slideChangeTransitionEnd: [{ - type: i0.Output, - args: ['slideChangeTransitionEnd'] - }], s_slideChangeTransitionStart: [{ - type: i0.Output, - args: ['slideChangeTransitionStart'] - }], s_slideNextTransitionEnd: [{ - type: i0.Output, - args: ['slideNextTransitionEnd'] - }], s_slideNextTransitionStart: [{ - type: i0.Output, - args: ['slideNextTransitionStart'] - }], s_slidePrevTransitionEnd: [{ - type: i0.Output, - args: ['slidePrevTransitionEnd'] - }], s_slidePrevTransitionStart: [{ - type: i0.Output, - args: ['slidePrevTransitionStart'] - }], s_slideResetTransitionStart: [{ - type: i0.Output, - args: ['slideResetTransitionStart'] - }], s_slideResetTransitionEnd: [{ - type: i0.Output, - args: ['slideResetTransitionEnd'] - }], s_sliderMove: [{ - type: i0.Output, - args: ['sliderMove'] - }], s_sliderFirstMove: [{ - type: i0.Output, - args: ['sliderFirstMove'] - }], s_slidesLengthChange: [{ - type: i0.Output, - args: ['slidesLengthChange'] - }], s_slidesGridLengthChange: [{ - type: i0.Output, - args: ['slidesGridLengthChange'] - }], s_snapGridLengthChange: [{ - type: i0.Output, - args: ['snapGridLengthChange'] - }], s_snapIndexChange: [{ - type: i0.Output, - args: ['snapIndexChange'] - }], s_tap: [{ - type: i0.Output, - args: ['tap'] - }], s_toEdge: [{ - type: i0.Output, - args: ['toEdge'] - }], s_touchEnd: [{ - type: i0.Output, - args: ['touchEnd'] - }], s_touchMove: [{ - type: i0.Output, - args: ['touchMove'] - }], s_touchMoveOpposite: [{ - type: i0.Output, - args: ['touchMoveOpposite'] - }], s_touchStart: [{ - type: i0.Output, - args: ['touchStart'] - }], s_transitionEnd: [{ - type: i0.Output, - args: ['transitionEnd'] - }], s_transitionStart: [{ - type: i0.Output, - args: ['transitionStart'] - }], s_update: [{ - type: i0.Output, - args: ['update'] - }], s_zoomChange: [{ - type: i0.Output, - args: ['zoomChange'] - }], s_swiper: [{ - type: i0.Output, - args: ['swiper'] - }], indexChange: [{ - type: i0.Output - }], prevElRef: [{ - type: i0.ViewChild, - args: ['prevElRef', { static: false }] - }], nextElRef: [{ - type: i0.ViewChild, - args: ['nextElRef', { static: false }] - }], scrollbarElRef: [{ - type: i0.ViewChild, - args: ['scrollbarElRef', { static: false }] - }], paginationElRef: [{ - type: i0.ViewChild, - args: ['paginationElRef', { static: false }] - }], slidesEl: [{ - type: i0.ContentChildren, - args: [SwiperSlideDirective, { descendants: false, emitDistinctChangesOnly: true }] - }], containerClasses: [{ - type: i0.HostBinding, - args: ['class'] - }] } }); - - var SwiperModule = /** @class */ (function () { - function SwiperModule() { - } - return SwiperModule; - }()); - SwiperModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0__namespace, type: SwiperModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule }); - SwiperModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0__namespace, type: SwiperModule, declarations: [SwiperComponent, SwiperSlideDirective], imports: [i1.CommonModule], exports: [SwiperComponent, SwiperSlideDirective] }); - SwiperModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0__namespace, type: SwiperModule, imports: [[i1.CommonModule]] }); - i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0__namespace, type: SwiperModule, decorators: [{ - type: i0.NgModule, - args: [{ - declarations: [SwiperComponent, SwiperSlideDirective], - exports: [SwiperComponent, SwiperSlideDirective], - imports: [i1.CommonModule], - }] - }] }); - - /* - * Public API Surface of angular - */ - - /** - * Generated bundle index. Do not edit. - */ - - exports.SwiperComponent = SwiperComponent; - exports.SwiperModule = SwiperModule; - exports.SwiperSlideDirective = SwiperSlideDirective; - - Object.defineProperty(exports, '__esModule', { value: true }); - -}))); -//# sourceMappingURL=swiper_angular.umd.js.map diff --git a/resources/web/include/swiper/angular/bundles/swiper_angular.umd.js.map b/resources/web/include/swiper/angular/bundles/swiper_angular.umd.js.map deleted file mode 100644 index 597e0fc475..0000000000 --- a/resources/web/include/swiper/angular/bundles/swiper_angular.umd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"swiper_angular.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../src/angular/src/utils/utils.ts","../../../src/angular/src/utils/params-list.ts","../../../src/angular/src/utils/get-params.ts","../../../src/angular/src/swiper-slide.directive.ts","../../../src/angular/src/swiper.component.ts","../../../src/angular/src/swiper.component.html","../../../src/angular/src/swiper.module.ts","../../../src/angular/src/public-api.ts","../../../src/swiper_angular.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export function isObject(o: any): boolean {\n return (\n typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n );\n}\n\nexport function isShowEl(val: any, obj: any, el: any): boolean {\n return (\n (coerceBooleanProperty(val) === true && obj && !obj.el) ||\n !(\n typeof obj !== 'boolean' &&\n obj.el !== el?.nativeElement &&\n (typeof obj.el === 'string' || typeof obj.el === 'object')\n )\n );\n}\n\nexport function extend(target: any, src: any) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src)\n .filter((key) => noExtend.indexOf(key) < 0)\n .forEach((key) => {\n if (typeof target[key] === 'undefined') {\n target[key] = src[key];\n return;\n }\n if (target[key] && !src[key]) {\n return;\n }\n if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];\n else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\n\nexport function coerceBooleanProperty(value: any): boolean {\n return value != null && `${value}` !== 'false';\n}\n\nexport const ignoreNgOnChanges = ['pagination', 'navigation', 'scrollbar', 'virtual'];\n\nexport function setProperty(val: any, obj = {}): {} | false {\n if (isObject(val)) {\n return val;\n }\n\n if (coerceBooleanProperty(val) === true) {\n return obj;\n }\n\n return false;\n}\n","/* underscore in name -> watch for changes */\nexport const paramsList = [\n 'init',\n 'enabled',\n '_direction',\n 'touchEventsTarget',\n 'initialSlide',\n '_speed',\n 'cssMode',\n 'updateOnWindowResize',\n 'resizeObserver',\n 'nested',\n 'focusableElements',\n '_width',\n '_height',\n 'preventInteractionOnTransition',\n 'userAgent',\n 'url',\n '_edgeSwipeDetection',\n '_edgeSwipeThreshold',\n '_freeMode',\n '_autoHeight',\n 'setWrapperSize',\n 'virtualTranslate',\n '_effect',\n 'breakpoints',\n '_spaceBetween',\n '_slidesPerView',\n '_grid',\n '_slidesPerGroup',\n '_slidesPerGroupSkip',\n '_centeredSlides',\n '_centeredSlidesBounds',\n '_slidesOffsetBefore',\n '_slidesOffsetAfter',\n 'normalizeSlideIndex',\n '_centerInsufficientSlides',\n '_watchOverflow',\n 'roundLengths',\n 'touchRatio',\n 'touchAngle',\n 'simulateTouch',\n '_shortSwipes',\n '_longSwipes',\n 'longSwipesRatio',\n 'longSwipesMs',\n '_followFinger',\n 'allowTouchMove',\n '_threshold',\n 'touchMoveStopPropagation',\n 'touchStartPreventDefault',\n 'touchStartForcePreventDefault',\n 'touchReleaseOnEdges',\n 'uniqueNavElements',\n '_resistance',\n '_resistanceRatio',\n '_watchSlidesProgress',\n '_grabCursor',\n 'preventClicks',\n 'preventClicksPropagation',\n '_slideToClickedSlide',\n '_preloadImages',\n 'updateOnImagesReady',\n '_loop',\n '_loopAdditionalSlides',\n '_loopedSlides',\n '_loopFillGroupWithBlank',\n 'loopPreventsSlide',\n '_allowSlidePrev',\n '_allowSlideNext',\n '_swipeHandler',\n '_noSwiping',\n 'noSwipingClass',\n 'noSwipingSelector',\n 'passiveListeners',\n 'containerModifierClass',\n 'slideClass',\n 'slideBlankClass',\n 'slideActiveClass',\n 'slideDuplicateActiveClass',\n 'slideVisibleClass',\n 'slideDuplicateClass',\n 'slideNextClass',\n 'slideDuplicateNextClass',\n 'slidePrevClass',\n 'slideDuplicatePrevClass',\n 'wrapperClass',\n 'runCallbacksOnInit',\n 'observer',\n 'observeParents',\n 'observeSlideChildren',\n\n // modules\n 'a11y',\n 'autoplay',\n '_controller',\n 'coverflowEffect',\n 'cubeEffect',\n 'fadeEffect',\n 'flipEffect',\n 'creativeEffect',\n 'cardsEffect',\n 'hashNavigation',\n 'history',\n 'keyboard',\n 'lazy',\n 'mousewheel',\n '_navigation',\n '_pagination',\n 'parallax',\n '_scrollbar',\n '_thumbs',\n 'virtual',\n 'zoom',\n];\n","// eslint-disable-next-line\nimport { isObject, extend } from './utils';\nimport { paramsList } from './params-list';\n// @ts-ignore\nimport Swiper from 'swiper';\n\nexport const allowedParams = paramsList.map((key) => key.replace(/_/, ''));\nexport function getParams(obj: any = {}) {\n const params: any = {\n on: {},\n };\n const passedParams: any = {};\n extend(params, Swiper.defaults);\n extend(params, Swiper.extendedDefaults);\n params._emitClasses = true;\n\n const rest: any = {};\n Object.keys(obj).forEach((key: string) => {\n const _key = key.replace(/^_/, '');\n if (typeof obj[_key] === 'undefined') return;\n if (allowedParams.indexOf(_key) >= 0) {\n if (isObject(obj[_key])) {\n params[_key] = {};\n passedParams[_key] = {};\n extend(params[_key], obj[_key]);\n extend(passedParams[_key], obj[_key]);\n } else {\n params[_key] = obj[_key];\n passedParams[_key] = obj[_key];\n }\n } else {\n rest[_key] = obj[_key];\n }\n });\n\n return { params, passedParams, rest };\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { coerceBooleanProperty } from './utils/utils';\n@Directive({\n selector: 'ng-template[swiperSlide]',\n})\nexport class SwiperSlideDirective {\n @Input() virtualIndex: number;\n @Input() class: string = '';\n @Input('data-swiper-autoplay') autoplayDelay: string | null = null;\n @Input()\n set zoom(val: boolean) {\n this._zoom = coerceBooleanProperty(val);\n }\n get zoom() {\n return this._zoom;\n }\n private _zoom: boolean;\n slideIndex: number;\n get classNames() {\n return this._classNames;\n }\n set classNames(val) {\n if (this._classNames === val) {\n return;\n }\n this._classNames = val;\n this.slideData = {\n isActive: this._hasClass(['swiper-slide-active', 'swiper-slide-duplicate-active']),\n isVisible: this._hasClass(['swiper-slide-visible']),\n isDuplicate: this._hasClass(['swiper-slide-duplicate']),\n isPrev: this._hasClass(['swiper-slide-prev', 'swiper-slide-duplicate-prev']),\n isNext: this._hasClass(['swiper-slide-next', 'swiper-slide-duplicate-next']),\n };\n }\n\n private _hasClass(classNames: string[]) {\n return classNames.some((className) => this._classNames.indexOf(className) >= 0);\n }\n slideData = {\n isActive: false,\n isPrev: false,\n isNext: false,\n isVisible: false,\n isDuplicate: false,\n };\n\n private _classNames: string;\n constructor(public template: TemplateRef) {}\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnInit,\n Output,\n PLATFORM_ID,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\n// @ts-ignore\nimport Swiper from 'swiper';\nimport { Observable, of, Subject } from 'rxjs';\nimport { getParams } from './utils/get-params';\nimport { SwiperSlideDirective } from './swiper-slide.directive';\nimport {\n extend,\n isObject,\n setProperty,\n ignoreNgOnChanges,\n coerceBooleanProperty,\n isShowEl,\n} from './utils/utils';\nimport {\n SwiperOptions,\n SwiperEvents,\n NavigationOptions,\n PaginationOptions,\n ScrollbarOptions,\n VirtualOptions,\n} from 'swiper/types';\nimport { isPlatformBrowser } from '@angular/common';\n@Component({\n selector: 'swiper, [swiper]',\n templateUrl: './swiper.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\n `\n swiper {\n display: block;\n }\n `,\n ],\n})\nexport class SwiperComponent implements OnInit {\n @Input() enabled: SwiperOptions['enabled'];\n @Input() direction: SwiperOptions['direction'];\n @Input() touchEventsTarget: SwiperOptions['touchEventsTarget'];\n @Input() initialSlide: SwiperOptions['initialSlide'];\n @Input() speed: SwiperOptions['speed'];\n @Input() cssMode: SwiperOptions['cssMode'];\n @Input() updateOnWindowResize: SwiperOptions['updateOnWindowResize'];\n @Input() resizeObserver: SwiperOptions['resizeObserver'];\n @Input() nested: SwiperOptions['nested'];\n @Input() focusableElements: SwiperOptions['focusableElements'];\n @Input() width: SwiperOptions['width'];\n @Input() height: SwiperOptions['height'];\n @Input() preventInteractionOnTransition: SwiperOptions['preventInteractionOnTransition'];\n @Input() userAgent: SwiperOptions['userAgent'];\n @Input() url: SwiperOptions['url'];\n @Input() edgeSwipeDetection: boolean | string;\n @Input() edgeSwipeThreshold: number;\n @Input() freeMode: SwiperOptions['freeMode'];\n @Input() autoHeight: SwiperOptions['autoHeight'];\n @Input() setWrapperSize: SwiperOptions['setWrapperSize'];\n @Input() virtualTranslate: SwiperOptions['virtualTranslate'];\n @Input() effect: SwiperOptions['effect'];\n @Input() breakpoints: SwiperOptions['breakpoints'];\n @Input() spaceBetween: SwiperOptions['spaceBetween'];\n @Input() slidesPerView: SwiperOptions['slidesPerView'];\n @Input() grid: SwiperOptions['grid'];\n @Input() slidesPerGroup: SwiperOptions['slidesPerGroup'];\n @Input() slidesPerGroupSkip: SwiperOptions['slidesPerGroupSkip'];\n @Input() centeredSlides: SwiperOptions['centeredSlides'];\n @Input() centeredSlidesBounds: SwiperOptions['centeredSlidesBounds'];\n @Input() slidesOffsetBefore: SwiperOptions['slidesOffsetBefore'];\n @Input() slidesOffsetAfter: SwiperOptions['slidesOffsetAfter'];\n @Input() normalizeSlideIndex: SwiperOptions['normalizeSlideIndex'];\n @Input() centerInsufficientSlides: SwiperOptions['centerInsufficientSlides'];\n @Input() watchOverflow: SwiperOptions['watchOverflow'];\n @Input() roundLengths: SwiperOptions['roundLengths'];\n @Input() touchRatio: SwiperOptions['touchRatio'];\n @Input() touchAngle: SwiperOptions['touchAngle'];\n @Input() simulateTouch: SwiperOptions['simulateTouch'];\n @Input() shortSwipes: SwiperOptions['shortSwipes'];\n @Input() longSwipes: SwiperOptions['longSwipes'];\n @Input() longSwipesRatio: SwiperOptions['longSwipesRatio'];\n @Input() longSwipesMs: SwiperOptions['longSwipesMs'];\n @Input() followFinger: SwiperOptions['followFinger'];\n @Input() allowTouchMove: SwiperOptions['allowTouchMove'];\n @Input() threshold: SwiperOptions['threshold'];\n @Input() touchMoveStopPropagation: SwiperOptions['touchMoveStopPropagation'];\n @Input() touchStartPreventDefault: SwiperOptions['touchStartPreventDefault'];\n @Input() touchStartForcePreventDefault: SwiperOptions['touchStartForcePreventDefault'];\n @Input() touchReleaseOnEdges: SwiperOptions['touchReleaseOnEdges'];\n @Input() uniqueNavElements: SwiperOptions['uniqueNavElements'];\n @Input() resistance: SwiperOptions['resistance'];\n @Input() resistanceRatio: SwiperOptions['resistanceRatio'];\n @Input() watchSlidesProgress: SwiperOptions['watchSlidesProgress'];\n @Input() grabCursor: SwiperOptions['grabCursor'];\n @Input() preventClicks: SwiperOptions['preventClicks'];\n @Input() preventClicksPropagation: SwiperOptions['preventClicksPropagation'];\n @Input() slideToClickedSlide: SwiperOptions['slideToClickedSlide'];\n @Input() preloadImages: SwiperOptions['preloadImages'];\n @Input() updateOnImagesReady: SwiperOptions['updateOnImagesReady'];\n @Input() loop: SwiperOptions['loop'];\n @Input() loopAdditionalSlides: SwiperOptions['loopAdditionalSlides'];\n @Input() loopedSlides: SwiperOptions['loopedSlides'];\n @Input() loopFillGroupWithBlank: SwiperOptions['loopFillGroupWithBlank'];\n @Input() loopPreventsSlide: SwiperOptions['loopPreventsSlide'];\n @Input() allowSlidePrev: SwiperOptions['allowSlidePrev'];\n @Input() allowSlideNext: SwiperOptions['allowSlideNext'];\n @Input() swipeHandler: SwiperOptions['swipeHandler'];\n @Input() noSwiping: SwiperOptions['noSwiping'];\n @Input() noSwipingClass: SwiperOptions['noSwipingClass'];\n @Input() noSwipingSelector: SwiperOptions['noSwipingSelector'];\n @Input() passiveListeners: SwiperOptions['passiveListeners'];\n @Input() containerModifierClass: SwiperOptions['containerModifierClass'];\n @Input() slideClass: SwiperOptions['slideClass'] = 'swiper-slide';\n @Input() slideBlankClass: SwiperOptions['slideBlankClass'];\n @Input() slideActiveClass: SwiperOptions['slideActiveClass'];\n @Input() slideDuplicateActiveClass: SwiperOptions['slideDuplicateActiveClass'];\n @Input() slideVisibleClass: SwiperOptions['slideVisibleClass'];\n @Input() slideDuplicateClass: SwiperOptions['slideDuplicateClass'];\n @Input() slideNextClass: SwiperOptions['slideNextClass'];\n @Input() slideDuplicateNextClass: SwiperOptions['slideDuplicateNextClass'];\n @Input() slidePrevClass: SwiperOptions['slidePrevClass'];\n @Input() slideDuplicatePrevClass: SwiperOptions['slideDuplicatePrevClass'];\n @Input() wrapperClass: SwiperOptions['wrapperClass'] = 'swiper-wrapper';\n @Input() runCallbacksOnInit: SwiperOptions['runCallbacksOnInit'];\n @Input() observeParents: SwiperOptions['observeParents'];\n @Input() observeSlideChildren: SwiperOptions['observeSlideChildren'];\n @Input() a11y: SwiperOptions['a11y'];\n @Input() autoplay: SwiperOptions['autoplay'];\n @Input() controller: SwiperOptions['controller'];\n @Input() coverflowEffect: SwiperOptions['coverflowEffect'];\n @Input() cubeEffect: SwiperOptions['cubeEffect'];\n @Input() fadeEffect: SwiperOptions['fadeEffect'];\n @Input() flipEffect: SwiperOptions['flipEffect'];\n @Input() creativeEffect: SwiperOptions['creativeEffect'];\n @Input() cardsEffect: SwiperOptions['cardsEffect'];\n @Input() hashNavigation: SwiperOptions['hashNavigation'];\n @Input() history: SwiperOptions['history'];\n @Input() keyboard: SwiperOptions['keyboard'];\n @Input() lazy: SwiperOptions['lazy'];\n @Input() mousewheel: SwiperOptions['mousewheel'];\n @Input() parallax: SwiperOptions['parallax'];\n @Input() thumbs: SwiperOptions['thumbs'];\n @Input() zoom: SwiperOptions['zoom'];\n @Input() class: string;\n @Input() id: string;\n @Input()\n set navigation(val) {\n const currentNext =\n typeof this._navigation !== 'boolean' && this._navigation !== ''\n ? this._navigation?.nextEl\n : null;\n const currentPrev =\n typeof this._navigation !== 'boolean' && this._navigation !== ''\n ? this._navigation?.prevEl\n : null;\n this._navigation = setProperty(val, {\n nextEl: currentNext || null,\n prevEl: currentPrev || null,\n });\n this.showNavigation = !(\n coerceBooleanProperty(val) !== true ||\n (this._navigation &&\n typeof this._navigation !== 'boolean' &&\n this._navigation.prevEl !== this._prevElRef?.nativeElement &&\n (this._navigation.prevEl !== null || this._navigation.nextEl !== null) &&\n (typeof this._navigation.nextEl === 'string' ||\n typeof this._navigation.prevEl === 'string' ||\n typeof this._navigation.nextEl === 'object' ||\n typeof this._navigation.prevEl === 'object'))\n );\n }\n get navigation() {\n return this._navigation;\n }\n private _navigation: NavigationOptions | boolean | '';\n showNavigation: boolean = true;\n\n @Input()\n set pagination(val) {\n const current =\n typeof this._pagination !== 'boolean' && this._pagination !== ''\n ? this._pagination?.el\n : null;\n this._pagination = setProperty(val, {\n el: current || null,\n });\n this.showPagination = isShowEl(val, this._pagination, this._paginationElRef);\n }\n get pagination() {\n return this._pagination;\n }\n private _pagination: PaginationOptions | boolean | '';\n showPagination: boolean = true;\n\n @Input()\n set scrollbar(val) {\n const current =\n typeof this._scrollbar !== 'boolean' && this._scrollbar !== '' ? this._scrollbar?.el : null;\n this._scrollbar = setProperty(val, {\n el: current || null,\n });\n this.showScrollbar = isShowEl(val, this._scrollbar, this._scrollbarElRef);\n }\n get scrollbar() {\n return this._scrollbar;\n }\n private _scrollbar: ScrollbarOptions | boolean | '';\n showScrollbar: boolean = true;\n\n @Input()\n set virtual(val) {\n this._virtual = setProperty(val);\n }\n get virtual() {\n return this._virtual;\n }\n private _virtual: VirtualOptions | boolean | '';\n\n @Input()\n set index(index: number) {\n console.warn('`[(index)]` prop is deprecated and will be removed in upcoming versions');\n this.setIndex(index);\n }\n @Input()\n set config(val: SwiperOptions) {\n this.updateSwiper(val);\n const { params } = getParams(val);\n Object.assign(this, params);\n }\n // prettier-ignore\n @Output('_beforeBreakpoint') s__beforeBreakpoint: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('_containerClasses') s__containerClasses: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('_slideClass') s__slideClass: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('_swiper') s__swiper: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('activeIndexChange') s_activeIndexChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('afterInit') s_afterInit: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('autoplay') s_autoplay: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('autoplayStart') s_autoplayStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('autoplayStop') s_autoplayStop: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeDestroy') s_beforeDestroy: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeInit') s_beforeInit: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeLoopFix') s_beforeLoopFix: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeResize') s_beforeResize: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeSlideChangeStart') s_beforeSlideChangeStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeTransitionStart') s_beforeTransitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('breakpoint') s_breakpoint: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('changeDirection') s_changeDirection: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('click') s_click: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('doubleTap') s_doubleTap: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('doubleClick') s_doubleClick: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('destroy') s_destroy: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('fromEdge') s_fromEdge: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('hashChange') s_hashChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('hashSet') s_hashSet: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('imagesReady') s_imagesReady: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('init') s_init: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('keyPress') s_keyPress: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('lazyImageLoad') s_lazyImageLoad: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('lazyImageReady') s_lazyImageReady: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('loopFix') s_loopFix: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('momentumBounce') s_momentumBounce: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('navigationHide') s_navigationHide: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('navigationShow') s_navigationShow: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('observerUpdate') s_observerUpdate: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('orientationchange') s_orientationchange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('paginationHide') s_paginationHide: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('paginationRender') s_paginationRender: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('paginationShow') s_paginationShow: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('paginationUpdate') s_paginationUpdate: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('progress') s_progress: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('reachBeginning') s_reachBeginning: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('reachEnd') s_reachEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('realIndexChange') s_realIndexChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('resize') s_resize: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('scroll') s_scroll: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('scrollbarDragEnd') s_scrollbarDragEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('scrollbarDragMove') s_scrollbarDragMove: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('scrollbarDragStart') s_scrollbarDragStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('setTransition') s_setTransition: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('setTranslate') s_setTranslate: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideChange') s_slideChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideChangeTransitionEnd') s_slideChangeTransitionEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideChangeTransitionStart') s_slideChangeTransitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideNextTransitionEnd') s_slideNextTransitionEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideNextTransitionStart') s_slideNextTransitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slidePrevTransitionEnd') s_slidePrevTransitionEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slidePrevTransitionStart') s_slidePrevTransitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideResetTransitionStart') s_slideResetTransitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideResetTransitionEnd') s_slideResetTransitionEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('sliderMove') s_sliderMove: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('sliderFirstMove') s_sliderFirstMove: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slidesLengthChange') s_slidesLengthChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slidesGridLengthChange') s_slidesGridLengthChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('snapGridLengthChange') s_snapGridLengthChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('snapIndexChange') s_snapIndexChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('tap') s_tap: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('toEdge') s_toEdge: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('touchEnd') s_touchEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('touchMove') s_touchMove: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('touchMoveOpposite') s_touchMoveOpposite: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('touchStart') s_touchStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('transitionEnd') s_transitionEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('transitionStart') s_transitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('update') s_update: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('zoomChange') s_zoomChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('swiper') s_swiper: EventEmitter = new EventEmitter();\n\n @Output() indexChange = new EventEmitter();\n\n @ViewChild('prevElRef', { static: false })\n set prevElRef(el: ElementRef) {\n this._prevElRef = el;\n this._setElement(el, this.navigation, 'navigation', 'prevEl');\n }\n _prevElRef: ElementRef;\n @ViewChild('nextElRef', { static: false })\n set nextElRef(el: ElementRef) {\n this._nextElRef = el;\n this._setElement(el, this.navigation, 'navigation', 'nextEl');\n }\n _nextElRef: ElementRef;\n @ViewChild('scrollbarElRef', { static: false })\n set scrollbarElRef(el: ElementRef) {\n this._scrollbarElRef = el;\n this._setElement(el, this.scrollbar, 'scrollbar');\n }\n _scrollbarElRef: ElementRef;\n @ViewChild('paginationElRef', { static: false })\n set paginationElRef(el: ElementRef) {\n this._paginationElRef = el;\n this._setElement(el, this.pagination, 'pagination');\n }\n _paginationElRef: ElementRef;\n @ContentChildren(SwiperSlideDirective, { descendants: false, emitDistinctChangesOnly: true })\n slidesEl: QueryList;\n private slides: SwiperSlideDirective[];\n\n prependSlides: Observable;\n appendSlides: Observable;\n\n swiperRef: Swiper;\n readonly _activeSlides = new Subject();\n\n get activeSlides() {\n if (this.virtual) {\n return this._activeSlides;\n }\n return of(this.slides);\n }\n\n get zoomContainerClass() {\n return this.zoom && typeof this.zoom !== 'boolean'\n ? this.zoom.containerClass\n : 'swiper-zoom-container';\n }\n\n @HostBinding('class') containerClasses: string = 'swiper';\n constructor(\n private _ngZone: NgZone,\n private elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(PLATFORM_ID) private _platformId: Object,\n ) {}\n\n private _setElement(el: ElementRef, ref: any, update: string, key = 'el') {\n if (!el || !ref) {\n return;\n }\n if (ref && el.nativeElement) {\n if (ref[key] === el.nativeElement) {\n return;\n }\n ref[key] = el.nativeElement;\n }\n const updateObj: { [key: string]: boolean } = {};\n updateObj[update] = true;\n this.updateInitSwiper(updateObj);\n }\n ngOnInit(): void {\n const { params } = getParams(this);\n Object.assign(this, params);\n }\n ngAfterViewInit() {\n this.childrenSlidesInit();\n this.initSwiper();\n this._changeDetectorRef.detectChanges();\n setTimeout(() => {\n this.s_swiper.emit(this.swiperRef);\n });\n }\n\n private childrenSlidesInit() {\n this.slidesChanges(this.slidesEl);\n this.slidesEl.changes.subscribe(this.slidesChanges);\n }\n\n private slidesChanges = (val: QueryList) => {\n this.slides = val.map((slide: SwiperSlideDirective, index: number) => {\n slide.slideIndex = index;\n slide.classNames = this.slideClass || '';\n return slide;\n });\n if (this.loop && !this.loopedSlides) {\n this.calcLoopedSlides();\n }\n if (!this.virtual) {\n if (this.loopedSlides) {\n this.prependSlides = of(this.slides.slice(this.slides.length - this.loopedSlides));\n this.appendSlides = of(this.slides.slice(0, this.loopedSlides));\n }\n } else if (this.swiperRef && this.swiperRef.virtual) {\n this._ngZone.runOutsideAngular(() => {\n this.swiperRef.virtual.slides = this.slides;\n this.swiperRef.virtual.update(true);\n });\n }\n this._changeDetectorRef.detectChanges();\n };\n\n get isSwiperActive() {\n return this.swiperRef && !this.swiperRef.destroyed;\n }\n\n initSwiper() {\n const { params: swiperParams, passedParams } = getParams(this);\n Object.assign(this, swiperParams);\n this._ngZone.runOutsideAngular(() => {\n swiperParams.init = false;\n if (!swiperParams.virtual) {\n swiperParams.observer = true;\n }\n\n swiperParams.onAny = (eventName: keyof SwiperComponent, ...args: any[]) => {\n const emitter = this[('s_' + eventName) as keyof SwiperComponent] as EventEmitter;\n if (emitter) {\n emitter.emit(...args);\n }\n };\n const _slideClasses: SwiperEvents['_slideClasses'] = (_, updated) => {\n updated.forEach(({ slideEl, classNames }, index) => {\n const dataIndex = slideEl.getAttribute('data-swiper-slide-index');\n const slideIndex = dataIndex ? parseInt(dataIndex) : index;\n if (this.virtual) {\n const virtualSlide = this.slides.find((item) => {\n return item.virtualIndex && item.virtualIndex === slideIndex;\n });\n if (virtualSlide) {\n virtualSlide.classNames = classNames;\n return;\n }\n }\n\n if (this.slides[slideIndex]) {\n this.slides[slideIndex].classNames = classNames;\n }\n });\n this._changeDetectorRef.detectChanges();\n };\n const _containerClasses: SwiperEvents['_containerClasses'] = (_, classes) => {\n setTimeout(() => {\n this.containerClasses = classes;\n });\n };\n Object.assign(swiperParams.on, {\n _containerClasses,\n _slideClasses,\n });\n const swiperRef = new Swiper(swiperParams);\n swiperRef.loopCreate = () => {};\n swiperRef.loopDestroy = () => {};\n if (swiperParams.loop) {\n swiperRef.loopedSlides = this.loopedSlides;\n }\n const isVirtualEnabled =\n typeof swiperRef.params.virtual !== 'undefined' &&\n typeof swiperRef.params.virtual !== 'boolean' &&\n swiperRef.params.virtual.enabled;\n if (swiperRef.virtual && isVirtualEnabled) {\n swiperRef.virtual.slides = this.slides;\n const extendWith = {\n cache: false,\n slides: this.slides,\n renderExternal: this.updateVirtualSlides,\n renderExternalUpdate: false,\n };\n extend(swiperRef.params.virtual, extendWith);\n extend(swiperRef.originalParams.virtual, extendWith);\n }\n\n if (isPlatformBrowser(this._platformId)) {\n this.swiperRef = swiperRef.init(this.elementRef.nativeElement);\n const isEnabled =\n typeof this.swiperRef.params.virtual !== 'undefined' &&\n typeof this.swiperRef.params.virtual !== 'boolean' &&\n this.swiperRef.params.virtual.enabled;\n if (this.swiperRef.virtual && isEnabled) {\n this.swiperRef.virtual.update(true);\n }\n this._changeDetectorRef.detectChanges();\n swiperRef.on('slideChange', () => {\n this.indexChange.emit(this.swiperRef.realIndex);\n });\n }\n });\n }\n\n style: any = null;\n currentVirtualData: any; // TODO: type virtualData;\n private updateVirtualSlides = (virtualData: any) => {\n // TODO: type virtualData\n if (\n !this.swiperRef ||\n (this.currentVirtualData &&\n this.currentVirtualData.from === virtualData.from &&\n this.currentVirtualData.to === virtualData.to &&\n this.currentVirtualData.offset === virtualData.offset)\n ) {\n return;\n }\n this.style = this.swiperRef.isHorizontal()\n ? {\n [this.swiperRef.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`,\n }\n : {\n top: `${virtualData.offset}px`,\n };\n this.currentVirtualData = virtualData;\n this._activeSlides.next(virtualData.slides);\n this._ngZone.run(() => {\n this._changeDetectorRef.detectChanges();\n });\n this._ngZone.runOutsideAngular(() => {\n this.swiperRef.updateSlides();\n this.swiperRef.updateProgress();\n this.swiperRef.updateSlidesClasses();\n if (this.swiperRef.lazy && this.swiperRef.params.lazy['enabled']) {\n this.swiperRef.lazy.load();\n }\n this.swiperRef.virtual.update(true);\n });\n return;\n };\n\n ngOnChanges(changedParams: SimpleChanges) {\n this.updateSwiper(changedParams);\n this._changeDetectorRef.detectChanges();\n }\n\n updateInitSwiper(changedParams: any) {\n if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n\n this._ngZone.runOutsideAngular(() => {\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs,\n } = this.swiperRef;\n\n if (changedParams.pagination) {\n if (\n this.pagination &&\n typeof this.pagination !== 'boolean' &&\n this.pagination.el &&\n pagination &&\n !pagination.el\n ) {\n this.updateParameter('pagination', this.pagination);\n pagination.init();\n pagination.render();\n pagination.update();\n } else {\n pagination.destroy();\n pagination.el = null;\n }\n }\n\n if (changedParams.scrollbar) {\n if (\n this.scrollbar &&\n typeof this.scrollbar !== 'boolean' &&\n this.scrollbar.el &&\n scrollbar &&\n !scrollbar.el\n ) {\n this.updateParameter('scrollbar', this.scrollbar);\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n } else {\n scrollbar.destroy();\n scrollbar.el = null;\n }\n }\n\n if (changedParams.navigation) {\n if (\n this.navigation &&\n typeof this.navigation !== 'boolean' &&\n this.navigation.prevEl &&\n this.navigation.nextEl &&\n navigation &&\n !navigation.prevEl &&\n !navigation.nextEl\n ) {\n this.updateParameter('navigation', this.navigation);\n navigation.init();\n navigation.update();\n } else if (navigation.prevEl && navigation.nextEl) {\n navigation.destroy();\n navigation.nextEl = null;\n navigation.prevEl = null;\n }\n }\n if (changedParams.thumbs && this.thumbs && this.thumbs.swiper) {\n this.updateParameter('thumbs', this.thumbs);\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n\n if (changedParams.controller && this.controller && this.controller.control) {\n this.swiperRef.controller.control = this.controller.control;\n }\n\n this.swiperRef.update();\n });\n }\n\n updateSwiper(changedParams: SimpleChanges | any) {\n this._ngZone.runOutsideAngular(() => {\n if (changedParams.config) {\n return;\n }\n if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n for (const key in changedParams) {\n if (ignoreNgOnChanges.indexOf(key) >= 0) {\n continue;\n }\n const newValue = changedParams[key]?.currentValue ?? changedParams[key];\n this.updateParameter(key, newValue);\n }\n\n if (changedParams.allowSlideNext) {\n this.swiperRef.allowSlideNext = this.allowSlideNext;\n }\n if (changedParams.allowSlidePrev) {\n this.swiperRef.allowSlidePrev = this.allowSlidePrev;\n }\n if (changedParams.direction) {\n this.swiperRef.changeDirection(this.direction, false);\n }\n if (changedParams.breakpoints) {\n if (this.loop && !this.loopedSlides) {\n this.calcLoopedSlides();\n }\n this.swiperRef.currentBreakpoint = null;\n this.swiperRef.setBreakpoint();\n }\n\n if (changedParams.thumbs || changedParams.controller) {\n this.updateInitSwiper(changedParams);\n }\n this.swiperRef.update();\n });\n }\n\n calcLoopedSlides() {\n if (!this.loop) {\n return;\n }\n let slidesPerViewParams = this.slidesPerView;\n if (this.breakpoints) {\n const breakpoint = Swiper.prototype.getBreakpoint(this.breakpoints);\n const breakpointOnlyParams =\n breakpoint in this.breakpoints ? this.breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) {\n slidesPerViewParams = breakpointOnlyParams.slidesPerView;\n }\n }\n if (slidesPerViewParams === 'auto') {\n this.loopedSlides = this.slides.length;\n return this.slides.length;\n }\n let loopedSlides = this.loopedSlides || slidesPerViewParams;\n if (!loopedSlides) {\n // ?\n return;\n }\n\n if (this.loopAdditionalSlides) {\n loopedSlides += this.loopAdditionalSlides;\n }\n if (loopedSlides > this.slides.length) {\n loopedSlides = this.slides.length;\n }\n this.loopedSlides = loopedSlides;\n return loopedSlides;\n }\n\n updateParameter(key: string, value: any) {\n if (!(this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n const _key = key.replace(/^_/, '');\n const isCurrentParamObj = isObject(this.swiperRef.params[_key]);\n\n if (Object.keys(this.swiperRef.modules).indexOf(_key) >= 0) {\n const defaultParams = this.swiperRef.modules[_key].params[_key];\n if (isCurrentParamObj) {\n extend(this.swiperRef.params[_key], defaultParams);\n } else {\n this.swiperRef.params[_key] = defaultParams;\n }\n }\n if (_key === 'enabled') {\n if (value === true) {\n this.swiperRef.enable();\n } else if (value === false) {\n this.swiperRef.disable();\n }\n return;\n }\n if (isCurrentParamObj && isObject(value)) {\n extend(this.swiperRef.params[_key], value);\n } else {\n this.swiperRef.params[_key] = value;\n }\n }\n /**\n * @deprecated will be removed in upcoming versions\n */\n setIndex(index: number, speed?: number, silent?: boolean): void {\n if (!this.isSwiperActive) {\n this.initialSlide = index;\n return;\n }\n if (index === this.swiperRef.activeIndex) {\n return;\n }\n this._ngZone.runOutsideAngular(() => {\n if (this.loop) {\n this.swiperRef.slideToLoop(index, speed, !silent);\n } else {\n this.swiperRef.slideTo(index, speed, !silent);\n }\n });\n }\n\n ngOnDestroy() {\n this._ngZone.runOutsideAngular(() => {\n this.swiperRef?.destroy(true, false);\n });\n }\n}\n","\n\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n\n\n\n \n
\n \n
\n \n
\n \n
\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SwiperComponent } from './swiper.component';\nimport { SwiperSlideDirective } from './swiper-slide.directive';\n@NgModule({\n declarations: [SwiperComponent, SwiperSlideDirective],\n exports: [SwiperComponent, SwiperSlideDirective],\n imports: [CommonModule],\n})\nexport class SwiperModule {}\n","/*\n * Public API Surface of angular\n */\nexport * from './swiper.module';\nexport * from './swiper.component';\nexport * from './swiper-slide.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './swiper-angular';\n"],"names":["Swiper","Directive","Input","EventEmitter","Subject","of","isPlatformBrowser","PLATFORM_ID","Component","ChangeDetectionStrategy","ViewEncapsulation","Inject","Output","ViewChild","ContentChildren","HostBinding","CommonModule","NgModule"],"mappings":"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"} \ No newline at end of file diff --git a/resources/web/include/swiper/angular/esm2015/angular/src/public-api.js b/resources/web/include/swiper/angular/esm2015/angular/src/public-api.js deleted file mode 100644 index 26852c407f..0000000000 --- a/resources/web/include/swiper/angular/esm2015/angular/src/public-api.js +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Public API Surface of angular - */ -export * from './swiper.module'; -export * from './swiper.component'; -export * from './swiper-slide.directive'; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGFuZ3VsYXJcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9zd2lwZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3dpcGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3N3aXBlci1zbGlkZS5kaXJlY3RpdmUnO1xuIl19 \ No newline at end of file diff --git a/resources/web/include/swiper/angular/esm2015/angular/src/swiper-slide.directive.js b/resources/web/include/swiper/angular/esm2015/angular/src/swiper-slide.directive.js deleted file mode 100644 index 3e0244e715..0000000000 --- a/resources/web/include/swiper/angular/esm2015/angular/src/swiper-slide.directive.js +++ /dev/null @@ -1,60 +0,0 @@ -import { Directive, Input } from '@angular/core'; -import { coerceBooleanProperty } from './utils/utils'; -import * as i0 from "@angular/core"; -export class SwiperSlideDirective { - constructor(template) { - this.template = template; - this.class = ''; - this.autoplayDelay = null; - this.slideData = { - isActive: false, - isPrev: false, - isNext: false, - isVisible: false, - isDuplicate: false, - }; - } - set zoom(val) { - this._zoom = coerceBooleanProperty(val); - } - get zoom() { - return this._zoom; - } - get classNames() { - return this._classNames; - } - set classNames(val) { - if (this._classNames === val) { - return; - } - this._classNames = val; - this.slideData = { - isActive: this._hasClass(['swiper-slide-active', 'swiper-slide-duplicate-active']), - isVisible: this._hasClass(['swiper-slide-visible']), - isDuplicate: this._hasClass(['swiper-slide-duplicate']), - isPrev: this._hasClass(['swiper-slide-prev', 'swiper-slide-duplicate-prev']), - isNext: this._hasClass(['swiper-slide-next', 'swiper-slide-duplicate-next']), - }; - } - _hasClass(classNames) { - return classNames.some((className) => this._classNames.indexOf(className) >= 0); - } -} -SwiperSlideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperSlideDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); -SwiperSlideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.2", type: SwiperSlideDirective, selector: "ng-template[swiperSlide]", inputs: { virtualIndex: "virtualIndex", class: "class", autoplayDelay: ["data-swiper-autoplay", "autoplayDelay"], zoom: "zoom" }, ngImport: i0 }); -i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperSlideDirective, decorators: [{ - type: Directive, - args: [{ - selector: 'ng-template[swiperSlide]', - }] - }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { virtualIndex: [{ - type: Input - }], class: [{ - type: Input - }], autoplayDelay: [{ - type: Input, - args: ['data-swiper-autoplay'] - }], zoom: [{ - type: Input - }] } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyLXNsaWRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyL3NyYy9zd2lwZXItc2xpZGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJdEQsTUFBTSxPQUFPLG9CQUFvQjtJQTBDL0IsWUFBbUIsUUFBMEI7UUFBMUIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUF4Q3BDLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDRyxrQkFBYSxHQUFrQixJQUFJLENBQUM7UUE4Qm5FLGNBQVMsR0FBRztZQUNWLFFBQVEsRUFBRSxLQUFLO1lBQ2YsTUFBTSxFQUFFLEtBQUs7WUFDYixNQUFNLEVBQUUsS0FBSztZQUNiLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFdBQVcsRUFBRSxLQUFLO1NBQ25CLENBQUM7SUFHOEMsQ0FBQztJQXRDakQsSUFDSSxJQUFJLENBQUMsR0FBWTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUdELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUMsR0FBRztRQUNoQixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssR0FBRyxFQUFFO1lBQzVCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDZixRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLCtCQUErQixDQUFDLENBQUM7WUFDbEYsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQ25ELFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQztZQUN2RCxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLDZCQUE2QixDQUFDLENBQUM7WUFDNUUsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1NBQzdFLENBQUM7SUFDSixDQUFDO0lBRU8sU0FBUyxDQUFDLFVBQW9CO1FBQ3BDLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQzs7aUhBaENVLG9CQUFvQjtxR0FBcEIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBSGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtpQkFDckM7a0dBRVUsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ3lCLGFBQWE7c0JBQTNDLEtBQUs7dUJBQUMsc0JBQXNCO2dCQUV6QixJQUFJO3NCQURQLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnLi91dGlscy91dGlscyc7XG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtzd2lwZXJTbGlkZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBTd2lwZXJTbGlkZURpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpIHZpcnR1YWxJbmRleDogbnVtYmVyO1xuICBASW5wdXQoKSBjbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgnZGF0YS1zd2lwZXItYXV0b3BsYXknKSBhdXRvcGxheURlbGF5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KClcbiAgc2V0IHpvb20odmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5fem9vbSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWwpO1xuICB9XG4gIGdldCB6b29tKCkge1xuICAgIHJldHVybiB0aGlzLl96b29tO1xuICB9XG4gIHByaXZhdGUgX3pvb206IGJvb2xlYW47XG4gIHNsaWRlSW5kZXg6IG51bWJlcjtcbiAgZ2V0IGNsYXNzTmFtZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsYXNzTmFtZXM7XG4gIH1cbiAgc2V0IGNsYXNzTmFtZXModmFsKSB7XG4gICAgaWYgKHRoaXMuX2NsYXNzTmFtZXMgPT09IHZhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9jbGFzc05hbWVzID0gdmFsO1xuICAgIHRoaXMuc2xpZGVEYXRhID0ge1xuICAgICAgaXNBY3RpdmU6IHRoaXMuX2hhc0NsYXNzKFsnc3dpcGVyLXNsaWRlLWFjdGl2ZScsICdzd2lwZXItc2xpZGUtZHVwbGljYXRlLWFjdGl2ZSddKSxcbiAgICAgIGlzVmlzaWJsZTogdGhpcy5faGFzQ2xhc3MoWydzd2lwZXItc2xpZGUtdmlzaWJsZSddKSxcbiAgICAgIGlzRHVwbGljYXRlOiB0aGlzLl9oYXNDbGFzcyhbJ3N3aXBlci1zbGlkZS1kdXBsaWNhdGUnXSksXG4gICAgICBpc1ByZXY6IHRoaXMuX2hhc0NsYXNzKFsnc3dpcGVyLXNsaWRlLXByZXYnLCAnc3dpcGVyLXNsaWRlLWR1cGxpY2F0ZS1wcmV2J10pLFxuICAgICAgaXNOZXh0OiB0aGlzLl9oYXNDbGFzcyhbJ3N3aXBlci1zbGlkZS1uZXh0JywgJ3N3aXBlci1zbGlkZS1kdXBsaWNhdGUtbmV4dCddKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFzQ2xhc3MoY2xhc3NOYW1lczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gY2xhc3NOYW1lcy5zb21lKChjbGFzc05hbWUpID0+IHRoaXMuX2NsYXNzTmFtZXMuaW5kZXhPZihjbGFzc05hbWUpID49IDApO1xuICB9XG4gIHNsaWRlRGF0YSA9IHtcbiAgICBpc0FjdGl2ZTogZmFsc2UsXG4gICAgaXNQcmV2OiBmYWxzZSxcbiAgICBpc05leHQ6IGZhbHNlLFxuICAgIGlzVmlzaWJsZTogZmFsc2UsXG4gICAgaXNEdXBsaWNhdGU6IGZhbHNlLFxuICB9O1xuXG4gIHByaXZhdGUgX2NsYXNzTmFtZXM6IHN0cmluZztcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuIl19 \ No newline at end of file diff --git a/resources/web/include/swiper/angular/esm2015/angular/src/swiper.component.js b/resources/web/include/swiper/angular/esm2015/angular/src/swiper.component.js deleted file mode 100644 index 50f2dad4e3..0000000000 --- a/resources/web/include/swiper/angular/esm2015/angular/src/swiper.component.js +++ /dev/null @@ -1,1126 +0,0 @@ -import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, HostBinding, Inject, Input, Output, PLATFORM_ID, ViewChild, ViewEncapsulation, } from '@angular/core'; -// @ts-ignore -import Swiper from 'swiper'; -import { of, Subject } from 'rxjs'; -import { getParams } from './utils/get-params'; -import { SwiperSlideDirective } from './swiper-slide.directive'; -import { extend, isObject, setProperty, ignoreNgOnChanges, coerceBooleanProperty, isShowEl, } from './utils/utils'; -import { isPlatformBrowser } from '@angular/common'; -import * as i0 from "@angular/core"; -import * as i1 from "@angular/common"; -export class SwiperComponent { - constructor(_ngZone, elementRef, _changeDetectorRef, _platformId) { - this._ngZone = _ngZone; - this.elementRef = elementRef; - this._changeDetectorRef = _changeDetectorRef; - this._platformId = _platformId; - this.slideClass = 'swiper-slide'; - this.wrapperClass = 'swiper-wrapper'; - this.showNavigation = true; - this.showPagination = true; - this.showScrollbar = true; - // prettier-ignore - this.s__beforeBreakpoint = new EventEmitter(); - // prettier-ignore - this.s__containerClasses = new EventEmitter(); - // prettier-ignore - this.s__slideClass = new EventEmitter(); - // prettier-ignore - this.s__swiper = new EventEmitter(); - // prettier-ignore - this.s_activeIndexChange = new EventEmitter(); - // prettier-ignore - this.s_afterInit = new EventEmitter(); - // prettier-ignore - this.s_autoplay = new EventEmitter(); - // prettier-ignore - this.s_autoplayStart = new EventEmitter(); - // prettier-ignore - this.s_autoplayStop = new EventEmitter(); - // prettier-ignore - this.s_beforeDestroy = new EventEmitter(); - // prettier-ignore - this.s_beforeInit = new EventEmitter(); - // prettier-ignore - this.s_beforeLoopFix = new EventEmitter(); - // prettier-ignore - this.s_beforeResize = new EventEmitter(); - // prettier-ignore - this.s_beforeSlideChangeStart = new EventEmitter(); - // prettier-ignore - this.s_beforeTransitionStart = new EventEmitter(); - // prettier-ignore - this.s_breakpoint = new EventEmitter(); - // prettier-ignore - this.s_changeDirection = new EventEmitter(); - // prettier-ignore - this.s_click = new EventEmitter(); - // prettier-ignore - this.s_doubleTap = new EventEmitter(); - // prettier-ignore - this.s_doubleClick = new EventEmitter(); - // prettier-ignore - this.s_destroy = new EventEmitter(); - // prettier-ignore - this.s_fromEdge = new EventEmitter(); - // prettier-ignore - this.s_hashChange = new EventEmitter(); - // prettier-ignore - this.s_hashSet = new EventEmitter(); - // prettier-ignore - this.s_imagesReady = new EventEmitter(); - // prettier-ignore - this.s_init = new EventEmitter(); - // prettier-ignore - this.s_keyPress = new EventEmitter(); - // prettier-ignore - this.s_lazyImageLoad = new EventEmitter(); - // prettier-ignore - this.s_lazyImageReady = new EventEmitter(); - // prettier-ignore - this.s_loopFix = new EventEmitter(); - // prettier-ignore - this.s_momentumBounce = new EventEmitter(); - // prettier-ignore - this.s_navigationHide = new EventEmitter(); - // prettier-ignore - this.s_navigationShow = new EventEmitter(); - // prettier-ignore - this.s_observerUpdate = new EventEmitter(); - // prettier-ignore - this.s_orientationchange = new EventEmitter(); - // prettier-ignore - this.s_paginationHide = new EventEmitter(); - // prettier-ignore - this.s_paginationRender = new EventEmitter(); - // prettier-ignore - this.s_paginationShow = new EventEmitter(); - // prettier-ignore - this.s_paginationUpdate = new EventEmitter(); - // prettier-ignore - this.s_progress = new EventEmitter(); - // prettier-ignore - this.s_reachBeginning = new EventEmitter(); - // prettier-ignore - this.s_reachEnd = new EventEmitter(); - // prettier-ignore - this.s_realIndexChange = new EventEmitter(); - // prettier-ignore - this.s_resize = new EventEmitter(); - // prettier-ignore - this.s_scroll = new EventEmitter(); - // prettier-ignore - this.s_scrollbarDragEnd = new EventEmitter(); - // prettier-ignore - this.s_scrollbarDragMove = new EventEmitter(); - // prettier-ignore - this.s_scrollbarDragStart = new EventEmitter(); - // prettier-ignore - this.s_setTransition = new EventEmitter(); - // prettier-ignore - this.s_setTranslate = new EventEmitter(); - // prettier-ignore - this.s_slideChange = new EventEmitter(); - // prettier-ignore - this.s_slideChangeTransitionEnd = new EventEmitter(); - // prettier-ignore - this.s_slideChangeTransitionStart = new EventEmitter(); - // prettier-ignore - this.s_slideNextTransitionEnd = new EventEmitter(); - // prettier-ignore - this.s_slideNextTransitionStart = new EventEmitter(); - // prettier-ignore - this.s_slidePrevTransitionEnd = new EventEmitter(); - // prettier-ignore - this.s_slidePrevTransitionStart = new EventEmitter(); - // prettier-ignore - this.s_slideResetTransitionStart = new EventEmitter(); - // prettier-ignore - this.s_slideResetTransitionEnd = new EventEmitter(); - // prettier-ignore - this.s_sliderMove = new EventEmitter(); - // prettier-ignore - this.s_sliderFirstMove = new EventEmitter(); - // prettier-ignore - this.s_slidesLengthChange = new EventEmitter(); - // prettier-ignore - this.s_slidesGridLengthChange = new EventEmitter(); - // prettier-ignore - this.s_snapGridLengthChange = new EventEmitter(); - // prettier-ignore - this.s_snapIndexChange = new EventEmitter(); - // prettier-ignore - this.s_tap = new EventEmitter(); - // prettier-ignore - this.s_toEdge = new EventEmitter(); - // prettier-ignore - this.s_touchEnd = new EventEmitter(); - // prettier-ignore - this.s_touchMove = new EventEmitter(); - // prettier-ignore - this.s_touchMoveOpposite = new EventEmitter(); - // prettier-ignore - this.s_touchStart = new EventEmitter(); - // prettier-ignore - this.s_transitionEnd = new EventEmitter(); - // prettier-ignore - this.s_transitionStart = new EventEmitter(); - // prettier-ignore - this.s_update = new EventEmitter(); - // prettier-ignore - this.s_zoomChange = new EventEmitter(); - // prettier-ignore - this.s_swiper = new EventEmitter(); - this.indexChange = new EventEmitter(); - this._activeSlides = new Subject(); - this.containerClasses = 'swiper'; - this.slidesChanges = (val) => { - this.slides = val.map((slide, index) => { - slide.slideIndex = index; - slide.classNames = this.slideClass || ''; - return slide; - }); - if (this.loop && !this.loopedSlides) { - this.calcLoopedSlides(); - } - if (!this.virtual) { - if (this.loopedSlides) { - this.prependSlides = of(this.slides.slice(this.slides.length - this.loopedSlides)); - this.appendSlides = of(this.slides.slice(0, this.loopedSlides)); - } - } - else if (this.swiperRef && this.swiperRef.virtual) { - this._ngZone.runOutsideAngular(() => { - this.swiperRef.virtual.slides = this.slides; - this.swiperRef.virtual.update(true); - }); - } - this._changeDetectorRef.detectChanges(); - }; - this.style = null; - this.updateVirtualSlides = (virtualData) => { - // TODO: type virtualData - if (!this.swiperRef || - (this.currentVirtualData && - this.currentVirtualData.from === virtualData.from && - this.currentVirtualData.to === virtualData.to && - this.currentVirtualData.offset === virtualData.offset)) { - return; - } - this.style = this.swiperRef.isHorizontal() - ? { - [this.swiperRef.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`, - } - : { - top: `${virtualData.offset}px`, - }; - this.currentVirtualData = virtualData; - this._activeSlides.next(virtualData.slides); - this._ngZone.run(() => { - this._changeDetectorRef.detectChanges(); - }); - this._ngZone.runOutsideAngular(() => { - this.swiperRef.updateSlides(); - this.swiperRef.updateProgress(); - this.swiperRef.updateSlidesClasses(); - if (this.swiperRef.lazy && this.swiperRef.params.lazy['enabled']) { - this.swiperRef.lazy.load(); - } - this.swiperRef.virtual.update(true); - }); - return; - }; - } - set navigation(val) { - var _a, _b, _c; - const currentNext = typeof this._navigation !== 'boolean' && this._navigation !== '' - ? (_a = this._navigation) === null || _a === void 0 ? void 0 : _a.nextEl - : null; - const currentPrev = typeof this._navigation !== 'boolean' && this._navigation !== '' - ? (_b = this._navigation) === null || _b === void 0 ? void 0 : _b.prevEl - : null; - this._navigation = setProperty(val, { - nextEl: currentNext || null, - prevEl: currentPrev || null, - }); - this.showNavigation = !(coerceBooleanProperty(val) !== true || - (this._navigation && - typeof this._navigation !== 'boolean' && - this._navigation.prevEl !== ((_c = this._prevElRef) === null || _c === void 0 ? void 0 : _c.nativeElement) && - (this._navigation.prevEl !== null || this._navigation.nextEl !== null) && - (typeof this._navigation.nextEl === 'string' || - typeof this._navigation.prevEl === 'string' || - typeof this._navigation.nextEl === 'object' || - typeof this._navigation.prevEl === 'object'))); - } - get navigation() { - return this._navigation; - } - set pagination(val) { - var _a; - const current = typeof this._pagination !== 'boolean' && this._pagination !== '' - ? (_a = this._pagination) === null || _a === void 0 ? void 0 : _a.el - : null; - this._pagination = setProperty(val, { - el: current || null, - }); - this.showPagination = isShowEl(val, this._pagination, this._paginationElRef); - } - get pagination() { - return this._pagination; - } - set scrollbar(val) { - var _a; - const current = typeof this._scrollbar !== 'boolean' && this._scrollbar !== '' ? (_a = this._scrollbar) === null || _a === void 0 ? void 0 : _a.el : null; - this._scrollbar = setProperty(val, { - el: current || null, - }); - this.showScrollbar = isShowEl(val, this._scrollbar, this._scrollbarElRef); - } - get scrollbar() { - return this._scrollbar; - } - set virtual(val) { - this._virtual = setProperty(val); - } - get virtual() { - return this._virtual; - } - set index(index) { - console.warn('`[(index)]` prop is deprecated and will be removed in upcoming versions'); - this.setIndex(index); - } - set config(val) { - this.updateSwiper(val); - const { params } = getParams(val); - Object.assign(this, params); - } - set prevElRef(el) { - this._prevElRef = el; - this._setElement(el, this.navigation, 'navigation', 'prevEl'); - } - set nextElRef(el) { - this._nextElRef = el; - this._setElement(el, this.navigation, 'navigation', 'nextEl'); - } - set scrollbarElRef(el) { - this._scrollbarElRef = el; - this._setElement(el, this.scrollbar, 'scrollbar'); - } - set paginationElRef(el) { - this._paginationElRef = el; - this._setElement(el, this.pagination, 'pagination'); - } - get activeSlides() { - if (this.virtual) { - return this._activeSlides; - } - return of(this.slides); - } - get zoomContainerClass() { - return this.zoom && typeof this.zoom !== 'boolean' - ? this.zoom.containerClass - : 'swiper-zoom-container'; - } - _setElement(el, ref, update, key = 'el') { - if (!el || !ref) { - return; - } - if (ref && el.nativeElement) { - if (ref[key] === el.nativeElement) { - return; - } - ref[key] = el.nativeElement; - } - const updateObj = {}; - updateObj[update] = true; - this.updateInitSwiper(updateObj); - } - ngOnInit() { - const { params } = getParams(this); - Object.assign(this, params); - } - ngAfterViewInit() { - this.childrenSlidesInit(); - this.initSwiper(); - this._changeDetectorRef.detectChanges(); - setTimeout(() => { - this.s_swiper.emit(this.swiperRef); - }); - } - childrenSlidesInit() { - this.slidesChanges(this.slidesEl); - this.slidesEl.changes.subscribe(this.slidesChanges); - } - get isSwiperActive() { - return this.swiperRef && !this.swiperRef.destroyed; - } - initSwiper() { - const { params: swiperParams, passedParams } = getParams(this); - Object.assign(this, swiperParams); - this._ngZone.runOutsideAngular(() => { - swiperParams.init = false; - if (!swiperParams.virtual) { - swiperParams.observer = true; - } - swiperParams.onAny = (eventName, ...args) => { - const emitter = this[('s_' + eventName)]; - if (emitter) { - emitter.emit(...args); - } - }; - const _slideClasses = (_, updated) => { - updated.forEach(({ slideEl, classNames }, index) => { - const dataIndex = slideEl.getAttribute('data-swiper-slide-index'); - const slideIndex = dataIndex ? parseInt(dataIndex) : index; - if (this.virtual) { - const virtualSlide = this.slides.find((item) => { - return item.virtualIndex && item.virtualIndex === slideIndex; - }); - if (virtualSlide) { - virtualSlide.classNames = classNames; - return; - } - } - if (this.slides[slideIndex]) { - this.slides[slideIndex].classNames = classNames; - } - }); - this._changeDetectorRef.detectChanges(); - }; - const _containerClasses = (_, classes) => { - setTimeout(() => { - this.containerClasses = classes; - }); - }; - Object.assign(swiperParams.on, { - _containerClasses, - _slideClasses, - }); - const swiperRef = new Swiper(swiperParams); - swiperRef.loopCreate = () => { }; - swiperRef.loopDestroy = () => { }; - if (swiperParams.loop) { - swiperRef.loopedSlides = this.loopedSlides; - } - const isVirtualEnabled = typeof swiperRef.params.virtual !== 'undefined' && - typeof swiperRef.params.virtual !== 'boolean' && - swiperRef.params.virtual.enabled; - if (swiperRef.virtual && isVirtualEnabled) { - swiperRef.virtual.slides = this.slides; - const extendWith = { - cache: false, - slides: this.slides, - renderExternal: this.updateVirtualSlides, - renderExternalUpdate: false, - }; - extend(swiperRef.params.virtual, extendWith); - extend(swiperRef.originalParams.virtual, extendWith); - } - if (isPlatformBrowser(this._platformId)) { - this.swiperRef = swiperRef.init(this.elementRef.nativeElement); - const isEnabled = typeof this.swiperRef.params.virtual !== 'undefined' && - typeof this.swiperRef.params.virtual !== 'boolean' && - this.swiperRef.params.virtual.enabled; - if (this.swiperRef.virtual && isEnabled) { - this.swiperRef.virtual.update(true); - } - this._changeDetectorRef.detectChanges(); - swiperRef.on('slideChange', () => { - this.indexChange.emit(this.swiperRef.realIndex); - }); - } - }); - } - ngOnChanges(changedParams) { - this.updateSwiper(changedParams); - this._changeDetectorRef.detectChanges(); - } - updateInitSwiper(changedParams) { - if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) { - return; - } - this._ngZone.runOutsideAngular(() => { - const { params: currentParams, pagination, navigation, scrollbar, virtual, thumbs, } = this.swiperRef; - if (changedParams.pagination) { - if (this.pagination && - typeof this.pagination !== 'boolean' && - this.pagination.el && - pagination && - !pagination.el) { - this.updateParameter('pagination', this.pagination); - pagination.init(); - pagination.render(); - pagination.update(); - } - else { - pagination.destroy(); - pagination.el = null; - } - } - if (changedParams.scrollbar) { - if (this.scrollbar && - typeof this.scrollbar !== 'boolean' && - this.scrollbar.el && - scrollbar && - !scrollbar.el) { - this.updateParameter('scrollbar', this.scrollbar); - scrollbar.init(); - scrollbar.updateSize(); - scrollbar.setTranslate(); - } - else { - scrollbar.destroy(); - scrollbar.el = null; - } - } - if (changedParams.navigation) { - if (this.navigation && - typeof this.navigation !== 'boolean' && - this.navigation.prevEl && - this.navigation.nextEl && - navigation && - !navigation.prevEl && - !navigation.nextEl) { - this.updateParameter('navigation', this.navigation); - navigation.init(); - navigation.update(); - } - else if (navigation.prevEl && navigation.nextEl) { - navigation.destroy(); - navigation.nextEl = null; - navigation.prevEl = null; - } - } - if (changedParams.thumbs && this.thumbs && this.thumbs.swiper) { - this.updateParameter('thumbs', this.thumbs); - const initialized = thumbs.init(); - if (initialized) - thumbs.update(true); - } - if (changedParams.controller && this.controller && this.controller.control) { - this.swiperRef.controller.control = this.controller.control; - } - this.swiperRef.update(); - }); - } - updateSwiper(changedParams) { - this._ngZone.runOutsideAngular(() => { - var _a, _b; - if (changedParams.config) { - return; - } - if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) { - return; - } - for (const key in changedParams) { - if (ignoreNgOnChanges.indexOf(key) >= 0) { - continue; - } - const newValue = (_b = (_a = changedParams[key]) === null || _a === void 0 ? void 0 : _a.currentValue) !== null && _b !== void 0 ? _b : changedParams[key]; - this.updateParameter(key, newValue); - } - if (changedParams.allowSlideNext) { - this.swiperRef.allowSlideNext = this.allowSlideNext; - } - if (changedParams.allowSlidePrev) { - this.swiperRef.allowSlidePrev = this.allowSlidePrev; - } - if (changedParams.direction) { - this.swiperRef.changeDirection(this.direction, false); - } - if (changedParams.breakpoints) { - if (this.loop && !this.loopedSlides) { - this.calcLoopedSlides(); - } - this.swiperRef.currentBreakpoint = null; - this.swiperRef.setBreakpoint(); - } - if (changedParams.thumbs || changedParams.controller) { - this.updateInitSwiper(changedParams); - } - this.swiperRef.update(); - }); - } - calcLoopedSlides() { - if (!this.loop) { - return; - } - let slidesPerViewParams = this.slidesPerView; - if (this.breakpoints) { - const breakpoint = Swiper.prototype.getBreakpoint(this.breakpoints); - const breakpointOnlyParams = breakpoint in this.breakpoints ? this.breakpoints[breakpoint] : undefined; - if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) { - slidesPerViewParams = breakpointOnlyParams.slidesPerView; - } - } - if (slidesPerViewParams === 'auto') { - this.loopedSlides = this.slides.length; - return this.slides.length; - } - let loopedSlides = this.loopedSlides || slidesPerViewParams; - if (!loopedSlides) { - // ? - return; - } - if (this.loopAdditionalSlides) { - loopedSlides += this.loopAdditionalSlides; - } - if (loopedSlides > this.slides.length) { - loopedSlides = this.slides.length; - } - this.loopedSlides = loopedSlides; - return loopedSlides; - } - updateParameter(key, value) { - if (!(this.swiperRef && !this.swiperRef.destroyed)) { - return; - } - const _key = key.replace(/^_/, ''); - const isCurrentParamObj = isObject(this.swiperRef.params[_key]); - if (Object.keys(this.swiperRef.modules).indexOf(_key) >= 0) { - const defaultParams = this.swiperRef.modules[_key].params[_key]; - if (isCurrentParamObj) { - extend(this.swiperRef.params[_key], defaultParams); - } - else { - this.swiperRef.params[_key] = defaultParams; - } - } - if (_key === 'enabled') { - if (value === true) { - this.swiperRef.enable(); - } - else if (value === false) { - this.swiperRef.disable(); - } - return; - } - if (isCurrentParamObj && isObject(value)) { - extend(this.swiperRef.params[_key], value); - } - else { - this.swiperRef.params[_key] = value; - } - } - /** - * @deprecated will be removed in upcoming versions - */ - setIndex(index, speed, silent) { - if (!this.isSwiperActive) { - this.initialSlide = index; - return; - } - if (index === this.swiperRef.activeIndex) { - return; - } - this._ngZone.runOutsideAngular(() => { - if (this.loop) { - this.swiperRef.slideToLoop(index, speed, !silent); - } - else { - this.swiperRef.slideTo(index, speed, !silent); - } - }); - } - ngOnDestroy() { - this._ngZone.runOutsideAngular(() => { - var _a; - (_a = this.swiperRef) === null || _a === void 0 ? void 0 : _a.destroy(true, false); - }); - } -} -SwiperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); -SwiperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.2", type: SwiperComponent, selector: "swiper, [swiper]", inputs: { enabled: "enabled", direction: "direction", touchEventsTarget: "touchEventsTarget", initialSlide: "initialSlide", speed: "speed", cssMode: "cssMode", updateOnWindowResize: "updateOnWindowResize", resizeObserver: "resizeObserver", nested: "nested", focusableElements: "focusableElements", width: "width", height: "height", preventInteractionOnTransition: "preventInteractionOnTransition", userAgent: "userAgent", url: "url", edgeSwipeDetection: "edgeSwipeDetection", edgeSwipeThreshold: "edgeSwipeThreshold", freeMode: "freeMode", autoHeight: "autoHeight", setWrapperSize: "setWrapperSize", virtualTranslate: "virtualTranslate", effect: "effect", breakpoints: "breakpoints", spaceBetween: "spaceBetween", slidesPerView: "slidesPerView", grid: "grid", slidesPerGroup: "slidesPerGroup", slidesPerGroupSkip: "slidesPerGroupSkip", centeredSlides: "centeredSlides", centeredSlidesBounds: "centeredSlidesBounds", slidesOffsetBefore: "slidesOffsetBefore", slidesOffsetAfter: "slidesOffsetAfter", normalizeSlideIndex: "normalizeSlideIndex", centerInsufficientSlides: "centerInsufficientSlides", watchOverflow: "watchOverflow", roundLengths: "roundLengths", touchRatio: "touchRatio", touchAngle: "touchAngle", simulateTouch: "simulateTouch", shortSwipes: "shortSwipes", longSwipes: "longSwipes", longSwipesRatio: "longSwipesRatio", longSwipesMs: "longSwipesMs", followFinger: "followFinger", allowTouchMove: "allowTouchMove", threshold: "threshold", touchMoveStopPropagation: "touchMoveStopPropagation", touchStartPreventDefault: "touchStartPreventDefault", touchStartForcePreventDefault: "touchStartForcePreventDefault", touchReleaseOnEdges: "touchReleaseOnEdges", uniqueNavElements: "uniqueNavElements", resistance: "resistance", resistanceRatio: "resistanceRatio", watchSlidesProgress: "watchSlidesProgress", grabCursor: "grabCursor", preventClicks: "preventClicks", preventClicksPropagation: "preventClicksPropagation", slideToClickedSlide: "slideToClickedSlide", preloadImages: "preloadImages", updateOnImagesReady: "updateOnImagesReady", loop: "loop", loopAdditionalSlides: "loopAdditionalSlides", loopedSlides: "loopedSlides", loopFillGroupWithBlank: "loopFillGroupWithBlank", loopPreventsSlide: "loopPreventsSlide", allowSlidePrev: "allowSlidePrev", allowSlideNext: "allowSlideNext", swipeHandler: "swipeHandler", noSwiping: "noSwiping", noSwipingClass: "noSwipingClass", noSwipingSelector: "noSwipingSelector", passiveListeners: "passiveListeners", containerModifierClass: "containerModifierClass", slideClass: "slideClass", slideBlankClass: "slideBlankClass", slideActiveClass: "slideActiveClass", slideDuplicateActiveClass: "slideDuplicateActiveClass", slideVisibleClass: "slideVisibleClass", slideDuplicateClass: "slideDuplicateClass", slideNextClass: "slideNextClass", slideDuplicateNextClass: "slideDuplicateNextClass", slidePrevClass: "slidePrevClass", slideDuplicatePrevClass: "slideDuplicatePrevClass", wrapperClass: "wrapperClass", runCallbacksOnInit: "runCallbacksOnInit", observeParents: "observeParents", observeSlideChildren: "observeSlideChildren", a11y: "a11y", autoplay: "autoplay", controller: "controller", coverflowEffect: "coverflowEffect", cubeEffect: "cubeEffect", fadeEffect: "fadeEffect", flipEffect: "flipEffect", creativeEffect: "creativeEffect", cardsEffect: "cardsEffect", hashNavigation: "hashNavigation", history: "history", keyboard: "keyboard", lazy: "lazy", mousewheel: "mousewheel", parallax: "parallax", thumbs: "thumbs", zoom: "zoom", class: "class", id: "id", navigation: "navigation", pagination: "pagination", scrollbar: "scrollbar", virtual: "virtual", index: "index", config: "config" }, outputs: { s__beforeBreakpoint: "_beforeBreakpoint", s__containerClasses: "_containerClasses", s__slideClass: "_slideClass", s__swiper: "_swiper", s_activeIndexChange: "activeIndexChange", s_afterInit: "afterInit", s_autoplay: "autoplay", s_autoplayStart: "autoplayStart", s_autoplayStop: "autoplayStop", s_beforeDestroy: "beforeDestroy", s_beforeInit: "beforeInit", s_beforeLoopFix: "beforeLoopFix", s_beforeResize: "beforeResize", s_beforeSlideChangeStart: "beforeSlideChangeStart", s_beforeTransitionStart: "beforeTransitionStart", s_breakpoint: "breakpoint", s_changeDirection: "changeDirection", s_click: "click", s_doubleTap: "doubleTap", s_doubleClick: "doubleClick", s_destroy: "destroy", s_fromEdge: "fromEdge", s_hashChange: "hashChange", s_hashSet: "hashSet", s_imagesReady: "imagesReady", s_init: "init", s_keyPress: "keyPress", s_lazyImageLoad: "lazyImageLoad", s_lazyImageReady: "lazyImageReady", s_loopFix: "loopFix", s_momentumBounce: "momentumBounce", s_navigationHide: "navigationHide", s_navigationShow: "navigationShow", s_observerUpdate: "observerUpdate", s_orientationchange: "orientationchange", s_paginationHide: "paginationHide", s_paginationRender: "paginationRender", s_paginationShow: "paginationShow", s_paginationUpdate: "paginationUpdate", s_progress: "progress", s_reachBeginning: "reachBeginning", s_reachEnd: "reachEnd", s_realIndexChange: "realIndexChange", s_resize: "resize", s_scroll: "scroll", s_scrollbarDragEnd: "scrollbarDragEnd", s_scrollbarDragMove: "scrollbarDragMove", s_scrollbarDragStart: "scrollbarDragStart", s_setTransition: "setTransition", s_setTranslate: "setTranslate", s_slideChange: "slideChange", s_slideChangeTransitionEnd: "slideChangeTransitionEnd", s_slideChangeTransitionStart: "slideChangeTransitionStart", s_slideNextTransitionEnd: "slideNextTransitionEnd", s_slideNextTransitionStart: "slideNextTransitionStart", s_slidePrevTransitionEnd: "slidePrevTransitionEnd", s_slidePrevTransitionStart: "slidePrevTransitionStart", s_slideResetTransitionStart: "slideResetTransitionStart", s_slideResetTransitionEnd: "slideResetTransitionEnd", s_sliderMove: "sliderMove", s_sliderFirstMove: "sliderFirstMove", s_slidesLengthChange: "slidesLengthChange", s_slidesGridLengthChange: "slidesGridLengthChange", s_snapGridLengthChange: "snapGridLengthChange", s_snapIndexChange: "snapIndexChange", s_tap: "tap", s_toEdge: "toEdge", s_touchEnd: "touchEnd", s_touchMove: "touchMove", s_touchMoveOpposite: "touchMoveOpposite", s_touchStart: "touchStart", s_transitionEnd: "transitionEnd", s_transitionStart: "transitionStart", s_update: "update", s_zoomChange: "zoomChange", s_swiper: "swiper", indexChange: "indexChange" }, host: { properties: { "class": "this.containerClasses" } }, queries: [{ propertyName: "slidesEl", predicate: SwiperSlideDirective }], viewQueries: [{ propertyName: "prevElRef", first: true, predicate: ["prevElRef"], descendants: true }, { propertyName: "nextElRef", first: true, predicate: ["nextElRef"], descendants: true }, { propertyName: "scrollbarElRef", first: true, predicate: ["scrollbarElRef"], descendants: true }, { propertyName: "paginationElRef", first: true, predicate: ["paginationElRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "\n\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n\n\n\n \n
\n \n
\n \n
\n \n
\n\n", styles: ["\n swiper {\n display: block;\n }\n "], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "async": i1.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); -i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperComponent, decorators: [{ - type: Component, - args: [{ - selector: 'swiper, [swiper]', - templateUrl: './swiper.component.html', - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None, - styles: [ - ` - swiper { - display: block; - } - `, - ], - }] - }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: Object, decorators: [{ - type: Inject, - args: [PLATFORM_ID] - }] }]; }, propDecorators: { enabled: [{ - type: Input - }], direction: [{ - type: Input - }], touchEventsTarget: [{ - type: Input - }], initialSlide: [{ - type: Input - }], speed: [{ - type: Input - }], cssMode: [{ - type: Input - }], updateOnWindowResize: [{ - type: Input - }], resizeObserver: [{ - type: Input - }], nested: [{ - type: Input - }], focusableElements: [{ - type: Input - }], width: [{ - type: Input - }], height: [{ - type: Input - }], preventInteractionOnTransition: [{ - type: Input - }], userAgent: [{ - type: Input - }], url: [{ - type: Input - }], edgeSwipeDetection: [{ - type: Input - }], edgeSwipeThreshold: [{ - type: Input - }], freeMode: [{ - type: Input - }], autoHeight: [{ - type: Input - }], setWrapperSize: [{ - type: Input - }], virtualTranslate: [{ - type: Input - }], effect: [{ - type: Input - }], breakpoints: [{ - type: Input - }], spaceBetween: [{ - type: Input - }], slidesPerView: [{ - type: Input - }], grid: [{ - type: Input - }], slidesPerGroup: [{ - type: Input - }], slidesPerGroupSkip: [{ - type: Input - }], centeredSlides: [{ - type: Input - }], centeredSlidesBounds: [{ - type: Input - }], slidesOffsetBefore: [{ - type: Input - }], slidesOffsetAfter: [{ - type: Input - }], normalizeSlideIndex: [{ - type: Input - }], centerInsufficientSlides: [{ - type: Input - }], watchOverflow: [{ - type: Input - }], roundLengths: [{ - type: Input - }], touchRatio: [{ - type: Input - }], touchAngle: [{ - type: Input - }], simulateTouch: [{ - type: Input - }], shortSwipes: [{ - type: Input - }], longSwipes: [{ - type: Input - }], longSwipesRatio: [{ - type: Input - }], longSwipesMs: [{ - type: Input - }], followFinger: [{ - type: Input - }], allowTouchMove: [{ - type: Input - }], threshold: [{ - type: Input - }], touchMoveStopPropagation: [{ - type: Input - }], touchStartPreventDefault: [{ - type: Input - }], touchStartForcePreventDefault: [{ - type: Input - }], touchReleaseOnEdges: [{ - type: Input - }], uniqueNavElements: [{ - type: Input - }], resistance: [{ - type: Input - }], resistanceRatio: [{ - type: Input - }], watchSlidesProgress: [{ - type: Input - }], grabCursor: [{ - type: Input - }], preventClicks: [{ - type: Input - }], preventClicksPropagation: [{ - type: Input - }], slideToClickedSlide: [{ - type: Input - }], preloadImages: [{ - type: Input - }], updateOnImagesReady: [{ - type: Input - }], loop: [{ - type: Input - }], loopAdditionalSlides: [{ - type: Input - }], loopedSlides: [{ - type: Input - }], loopFillGroupWithBlank: [{ - type: Input - }], loopPreventsSlide: [{ - type: Input - }], allowSlidePrev: [{ - type: Input - }], allowSlideNext: [{ - type: Input - }], swipeHandler: [{ - type: Input - }], noSwiping: [{ - type: Input - }], noSwipingClass: [{ - type: Input - }], noSwipingSelector: [{ - type: Input - }], passiveListeners: [{ - type: Input - }], containerModifierClass: [{ - type: Input - }], slideClass: [{ - type: Input - }], slideBlankClass: [{ - type: Input - }], slideActiveClass: [{ - type: Input - }], slideDuplicateActiveClass: [{ - type: Input - }], slideVisibleClass: [{ - type: Input - }], slideDuplicateClass: [{ - type: Input - }], slideNextClass: [{ - type: Input - }], slideDuplicateNextClass: [{ - type: Input - }], slidePrevClass: [{ - type: Input - }], slideDuplicatePrevClass: [{ - type: Input - }], wrapperClass: [{ - type: Input - }], runCallbacksOnInit: [{ - type: Input - }], observeParents: [{ - type: Input - }], observeSlideChildren: [{ - type: Input - }], a11y: [{ - type: Input - }], autoplay: [{ - type: Input - }], controller: [{ - type: Input - }], coverflowEffect: [{ - type: Input - }], cubeEffect: [{ - type: Input - }], fadeEffect: [{ - type: Input - }], flipEffect: [{ - type: Input - }], creativeEffect: [{ - type: Input - }], cardsEffect: [{ - type: Input - }], hashNavigation: [{ - type: Input - }], history: [{ - type: Input - }], keyboard: [{ - type: Input - }], lazy: [{ - type: Input - }], mousewheel: [{ - type: Input - }], parallax: [{ - type: Input - }], thumbs: [{ - type: Input - }], zoom: [{ - type: Input - }], class: [{ - type: Input - }], id: [{ - type: Input - }], navigation: [{ - type: Input - }], pagination: [{ - type: Input - }], scrollbar: [{ - type: Input - }], virtual: [{ - type: Input - }], index: [{ - type: Input - }], config: [{ - type: Input - }], s__beforeBreakpoint: [{ - type: Output, - args: ['_beforeBreakpoint'] - }], s__containerClasses: [{ - type: Output, - args: ['_containerClasses'] - }], s__slideClass: [{ - type: Output, - args: ['_slideClass'] - }], s__swiper: [{ - type: Output, - args: ['_swiper'] - }], s_activeIndexChange: [{ - type: Output, - args: ['activeIndexChange'] - }], s_afterInit: [{ - type: Output, - args: ['afterInit'] - }], s_autoplay: [{ - type: Output, - args: ['autoplay'] - }], s_autoplayStart: [{ - type: Output, - args: ['autoplayStart'] - }], s_autoplayStop: [{ - type: Output, - args: ['autoplayStop'] - }], s_beforeDestroy: [{ - type: Output, - args: ['beforeDestroy'] - }], s_beforeInit: [{ - type: Output, - args: ['beforeInit'] - }], s_beforeLoopFix: [{ - type: Output, - args: ['beforeLoopFix'] - }], s_beforeResize: [{ - type: Output, - args: ['beforeResize'] - }], s_beforeSlideChangeStart: [{ - type: Output, - args: ['beforeSlideChangeStart'] - }], s_beforeTransitionStart: [{ - type: Output, - args: ['beforeTransitionStart'] - }], s_breakpoint: [{ - type: Output, - args: ['breakpoint'] - }], s_changeDirection: [{ - type: Output, - args: ['changeDirection'] - }], s_click: [{ - type: Output, - args: ['click'] - }], s_doubleTap: [{ - type: Output, - args: ['doubleTap'] - }], s_doubleClick: [{ - type: Output, - args: ['doubleClick'] - }], s_destroy: [{ - type: Output, - args: ['destroy'] - }], s_fromEdge: [{ - type: Output, - args: ['fromEdge'] - }], s_hashChange: [{ - type: Output, - args: ['hashChange'] - }], s_hashSet: [{ - type: Output, - args: ['hashSet'] - }], s_imagesReady: [{ - type: Output, - args: ['imagesReady'] - }], s_init: [{ - type: Output, - args: ['init'] - }], s_keyPress: [{ - type: Output, - args: ['keyPress'] - }], s_lazyImageLoad: [{ - type: Output, - args: ['lazyImageLoad'] - }], s_lazyImageReady: [{ - type: Output, - args: ['lazyImageReady'] - }], s_loopFix: [{ - type: Output, - args: ['loopFix'] - }], s_momentumBounce: [{ - type: Output, - args: ['momentumBounce'] - }], s_navigationHide: [{ - type: Output, - args: ['navigationHide'] - }], s_navigationShow: [{ - type: Output, - args: ['navigationShow'] - }], s_observerUpdate: [{ - type: Output, - args: ['observerUpdate'] - }], s_orientationchange: [{ - type: Output, - args: ['orientationchange'] - }], s_paginationHide: [{ - type: Output, - args: ['paginationHide'] - }], s_paginationRender: [{ - type: Output, - args: ['paginationRender'] - }], s_paginationShow: [{ - type: Output, - args: ['paginationShow'] - }], s_paginationUpdate: [{ - type: Output, - args: ['paginationUpdate'] - }], s_progress: [{ - type: Output, - args: ['progress'] - }], s_reachBeginning: [{ - type: Output, - args: ['reachBeginning'] - }], s_reachEnd: [{ - type: Output, - args: ['reachEnd'] - }], s_realIndexChange: [{ - type: Output, - args: ['realIndexChange'] - }], s_resize: [{ - type: Output, - args: ['resize'] - }], s_scroll: [{ - type: Output, - args: ['scroll'] - }], s_scrollbarDragEnd: [{ - type: Output, - args: ['scrollbarDragEnd'] - }], s_scrollbarDragMove: [{ - type: Output, - args: ['scrollbarDragMove'] - }], s_scrollbarDragStart: [{ - type: Output, - args: ['scrollbarDragStart'] - }], s_setTransition: [{ - type: Output, - args: ['setTransition'] - }], s_setTranslate: [{ - type: Output, - args: ['setTranslate'] - }], s_slideChange: [{ - type: Output, - args: ['slideChange'] - }], s_slideChangeTransitionEnd: [{ - type: Output, - args: ['slideChangeTransitionEnd'] - }], s_slideChangeTransitionStart: [{ - type: Output, - args: ['slideChangeTransitionStart'] - }], s_slideNextTransitionEnd: [{ - type: Output, - args: ['slideNextTransitionEnd'] - }], s_slideNextTransitionStart: [{ - type: Output, - args: ['slideNextTransitionStart'] - }], s_slidePrevTransitionEnd: [{ - type: Output, - args: ['slidePrevTransitionEnd'] - }], s_slidePrevTransitionStart: [{ - type: Output, - args: ['slidePrevTransitionStart'] - }], s_slideResetTransitionStart: [{ - type: Output, - args: ['slideResetTransitionStart'] - }], s_slideResetTransitionEnd: [{ - type: Output, - args: ['slideResetTransitionEnd'] - }], s_sliderMove: [{ - type: Output, - args: ['sliderMove'] - }], s_sliderFirstMove: [{ - type: Output, - args: ['sliderFirstMove'] - }], s_slidesLengthChange: [{ - type: Output, - args: ['slidesLengthChange'] - }], s_slidesGridLengthChange: [{ - type: Output, - args: ['slidesGridLengthChange'] - }], s_snapGridLengthChange: [{ - type: Output, - args: ['snapGridLengthChange'] - }], s_snapIndexChange: [{ - type: Output, - args: ['snapIndexChange'] - }], s_tap: [{ - type: Output, - args: ['tap'] - }], s_toEdge: [{ - type: Output, - args: ['toEdge'] - }], s_touchEnd: [{ - type: Output, - args: ['touchEnd'] - }], s_touchMove: [{ - type: Output, - args: ['touchMove'] - }], s_touchMoveOpposite: [{ - type: Output, - args: ['touchMoveOpposite'] - }], s_touchStart: [{ - type: Output, - args: ['touchStart'] - }], s_transitionEnd: [{ - type: Output, - args: ['transitionEnd'] - }], s_transitionStart: [{ - type: Output, - args: ['transitionStart'] - }], s_update: [{ - type: Output, - args: ['update'] - }], s_zoomChange: [{ - type: Output, - args: ['zoomChange'] - }], s_swiper: [{ - type: Output, - args: ['swiper'] - }], indexChange: [{ - type: Output - }], prevElRef: [{ - type: ViewChild, - args: ['prevElRef', { static: false }] - }], nextElRef: [{ - type: ViewChild, - args: ['nextElRef', { static: false }] - }], scrollbarElRef: [{ - type: ViewChild, - args: ['scrollbarElRef', { static: false }] - }], paginationElRef: [{ - type: ViewChild, - args: ['paginationElRef', { static: false }] - }], slidesEl: [{ - type: ContentChildren, - args: [SwiperSlideDirective, { descendants: false, emitDistinctChangesOnly: true }] - }], containerClasses: [{ - type: HostBinding, - args: ['class'] - }] } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyL3NyYy9zd2lwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2FuZ3VsYXIvc3JjL3N3aXBlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixXQUFXLEVBR1gsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixhQUFhO0FBQ2IsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFTdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQWNwRCxNQUFNLE9BQU8sZUFBZTtJQTBZMUIsWUFDVSxPQUFlLEVBQ2YsVUFBc0IsRUFDdEIsa0JBQXFDLEVBQ2hCLFdBQW1CO1FBSHhDLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFwVXpDLGVBQVUsR0FBZ0MsY0FBYyxDQUFDO1FBVXpELGlCQUFZLEdBQWtD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RTtnQkFPckMsU0FBUztzQkFEWixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBT3JDLGNBQWM7c0JBRGpCLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQU8xQyxlQUFlO3NCQURsQixTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFPL0MsUUFBUTtzQkFEUCxlQUFlO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUU7Z0JBdUJ0RSxnQkFBZ0I7c0JBQXJDLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFBMQVRGT1JNX0lELFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IFN3aXBlciBmcm9tICdzd2lwZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGdldFBhcmFtcyB9IGZyb20gJy4vdXRpbHMvZ2V0LXBhcmFtcyc7XG5pbXBvcnQgeyBTd2lwZXJTbGlkZURpcmVjdGl2ZSB9IGZyb20gJy4vc3dpcGVyLXNsaWRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICBleHRlbmQsXG4gIGlzT2JqZWN0LFxuICBzZXRQcm9wZXJ0eSxcbiAgaWdub3JlTmdPbkNoYW5nZXMsXG4gIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSxcbiAgaXNTaG93RWwsXG59IGZyb20gJy4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHtcbiAgU3dpcGVyT3B0aW9ucyxcbiAgU3dpcGVyRXZlbnRzLFxuICBOYXZpZ2F0aW9uT3B0aW9ucyxcbiAgUGFnaW5hdGlvbk9wdGlvbnMsXG4gIFNjcm9sbGJhck9wdGlvbnMsXG4gIFZpcnR1YWxPcHRpb25zLFxufSBmcm9tICdzd2lwZXIvdHlwZXMnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3dpcGVyLCBbc3dpcGVyXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zd2lwZXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgc3dpcGVyIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU3dpcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZW5hYmxlZDogU3dpcGVyT3B0aW9uc1snZW5hYmxlZCddO1xuICBASW5wdXQoKSBkaXJlY3Rpb246IFN3aXBlck9wdGlvbnNbJ2RpcmVjdGlvbiddO1xuICBASW5wdXQoKSB0b3VjaEV2ZW50c1RhcmdldDogU3dpcGVyT3B0aW9uc1sndG91Y2hFdmVudHNUYXJnZXQnXTtcbiAgQElucHV0KCkgaW5pdGlhbFNsaWRlOiBTd2lwZXJPcHRpb25zWydpbml0aWFsU2xpZGUnXTtcbiAgQElucHV0KCkgc3BlZWQ6IFN3aXBlck9wdGlvbnNbJ3NwZWVkJ107XG4gIEBJbnB1dCgpIGNzc01vZGU6IFN3aXBlck9wdGlvbnNbJ2Nzc01vZGUnXTtcbiAgQElucHV0KCkgdXBkYXRlT25XaW5kb3dSZXNpemU6IFN3aXBlck9wdGlvbnNbJ3VwZGF0ZU9uV2luZG93UmVzaXplJ107XG4gIEBJbnB1dCgpIHJlc2l6ZU9ic2VydmVyOiBTd2lwZXJPcHRpb25zWydyZXNpemVPYnNlcnZlciddO1xuICBASW5wdXQoKSBuZXN0ZWQ6IFN3aXBlck9wdGlvbnNbJ25lc3RlZCddO1xuICBASW5wdXQoKSBmb2N1c2FibGVFbGVtZW50czogU3dpcGVyT3B0aW9uc1snZm9jdXNhYmxlRWxlbWVudHMnXTtcbiAgQElucHV0KCkgd2lkdGg6IFN3aXBlck9wdGlvbnNbJ3dpZHRoJ107XG4gIEBJbnB1dCgpIGhlaWdodDogU3dpcGVyT3B0aW9uc1snaGVpZ2h0J107XG4gIEBJbnB1dCgpIHByZXZlbnRJbnRlcmFjdGlvbk9uVHJhbnNpdGlvbjogU3dpcGVyT3B0aW9uc1sncHJldmVudEludGVyYWN0aW9uT25UcmFuc2l0aW9uJ107XG4gIEBJbnB1dCgpIHVzZXJBZ2VudDogU3dpcGVyT3B0aW9uc1sndXNlckFnZW50J107XG4gIEBJbnB1dCgpIHVybDogU3dpcGVyT3B0aW9uc1sndXJsJ107XG4gIEBJbnB1dCgpIGVkZ2VTd2lwZURldGVjdGlvbjogYm9vbGVhbiB8IHN0cmluZztcbiAgQElucHV0KCkgZWRnZVN3aXBlVGhyZXNob2xkOiBudW1iZXI7XG4gIEBJbnB1dCgpIGZyZWVNb2RlOiBTd2lwZXJPcHRpb25zWydmcmVlTW9kZSddO1xuICBASW5wdXQoKSBhdXRvSGVpZ2h0OiBTd2lwZXJPcHRpb25zWydhdXRvSGVpZ2h0J107XG4gIEBJbnB1dCgpIHNldFdyYXBwZXJTaXplOiBTd2lwZXJPcHRpb25zWydzZXRXcmFwcGVyU2l6ZSddO1xuICBASW5wdXQoKSB2aXJ0dWFsVHJhbnNsYXRlOiBTd2lwZXJPcHRpb25zWyd2aXJ0dWFsVHJhbnNsYXRlJ107XG4gIEBJbnB1dCgpIGVmZmVjdDogU3dpcGVyT3B0aW9uc1snZWZmZWN0J107XG4gIEBJbnB1dCgpIGJyZWFrcG9pbnRzOiBTd2lwZXJPcHRpb25zWydicmVha3BvaW50cyddO1xuICBASW5wdXQoKSBzcGFjZUJldHdlZW46IFN3aXBlck9wdGlvbnNbJ3NwYWNlQmV0d2VlbiddO1xuICBASW5wdXQoKSBzbGlkZXNQZXJWaWV3OiBTd2lwZXJPcHRpb25zWydzbGlkZXNQZXJWaWV3J107XG4gIEBJbnB1dCgpIGdyaWQ6IFN3aXBlck9wdGlvbnNbJ2dyaWQnXTtcbiAgQElucHV0KCkgc2xpZGVzUGVyR3JvdXA6IFN3aXBlck9wdGlvbnNbJ3NsaWRlc1Blckdyb3VwJ107XG4gIEBJbnB1dCgpIHNsaWRlc1Blckdyb3VwU2tpcDogU3dpcGVyT3B0aW9uc1snc2xpZGVzUGVyR3JvdXBTa2lwJ107XG4gIEBJbnB1dCgpIGNlbnRlcmVkU2xpZGVzOiBTd2lwZXJPcHRpb25zWydjZW50ZXJlZFNsaWRlcyddO1xuICBASW5wdXQoKSBjZW50ZXJlZFNsaWRlc0JvdW5kczogU3dpcGVyT3B0aW9uc1snY2VudGVyZWRTbGlkZXNCb3VuZHMnXTtcbiAgQElucHV0KCkgc2xpZGVzT2Zmc2V0QmVmb3JlOiBTd2lwZXJPcHRpb25zWydzbGlkZXNPZmZzZXRCZWZvcmUnXTtcbiAgQElucHV0KCkgc2xpZGVzT2Zmc2V0QWZ0ZXI6IFN3aXBlck9wdGlvbnNbJ3NsaWRlc09mZnNldEFmdGVyJ107XG4gIEBJbnB1dCgpIG5vcm1hbGl6ZVNsaWRlSW5kZXg6IFN3aXBlck9wdGlvbnNbJ25vcm1hbGl6ZVNsaWRlSW5kZXgnXTtcbiAgQElucHV0KCkgY2VudGVySW5zdWZmaWNpZW50U2xpZGVzOiBTd2lwZXJPcHRpb25zWydjZW50ZXJJbnN1ZmZpY2llbnRTbGlkZXMnXTtcbiAgQElucHV0KCkgd2F0Y2hPdmVyZmxvdzogU3dpcGVyT3B0aW9uc1snd2F0Y2hPdmVyZmxvdyddO1xuICBASW5wdXQoKSByb3VuZExlbmd0aHM6IFN3aXBlck9wdGlvbnNbJ3JvdW5kTGVuZ3RocyddO1xuICBASW5wdXQoKSB0b3VjaFJhdGlvOiBTd2lwZXJPcHRpb25zWyd0b3VjaFJhdGlvJ107XG4gIEBJbnB1dCgpIHRvdWNoQW5nbGU6IFN3aXBlck9wdGlvbnNbJ3RvdWNoQW5nbGUnXTtcbiAgQElucHV0KCkgc2ltdWxhdGVUb3VjaDogU3dpcGVyT3B0aW9uc1snc2ltdWxhdGVUb3VjaCddO1xuICBASW5wdXQoKSBzaG9ydFN3aXBlczogU3dpcGVyT3B0aW9uc1snc2hvcnRTd2lwZXMnXTtcbiAgQElucHV0KCkgbG9uZ1N3aXBlczogU3dpcGVyT3B0aW9uc1snbG9uZ1N3aXBlcyddO1xuICBASW5wdXQoKSBsb25nU3dpcGVzUmF0aW86IFN3aXBlck9wdGlvbnNbJ2xvbmdTd2lwZXNSYXRpbyddO1xuICBASW5wdXQoKSBsb25nU3dpcGVzTXM6IFN3aXBlck9wdGlvbnNbJ2xvbmdTd2lwZXNNcyddO1xuICBASW5wdXQoKSBmb2xsb3dGaW5nZXI6IFN3aXBlck9wdGlvbnNbJ2ZvbGxvd0ZpbmdlciddO1xuICBASW5wdXQoKSBhbGxvd1RvdWNoTW92ZTogU3dpcGVyT3B0aW9uc1snYWxsb3dUb3VjaE1vdmUnXTtcbiAgQElucHV0KCkgdGhyZXNob2xkOiBTd2lwZXJPcHRpb25zWyd0aHJlc2hvbGQnXTtcbiAgQElucHV0KCkgdG91Y2hNb3ZlU3RvcFByb3BhZ2F0aW9uOiBTd2lwZXJPcHRpb25zWyd0b3VjaE1vdmVTdG9wUHJvcGFnYXRpb24nXTtcbiAgQElucHV0KCkgdG91Y2hTdGFydFByZXZlbnREZWZhdWx0OiBTd2lwZXJPcHRpb25zWyd0b3VjaFN0YXJ0UHJldmVudERlZmF1bHQnXTtcbiAgQElucHV0KCkgdG91Y2hTdGFydEZvcmNlUHJldmVudERlZmF1bHQ6IFN3aXBlck9wdGlvbnNbJ3RvdWNoU3RhcnRGb3JjZVByZXZlbnREZWZhdWx0J107XG4gIEBJbnB1dCgpIHRvdWNoUmVsZWFzZU9uRWRnZXM6IFN3aXBlck9wdGlvbnNbJ3RvdWNoUmVsZWFzZU9uRWRnZXMnXTtcbiAgQElucHV0KCkgdW5pcXVlTmF2RWxlbWVudHM6IFN3aXBlck9wdGlvbnNbJ3VuaXF1ZU5hdkVsZW1lbnRzJ107XG4gIEBJbnB1dCgpIHJlc2lzdGFuY2U6IFN3aXBlck9wdGlvbnNbJ3Jlc2lzdGFuY2UnXTtcbiAgQElucHV0KCkgcmVzaXN0YW5jZVJhdGlvOiBTd2lwZXJPcHRpb25zWydyZXNpc3RhbmNlUmF0aW8nXTtcbiAgQElucHV0KCkgd2F0Y2hTbGlkZXNQcm9ncmVzczogU3dpcGVyT3B0aW9uc1snd2F0Y2hTbGlkZXNQcm9ncmVzcyddO1xuICBASW5wdXQoKSBncmFiQ3Vyc29yOiBTd2lwZXJPcHRpb25zWydncmFiQ3Vyc29yJ107XG4gIEBJbnB1dCgpIHByZXZlbnRDbGlja3M6IFN3aXBlck9wdGlvbnNbJ3ByZXZlbnRDbGlja3MnXTtcbiAgQElucHV0KCkgcHJldmVudENsaWNrc1Byb3BhZ2F0aW9uOiBTd2lwZXJPcHRpb25zWydwcmV2ZW50Q2xpY2tzUHJvcGFnYXRpb24nXTtcbiAgQElucHV0KCkgc2xpZGVUb0NsaWNrZWRTbGlkZTogU3dpcGVyT3B0aW9uc1snc2xpZGVUb0NsaWNrZWRTbGlkZSddO1xuICBASW5wdXQoKSBwcmVsb2FkSW1hZ2VzOiBTd2lwZXJPcHRpb25zWydwcmVsb2FkSW1hZ2VzJ107XG4gIEBJbnB1dCgpIHVwZGF0ZU9uSW1hZ2VzUmVhZHk6IFN3aXBlck9wdGlvbnNbJ3VwZGF0ZU9uSW1hZ2VzUmVhZHknXTtcbiAgQElucHV0KCkgbG9vcDogU3dpcGVyT3B0aW9uc1snbG9vcCddO1xuICBASW5wdXQoKSBsb29wQWRkaXRpb25hbFNsaWRlczogU3dpcGVyT3B0aW9uc1snbG9vcEFkZGl0aW9uYWxTbGlkZXMnXTtcbiAgQElucHV0KCkgbG9vcGVkU2xpZGVzOiBTd2lwZXJPcHRpb25zWydsb29wZWRTbGlkZXMnXTtcbiAgQElucHV0KCkgbG9vcEZpbGxHcm91cFdpdGhCbGFuazogU3dpcGVyT3B0aW9uc1snbG9vcEZpbGxHcm91cFdpdGhCbGFuayddO1xuICBASW5wdXQoKSBsb29wUHJldmVudHNTbGlkZTogU3dpcGVyT3B0aW9uc1snbG9vcFByZXZlbnRzU2xpZGUnXTtcbiAgQElucHV0KCkgYWxsb3dTbGlkZVByZXY6IFN3aXBlck9wdGlvbnNbJ2FsbG93U2xpZGVQcmV2J107XG4gIEBJbnB1dCgpIGFsbG93U2xpZGVOZXh0OiBTd2lwZXJPcHRpb25zWydhbGxvd1NsaWRlTmV4dCddO1xuICBASW5wdXQoKSBzd2lwZUhhbmRsZXI6IFN3aXBlck9wdGlvbnNbJ3N3aXBlSGFuZGxlciddO1xuICBASW5wdXQoKSBub1N3aXBpbmc6IFN3aXBlck9wdGlvbnNbJ25vU3dpcGluZyddO1xuICBASW5wdXQoKSBub1N3aXBpbmdDbGFzczogU3dpcGVyT3B0aW9uc1snbm9Td2lwaW5nQ2xhc3MnXTtcbiAgQElucHV0KCkgbm9Td2lwaW5nU2VsZWN0b3I6IFN3aXBlck9wdGlvbnNbJ25vU3dpcGluZ1NlbGVjdG9yJ107XG4gIEBJbnB1dCgpIHBhc3NpdmVMaXN0ZW5lcnM6IFN3aXBlck9wdGlvbnNbJ3Bhc3NpdmVMaXN0ZW5lcnMnXTtcbiAgQElucHV0KCkgY29udGFpbmVyTW9kaWZpZXJDbGFzczogU3dpcGVyT3B0aW9uc1snY29udGFpbmVyTW9kaWZpZXJDbGFzcyddO1xuICBASW5wdXQoKSBzbGlkZUNsYXNzOiBTd2lwZXJPcHRpb25zWydzbGlkZUNsYXNzJ10gPSAnc3dpcGVyLXNsaWRlJztcbiAgQElucHV0KCkgc2xpZGVCbGFua0NsYXNzOiBTd2lwZXJPcHRpb25zWydzbGlkZUJsYW5rQ2xhc3MnXTtcbiAgQElucHV0KCkgc2xpZGVBY3RpdmVDbGFzczogU3dpcGVyT3B0aW9uc1snc2xpZGVBY3RpdmVDbGFzcyddO1xuICBASW5wdXQoKSBzbGlkZUR1cGxpY2F0ZUFjdGl2ZUNsYXNzOiBTd2lwZXJPcHRpb25zWydzbGlkZUR1cGxpY2F0ZUFjdGl2ZUNsYXNzJ107XG4gIEBJbnB1dCgpIHNsaWRlVmlzaWJsZUNsYXNzOiBTd2lwZXJPcHRpb25zWydzbGlkZVZpc2libGVDbGFzcyddO1xuICBASW5wdXQoKSBzbGlkZUR1cGxpY2F0ZUNsYXNzOiBTd2lwZXJPcHRpb25zWydzbGlkZUR1cGxpY2F0ZUNsYXNzJ107XG4gIEBJbnB1dCgpIHNsaWRlTmV4dENsYXNzOiBTd2lwZXJPcHRpb25zWydzbGlkZU5leHRDbGFzcyddO1xuICBASW5wdXQoKSBzbGlkZUR1cGxpY2F0ZU5leHRDbGFzczogU3dpcGVyT3B0aW9uc1snc2xpZGVEdXBsaWNhdGVOZXh0Q2xhc3MnXTtcbiAgQElucHV0KCkgc2xpZGVQcmV2Q2xhc3M6IFN3aXBlck9wdGlvbnNbJ3NsaWRlUHJldkNsYXNzJ107XG4gIEBJbnB1dCgpIHNsaWRlRHVwbGljYXRlUHJldkNsYXNzOiBTd2lwZXJPcHRpb25zWydzbGlkZUR1cGxpY2F0ZVByZXZDbGFzcyddO1xuICBASW5wdXQoKSB3cmFwcGVyQ2xhc3M6IFN3aXBlck9wdGlvbnNbJ3dyYXBwZXJDbGFzcyddID0gJ3N3aXBlci13cmFwcGVyJztcbiAgQElucHV0KCkgcnVuQ2FsbGJhY2tzT25Jbml0OiBTd2lwZXJPcHRpb25zWydydW5DYWxsYmFja3NPbkluaXQnXTtcbiAgQElucHV0KCkgb2JzZXJ2ZVBhcmVudHM6IFN3aXBlck9wdGlvbnNbJ29ic2VydmVQYXJlbnRzJ107XG4gIEBJbnB1dCgpIG9ic2VydmVTbGlkZUNoaWxkcmVuOiBTd2lwZXJPcHRpb25zWydvYnNlcnZlU2xpZGVDaGlsZHJlbiddO1xuICBASW5wdXQoKSBhMTF5OiBTd2lwZXJPcHRpb25zWydhMTF5J107XG4gIEBJbnB1dCgpIGF1dG9wbGF5OiBTd2lwZXJPcHRpb25zWydhdXRvcGxheSddO1xuICBASW5wdXQoKSBjb250cm9sbGVyOiBTd2lwZXJPcHRpb25zWydjb250cm9sbGVyJ107XG4gIEBJbnB1dCgpIGNvdmVyZmxvd0VmZmVjdDogU3dpcGVyT3B0aW9uc1snY292ZXJmbG93RWZmZWN0J107XG4gIEBJbnB1dCgpIGN1YmVFZmZlY3Q6IFN3aXBlck9wdGlvbnNbJ2N1YmVFZmZlY3QnXTtcbiAgQElucHV0KCkgZmFkZUVmZmVjdDogU3dpcGVyT3B0aW9uc1snZmFkZUVmZmVjdCddO1xuICBASW5wdXQoKSBmbGlwRWZmZWN0OiBTd2lwZXJPcHRpb25zWydmbGlwRWZmZWN0J107XG4gIEBJbnB1dCgpIGNyZWF0aXZlRWZmZWN0OiBTd2lwZXJPcHRpb25zWydjcmVhdGl2ZUVmZmVjdCddO1xuICBASW5wdXQoKSBjYXJkc0VmZmVjdDogU3dpcGVyT3B0aW9uc1snY2FyZHNFZmZlY3QnXTtcbiAgQElucHV0KCkgaGFzaE5hdmlnYXRpb246IFN3aXBlck9wdGlvbnNbJ2hhc2hOYXZpZ2F0aW9uJ107XG4gIEBJbnB1dCgpIGhpc3Rvcnk6IFN3aXBlck9wdGlvbnNbJ2hpc3RvcnknXTtcbiAgQElucHV0KCkga2V5Ym9hcmQ6IFN3aXBlck9wdGlvbnNbJ2tleWJvYXJkJ107XG4gIEBJbnB1dCgpIGxhenk6IFN3aXBlck9wdGlvbnNbJ2xhenknXTtcbiAgQElucHV0KCkgbW91c2V3aGVlbDogU3dpcGVyT3B0aW9uc1snbW91c2V3aGVlbCddO1xuICBASW5wdXQoKSBwYXJhbGxheDogU3dpcGVyT3B0aW9uc1sncGFyYWxsYXgnXTtcbiAgQElucHV0KCkgdGh1bWJzOiBTd2lwZXJPcHRpb25zWyd0aHVtYnMnXTtcbiAgQElucHV0KCkgem9vbTogU3dpcGVyT3B0aW9uc1snem9vbSddO1xuICBASW5wdXQoKSBjbGFzczogc3RyaW5nO1xuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICBASW5wdXQoKVxuICBzZXQgbmF2aWdhdGlvbih2YWwpIHtcbiAgICBjb25zdCBjdXJyZW50TmV4dCA9XG4gICAgICB0eXBlb2YgdGhpcy5fbmF2aWdhdGlvbiAhPT0gJ2Jvb2xlYW4nICYmIHRoaXMuX25hdmlnYXRpb24gIT09ICcnXG4gICAgICAgID8gdGhpcy5fbmF2aWdhdGlvbj8ubmV4dEVsXG4gICAgICAgIDogbnVsbDtcbiAgICBjb25zdCBjdXJyZW50UHJldiA9XG4gICAgICB0eXBlb2YgdGhpcy5fbmF2aWdhdGlvbiAhPT0gJ2Jvb2xlYW4nICYmIHRoaXMuX25hdmlnYXRpb24gIT09ICcnXG4gICAgICAgID8gdGhpcy5fbmF2aWdhdGlvbj8ucHJldkVsXG4gICAgICAgIDogbnVsbDtcbiAgICB0aGlzLl9uYXZpZ2F0aW9uID0gc2V0UHJvcGVydHkodmFsLCB7XG4gICAgICBuZXh0RWw6IGN1cnJlbnROZXh0IHx8IG51bGwsXG4gICAgICBwcmV2RWw6IGN1cnJlbnRQcmV2IHx8IG51bGwsXG4gICAgfSk7XG4gICAgdGhpcy5zaG93TmF2aWdhdGlvbiA9ICEoXG4gICAgICBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsKSAhPT0gdHJ1ZSB8fFxuICAgICAgKHRoaXMuX25hdmlnYXRpb24gJiZcbiAgICAgICAgdHlwZW9mIHRoaXMuX25hdmlnYXRpb24gIT09ICdib29sZWFuJyAmJlxuICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uLnByZXZFbCAhPT0gdGhpcy5fcHJldkVsUmVmPy5uYXRpdmVFbGVtZW50ICYmXG4gICAgICAgICh0aGlzLl9uYXZpZ2F0aW9uLnByZXZFbCAhPT0gbnVsbCB8fCB0aGlzLl9uYXZpZ2F0aW9uLm5leHRFbCAhPT0gbnVsbCkgJiZcbiAgICAgICAgKHR5cGVvZiB0aGlzLl9uYXZpZ2F0aW9uLm5leHRFbCA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgICB0eXBlb2YgdGhpcy5fbmF2aWdhdGlvbi5wcmV2RWwgPT09ICdzdHJpbmcnIHx8XG4gICAgICAgICAgdHlwZW9mIHRoaXMuX25hdmlnYXRpb24ubmV4dEVsID09PSAnb2JqZWN0JyB8fFxuICAgICAgICAgIHR5cGVvZiB0aGlzLl9uYXZpZ2F0aW9uLnByZXZFbCA9PT0gJ29iamVjdCcpKVxuICAgICk7XG4gIH1cbiAgZ2V0IG5hdmlnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb247XG4gIH1cbiAgcHJpdmF0ZSBfbmF2aWdhdGlvbjogTmF2aWdhdGlvbk9wdGlvbnMgfCBib29sZWFuIHwgJyc7XG4gIHNob3dOYXZpZ2F0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBzZXQgcGFnaW5hdGlvbih2YWwpIHtcbiAgICBjb25zdCBjdXJyZW50ID1cbiAgICAgIHR5cGVvZiB0aGlzLl9wYWdpbmF0aW9uICE9PSAnYm9vbGVhbicgJiYgdGhpcy5fcGFnaW5hdGlvbiAhPT0gJydcbiAgICAgICAgPyB0aGlzLl9wYWdpbmF0aW9uPy5lbFxuICAgICAgICA6IG51bGw7XG4gICAgdGhpcy5fcGFnaW5hdGlvbiA9IHNldFByb3BlcnR5KHZhbCwge1xuICAgICAgZWw6IGN1cnJlbnQgfHwgbnVsbCxcbiAgICB9KTtcbiAgICB0aGlzLnNob3dQYWdpbmF0aW9uID0gaXNTaG93RWwodmFsLCB0aGlzLl9wYWdpbmF0aW9uLCB0aGlzLl9wYWdpbmF0aW9uRWxSZWYpO1xuICB9XG4gIGdldCBwYWdpbmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9wYWdpbmF0aW9uO1xuICB9XG4gIHByaXZhdGUgX3BhZ2luYXRpb246IFBhZ2luYXRpb25PcHRpb25zIHwgYm9vbGVhbiB8ICcnO1xuICBzaG93UGFnaW5hdGlvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgc2V0IHNjcm9sbGJhcih2YWwpIHtcbiAgICBjb25zdCBjdXJyZW50ID1cbiAgICAgIHR5cGVvZiB0aGlzLl9zY3JvbGxiYXIgIT09ICdib29sZWFuJyAmJiB0aGlzLl9zY3JvbGxiYXIgIT09ICcnID8gdGhpcy5fc2Nyb2xsYmFyPy5lbCA6IG51bGw7XG4gICAgdGhpcy5fc2Nyb2xsYmFyID0gc2V0UHJvcGVydHkodmFsLCB7XG4gICAgICBlbDogY3VycmVudCB8fCBudWxsLFxuICAgIH0pO1xuICAgIHRoaXMuc2hvd1Njcm9sbGJhciA9IGlzU2hvd0VsKHZhbCwgdGhpcy5fc2Nyb2xsYmFyLCB0aGlzLl9zY3JvbGxiYXJFbFJlZik7XG4gIH1cbiAgZ2V0IHNjcm9sbGJhcigpIHtcbiAgICByZXR1cm4gdGhpcy5fc2Nyb2xsYmFyO1xuICB9XG4gIHByaXZhdGUgX3Njcm9sbGJhcjogU2Nyb2xsYmFyT3B0aW9ucyB8IGJvb2xlYW4gfCAnJztcbiAgc2hvd1Njcm9sbGJhcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgc2V0IHZpcnR1YWwodmFsKSB7XG4gICAgdGhpcy5fdmlydHVhbCA9IHNldFByb3BlcnR5KHZhbCk7XG4gIH1cbiAgZ2V0IHZpcnR1YWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpcnR1YWw7XG4gIH1cbiAgcHJpdmF0ZSBfdmlydHVhbDogVmlydHVhbE9wdGlvbnMgfCBib29sZWFuIHwgJyc7XG5cbiAgQElucHV0KClcbiAgc2V0IGluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zb2xlLndhcm4oJ2BbKGluZGV4KV1gIHByb3AgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHVwY29taW5nIHZlcnNpb25zJyk7XG4gICAgdGhpcy5zZXRJbmRleChpbmRleCk7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IGNvbmZpZyh2YWw6IFN3aXBlck9wdGlvbnMpIHtcbiAgICB0aGlzLnVwZGF0ZVN3aXBlcih2YWwpO1xuICAgIGNvbnN0IHsgcGFyYW1zIH0gPSBnZXRQYXJhbXModmFsKTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIHBhcmFtcyk7XG4gIH1cbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ19iZWZvcmVCcmVha3BvaW50Jykgc19fYmVmb3JlQnJlYWtwb2ludDogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snX2JlZm9yZUJyZWFrcG9pbnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ19jb250YWluZXJDbGFzc2VzJykgc19fY29udGFpbmVyQ2xhc3NlczogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snX2NvbnRhaW5lckNsYXNzZXMnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ19zbGlkZUNsYXNzJykgc19fc2xpZGVDbGFzczogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snX3NsaWRlQ2xhc3MnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ19zd2lwZXInKSBzX19zd2lwZXI6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ19zd2lwZXInXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2FjdGl2ZUluZGV4Q2hhbmdlJykgc19hY3RpdmVJbmRleENoYW5nZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snYWN0aXZlSW5kZXhDaGFuZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2FmdGVySW5pdCcpIHNfYWZ0ZXJJbml0OiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydhZnRlckluaXQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2F1dG9wbGF5Jykgc19hdXRvcGxheTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snYXV0b3BsYXknXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2F1dG9wbGF5U3RhcnQnKSBzX2F1dG9wbGF5U3RhcnQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2F1dG9wbGF5U3RhcnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2F1dG9wbGF5U3RvcCcpIHNfYXV0b3BsYXlTdG9wOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydhdXRvcGxheVN0b3AnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2JlZm9yZURlc3Ryb3knKSBzX2JlZm9yZURlc3Ryb3k6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2JlZm9yZURlc3Ryb3knXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2JlZm9yZUluaXQnKSBzX2JlZm9yZUluaXQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2JlZm9yZUluaXQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2JlZm9yZUxvb3BGaXgnKSBzX2JlZm9yZUxvb3BGaXg6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2JlZm9yZUxvb3BGaXgnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2JlZm9yZVJlc2l6ZScpIHNfYmVmb3JlUmVzaXplOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydiZWZvcmVSZXNpemUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2JlZm9yZVNsaWRlQ2hhbmdlU3RhcnQnKSBzX2JlZm9yZVNsaWRlQ2hhbmdlU3RhcnQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2JlZm9yZVNsaWRlQ2hhbmdlU3RhcnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2JlZm9yZVRyYW5zaXRpb25TdGFydCcpIHNfYmVmb3JlVHJhbnNpdGlvblN0YXJ0OiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydiZWZvcmVUcmFuc2l0aW9uU3RhcnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2JyZWFrcG9pbnQnKSBzX2JyZWFrcG9pbnQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2JyZWFrcG9pbnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2NoYW5nZURpcmVjdGlvbicpIHNfY2hhbmdlRGlyZWN0aW9uOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydjaGFuZ2VEaXJlY3Rpb24nXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2NsaWNrJykgc19jbGljazogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snY2xpY2snXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2RvdWJsZVRhcCcpIHNfZG91YmxlVGFwOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydkb3VibGVUYXAnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2RvdWJsZUNsaWNrJykgc19kb3VibGVDbGljazogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snZG91YmxlQ2xpY2snXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2Rlc3Ryb3knKSBzX2Rlc3Ryb3k6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2Rlc3Ryb3knXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2Zyb21FZGdlJykgc19mcm9tRWRnZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snZnJvbUVkZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2hhc2hDaGFuZ2UnKSBzX2hhc2hDaGFuZ2U6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2hhc2hDaGFuZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2hhc2hTZXQnKSBzX2hhc2hTZXQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2hhc2hTZXQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2ltYWdlc1JlYWR5Jykgc19pbWFnZXNSZWFkeTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snaW1hZ2VzUmVhZHknXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2luaXQnKSBzX2luaXQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2luaXQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2tleVByZXNzJykgc19rZXlQcmVzczogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1sna2V5UHJlc3MnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2xhenlJbWFnZUxvYWQnKSBzX2xhenlJbWFnZUxvYWQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2xhenlJbWFnZUxvYWQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2xhenlJbWFnZVJlYWR5Jykgc19sYXp5SW1hZ2VSZWFkeTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snbGF6eUltYWdlUmVhZHknXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ2xvb3BGaXgnKSBzX2xvb3BGaXg6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ2xvb3BGaXgnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ21vbWVudHVtQm91bmNlJykgc19tb21lbnR1bUJvdW5jZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snbW9tZW50dW1Cb3VuY2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ25hdmlnYXRpb25IaWRlJykgc19uYXZpZ2F0aW9uSGlkZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snbmF2aWdhdGlvbkhpZGUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ25hdmlnYXRpb25TaG93Jykgc19uYXZpZ2F0aW9uU2hvdzogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snbmF2aWdhdGlvblNob3cnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ29ic2VydmVyVXBkYXRlJykgc19vYnNlcnZlclVwZGF0ZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snb2JzZXJ2ZXJVcGRhdGUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ29yaWVudGF0aW9uY2hhbmdlJykgc19vcmllbnRhdGlvbmNoYW5nZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snb3JpZW50YXRpb25jaGFuZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3BhZ2luYXRpb25IaWRlJykgc19wYWdpbmF0aW9uSGlkZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1sncGFnaW5hdGlvbkhpZGUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3BhZ2luYXRpb25SZW5kZXInKSBzX3BhZ2luYXRpb25SZW5kZXI6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3BhZ2luYXRpb25SZW5kZXInXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3BhZ2luYXRpb25TaG93Jykgc19wYWdpbmF0aW9uU2hvdzogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1sncGFnaW5hdGlvblNob3cnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3BhZ2luYXRpb25VcGRhdGUnKSBzX3BhZ2luYXRpb25VcGRhdGU6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3BhZ2luYXRpb25VcGRhdGUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3Byb2dyZXNzJykgc19wcm9ncmVzczogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1sncHJvZ3Jlc3MnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3JlYWNoQmVnaW5uaW5nJykgc19yZWFjaEJlZ2lubmluZzogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1sncmVhY2hCZWdpbm5pbmcnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3JlYWNoRW5kJykgc19yZWFjaEVuZDogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1sncmVhY2hFbmQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3JlYWxJbmRleENoYW5nZScpIHNfcmVhbEluZGV4Q2hhbmdlOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydyZWFsSW5kZXhDaGFuZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3Jlc2l6ZScpIHNfcmVzaXplOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydyZXNpemUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3Njcm9sbCcpIHNfc2Nyb2xsOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydzY3JvbGwnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3Njcm9sbGJhckRyYWdFbmQnKSBzX3Njcm9sbGJhckRyYWdFbmQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3Njcm9sbGJhckRyYWdFbmQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3Njcm9sbGJhckRyYWdNb3ZlJykgc19zY3JvbGxiYXJEcmFnTW92ZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snc2Nyb2xsYmFyRHJhZ01vdmUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3Njcm9sbGJhckRyYWdTdGFydCcpIHNfc2Nyb2xsYmFyRHJhZ1N0YXJ0OiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydzY3JvbGxiYXJEcmFnU3RhcnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NldFRyYW5zaXRpb24nKSBzX3NldFRyYW5zaXRpb246IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3NldFRyYW5zaXRpb24nXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NldFRyYW5zbGF0ZScpIHNfc2V0VHJhbnNsYXRlOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydzZXRUcmFuc2xhdGUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlQ2hhbmdlJykgc19zbGlkZUNoYW5nZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snc2xpZGVDaGFuZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlQ2hhbmdlVHJhbnNpdGlvbkVuZCcpIHNfc2xpZGVDaGFuZ2VUcmFuc2l0aW9uRW5kOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydzbGlkZUNoYW5nZVRyYW5zaXRpb25FbmQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlQ2hhbmdlVHJhbnNpdGlvblN0YXJ0Jykgc19zbGlkZUNoYW5nZVRyYW5zaXRpb25TdGFydDogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snc2xpZGVDaGFuZ2VUcmFuc2l0aW9uU3RhcnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlTmV4dFRyYW5zaXRpb25FbmQnKSBzX3NsaWRlTmV4dFRyYW5zaXRpb25FbmQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3NsaWRlTmV4dFRyYW5zaXRpb25FbmQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlTmV4dFRyYW5zaXRpb25TdGFydCcpIHNfc2xpZGVOZXh0VHJhbnNpdGlvblN0YXJ0OiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydzbGlkZU5leHRUcmFuc2l0aW9uU3RhcnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlUHJldlRyYW5zaXRpb25FbmQnKSBzX3NsaWRlUHJldlRyYW5zaXRpb25FbmQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3NsaWRlUHJldlRyYW5zaXRpb25FbmQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlUHJldlRyYW5zaXRpb25TdGFydCcpIHNfc2xpZGVQcmV2VHJhbnNpdGlvblN0YXJ0OiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydzbGlkZVByZXZUcmFuc2l0aW9uU3RhcnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlUmVzZXRUcmFuc2l0aW9uU3RhcnQnKSBzX3NsaWRlUmVzZXRUcmFuc2l0aW9uU3RhcnQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3NsaWRlUmVzZXRUcmFuc2l0aW9uU3RhcnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlUmVzZXRUcmFuc2l0aW9uRW5kJykgc19zbGlkZVJlc2V0VHJhbnNpdGlvbkVuZDogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snc2xpZGVSZXNldFRyYW5zaXRpb25FbmQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlck1vdmUnKSBzX3NsaWRlck1vdmU6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3NsaWRlck1vdmUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlckZpcnN0TW92ZScpIHNfc2xpZGVyRmlyc3RNb3ZlOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydzbGlkZXJGaXJzdE1vdmUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlc0xlbmd0aENoYW5nZScpIHNfc2xpZGVzTGVuZ3RoQ2hhbmdlOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydzbGlkZXNMZW5ndGhDaGFuZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NsaWRlc0dyaWRMZW5ndGhDaGFuZ2UnKSBzX3NsaWRlc0dyaWRMZW5ndGhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3NsaWRlc0dyaWRMZW5ndGhDaGFuZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NuYXBHcmlkTGVuZ3RoQ2hhbmdlJykgc19zbmFwR3JpZExlbmd0aENoYW5nZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1snc25hcEdyaWRMZW5ndGhDaGFuZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3NuYXBJbmRleENoYW5nZScpIHNfc25hcEluZGV4Q2hhbmdlOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWydzbmFwSW5kZXhDaGFuZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3RhcCcpIHNfdGFwOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWyd0YXAnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3RvRWRnZScpIHNfdG9FZGdlOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWyd0b0VkZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3RvdWNoRW5kJykgc190b3VjaEVuZDogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1sndG91Y2hFbmQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3RvdWNoTW92ZScpIHNfdG91Y2hNb3ZlOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWyd0b3VjaE1vdmUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3RvdWNoTW92ZU9wcG9zaXRlJykgc190b3VjaE1vdmVPcHBvc2l0ZTogRXZlbnRFbWl0dGVyPFN3aXBlckV2ZW50c1sndG91Y2hNb3ZlT3Bwb3NpdGUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3RvdWNoU3RhcnQnKSBzX3RvdWNoU3RhcnQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3RvdWNoU3RhcnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3RyYW5zaXRpb25FbmQnKSBzX3RyYW5zaXRpb25FbmQ6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3RyYW5zaXRpb25FbmQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3RyYW5zaXRpb25TdGFydCcpIHNfdHJhbnNpdGlvblN0YXJ0OiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWyd0cmFuc2l0aW9uU3RhcnQnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3VwZGF0ZScpIHNfdXBkYXRlOiBFdmVudEVtaXR0ZXI8U3dpcGVyRXZlbnRzWyd1cGRhdGUnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3pvb21DaGFuZ2UnKSBzX3pvb21DaGFuZ2U6IEV2ZW50RW1pdHRlcjxTd2lwZXJFdmVudHNbJ3pvb21DaGFuZ2UnXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIEBPdXRwdXQoJ3N3aXBlcicpIHNfc3dpcGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKSBpbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3ByZXZFbFJlZicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBzZXQgcHJldkVsUmVmKGVsOiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy5fcHJldkVsUmVmID0gZWw7XG4gICAgdGhpcy5fc2V0RWxlbWVudChlbCwgdGhpcy5uYXZpZ2F0aW9uLCAnbmF2aWdhdGlvbicsICdwcmV2RWwnKTtcbiAgfVxuICBfcHJldkVsUmVmOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCduZXh0RWxSZWYnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgc2V0IG5leHRFbFJlZihlbDogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX25leHRFbFJlZiA9IGVsO1xuICAgIHRoaXMuX3NldEVsZW1lbnQoZWwsIHRoaXMubmF2aWdhdGlvbiwgJ25hdmlnYXRpb24nLCAnbmV4dEVsJyk7XG4gIH1cbiAgX25leHRFbFJlZjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc2Nyb2xsYmFyRWxSZWYnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgc2V0IHNjcm9sbGJhckVsUmVmKGVsOiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy5fc2Nyb2xsYmFyRWxSZWYgPSBlbDtcbiAgICB0aGlzLl9zZXRFbGVtZW50KGVsLCB0aGlzLnNjcm9sbGJhciwgJ3Njcm9sbGJhcicpO1xuICB9XG4gIF9zY3JvbGxiYXJFbFJlZjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgncGFnaW5hdGlvbkVsUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHNldCBwYWdpbmF0aW9uRWxSZWYoZWw6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLl9wYWdpbmF0aW9uRWxSZWYgPSBlbDtcbiAgICB0aGlzLl9zZXRFbGVtZW50KGVsLCB0aGlzLnBhZ2luYXRpb24sICdwYWdpbmF0aW9uJyk7XG4gIH1cbiAgX3BhZ2luYXRpb25FbFJlZjogRWxlbWVudFJlZjtcbiAgQENvbnRlbnRDaGlsZHJlbihTd2lwZXJTbGlkZURpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogZmFsc2UsIGVtaXREaXN0aW5jdENoYW5nZXNPbmx5OiB0cnVlIH0pXG4gIHNsaWRlc0VsOiBRdWVyeUxpc3Q8U3dpcGVyU2xpZGVEaXJlY3RpdmU+O1xuICBwcml2YXRlIHNsaWRlczogU3dpcGVyU2xpZGVEaXJlY3RpdmVbXTtcblxuICBwcmVwZW5kU2xpZGVzOiBPYnNlcnZhYmxlPFN3aXBlclNsaWRlRGlyZWN0aXZlW10+O1xuICBhcHBlbmRTbGlkZXM6IE9ic2VydmFibGU8U3dpcGVyU2xpZGVEaXJlY3RpdmVbXT47XG5cbiAgc3dpcGVyUmVmOiBTd2lwZXI7XG4gIHJlYWRvbmx5IF9hY3RpdmVTbGlkZXMgPSBuZXcgU3ViamVjdDxTd2lwZXJTbGlkZURpcmVjdGl2ZVtdPigpO1xuXG4gIGdldCBhY3RpdmVTbGlkZXMoKSB7XG4gICAgaWYgKHRoaXMudmlydHVhbCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVNsaWRlcztcbiAgICB9XG4gICAgcmV0dXJuIG9mKHRoaXMuc2xpZGVzKTtcbiAgfVxuXG4gIGdldCB6b29tQ29udGFpbmVyQ2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuem9vbSAmJiB0eXBlb2YgdGhpcy56b29tICE9PSAnYm9vbGVhbidcbiAgICAgID8gdGhpcy56b29tLmNvbnRhaW5lckNsYXNzXG4gICAgICA6ICdzd2lwZXItem9vbS1jb250YWluZXInO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNvbnRhaW5lckNsYXNzZXM6IHN0cmluZyA9ICdzd2lwZXInO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgX3BsYXRmb3JtSWQ6IE9iamVjdCxcbiAgKSB7fVxuXG4gIHByaXZhdGUgX3NldEVsZW1lbnQoZWw6IEVsZW1lbnRSZWYsIHJlZjogYW55LCB1cGRhdGU6IHN0cmluZywga2V5ID0gJ2VsJykge1xuICAgIGlmICghZWwgfHwgIXJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVmICYmIGVsLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIGlmIChyZWZba2V5XSA9PT0gZWwubmF0aXZlRWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZWZba2V5XSA9IGVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuICAgIGNvbnN0IHVwZGF0ZU9iajogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcbiAgICB1cGRhdGVPYmpbdXBkYXRlXSA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVJbml0U3dpcGVyKHVwZGF0ZU9iaik7XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgeyBwYXJhbXMgfSA9IGdldFBhcmFtcyh0aGlzKTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIHBhcmFtcyk7XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY2hpbGRyZW5TbGlkZXNJbml0KCk7XG4gICAgdGhpcy5pbml0U3dpcGVyKCk7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zX3N3aXBlci5lbWl0KHRoaXMuc3dpcGVyUmVmKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2hpbGRyZW5TbGlkZXNJbml0KCkge1xuICAgIHRoaXMuc2xpZGVzQ2hhbmdlcyh0aGlzLnNsaWRlc0VsKTtcbiAgICB0aGlzLnNsaWRlc0VsLmNoYW5nZXMuc3Vic2NyaWJlKHRoaXMuc2xpZGVzQ2hhbmdlcyk7XG4gIH1cblxuICBwcml2YXRlIHNsaWRlc0NoYW5nZXMgPSAodmFsOiBRdWVyeUxpc3Q8U3dpcGVyU2xpZGVEaXJlY3RpdmU+KSA9PiB7XG4gICAgdGhpcy5zbGlkZXMgPSB2YWwubWFwKChzbGlkZTogU3dpcGVyU2xpZGVEaXJlY3RpdmUsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIHNsaWRlLnNsaWRlSW5kZXggPSBpbmRleDtcbiAgICAgIHNsaWRlLmNsYXNzTmFtZXMgPSB0aGlzLnNsaWRlQ2xhc3MgfHwgJyc7XG4gICAgICByZXR1cm4gc2xpZGU7XG4gICAgfSk7XG4gICAgaWYgKHRoaXMubG9vcCAmJiAhdGhpcy5sb29wZWRTbGlkZXMpIHtcbiAgICAgIHRoaXMuY2FsY0xvb3BlZFNsaWRlcygpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMudmlydHVhbCkge1xuICAgICAgaWYgKHRoaXMubG9vcGVkU2xpZGVzKSB7XG4gICAgICAgIHRoaXMucHJlcGVuZFNsaWRlcyA9IG9mKHRoaXMuc2xpZGVzLnNsaWNlKHRoaXMuc2xpZGVzLmxlbmd0aCAtIHRoaXMubG9vcGVkU2xpZGVzKSk7XG4gICAgICAgIHRoaXMuYXBwZW5kU2xpZGVzID0gb2YodGhpcy5zbGlkZXMuc2xpY2UoMCwgdGhpcy5sb29wZWRTbGlkZXMpKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuc3dpcGVyUmVmICYmIHRoaXMuc3dpcGVyUmVmLnZpcnR1YWwpIHtcbiAgICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuc3dpcGVyUmVmLnZpcnR1YWwuc2xpZGVzID0gdGhpcy5zbGlkZXM7XG4gICAgICAgIHRoaXMuc3dpcGVyUmVmLnZpcnR1YWwudXBkYXRlKHRydWUpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfTtcblxuICBnZXQgaXNTd2lwZXJBY3RpdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3dpcGVyUmVmICYmICF0aGlzLnN3aXBlclJlZi5kZXN0cm95ZWQ7XG4gIH1cblxuICBpbml0U3dpcGVyKCkge1xuICAgIGNvbnN0IHsgcGFyYW1zOiBzd2lwZXJQYXJhbXMsIHBhc3NlZFBhcmFtcyB9ID0gZ2V0UGFyYW1zKHRoaXMpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgc3dpcGVyUGFyYW1zKTtcbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgc3dpcGVyUGFyYW1zLmluaXQgPSBmYWxzZTtcbiAgICAgIGlmICghc3dpcGVyUGFyYW1zLnZpcnR1YWwpIHtcbiAgICAgICAgc3dpcGVyUGFyYW1zLm9ic2VydmVyID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgc3dpcGVyUGFyYW1zLm9uQW55ID0gKGV2ZW50TmFtZToga2V5b2YgU3dpcGVyQ29tcG9uZW50LCAuLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICBjb25zdCBlbWl0dGVyID0gdGhpc1soJ3NfJyArIGV2ZW50TmFtZSkgYXMga2V5b2YgU3dpcGVyQ29tcG9uZW50XSBhcyBFdmVudEVtaXR0ZXI8YW55PjtcbiAgICAgICAgaWYgKGVtaXR0ZXIpIHtcbiAgICAgICAgICBlbWl0dGVyLmVtaXQoLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBjb25zdCBfc2xpZGVDbGFzc2VzOiBTd2lwZXJFdmVudHNbJ19zbGlkZUNsYXNzZXMnXSA9IChfLCB1cGRhdGVkKSA9PiB7XG4gICAgICAgIHVwZGF0ZWQuZm9yRWFjaCgoeyBzbGlkZUVsLCBjbGFzc05hbWVzIH0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0YUluZGV4ID0gc2xpZGVFbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4Jyk7XG4gICAgICAgICAgY29uc3Qgc2xpZGVJbmRleCA9IGRhdGFJbmRleCA/IHBhcnNlSW50KGRhdGFJbmRleCkgOiBpbmRleDtcbiAgICAgICAgICBpZiAodGhpcy52aXJ0dWFsKSB7XG4gICAgICAgICAgICBjb25zdCB2aXJ0dWFsU2xpZGUgPSB0aGlzLnNsaWRlcy5maW5kKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBpdGVtLnZpcnR1YWxJbmRleCAmJiBpdGVtLnZpcnR1YWxJbmRleCA9PT0gc2xpZGVJbmRleDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHZpcnR1YWxTbGlkZSkge1xuICAgICAgICAgICAgICB2aXJ0dWFsU2xpZGUuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5zbGlkZXNbc2xpZGVJbmRleF0pIHtcbiAgICAgICAgICAgIHRoaXMuc2xpZGVzW3NsaWRlSW5kZXhdLmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH07XG4gICAgICBjb25zdCBfY29udGFpbmVyQ2xhc3NlczogU3dpcGVyRXZlbnRzWydfY29udGFpbmVyQ2xhc3NlcyddID0gKF8sIGNsYXNzZXMpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb250YWluZXJDbGFzc2VzID0gY2xhc3NlcztcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgT2JqZWN0LmFzc2lnbihzd2lwZXJQYXJhbXMub24sIHtcbiAgICAgICAgX2NvbnRhaW5lckNsYXNzZXMsXG4gICAgICAgIF9zbGlkZUNsYXNzZXMsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHN3aXBlclJlZiA9IG5ldyBTd2lwZXIoc3dpcGVyUGFyYW1zKTtcbiAgICAgIHN3aXBlclJlZi5sb29wQ3JlYXRlID0gKCkgPT4ge307XG4gICAgICBzd2lwZXJSZWYubG9vcERlc3Ryb3kgPSAoKSA9PiB7fTtcbiAgICAgIGlmIChzd2lwZXJQYXJhbXMubG9vcCkge1xuICAgICAgICBzd2lwZXJSZWYubG9vcGVkU2xpZGVzID0gdGhpcy5sb29wZWRTbGlkZXM7XG4gICAgICB9XG4gICAgICBjb25zdCBpc1ZpcnR1YWxFbmFibGVkID1cbiAgICAgICAgdHlwZW9mIHN3aXBlclJlZi5wYXJhbXMudmlydHVhbCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgdHlwZW9mIHN3aXBlclJlZi5wYXJhbXMudmlydHVhbCAhPT0gJ2Jvb2xlYW4nICYmXG4gICAgICAgIHN3aXBlclJlZi5wYXJhbXMudmlydHVhbC5lbmFibGVkO1xuICAgICAgaWYgKHN3aXBlclJlZi52aXJ0dWFsICYmIGlzVmlydHVhbEVuYWJsZWQpIHtcbiAgICAgICAgc3dpcGVyUmVmLnZpcnR1YWwuc2xpZGVzID0gdGhpcy5zbGlkZXM7XG4gICAgICAgIGNvbnN0IGV4dGVuZFdpdGggPSB7XG4gICAgICAgICAgY2FjaGU6IGZhbHNlLFxuICAgICAgICAgIHNsaWRlczogdGhpcy5zbGlkZXMsXG4gICAgICAgICAgcmVuZGVyRXh0ZXJuYWw6IHRoaXMudXBkYXRlVmlydHVhbFNsaWRlcyxcbiAgICAgICAgICByZW5kZXJFeHRlcm5hbFVwZGF0ZTogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIGV4dGVuZChzd2lwZXJSZWYucGFyYW1zLnZpcnR1YWwsIGV4dGVuZFdpdGgpO1xuICAgICAgICBleHRlbmQoc3dpcGVyUmVmLm9yaWdpbmFsUGFyYW1zLnZpcnR1YWwsIGV4dGVuZFdpdGgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5fcGxhdGZvcm1JZCkpIHtcbiAgICAgICAgdGhpcy5zd2lwZXJSZWYgPSBzd2lwZXJSZWYuaW5pdCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGlzRW5hYmxlZCA9XG4gICAgICAgICAgdHlwZW9mIHRoaXMuc3dpcGVyUmVmLnBhcmFtcy52aXJ0dWFsICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgIHR5cGVvZiB0aGlzLnN3aXBlclJlZi5wYXJhbXMudmlydHVhbCAhPT0gJ2Jvb2xlYW4nICYmXG4gICAgICAgICAgdGhpcy5zd2lwZXJSZWYucGFyYW1zLnZpcnR1YWwuZW5hYmxlZDtcbiAgICAgICAgaWYgKHRoaXMuc3dpcGVyUmVmLnZpcnR1YWwgJiYgaXNFbmFibGVkKSB7XG4gICAgICAgICAgdGhpcy5zd2lwZXJSZWYudmlydHVhbC51cGRhdGUodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBzd2lwZXJSZWYub24oJ3NsaWRlQ2hhbmdlJywgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaW5kZXhDaGFuZ2UuZW1pdCh0aGlzLnN3aXBlclJlZi5yZWFsSW5kZXgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0eWxlOiBhbnkgPSBudWxsO1xuICBjdXJyZW50VmlydHVhbERhdGE6IGFueTsgLy8gVE9ETzogdHlwZSB2aXJ0dWFsRGF0YTtcbiAgcHJpdmF0ZSB1cGRhdGVWaXJ0dWFsU2xpZGVzID0gKHZpcnR1YWxEYXRhOiBhbnkpID0+IHtcbiAgICAvLyBUT0RPOiB0eXBlIHZpcnR1YWxEYXRhXG4gICAgaWYgKFxuICAgICAgIXRoaXMuc3dpcGVyUmVmIHx8XG4gICAgICAodGhpcy5jdXJyZW50VmlydHVhbERhdGEgJiZcbiAgICAgICAgdGhpcy5jdXJyZW50VmlydHVhbERhdGEuZnJvbSA9PT0gdmlydHVhbERhdGEuZnJvbSAmJlxuICAgICAgICB0aGlzLmN1cnJlbnRWaXJ0dWFsRGF0YS50byA9PT0gdmlydHVhbERhdGEudG8gJiZcbiAgICAgICAgdGhpcy5jdXJyZW50VmlydHVhbERhdGEub2Zmc2V0ID09PSB2aXJ0dWFsRGF0YS5vZmZzZXQpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3R5bGUgPSB0aGlzLnN3aXBlclJlZi5pc0hvcml6b250YWwoKVxuICAgICAgPyB7XG4gICAgICAgICAgW3RoaXMuc3dpcGVyUmVmLnJ0bFRyYW5zbGF0ZSA/ICdyaWdodCcgOiAnbGVmdCddOiBgJHt2aXJ0dWFsRGF0YS5vZmZzZXR9cHhgLFxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICB0b3A6IGAke3ZpcnR1YWxEYXRhLm9mZnNldH1weGAsXG4gICAgICAgIH07XG4gICAgdGhpcy5jdXJyZW50VmlydHVhbERhdGEgPSB2aXJ0dWFsRGF0YTtcbiAgICB0aGlzLl9hY3RpdmVTbGlkZXMubmV4dCh2aXJ0dWFsRGF0YS5zbGlkZXMpO1xuICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLnN3aXBlclJlZi51cGRhdGVTbGlkZXMoKTtcbiAgICAgIHRoaXMuc3dpcGVyUmVmLnVwZGF0ZVByb2dyZXNzKCk7XG4gICAgICB0aGlzLnN3aXBlclJlZi51cGRhdGVTbGlkZXNDbGFzc2VzKCk7XG4gICAgICBpZiAodGhpcy5zd2lwZXJSZWYubGF6eSAmJiB0aGlzLnN3aXBlclJlZi5wYXJhbXMubGF6eVsnZW5hYmxlZCddKSB7XG4gICAgICAgIHRoaXMuc3dpcGVyUmVmLmxhenkubG9hZCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5zd2lwZXJSZWYudmlydHVhbC51cGRhdGUodHJ1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9O1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZWRQYXJhbXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLnVwZGF0ZVN3aXBlcihjaGFuZ2VkUGFyYW1zKTtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB1cGRhdGVJbml0U3dpcGVyKGNoYW5nZWRQYXJhbXM6IGFueSkge1xuICAgIGlmICghKGNoYW5nZWRQYXJhbXMgJiYgdGhpcy5zd2lwZXJSZWYgJiYgIXRoaXMuc3dpcGVyUmVmLmRlc3Ryb3llZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwYXJhbXM6IGN1cnJlbnRQYXJhbXMsXG4gICAgICAgIHBhZ2luYXRpb24sXG4gICAgICAgIG5hdmlnYXRpb24sXG4gICAgICAgIHNjcm9sbGJhcixcbiAgICAgICAgdmlydHVhbCxcbiAgICAgICAgdGh1bWJzLFxuICAgICAgfSA9IHRoaXMuc3dpcGVyUmVmO1xuXG4gICAgICBpZiAoY2hhbmdlZFBhcmFtcy5wYWdpbmF0aW9uKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnBhZ2luYXRpb24gJiZcbiAgICAgICAgICB0eXBlb2YgdGhpcy5wYWdpbmF0aW9uICE9PSAnYm9vbGVhbicgJiZcbiAgICAgICAgICB0aGlzLnBhZ2luYXRpb24uZWwgJiZcbiAgICAgICAgICBwYWdpbmF0aW9uICYmXG4gICAgICAgICAgIXBhZ2luYXRpb24uZWxcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVQYXJhbWV0ZXIoJ3BhZ2luYXRpb24nLCB0aGlzLnBhZ2luYXRpb24pO1xuICAgICAgICAgIHBhZ2luYXRpb24uaW5pdCgpO1xuICAgICAgICAgIHBhZ2luYXRpb24ucmVuZGVyKCk7XG4gICAgICAgICAgcGFnaW5hdGlvbi51cGRhdGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwYWdpbmF0aW9uLmRlc3Ryb3koKTtcbiAgICAgICAgICBwYWdpbmF0aW9uLmVsID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY2hhbmdlZFBhcmFtcy5zY3JvbGxiYXIpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuc2Nyb2xsYmFyICYmXG4gICAgICAgICAgdHlwZW9mIHRoaXMuc2Nyb2xsYmFyICE9PSAnYm9vbGVhbicgJiZcbiAgICAgICAgICB0aGlzLnNjcm9sbGJhci5lbCAmJlxuICAgICAgICAgIHNjcm9sbGJhciAmJlxuICAgICAgICAgICFzY3JvbGxiYXIuZWxcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVQYXJhbWV0ZXIoJ3Njcm9sbGJhcicsIHRoaXMuc2Nyb2xsYmFyKTtcbiAgICAgICAgICBzY3JvbGxiYXIuaW5pdCgpO1xuICAgICAgICAgIHNjcm9sbGJhci51cGRhdGVTaXplKCk7XG4gICAgICAgICAgc2Nyb2xsYmFyLnNldFRyYW5zbGF0ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNjcm9sbGJhci5kZXN0cm95KCk7XG4gICAgICAgICAgc2Nyb2xsYmFyLmVsID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY2hhbmdlZFBhcmFtcy5uYXZpZ2F0aW9uKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLm5hdmlnYXRpb24gJiZcbiAgICAgICAgICB0eXBlb2YgdGhpcy5uYXZpZ2F0aW9uICE9PSAnYm9vbGVhbicgJiZcbiAgICAgICAgICB0aGlzLm5hdmlnYXRpb24ucHJldkVsICYmXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLm5leHRFbCAmJlxuICAgICAgICAgIG5hdmlnYXRpb24gJiZcbiAgICAgICAgICAhbmF2aWdhdGlvbi5wcmV2RWwgJiZcbiAgICAgICAgICAhbmF2aWdhdGlvbi5uZXh0RWxcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVQYXJhbWV0ZXIoJ25hdmlnYXRpb24nLCB0aGlzLm5hdmlnYXRpb24pO1xuICAgICAgICAgIG5hdmlnYXRpb24uaW5pdCgpO1xuICAgICAgICAgIG5hdmlnYXRpb24udXBkYXRlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAobmF2aWdhdGlvbi5wcmV2RWwgJiYgbmF2aWdhdGlvbi5uZXh0RWwpIHtcbiAgICAgICAgICBuYXZpZ2F0aW9uLmRlc3Ryb3koKTtcbiAgICAgICAgICBuYXZpZ2F0aW9uLm5leHRFbCA9IG51bGw7XG4gICAgICAgICAgbmF2aWdhdGlvbi5wcmV2RWwgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2hhbmdlZFBhcmFtcy50aHVtYnMgJiYgdGhpcy50aHVtYnMgJiYgdGhpcy50aHVtYnMuc3dpcGVyKSB7XG4gICAgICAgIHRoaXMudXBkYXRlUGFyYW1ldGVyKCd0aHVtYnMnLCB0aGlzLnRodW1icyk7XG4gICAgICAgIGNvbnN0IGluaXRpYWxpemVkID0gdGh1bWJzLmluaXQoKTtcbiAgICAgICAgaWYgKGluaXRpYWxpemVkKSB0aHVtYnMudXBkYXRlKHRydWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2hhbmdlZFBhcmFtcy5jb250cm9sbGVyICYmIHRoaXMuY29udHJvbGxlciAmJiB0aGlzLmNvbnRyb2xsZXIuY29udHJvbCkge1xuICAgICAgICB0aGlzLnN3aXBlclJlZi5jb250cm9sbGVyLmNvbnRyb2wgPSB0aGlzLmNvbnRyb2xsZXIuY29udHJvbDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zd2lwZXJSZWYudXBkYXRlKCk7XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVTd2lwZXIoY2hhbmdlZFBhcmFtczogU2ltcGxlQ2hhbmdlcyB8IGFueSkge1xuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAoY2hhbmdlZFBhcmFtcy5jb25maWcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCEoY2hhbmdlZFBhcmFtcyAmJiB0aGlzLnN3aXBlclJlZiAmJiAhdGhpcy5zd2lwZXJSZWYuZGVzdHJveWVkKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBjaGFuZ2VkUGFyYW1zKSB7XG4gICAgICAgIGlmIChpZ25vcmVOZ09uQ2hhbmdlcy5pbmRleE9mKGtleSkgPj0gMCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY2hhbmdlZFBhcmFtc1trZXldPy5jdXJyZW50VmFsdWUgPz8gY2hhbmdlZFBhcmFtc1trZXldO1xuICAgICAgICB0aGlzLnVwZGF0ZVBhcmFtZXRlcihrZXksIG5ld1ZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZWRQYXJhbXMuYWxsb3dTbGlkZU5leHQpIHtcbiAgICAgICAgdGhpcy5zd2lwZXJSZWYuYWxsb3dTbGlkZU5leHQgPSB0aGlzLmFsbG93U2xpZGVOZXh0O1xuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZWRQYXJhbXMuYWxsb3dTbGlkZVByZXYpIHtcbiAgICAgICAgdGhpcy5zd2lwZXJSZWYuYWxsb3dTbGlkZVByZXYgPSB0aGlzLmFsbG93U2xpZGVQcmV2O1xuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZWRQYXJhbXMuZGlyZWN0aW9uKSB7XG4gICAgICAgIHRoaXMuc3dpcGVyUmVmLmNoYW5nZURpcmVjdGlvbih0aGlzLmRpcmVjdGlvbiwgZmFsc2UpO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZWRQYXJhbXMuYnJlYWtwb2ludHMpIHtcbiAgICAgICAgaWYgKHRoaXMubG9vcCAmJiAhdGhpcy5sb29wZWRTbGlkZXMpIHtcbiAgICAgICAgICB0aGlzLmNhbGNMb29wZWRTbGlkZXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN3aXBlclJlZi5jdXJyZW50QnJlYWtwb2ludCA9IG51bGw7XG4gICAgICAgIHRoaXMuc3dpcGVyUmVmLnNldEJyZWFrcG9pbnQoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZWRQYXJhbXMudGh1bWJzIHx8IGNoYW5nZWRQYXJhbXMuY29udHJvbGxlcikge1xuICAgICAgICB0aGlzLnVwZGF0ZUluaXRTd2lwZXIoY2hhbmdlZFBhcmFtcyk7XG4gICAgICB9XG4gICAgICB0aGlzLnN3aXBlclJlZi51cGRhdGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNhbGNMb29wZWRTbGlkZXMoKSB7XG4gICAgaWYgKCF0aGlzLmxvb3ApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IHNsaWRlc1BlclZpZXdQYXJhbXMgPSB0aGlzLnNsaWRlc1BlclZpZXc7XG4gICAgaWYgKHRoaXMuYnJlYWtwb2ludHMpIHtcbiAgICAgIGNvbnN0IGJyZWFrcG9pbnQgPSBTd2lwZXIucHJvdG90eXBlLmdldEJyZWFrcG9pbnQodGhpcy5icmVha3BvaW50cyk7XG4gICAgICBjb25zdCBicmVha3BvaW50T25seVBhcmFtcyA9XG4gICAgICAgIGJyZWFrcG9pbnQgaW4gdGhpcy5icmVha3BvaW50cyA/IHRoaXMuYnJlYWtwb2ludHNbYnJlYWtwb2ludF0gOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoYnJlYWtwb2ludE9ubHlQYXJhbXMgJiYgYnJlYWtwb2ludE9ubHlQYXJhbXMuc2xpZGVzUGVyVmlldykge1xuICAgICAgICBzbGlkZXNQZXJWaWV3UGFyYW1zID0gYnJlYWtwb2ludE9ubHlQYXJhbXMuc2xpZGVzUGVyVmlldztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNsaWRlc1BlclZpZXdQYXJhbXMgPT09ICdhdXRvJykge1xuICAgICAgdGhpcy5sb29wZWRTbGlkZXMgPSB0aGlzLnNsaWRlcy5sZW5ndGg7XG4gICAgICByZXR1cm4gdGhpcy5zbGlkZXMubGVuZ3RoO1xuICAgIH1cbiAgICBsZXQgbG9vcGVkU2xpZGVzID0gdGhpcy5sb29wZWRTbGlkZXMgfHwgc2xpZGVzUGVyVmlld1BhcmFtcztcbiAgICBpZiAoIWxvb3BlZFNsaWRlcykge1xuICAgICAgLy8gP1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxvb3BBZGRpdGlvbmFsU2xpZGVzKSB7XG4gICAgICBsb29wZWRTbGlkZXMgKz0gdGhpcy5sb29wQWRkaXRpb25hbFNsaWRlcztcbiAgICB9XG4gICAgaWYgKGxvb3BlZFNsaWRlcyA+IHRoaXMuc2xpZGVzLmxlbmd0aCkge1xuICAgICAgbG9vcGVkU2xpZGVzID0gdGhpcy5zbGlkZXMubGVuZ3RoO1xuICAgIH1cbiAgICB0aGlzLmxvb3BlZFNsaWRlcyA9IGxvb3BlZFNsaWRlcztcbiAgICByZXR1cm4gbG9vcGVkU2xpZGVzO1xuICB9XG5cbiAgdXBkYXRlUGFyYW1ldGVyKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgaWYgKCEodGhpcy5zd2lwZXJSZWYgJiYgIXRoaXMuc3dpcGVyUmVmLmRlc3Ryb3llZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgX2tleSA9IGtleS5yZXBsYWNlKC9eXy8sICcnKTtcbiAgICBjb25zdCBpc0N1cnJlbnRQYXJhbU9iaiA9IGlzT2JqZWN0KHRoaXMuc3dpcGVyUmVmLnBhcmFtc1tfa2V5XSk7XG5cbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5zd2lwZXJSZWYubW9kdWxlcykuaW5kZXhPZihfa2V5KSA+PSAwKSB7XG4gICAgICBjb25zdCBkZWZhdWx0UGFyYW1zID0gdGhpcy5zd2lwZXJSZWYubW9kdWxlc1tfa2V5XS5wYXJhbXNbX2tleV07XG4gICAgICBpZiAoaXNDdXJyZW50UGFyYW1PYmopIHtcbiAgICAgICAgZXh0ZW5kKHRoaXMuc3dpcGVyUmVmLnBhcmFtc1tfa2V5XSwgZGVmYXVsdFBhcmFtcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN3aXBlclJlZi5wYXJhbXNbX2tleV0gPSBkZWZhdWx0UGFyYW1zO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoX2tleSA9PT0gJ2VuYWJsZWQnKSB7XG4gICAgICBpZiAodmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5zd2lwZXJSZWYuZW5hYmxlKCk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLnN3aXBlclJlZi5kaXNhYmxlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc0N1cnJlbnRQYXJhbU9iaiAmJiBpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgIGV4dGVuZCh0aGlzLnN3aXBlclJlZi5wYXJhbXNbX2tleV0sIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zd2lwZXJSZWYucGFyYW1zW19rZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB3aWxsIGJlIHJlbW92ZWQgaW4gdXBjb21pbmcgdmVyc2lvbnNcbiAgICovXG4gIHNldEluZGV4KGluZGV4OiBudW1iZXIsIHNwZWVkPzogbnVtYmVyLCBzaWxlbnQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzU3dpcGVyQWN0aXZlKSB7XG4gICAgICB0aGlzLmluaXRpYWxTbGlkZSA9IGluZGV4O1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaW5kZXggPT09IHRoaXMuc3dpcGVyUmVmLmFjdGl2ZUluZGV4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5sb29wKSB7XG4gICAgICAgIHRoaXMuc3dpcGVyUmVmLnNsaWRlVG9Mb29wKGluZGV4LCBzcGVlZCwgIXNpbGVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN3aXBlclJlZi5zbGlkZVRvKGluZGV4LCBzcGVlZCwgIXNpbGVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5zd2lwZXJSZWY/LmRlc3Ryb3kodHJ1ZSwgZmFsc2UpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1jb250YWluZXItc3RhcnRdXCI+PC9uZy1jb250ZW50PlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdmlnYXRpb24gJiYgc2hvd05hdmlnYXRpb25cIj5cbiAgPGRpdiBjbGFzcz1cInN3aXBlci1idXR0b24tcHJldlwiICNwcmV2RWxSZWY+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJzd2lwZXItYnV0dG9uLW5leHRcIiAjbmV4dEVsUmVmPjwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48ZGl2ICpuZ0lmPVwic2Nyb2xsYmFyICYmIHNob3dTY3JvbGxiYXJcIiBjbGFzcz1cInN3aXBlci1zY3JvbGxiYXJcIiAjc2Nyb2xsYmFyRWxSZWY+PC9kaXY+XG48ZGl2ICpuZ0lmPVwicGFnaW5hdGlvbiAmJiBzaG93UGFnaW5hdGlvblwiIGNsYXNzPVwic3dpcGVyLXBhZ2luYXRpb25cIiAjcGFnaW5hdGlvbkVsUmVmPjwvZGl2PlxuPGRpdiBbbmdDbGFzc109XCJ3cmFwcGVyQ2xhc3NcIiBbYXR0ci5pZF09XCJpZFwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD13cmFwcGVyLXN0YXJ0XVwiPjwvbmctY29udGVudD5cbiAgPG5nLXRlbXBsYXRlXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgIHNsaWRlc1RlbXBsYXRlO1xuICAgICAgY29udGV4dDoge1xuICAgICAgICBsb29wU2xpZGVzOiBwcmVwZW5kU2xpZGVzLFxuICAgICAgICBrZXk6ICdwcmVwZW5kJ1xuICAgICAgfVxuICAgIFwiXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGVcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgc2xpZGVzVGVtcGxhdGU7XG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIGxvb3BTbGlkZXM6IGFjdGl2ZVNsaWRlcyxcbiAgICAgICAga2V5OiAnJ1xuICAgICAgfVxuICAgIFwiXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGVcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgc2xpZGVzVGVtcGxhdGU7XG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIGxvb3BTbGlkZXM6IGFwcGVuZFNsaWRlcyxcbiAgICAgICAga2V5OiAnYXBwZW5kJ1xuICAgICAgfVxuICAgIFwiXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD13cmFwcGVyLWVuZF1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxuZy1jb250ZW50IHNlbGVjdD1cIltzbG90PWNvbnRhaW5lci1lbmRdXCI+PC9uZy1jb250ZW50PlxuXG48bmctdGVtcGxhdGUgI3NsaWRlc1RlbXBsYXRlIGxldC1sb29wU2xpZGVzPVwibG9vcFNsaWRlc1wiIGxldC1zbGlkZUtleT1cImtleVwiPlxuICA8ZGl2XG4gICAgKm5nRm9yPVwibGV0IHNsaWRlIG9mIGxvb3BTbGlkZXMgfCBhc3luY1wiXG4gICAgW25nQ2xhc3NdPVwiXG4gICAgICAoc2xpZGUuY2xhc3MgPyBzbGlkZS5jbGFzcyArICcgJyA6ICcnKSArXG4gICAgICBzbGlkZUNsYXNzICtcbiAgICAgIChzbGlkZUtleSAhPT0gJycgPyAnICcgKyBzbGlkZUR1cGxpY2F0ZUNsYXNzIDogJycpXG4gICAgXCJcbiAgICBbYXR0ci5kYXRhLXN3aXBlci1zbGlkZS1pbmRleF09XCJzbGlkZS52aXJ0dWFsSW5kZXggPyBzbGlkZS52aXJ0dWFsSW5kZXggOiBzbGlkZS5zbGlkZUluZGV4XCJcbiAgICBbYXR0ci5kYXRhLXN3aXBlci1hdXRvcGxheV09XCJzbGlkZS5hdXRvcGxheURlbGF5XCJcbiAgICBbc3R5bGVdPVwic3R5bGVcIlxuICAgIFtuZ1N3aXRjaF09XCJzbGlkZS56b29tXCJcbiAgPlxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cInRydWVcIiBbbmdDbGFzc109XCJ6b29tQ29udGFpbmVyQ2xhc3NcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJzbGlkZS50ZW1wbGF0ZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgJGltcGxpY2l0OiBzbGlkZS5zbGlkZURhdGFcbiAgICAgICAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2xpZGUudGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICRpbXBsaWNpdDogc2xpZGUuc2xpZGVEYXRhXG4gICAgICAgIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ== \ No newline at end of file diff --git a/resources/web/include/swiper/angular/esm2015/angular/src/swiper.module.js b/resources/web/include/swiper/angular/esm2015/angular/src/swiper.module.js deleted file mode 100644 index b4fa3a0e4a..0000000000 --- a/resources/web/include/swiper/angular/esm2015/angular/src/swiper.module.js +++ /dev/null @@ -1,19 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { SwiperComponent } from './swiper.component'; -import { SwiperSlideDirective } from './swiper-slide.directive'; -import * as i0 from "@angular/core"; -export class SwiperModule { -} -SwiperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -SwiperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperModule, declarations: [SwiperComponent, SwiperSlideDirective], imports: [CommonModule], exports: [SwiperComponent, SwiperSlideDirective] }); -SwiperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperModule, imports: [[CommonModule]] }); -i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperModule, decorators: [{ - type: NgModule, - args: [{ - declarations: [SwiperComponent, SwiperSlideDirective], - exports: [SwiperComponent, SwiperSlideDirective], - imports: [CommonModule], - }] - }] }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyL3NyYy9zd2lwZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFNaEUsTUFBTSxPQUFPLFlBQVk7O3lHQUFaLFlBQVk7MEdBQVosWUFBWSxpQkFKUixlQUFlLEVBQUUsb0JBQW9CLGFBRTFDLFlBQVksYUFEWixlQUFlLEVBQUUsb0JBQW9COzBHQUdwQyxZQUFZLFlBRmQsQ0FBQyxZQUFZLENBQUM7MkZBRVosWUFBWTtrQkFMeEIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxlQUFlLEVBQUUsb0JBQW9CLENBQUM7b0JBQ3JELE9BQU8sRUFBRSxDQUFDLGVBQWUsRUFBRSxvQkFBb0IsQ0FBQztvQkFDaEQsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3dpcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zd2lwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFN3aXBlclNsaWRlRGlyZWN0aXZlIH0gZnJvbSAnLi9zd2lwZXItc2xpZGUuZGlyZWN0aXZlJztcbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1N3aXBlckNvbXBvbmVudCwgU3dpcGVyU2xpZGVEaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbU3dpcGVyQ29tcG9uZW50LCBTd2lwZXJTbGlkZURpcmVjdGl2ZV0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTd2lwZXJNb2R1bGUge31cbiJdfQ== \ No newline at end of file diff --git a/resources/web/include/swiper/angular/esm2015/angular/src/utils/get-params.js b/resources/web/include/swiper/angular/esm2015/angular/src/utils/get-params.js deleted file mode 100644 index 9279259e86..0000000000 --- a/resources/web/include/swiper/angular/esm2015/angular/src/utils/get-params.js +++ /dev/null @@ -1,38 +0,0 @@ -// eslint-disable-next-line -import { isObject, extend } from './utils'; -import { paramsList } from './params-list'; -// @ts-ignore -import Swiper from 'swiper'; -export const allowedParams = paramsList.map((key) => key.replace(/_/, '')); -export function getParams(obj = {}) { - const params = { - on: {}, - }; - const passedParams = {}; - extend(params, Swiper.defaults); - extend(params, Swiper.extendedDefaults); - params._emitClasses = true; - const rest = {}; - Object.keys(obj).forEach((key) => { - const _key = key.replace(/^_/, ''); - 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 { - rest[_key] = obj[_key]; - } - }); - return { params, passedParams, rest }; -} -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXBhcmFtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyL3NyYy91dGlscy9nZXQtcGFyYW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQjtBQUMzQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLGFBQWE7QUFDYixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0UsTUFBTSxVQUFVLFNBQVMsQ0FBQyxNQUFXLEVBQUU7SUFDckMsTUFBTSxNQUFNLEdBQVE7UUFDbEIsRUFBRSxFQUFFLEVBQUU7S0FDUCxDQUFDO0lBQ0YsTUFBTSxZQUFZLEdBQVEsRUFBRSxDQUFDO0lBQzdCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDeEMsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFFM0IsTUFBTSxJQUFJLEdBQVEsRUFBRSxDQUFDO0lBQ3JCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7UUFDdkMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxXQUFXO1lBQUUsT0FBTztRQUM3QyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3BDLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO2dCQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNsQixZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUN4QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3pCLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDaEM7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDeEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuaW1wb3J0IHsgaXNPYmplY3QsIGV4dGVuZCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgcGFyYW1zTGlzdCB9IGZyb20gJy4vcGFyYW1zLWxpc3QnO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IFN3aXBlciBmcm9tICdzd2lwZXInO1xuXG5leHBvcnQgY29uc3QgYWxsb3dlZFBhcmFtcyA9IHBhcmFtc0xpc3QubWFwKChrZXkpID0+IGtleS5yZXBsYWNlKC9fLywgJycpKTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJhbXMob2JqOiBhbnkgPSB7fSkge1xuICBjb25zdCBwYXJhbXM6IGFueSA9IHtcbiAgICBvbjoge30sXG4gIH07XG4gIGNvbnN0IHBhc3NlZFBhcmFtczogYW55ID0ge307XG4gIGV4dGVuZChwYXJhbXMsIFN3aXBlci5kZWZhdWx0cyk7XG4gIGV4dGVuZChwYXJhbXMsIFN3aXBlci5leHRlbmRlZERlZmF1bHRzKTtcbiAgcGFyYW1zLl9lbWl0Q2xhc3NlcyA9IHRydWU7XG5cbiAgY29uc3QgcmVzdDogYW55ID0ge307XG4gIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBfa2V5ID0ga2V5LnJlcGxhY2UoL15fLywgJycpO1xuICAgIGlmICh0eXBlb2Ygb2JqW19rZXldID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgIGlmIChhbGxvd2VkUGFyYW1zLmluZGV4T2YoX2tleSkgPj0gMCkge1xuICAgICAgaWYgKGlzT2JqZWN0KG9ialtfa2V5XSkpIHtcbiAgICAgICAgcGFyYW1zW19rZXldID0ge307XG4gICAgICAgIHBhc3NlZFBhcmFtc1tfa2V5XSA9IHt9O1xuICAgICAgICBleHRlbmQocGFyYW1zW19rZXldLCBvYmpbX2tleV0pO1xuICAgICAgICBleHRlbmQocGFzc2VkUGFyYW1zW19rZXldLCBvYmpbX2tleV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyYW1zW19rZXldID0gb2JqW19rZXldO1xuICAgICAgICBwYXNzZWRQYXJhbXNbX2tleV0gPSBvYmpbX2tleV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3RbX2tleV0gPSBvYmpbX2tleV07XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4geyBwYXJhbXMsIHBhc3NlZFBhcmFtcywgcmVzdCB9O1xufVxuIl19 \ No newline at end of file diff --git a/resources/web/include/swiper/angular/esm2015/angular/src/utils/params-list.js b/resources/web/include/swiper/angular/esm2015/angular/src/utils/params-list.js deleted file mode 100644 index f80626c2fd..0000000000 --- a/resources/web/include/swiper/angular/esm2015/angular/src/utils/params-list.js +++ /dev/null @@ -1,115 +0,0 @@ -/* underscore in name -> watch for changes */ -export const paramsList = [ - 'init', - 'enabled', - '_direction', - 'touchEventsTarget', - 'initialSlide', - '_speed', - 'cssMode', - 'updateOnWindowResize', - 'resizeObserver', - 'nested', - 'focusableElements', - '_width', - '_height', - 'preventInteractionOnTransition', - 'userAgent', - 'url', - '_edgeSwipeDetection', - '_edgeSwipeThreshold', - '_freeMode', - '_autoHeight', - 'setWrapperSize', - 'virtualTranslate', - '_effect', - 'breakpoints', - '_spaceBetween', - '_slidesPerView', - '_grid', - '_slidesPerGroup', - '_slidesPerGroupSkip', - '_centeredSlides', - '_centeredSlidesBounds', - '_slidesOffsetBefore', - '_slidesOffsetAfter', - 'normalizeSlideIndex', - '_centerInsufficientSlides', - '_watchOverflow', - 'roundLengths', - 'touchRatio', - 'touchAngle', - 'simulateTouch', - '_shortSwipes', - '_longSwipes', - 'longSwipesRatio', - 'longSwipesMs', - '_followFinger', - 'allowTouchMove', - '_threshold', - 'touchMoveStopPropagation', - 'touchStartPreventDefault', - 'touchStartForcePreventDefault', - 'touchReleaseOnEdges', - 'uniqueNavElements', - '_resistance', - '_resistanceRatio', - '_watchSlidesProgress', - '_grabCursor', - 'preventClicks', - 'preventClicksPropagation', - '_slideToClickedSlide', - '_preloadImages', - 'updateOnImagesReady', - '_loop', - '_loopAdditionalSlides', - '_loopedSlides', - '_loopFillGroupWithBlank', - 'loopPreventsSlide', - '_allowSlidePrev', - '_allowSlideNext', - '_swipeHandler', - '_noSwiping', - 'noSwipingClass', - 'noSwipingSelector', - 'passiveListeners', - 'containerModifierClass', - 'slideClass', - 'slideBlankClass', - 'slideActiveClass', - 'slideDuplicateActiveClass', - 'slideVisibleClass', - 'slideDuplicateClass', - 'slideNextClass', - 'slideDuplicateNextClass', - 'slidePrevClass', - 'slideDuplicatePrevClass', - 'wrapperClass', - 'runCallbacksOnInit', - 'observer', - 'observeParents', - 'observeSlideChildren', - // modules - 'a11y', - 'autoplay', - '_controller', - 'coverflowEffect', - 'cubeEffect', - 'fadeEffect', - 'flipEffect', - 'creativeEffect', - 'cardsEffect', - 'hashNavigation', - 'history', - 'keyboard', - 'lazy', - 'mousewheel', - '_navigation', - '_pagination', - 'parallax', - '_scrollbar', - '_thumbs', - 'virtual', - 'zoom', -]; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLWxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYW5ndWxhci9zcmMvdXRpbHMvcGFyYW1zLWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkNBQTZDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixNQUFNO0lBQ04sU0FBUztJQUNULFlBQVk7SUFDWixtQkFBbUI7SUFDbkIsY0FBYztJQUNkLFFBQVE7SUFDUixTQUFTO0lBQ1Qsc0JBQXNCO0lBQ3RCLGdCQUFnQjtJQUNoQixRQUFRO0lBQ1IsbUJBQW1CO0lBQ25CLFFBQVE7SUFDUixTQUFTO0lBQ1QsZ0NBQWdDO0lBQ2hDLFdBQVc7SUFDWCxLQUFLO0lBQ0wscUJBQXFCO0lBQ3JCLHFCQUFxQjtJQUNyQixXQUFXO0lBQ1gsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQixrQkFBa0I7SUFDbEIsU0FBUztJQUNULGFBQWE7SUFDYixlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLE9BQU87SUFDUCxpQkFBaUI7SUFDakIscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQix1QkFBdUI7SUFDdkIscUJBQXFCO0lBQ3JCLG9CQUFvQjtJQUNwQixxQkFBcUI7SUFDckIsMkJBQTJCO0lBQzNCLGdCQUFnQjtJQUNoQixjQUFjO0lBQ2QsWUFBWTtJQUNaLFlBQVk7SUFDWixlQUFlO0lBQ2YsY0FBYztJQUNkLGFBQWE7SUFDYixpQkFBaUI7SUFDakIsY0FBYztJQUNkLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsWUFBWTtJQUNaLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsK0JBQStCO0lBQy9CLHFCQUFxQjtJQUNyQixtQkFBbUI7SUFDbkIsYUFBYTtJQUNiLGtCQUFrQjtJQUNsQixzQkFBc0I7SUFDdEIsYUFBYTtJQUNiLGVBQWU7SUFDZiwwQkFBMEI7SUFDMUIsc0JBQXNCO0lBQ3RCLGdCQUFnQjtJQUNoQixxQkFBcUI7SUFDckIsT0FBTztJQUNQLHVCQUF1QjtJQUN2QixlQUFlO0lBQ2YseUJBQXlCO0lBQ3pCLG1CQUFtQjtJQUNuQixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGVBQWU7SUFDZixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLG1CQUFtQjtJQUNuQixrQkFBa0I7SUFDbEIsd0JBQXdCO0lBQ3hCLFlBQVk7SUFDWixpQkFBaUI7SUFDakIsa0JBQWtCO0lBQ2xCLDJCQUEyQjtJQUMzQixtQkFBbUI7SUFDbkIscUJBQXFCO0lBQ3JCLGdCQUFnQjtJQUNoQix5QkFBeUI7SUFDekIsZ0JBQWdCO0lBQ2hCLHlCQUF5QjtJQUN6QixjQUFjO0lBQ2Qsb0JBQW9CO0lBQ3BCLFVBQVU7SUFDVixnQkFBZ0I7SUFDaEIsc0JBQXNCO0lBRXRCLFVBQVU7SUFDVixNQUFNO0lBQ04sVUFBVTtJQUNWLGFBQWE7SUFDYixpQkFBaUI7SUFDakIsWUFBWTtJQUNaLFlBQVk7SUFDWixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixnQkFBZ0I7SUFDaEIsU0FBUztJQUNULFVBQVU7SUFDVixNQUFNO0lBQ04sWUFBWTtJQUNaLGFBQWE7SUFDYixhQUFhO0lBQ2IsVUFBVTtJQUNWLFlBQVk7SUFDWixTQUFTO0lBQ1QsU0FBUztJQUNULE1BQU07Q0FDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogdW5kZXJzY29yZSBpbiBuYW1lIC0+IHdhdGNoIGZvciBjaGFuZ2VzICovXG5leHBvcnQgY29uc3QgcGFyYW1zTGlzdCA9IFtcbiAgJ2luaXQnLFxuICAnZW5hYmxlZCcsXG4gICdfZGlyZWN0aW9uJyxcbiAgJ3RvdWNoRXZlbnRzVGFyZ2V0JyxcbiAgJ2luaXRpYWxTbGlkZScsXG4gICdfc3BlZWQnLFxuICAnY3NzTW9kZScsXG4gICd1cGRhdGVPbldpbmRvd1Jlc2l6ZScsXG4gICdyZXNpemVPYnNlcnZlcicsXG4gICduZXN0ZWQnLFxuICAnZm9jdXNhYmxlRWxlbWVudHMnLFxuICAnX3dpZHRoJyxcbiAgJ19oZWlnaHQnLFxuICAncHJldmVudEludGVyYWN0aW9uT25UcmFuc2l0aW9uJyxcbiAgJ3VzZXJBZ2VudCcsXG4gICd1cmwnLFxuICAnX2VkZ2VTd2lwZURldGVjdGlvbicsXG4gICdfZWRnZVN3aXBlVGhyZXNob2xkJyxcbiAgJ19mcmVlTW9kZScsXG4gICdfYXV0b0hlaWdodCcsXG4gICdzZXRXcmFwcGVyU2l6ZScsXG4gICd2aXJ0dWFsVHJhbnNsYXRlJyxcbiAgJ19lZmZlY3QnLFxuICAnYnJlYWtwb2ludHMnLFxuICAnX3NwYWNlQmV0d2VlbicsXG4gICdfc2xpZGVzUGVyVmlldycsXG4gICdfZ3JpZCcsXG4gICdfc2xpZGVzUGVyR3JvdXAnLFxuICAnX3NsaWRlc1Blckdyb3VwU2tpcCcsXG4gICdfY2VudGVyZWRTbGlkZXMnLFxuICAnX2NlbnRlcmVkU2xpZGVzQm91bmRzJyxcbiAgJ19zbGlkZXNPZmZzZXRCZWZvcmUnLFxuICAnX3NsaWRlc09mZnNldEFmdGVyJyxcbiAgJ25vcm1hbGl6ZVNsaWRlSW5kZXgnLFxuICAnX2NlbnRlckluc3VmZmljaWVudFNsaWRlcycsXG4gICdfd2F0Y2hPdmVyZmxvdycsXG4gICdyb3VuZExlbmd0aHMnLFxuICAndG91Y2hSYXRpbycsXG4gICd0b3VjaEFuZ2xlJyxcbiAgJ3NpbXVsYXRlVG91Y2gnLFxuICAnX3Nob3J0U3dpcGVzJyxcbiAgJ19sb25nU3dpcGVzJyxcbiAgJ2xvbmdTd2lwZXNSYXRpbycsXG4gICdsb25nU3dpcGVzTXMnLFxuICAnX2ZvbGxvd0ZpbmdlcicsXG4gICdhbGxvd1RvdWNoTW92ZScsXG4gICdfdGhyZXNob2xkJyxcbiAgJ3RvdWNoTW92ZVN0b3BQcm9wYWdhdGlvbicsXG4gICd0b3VjaFN0YXJ0UHJldmVudERlZmF1bHQnLFxuICAndG91Y2hTdGFydEZvcmNlUHJldmVudERlZmF1bHQnLFxuICAndG91Y2hSZWxlYXNlT25FZGdlcycsXG4gICd1bmlxdWVOYXZFbGVtZW50cycsXG4gICdfcmVzaXN0YW5jZScsXG4gICdfcmVzaXN0YW5jZVJhdGlvJyxcbiAgJ193YXRjaFNsaWRlc1Byb2dyZXNzJyxcbiAgJ19ncmFiQ3Vyc29yJyxcbiAgJ3ByZXZlbnRDbGlja3MnLFxuICAncHJldmVudENsaWNrc1Byb3BhZ2F0aW9uJyxcbiAgJ19zbGlkZVRvQ2xpY2tlZFNsaWRlJyxcbiAgJ19wcmVsb2FkSW1hZ2VzJyxcbiAgJ3VwZGF0ZU9uSW1hZ2VzUmVhZHknLFxuICAnX2xvb3AnLFxuICAnX2xvb3BBZGRpdGlvbmFsU2xpZGVzJyxcbiAgJ19sb29wZWRTbGlkZXMnLFxuICAnX2xvb3BGaWxsR3JvdXBXaXRoQmxhbmsnLFxuICAnbG9vcFByZXZlbnRzU2xpZGUnLFxuICAnX2FsbG93U2xpZGVQcmV2JyxcbiAgJ19hbGxvd1NsaWRlTmV4dCcsXG4gICdfc3dpcGVIYW5kbGVyJyxcbiAgJ19ub1N3aXBpbmcnLFxuICAnbm9Td2lwaW5nQ2xhc3MnLFxuICAnbm9Td2lwaW5nU2VsZWN0b3InLFxuICAncGFzc2l2ZUxpc3RlbmVycycsXG4gICdjb250YWluZXJNb2RpZmllckNsYXNzJyxcbiAgJ3NsaWRlQ2xhc3MnLFxuICAnc2xpZGVCbGFua0NsYXNzJyxcbiAgJ3NsaWRlQWN0aXZlQ2xhc3MnLFxuICAnc2xpZGVEdXBsaWNhdGVBY3RpdmVDbGFzcycsXG4gICdzbGlkZVZpc2libGVDbGFzcycsXG4gICdzbGlkZUR1cGxpY2F0ZUNsYXNzJyxcbiAgJ3NsaWRlTmV4dENsYXNzJyxcbiAgJ3NsaWRlRHVwbGljYXRlTmV4dENsYXNzJyxcbiAgJ3NsaWRlUHJldkNsYXNzJyxcbiAgJ3NsaWRlRHVwbGljYXRlUHJldkNsYXNzJyxcbiAgJ3dyYXBwZXJDbGFzcycsXG4gICdydW5DYWxsYmFja3NPbkluaXQnLFxuICAnb2JzZXJ2ZXInLFxuICAnb2JzZXJ2ZVBhcmVudHMnLFxuICAnb2JzZXJ2ZVNsaWRlQ2hpbGRyZW4nLFxuXG4gIC8vIG1vZHVsZXNcbiAgJ2ExMXknLFxuICAnYXV0b3BsYXknLFxuICAnX2NvbnRyb2xsZXInLFxuICAnY292ZXJmbG93RWZmZWN0JyxcbiAgJ2N1YmVFZmZlY3QnLFxuICAnZmFkZUVmZmVjdCcsXG4gICdmbGlwRWZmZWN0JyxcbiAgJ2NyZWF0aXZlRWZmZWN0JyxcbiAgJ2NhcmRzRWZmZWN0JyxcbiAgJ2hhc2hOYXZpZ2F0aW9uJyxcbiAgJ2hpc3RvcnknLFxuICAna2V5Ym9hcmQnLFxuICAnbGF6eScsXG4gICdtb3VzZXdoZWVsJyxcbiAgJ19uYXZpZ2F0aW9uJyxcbiAgJ19wYWdpbmF0aW9uJyxcbiAgJ3BhcmFsbGF4JyxcbiAgJ19zY3JvbGxiYXInLFxuICAnX3RodW1icycsXG4gICd2aXJ0dWFsJyxcbiAgJ3pvb20nLFxuXTtcbiJdfQ== \ No newline at end of file diff --git a/resources/web/include/swiper/angular/esm2015/angular/src/utils/utils.js b/resources/web/include/swiper/angular/esm2015/angular/src/utils/utils.js deleted file mode 100644 index a0b22cc0ea..0000000000 --- a/resources/web/include/swiper/angular/esm2015/angular/src/utils/utils.js +++ /dev/null @@ -1,49 +0,0 @@ -export function isObject(o) { - return (typeof o === 'object' && - o !== null && - o.constructor && - Object.prototype.toString.call(o).slice(8, -1) === 'Object'); -} -export function isShowEl(val, obj, el) { - return ((coerceBooleanProperty(val) === true && obj && !obj.el) || - !(typeof obj !== 'boolean' && - obj.el !== (el === null || el === void 0 ? void 0 : el.nativeElement) && - (typeof obj.el === 'string' || typeof obj.el === 'object'))); -} -export 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]; - return; - } - if (target[key] && !src[key]) { - return; - } - 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]; - } - }); -} -export function coerceBooleanProperty(value) { - return value != null && `${value}` !== 'false'; -} -export const ignoreNgOnChanges = ['pagination', 'navigation', 'scrollbar', 'virtual']; -export function setProperty(val, obj = {}) { - if (isObject(val)) { - return val; - } - if (coerceBooleanProperty(val) === true) { - return obj; - } - return false; -} -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYW5ndWxhci9zcmMvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFFBQVEsQ0FBQyxDQUFNO0lBQzdCLE9BQU8sQ0FDTCxPQUFPLENBQUMsS0FBSyxRQUFRO1FBQ3JCLENBQUMsS0FBSyxJQUFJO1FBQ1YsQ0FBQyxDQUFDLFdBQVc7UUFDYixNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FDNUQsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQVEsRUFBRSxHQUFRLEVBQUUsRUFBTztJQUNsRCxPQUFPLENBQ0wsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN2RCxDQUFDLENBQ0MsT0FBTyxHQUFHLEtBQUssU0FBUztZQUN4QixHQUFHLENBQUMsRUFBRSxNQUFLLEVBQUUsYUFBRixFQUFFLHVCQUFGLEVBQUUsQ0FBRSxhQUFhLENBQUE7WUFDNUIsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLEtBQUssUUFBUSxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FDM0QsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxNQUFNLENBQUMsTUFBVyxFQUFFLEdBQVE7SUFDMUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNELE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ2IsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMxQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNmLElBQUksT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssV0FBVyxFQUFFO1lBQ3RDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkIsT0FBTztTQUNSO1FBQ0QsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUIsT0FBTztTQUNSO1FBQ0QsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuRixJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVO2dCQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7O2dCQUMzQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3BDO2FBQU07WUFDTCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEtBQVU7SUFDOUMsT0FBTyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsS0FBSyxFQUFFLEtBQUssT0FBTyxDQUFDO0FBQ2pELENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRXRGLE1BQU0sVUFBVSxXQUFXLENBQUMsR0FBUSxFQUFFLEdBQUcsR0FBRyxFQUFFO0lBQzVDLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ2pCLE9BQU8sR0FBRyxDQUFDO0tBQ1o7SUFFRCxJQUFJLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtRQUN2QyxPQUFPLEdBQUcsQ0FBQztLQUNaO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0KG86IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBvID09PSAnb2JqZWN0JyAmJlxuICAgIG8gIT09IG51bGwgJiZcbiAgICBvLmNvbnN0cnVjdG9yICYmXG4gICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKSA9PT0gJ09iamVjdCdcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2hvd0VsKHZhbDogYW55LCBvYmo6IGFueSwgZWw6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIChjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsKSA9PT0gdHJ1ZSAmJiBvYmogJiYgIW9iai5lbCkgfHxcbiAgICAhKFxuICAgICAgdHlwZW9mIG9iaiAhPT0gJ2Jvb2xlYW4nICYmXG4gICAgICBvYmouZWwgIT09IGVsPy5uYXRpdmVFbGVtZW50ICYmXG4gICAgICAodHlwZW9mIG9iai5lbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG9iai5lbCA9PT0gJ29iamVjdCcpXG4gICAgKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kKHRhcmdldDogYW55LCBzcmM6IGFueSkge1xuICBjb25zdCBub0V4dGVuZCA9IFsnX19wcm90b19fJywgJ2NvbnN0cnVjdG9yJywgJ3Byb3RvdHlwZSddO1xuICBPYmplY3Qua2V5cyhzcmMpXG4gICAgLmZpbHRlcigoa2V5KSA9PiBub0V4dGVuZC5pbmRleE9mKGtleSkgPCAwKVxuICAgIC5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdGFyZ2V0W2tleV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRhcmdldFtrZXldID0gc3JjW2tleV07XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0YXJnZXRba2V5XSAmJiAhc3JjW2tleV0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGlzT2JqZWN0KHNyY1trZXldKSAmJiBpc09iamVjdCh0YXJnZXRba2V5XSkgJiYgT2JqZWN0LmtleXMoc3JjW2tleV0pLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHNyY1trZXldLl9fc3dpcGVyX18pIHRhcmdldFtrZXldID0gc3JjW2tleV07XG4gICAgICAgIGVsc2UgZXh0ZW5kKHRhcmdldFtrZXldLCBzcmNba2V5XSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXRba2V5XSA9IHNyY1trZXldO1xuICAgICAgfVxuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgYCR7dmFsdWV9YCAhPT0gJ2ZhbHNlJztcbn1cblxuZXhwb3J0IGNvbnN0IGlnbm9yZU5nT25DaGFuZ2VzID0gWydwYWdpbmF0aW9uJywgJ25hdmlnYXRpb24nLCAnc2Nyb2xsYmFyJywgJ3ZpcnR1YWwnXTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFByb3BlcnR5KHZhbDogYW55LCBvYmogPSB7fSk6IHt9IHwgZmFsc2Uge1xuICBpZiAoaXNPYmplY3QodmFsKSkge1xuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBpZiAoY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbCkgPT09IHRydWUpIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuIl19 \ No newline at end of file diff --git a/resources/web/include/swiper/angular/esm2015/swiper-angular.js b/resources/web/include/swiper/angular/esm2015/swiper-angular.js deleted file mode 100644 index 96e42d6f94..0000000000 --- a/resources/web/include/swiper/angular/esm2015/swiper-angular.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from './angular/src/public-api'; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyLWFuZ3VsYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3dpcGVyLWFuZ3VsYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYW5ndWxhci9zcmMvcHVibGljLWFwaSc7XG4iXX0= \ No newline at end of file diff --git a/resources/web/include/swiper/angular/esm2015/swiper_angular.js b/resources/web/include/swiper/angular/esm2015/swiper_angular.js deleted file mode 100644 index 5105204835..0000000000 --- a/resources/web/include/swiper/angular/esm2015/swiper_angular.js +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Generated bundle index. Do not edit. - */ -export * from './swiper-angular'; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyX2FuZ3VsYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3dpcGVyX2FuZ3VsYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3N3aXBlci1hbmd1bGFyJztcbiJdfQ== \ No newline at end of file diff --git a/resources/web/include/swiper/angular/fesm2015/swiper_angular.js b/resources/web/include/swiper/angular/fesm2015/swiper_angular.js deleted file mode 100644 index af4a317bed..0000000000 --- a/resources/web/include/swiper/angular/fesm2015/swiper_angular.js +++ /dev/null @@ -1,1402 +0,0 @@ -import * as i0 from '@angular/core'; -import { Directive, Input, EventEmitter, PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Output, ViewChild, ContentChildren, HostBinding, NgModule } from '@angular/core'; -import * as i1 from '@angular/common'; -import { isPlatformBrowser, CommonModule } from '@angular/common'; -import Swiper from 'swiper'; -import { Subject, of } from 'rxjs'; - -function isObject(o) { - return (typeof o === 'object' && - o !== null && - o.constructor && - Object.prototype.toString.call(o).slice(8, -1) === 'Object'); -} -function isShowEl(val, obj, el) { - return ((coerceBooleanProperty(val) === true && obj && !obj.el) || - !(typeof obj !== 'boolean' && - obj.el !== (el === null || el === void 0 ? void 0 : el.nativeElement) && - (typeof obj.el === 'string' || typeof obj.el === '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]; - return; - } - if (target[key] && !src[key]) { - return; - } - 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 coerceBooleanProperty(value) { - return value != null && `${value}` !== 'false'; -} -const ignoreNgOnChanges = ['pagination', 'navigation', 'scrollbar', 'virtual']; -function setProperty(val, obj = {}) { - if (isObject(val)) { - return val; - } - if (coerceBooleanProperty(val) === true) { - return obj; - } - return false; -} - -/* underscore in name -> watch for changes */ -const paramsList = [ - 'init', - 'enabled', - '_direction', - 'touchEventsTarget', - 'initialSlide', - '_speed', - 'cssMode', - 'updateOnWindowResize', - 'resizeObserver', - 'nested', - 'focusableElements', - '_width', - '_height', - 'preventInteractionOnTransition', - 'userAgent', - 'url', - '_edgeSwipeDetection', - '_edgeSwipeThreshold', - '_freeMode', - '_autoHeight', - 'setWrapperSize', - 'virtualTranslate', - '_effect', - 'breakpoints', - '_spaceBetween', - '_slidesPerView', - '_grid', - '_slidesPerGroup', - '_slidesPerGroupSkip', - '_centeredSlides', - '_centeredSlidesBounds', - '_slidesOffsetBefore', - '_slidesOffsetAfter', - 'normalizeSlideIndex', - '_centerInsufficientSlides', - '_watchOverflow', - 'roundLengths', - 'touchRatio', - 'touchAngle', - 'simulateTouch', - '_shortSwipes', - '_longSwipes', - 'longSwipesRatio', - 'longSwipesMs', - '_followFinger', - 'allowTouchMove', - '_threshold', - 'touchMoveStopPropagation', - 'touchStartPreventDefault', - 'touchStartForcePreventDefault', - 'touchReleaseOnEdges', - 'uniqueNavElements', - '_resistance', - '_resistanceRatio', - '_watchSlidesProgress', - '_grabCursor', - 'preventClicks', - 'preventClicksPropagation', - '_slideToClickedSlide', - '_preloadImages', - 'updateOnImagesReady', - '_loop', - '_loopAdditionalSlides', - '_loopedSlides', - '_loopFillGroupWithBlank', - 'loopPreventsSlide', - '_allowSlidePrev', - '_allowSlideNext', - '_swipeHandler', - '_noSwiping', - 'noSwipingClass', - 'noSwipingSelector', - 'passiveListeners', - 'containerModifierClass', - 'slideClass', - 'slideBlankClass', - 'slideActiveClass', - 'slideDuplicateActiveClass', - 'slideVisibleClass', - 'slideDuplicateClass', - 'slideNextClass', - 'slideDuplicateNextClass', - 'slidePrevClass', - 'slideDuplicatePrevClass', - 'wrapperClass', - 'runCallbacksOnInit', - 'observer', - 'observeParents', - 'observeSlideChildren', - // modules - 'a11y', - 'autoplay', - '_controller', - 'coverflowEffect', - 'cubeEffect', - 'fadeEffect', - 'flipEffect', - 'creativeEffect', - 'cardsEffect', - 'hashNavigation', - 'history', - 'keyboard', - 'lazy', - 'mousewheel', - '_navigation', - '_pagination', - 'parallax', - '_scrollbar', - '_thumbs', - 'virtual', - 'zoom', -]; - -// eslint-disable-next-line -const allowedParams = paramsList.map((key) => key.replace(/_/, '')); -function getParams(obj = {}) { - const params = { - on: {}, - }; - const passedParams = {}; - extend(params, Swiper.defaults); - extend(params, Swiper.extendedDefaults); - params._emitClasses = true; - const rest = {}; - Object.keys(obj).forEach((key) => { - const _key = key.replace(/^_/, ''); - 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 { - rest[_key] = obj[_key]; - } - }); - return { params, passedParams, rest }; -} - -class SwiperSlideDirective { - constructor(template) { - this.template = template; - this.class = ''; - this.autoplayDelay = null; - this.slideData = { - isActive: false, - isPrev: false, - isNext: false, - isVisible: false, - isDuplicate: false, - }; - } - set zoom(val) { - this._zoom = coerceBooleanProperty(val); - } - get zoom() { - return this._zoom; - } - get classNames() { - return this._classNames; - } - set classNames(val) { - if (this._classNames === val) { - return; - } - this._classNames = val; - this.slideData = { - isActive: this._hasClass(['swiper-slide-active', 'swiper-slide-duplicate-active']), - isVisible: this._hasClass(['swiper-slide-visible']), - isDuplicate: this._hasClass(['swiper-slide-duplicate']), - isPrev: this._hasClass(['swiper-slide-prev', 'swiper-slide-duplicate-prev']), - isNext: this._hasClass(['swiper-slide-next', 'swiper-slide-duplicate-next']), - }; - } - _hasClass(classNames) { - return classNames.some((className) => this._classNames.indexOf(className) >= 0); - } -} -SwiperSlideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperSlideDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); -SwiperSlideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.2", type: SwiperSlideDirective, selector: "ng-template[swiperSlide]", inputs: { virtualIndex: "virtualIndex", class: "class", autoplayDelay: ["data-swiper-autoplay", "autoplayDelay"], zoom: "zoom" }, ngImport: i0 }); -i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperSlideDirective, decorators: [{ - type: Directive, - args: [{ - selector: 'ng-template[swiperSlide]', - }] - }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { virtualIndex: [{ - type: Input - }], class: [{ - type: Input - }], autoplayDelay: [{ - type: Input, - args: ['data-swiper-autoplay'] - }], zoom: [{ - type: Input - }] } }); - -class SwiperComponent { - constructor(_ngZone, elementRef, _changeDetectorRef, _platformId) { - this._ngZone = _ngZone; - this.elementRef = elementRef; - this._changeDetectorRef = _changeDetectorRef; - this._platformId = _platformId; - this.slideClass = 'swiper-slide'; - this.wrapperClass = 'swiper-wrapper'; - this.showNavigation = true; - this.showPagination = true; - this.showScrollbar = true; - // prettier-ignore - this.s__beforeBreakpoint = new EventEmitter(); - // prettier-ignore - this.s__containerClasses = new EventEmitter(); - // prettier-ignore - this.s__slideClass = new EventEmitter(); - // prettier-ignore - this.s__swiper = new EventEmitter(); - // prettier-ignore - this.s_activeIndexChange = new EventEmitter(); - // prettier-ignore - this.s_afterInit = new EventEmitter(); - // prettier-ignore - this.s_autoplay = new EventEmitter(); - // prettier-ignore - this.s_autoplayStart = new EventEmitter(); - // prettier-ignore - this.s_autoplayStop = new EventEmitter(); - // prettier-ignore - this.s_beforeDestroy = new EventEmitter(); - // prettier-ignore - this.s_beforeInit = new EventEmitter(); - // prettier-ignore - this.s_beforeLoopFix = new EventEmitter(); - // prettier-ignore - this.s_beforeResize = new EventEmitter(); - // prettier-ignore - this.s_beforeSlideChangeStart = new EventEmitter(); - // prettier-ignore - this.s_beforeTransitionStart = new EventEmitter(); - // prettier-ignore - this.s_breakpoint = new EventEmitter(); - // prettier-ignore - this.s_changeDirection = new EventEmitter(); - // prettier-ignore - this.s_click = new EventEmitter(); - // prettier-ignore - this.s_doubleTap = new EventEmitter(); - // prettier-ignore - this.s_doubleClick = new EventEmitter(); - // prettier-ignore - this.s_destroy = new EventEmitter(); - // prettier-ignore - this.s_fromEdge = new EventEmitter(); - // prettier-ignore - this.s_hashChange = new EventEmitter(); - // prettier-ignore - this.s_hashSet = new EventEmitter(); - // prettier-ignore - this.s_imagesReady = new EventEmitter(); - // prettier-ignore - this.s_init = new EventEmitter(); - // prettier-ignore - this.s_keyPress = new EventEmitter(); - // prettier-ignore - this.s_lazyImageLoad = new EventEmitter(); - // prettier-ignore - this.s_lazyImageReady = new EventEmitter(); - // prettier-ignore - this.s_loopFix = new EventEmitter(); - // prettier-ignore - this.s_momentumBounce = new EventEmitter(); - // prettier-ignore - this.s_navigationHide = new EventEmitter(); - // prettier-ignore - this.s_navigationShow = new EventEmitter(); - // prettier-ignore - this.s_observerUpdate = new EventEmitter(); - // prettier-ignore - this.s_orientationchange = new EventEmitter(); - // prettier-ignore - this.s_paginationHide = new EventEmitter(); - // prettier-ignore - this.s_paginationRender = new EventEmitter(); - // prettier-ignore - this.s_paginationShow = new EventEmitter(); - // prettier-ignore - this.s_paginationUpdate = new EventEmitter(); - // prettier-ignore - this.s_progress = new EventEmitter(); - // prettier-ignore - this.s_reachBeginning = new EventEmitter(); - // prettier-ignore - this.s_reachEnd = new EventEmitter(); - // prettier-ignore - this.s_realIndexChange = new EventEmitter(); - // prettier-ignore - this.s_resize = new EventEmitter(); - // prettier-ignore - this.s_scroll = new EventEmitter(); - // prettier-ignore - this.s_scrollbarDragEnd = new EventEmitter(); - // prettier-ignore - this.s_scrollbarDragMove = new EventEmitter(); - // prettier-ignore - this.s_scrollbarDragStart = new EventEmitter(); - // prettier-ignore - this.s_setTransition = new EventEmitter(); - // prettier-ignore - this.s_setTranslate = new EventEmitter(); - // prettier-ignore - this.s_slideChange = new EventEmitter(); - // prettier-ignore - this.s_slideChangeTransitionEnd = new EventEmitter(); - // prettier-ignore - this.s_slideChangeTransitionStart = new EventEmitter(); - // prettier-ignore - this.s_slideNextTransitionEnd = new EventEmitter(); - // prettier-ignore - this.s_slideNextTransitionStart = new EventEmitter(); - // prettier-ignore - this.s_slidePrevTransitionEnd = new EventEmitter(); - // prettier-ignore - this.s_slidePrevTransitionStart = new EventEmitter(); - // prettier-ignore - this.s_slideResetTransitionStart = new EventEmitter(); - // prettier-ignore - this.s_slideResetTransitionEnd = new EventEmitter(); - // prettier-ignore - this.s_sliderMove = new EventEmitter(); - // prettier-ignore - this.s_sliderFirstMove = new EventEmitter(); - // prettier-ignore - this.s_slidesLengthChange = new EventEmitter(); - // prettier-ignore - this.s_slidesGridLengthChange = new EventEmitter(); - // prettier-ignore - this.s_snapGridLengthChange = new EventEmitter(); - // prettier-ignore - this.s_snapIndexChange = new EventEmitter(); - // prettier-ignore - this.s_tap = new EventEmitter(); - // prettier-ignore - this.s_toEdge = new EventEmitter(); - // prettier-ignore - this.s_touchEnd = new EventEmitter(); - // prettier-ignore - this.s_touchMove = new EventEmitter(); - // prettier-ignore - this.s_touchMoveOpposite = new EventEmitter(); - // prettier-ignore - this.s_touchStart = new EventEmitter(); - // prettier-ignore - this.s_transitionEnd = new EventEmitter(); - // prettier-ignore - this.s_transitionStart = new EventEmitter(); - // prettier-ignore - this.s_update = new EventEmitter(); - // prettier-ignore - this.s_zoomChange = new EventEmitter(); - // prettier-ignore - this.s_swiper = new EventEmitter(); - this.indexChange = new EventEmitter(); - this._activeSlides = new Subject(); - this.containerClasses = 'swiper'; - this.slidesChanges = (val) => { - this.slides = val.map((slide, index) => { - slide.slideIndex = index; - slide.classNames = this.slideClass || ''; - return slide; - }); - if (this.loop && !this.loopedSlides) { - this.calcLoopedSlides(); - } - if (!this.virtual) { - if (this.loopedSlides) { - this.prependSlides = of(this.slides.slice(this.slides.length - this.loopedSlides)); - this.appendSlides = of(this.slides.slice(0, this.loopedSlides)); - } - } - else if (this.swiperRef && this.swiperRef.virtual) { - this._ngZone.runOutsideAngular(() => { - this.swiperRef.virtual.slides = this.slides; - this.swiperRef.virtual.update(true); - }); - } - this._changeDetectorRef.detectChanges(); - }; - this.style = null; - this.updateVirtualSlides = (virtualData) => { - // TODO: type virtualData - if (!this.swiperRef || - (this.currentVirtualData && - this.currentVirtualData.from === virtualData.from && - this.currentVirtualData.to === virtualData.to && - this.currentVirtualData.offset === virtualData.offset)) { - return; - } - this.style = this.swiperRef.isHorizontal() - ? { - [this.swiperRef.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`, - } - : { - top: `${virtualData.offset}px`, - }; - this.currentVirtualData = virtualData; - this._activeSlides.next(virtualData.slides); - this._ngZone.run(() => { - this._changeDetectorRef.detectChanges(); - }); - this._ngZone.runOutsideAngular(() => { - this.swiperRef.updateSlides(); - this.swiperRef.updateProgress(); - this.swiperRef.updateSlidesClasses(); - if (this.swiperRef.lazy && this.swiperRef.params.lazy['enabled']) { - this.swiperRef.lazy.load(); - } - this.swiperRef.virtual.update(true); - }); - return; - }; - } - set navigation(val) { - var _a, _b, _c; - const currentNext = typeof this._navigation !== 'boolean' && this._navigation !== '' - ? (_a = this._navigation) === null || _a === void 0 ? void 0 : _a.nextEl - : null; - const currentPrev = typeof this._navigation !== 'boolean' && this._navigation !== '' - ? (_b = this._navigation) === null || _b === void 0 ? void 0 : _b.prevEl - : null; - this._navigation = setProperty(val, { - nextEl: currentNext || null, - prevEl: currentPrev || null, - }); - this.showNavigation = !(coerceBooleanProperty(val) !== true || - (this._navigation && - typeof this._navigation !== 'boolean' && - this._navigation.prevEl !== ((_c = this._prevElRef) === null || _c === void 0 ? void 0 : _c.nativeElement) && - (this._navigation.prevEl !== null || this._navigation.nextEl !== null) && - (typeof this._navigation.nextEl === 'string' || - typeof this._navigation.prevEl === 'string' || - typeof this._navigation.nextEl === 'object' || - typeof this._navigation.prevEl === 'object'))); - } - get navigation() { - return this._navigation; - } - set pagination(val) { - var _a; - const current = typeof this._pagination !== 'boolean' && this._pagination !== '' - ? (_a = this._pagination) === null || _a === void 0 ? void 0 : _a.el - : null; - this._pagination = setProperty(val, { - el: current || null, - }); - this.showPagination = isShowEl(val, this._pagination, this._paginationElRef); - } - get pagination() { - return this._pagination; - } - set scrollbar(val) { - var _a; - const current = typeof this._scrollbar !== 'boolean' && this._scrollbar !== '' ? (_a = this._scrollbar) === null || _a === void 0 ? void 0 : _a.el : null; - this._scrollbar = setProperty(val, { - el: current || null, - }); - this.showScrollbar = isShowEl(val, this._scrollbar, this._scrollbarElRef); - } - get scrollbar() { - return this._scrollbar; - } - set virtual(val) { - this._virtual = setProperty(val); - } - get virtual() { - return this._virtual; - } - set index(index) { - console.warn('`[(index)]` prop is deprecated and will be removed in upcoming versions'); - this.setIndex(index); - } - set config(val) { - this.updateSwiper(val); - const { params } = getParams(val); - Object.assign(this, params); - } - set prevElRef(el) { - this._prevElRef = el; - this._setElement(el, this.navigation, 'navigation', 'prevEl'); - } - set nextElRef(el) { - this._nextElRef = el; - this._setElement(el, this.navigation, 'navigation', 'nextEl'); - } - set scrollbarElRef(el) { - this._scrollbarElRef = el; - this._setElement(el, this.scrollbar, 'scrollbar'); - } - set paginationElRef(el) { - this._paginationElRef = el; - this._setElement(el, this.pagination, 'pagination'); - } - get activeSlides() { - if (this.virtual) { - return this._activeSlides; - } - return of(this.slides); - } - get zoomContainerClass() { - return this.zoom && typeof this.zoom !== 'boolean' - ? this.zoom.containerClass - : 'swiper-zoom-container'; - } - _setElement(el, ref, update, key = 'el') { - if (!el || !ref) { - return; - } - if (ref && el.nativeElement) { - if (ref[key] === el.nativeElement) { - return; - } - ref[key] = el.nativeElement; - } - const updateObj = {}; - updateObj[update] = true; - this.updateInitSwiper(updateObj); - } - ngOnInit() { - const { params } = getParams(this); - Object.assign(this, params); - } - ngAfterViewInit() { - this.childrenSlidesInit(); - this.initSwiper(); - this._changeDetectorRef.detectChanges(); - setTimeout(() => { - this.s_swiper.emit(this.swiperRef); - }); - } - childrenSlidesInit() { - this.slidesChanges(this.slidesEl); - this.slidesEl.changes.subscribe(this.slidesChanges); - } - get isSwiperActive() { - return this.swiperRef && !this.swiperRef.destroyed; - } - initSwiper() { - const { params: swiperParams, passedParams } = getParams(this); - Object.assign(this, swiperParams); - this._ngZone.runOutsideAngular(() => { - swiperParams.init = false; - if (!swiperParams.virtual) { - swiperParams.observer = true; - } - swiperParams.onAny = (eventName, ...args) => { - const emitter = this[('s_' + eventName)]; - if (emitter) { - emitter.emit(...args); - } - }; - const _slideClasses = (_, updated) => { - updated.forEach(({ slideEl, classNames }, index) => { - const dataIndex = slideEl.getAttribute('data-swiper-slide-index'); - const slideIndex = dataIndex ? parseInt(dataIndex) : index; - if (this.virtual) { - const virtualSlide = this.slides.find((item) => { - return item.virtualIndex && item.virtualIndex === slideIndex; - }); - if (virtualSlide) { - virtualSlide.classNames = classNames; - return; - } - } - if (this.slides[slideIndex]) { - this.slides[slideIndex].classNames = classNames; - } - }); - this._changeDetectorRef.detectChanges(); - }; - const _containerClasses = (_, classes) => { - setTimeout(() => { - this.containerClasses = classes; - }); - }; - Object.assign(swiperParams.on, { - _containerClasses, - _slideClasses, - }); - const swiperRef = new Swiper(swiperParams); - swiperRef.loopCreate = () => { }; - swiperRef.loopDestroy = () => { }; - if (swiperParams.loop) { - swiperRef.loopedSlides = this.loopedSlides; - } - const isVirtualEnabled = typeof swiperRef.params.virtual !== 'undefined' && - typeof swiperRef.params.virtual !== 'boolean' && - swiperRef.params.virtual.enabled; - if (swiperRef.virtual && isVirtualEnabled) { - swiperRef.virtual.slides = this.slides; - const extendWith = { - cache: false, - slides: this.slides, - renderExternal: this.updateVirtualSlides, - renderExternalUpdate: false, - }; - extend(swiperRef.params.virtual, extendWith); - extend(swiperRef.originalParams.virtual, extendWith); - } - if (isPlatformBrowser(this._platformId)) { - this.swiperRef = swiperRef.init(this.elementRef.nativeElement); - const isEnabled = typeof this.swiperRef.params.virtual !== 'undefined' && - typeof this.swiperRef.params.virtual !== 'boolean' && - this.swiperRef.params.virtual.enabled; - if (this.swiperRef.virtual && isEnabled) { - this.swiperRef.virtual.update(true); - } - this._changeDetectorRef.detectChanges(); - swiperRef.on('slideChange', () => { - this.indexChange.emit(this.swiperRef.realIndex); - }); - } - }); - } - ngOnChanges(changedParams) { - this.updateSwiper(changedParams); - this._changeDetectorRef.detectChanges(); - } - updateInitSwiper(changedParams) { - if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) { - return; - } - this._ngZone.runOutsideAngular(() => { - const { params: currentParams, pagination, navigation, scrollbar, virtual, thumbs, } = this.swiperRef; - if (changedParams.pagination) { - if (this.pagination && - typeof this.pagination !== 'boolean' && - this.pagination.el && - pagination && - !pagination.el) { - this.updateParameter('pagination', this.pagination); - pagination.init(); - pagination.render(); - pagination.update(); - } - else { - pagination.destroy(); - pagination.el = null; - } - } - if (changedParams.scrollbar) { - if (this.scrollbar && - typeof this.scrollbar !== 'boolean' && - this.scrollbar.el && - scrollbar && - !scrollbar.el) { - this.updateParameter('scrollbar', this.scrollbar); - scrollbar.init(); - scrollbar.updateSize(); - scrollbar.setTranslate(); - } - else { - scrollbar.destroy(); - scrollbar.el = null; - } - } - if (changedParams.navigation) { - if (this.navigation && - typeof this.navigation !== 'boolean' && - this.navigation.prevEl && - this.navigation.nextEl && - navigation && - !navigation.prevEl && - !navigation.nextEl) { - this.updateParameter('navigation', this.navigation); - navigation.init(); - navigation.update(); - } - else if (navigation.prevEl && navigation.nextEl) { - navigation.destroy(); - navigation.nextEl = null; - navigation.prevEl = null; - } - } - if (changedParams.thumbs && this.thumbs && this.thumbs.swiper) { - this.updateParameter('thumbs', this.thumbs); - const initialized = thumbs.init(); - if (initialized) - thumbs.update(true); - } - if (changedParams.controller && this.controller && this.controller.control) { - this.swiperRef.controller.control = this.controller.control; - } - this.swiperRef.update(); - }); - } - updateSwiper(changedParams) { - this._ngZone.runOutsideAngular(() => { - var _a, _b; - if (changedParams.config) { - return; - } - if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) { - return; - } - for (const key in changedParams) { - if (ignoreNgOnChanges.indexOf(key) >= 0) { - continue; - } - const newValue = (_b = (_a = changedParams[key]) === null || _a === void 0 ? void 0 : _a.currentValue) !== null && _b !== void 0 ? _b : changedParams[key]; - this.updateParameter(key, newValue); - } - if (changedParams.allowSlideNext) { - this.swiperRef.allowSlideNext = this.allowSlideNext; - } - if (changedParams.allowSlidePrev) { - this.swiperRef.allowSlidePrev = this.allowSlidePrev; - } - if (changedParams.direction) { - this.swiperRef.changeDirection(this.direction, false); - } - if (changedParams.breakpoints) { - if (this.loop && !this.loopedSlides) { - this.calcLoopedSlides(); - } - this.swiperRef.currentBreakpoint = null; - this.swiperRef.setBreakpoint(); - } - if (changedParams.thumbs || changedParams.controller) { - this.updateInitSwiper(changedParams); - } - this.swiperRef.update(); - }); - } - calcLoopedSlides() { - if (!this.loop) { - return; - } - let slidesPerViewParams = this.slidesPerView; - if (this.breakpoints) { - const breakpoint = Swiper.prototype.getBreakpoint(this.breakpoints); - const breakpointOnlyParams = breakpoint in this.breakpoints ? this.breakpoints[breakpoint] : undefined; - if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) { - slidesPerViewParams = breakpointOnlyParams.slidesPerView; - } - } - if (slidesPerViewParams === 'auto') { - this.loopedSlides = this.slides.length; - return this.slides.length; - } - let loopedSlides = this.loopedSlides || slidesPerViewParams; - if (!loopedSlides) { - // ? - return; - } - if (this.loopAdditionalSlides) { - loopedSlides += this.loopAdditionalSlides; - } - if (loopedSlides > this.slides.length) { - loopedSlides = this.slides.length; - } - this.loopedSlides = loopedSlides; - return loopedSlides; - } - updateParameter(key, value) { - if (!(this.swiperRef && !this.swiperRef.destroyed)) { - return; - } - const _key = key.replace(/^_/, ''); - const isCurrentParamObj = isObject(this.swiperRef.params[_key]); - if (Object.keys(this.swiperRef.modules).indexOf(_key) >= 0) { - const defaultParams = this.swiperRef.modules[_key].params[_key]; - if (isCurrentParamObj) { - extend(this.swiperRef.params[_key], defaultParams); - } - else { - this.swiperRef.params[_key] = defaultParams; - } - } - if (_key === 'enabled') { - if (value === true) { - this.swiperRef.enable(); - } - else if (value === false) { - this.swiperRef.disable(); - } - return; - } - if (isCurrentParamObj && isObject(value)) { - extend(this.swiperRef.params[_key], value); - } - else { - this.swiperRef.params[_key] = value; - } - } - /** - * @deprecated will be removed in upcoming versions - */ - setIndex(index, speed, silent) { - if (!this.isSwiperActive) { - this.initialSlide = index; - return; - } - if (index === this.swiperRef.activeIndex) { - return; - } - this._ngZone.runOutsideAngular(() => { - if (this.loop) { - this.swiperRef.slideToLoop(index, speed, !silent); - } - else { - this.swiperRef.slideTo(index, speed, !silent); - } - }); - } - ngOnDestroy() { - this._ngZone.runOutsideAngular(() => { - var _a; - (_a = this.swiperRef) === null || _a === void 0 ? void 0 : _a.destroy(true, false); - }); - } -} -SwiperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); -SwiperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.2", type: SwiperComponent, selector: "swiper, [swiper]", inputs: { enabled: "enabled", direction: "direction", touchEventsTarget: "touchEventsTarget", initialSlide: "initialSlide", speed: "speed", cssMode: "cssMode", updateOnWindowResize: "updateOnWindowResize", resizeObserver: "resizeObserver", nested: "nested", focusableElements: "focusableElements", width: "width", height: "height", preventInteractionOnTransition: "preventInteractionOnTransition", userAgent: "userAgent", url: "url", edgeSwipeDetection: "edgeSwipeDetection", edgeSwipeThreshold: "edgeSwipeThreshold", freeMode: "freeMode", autoHeight: "autoHeight", setWrapperSize: "setWrapperSize", virtualTranslate: "virtualTranslate", effect: "effect", breakpoints: "breakpoints", spaceBetween: "spaceBetween", slidesPerView: "slidesPerView", grid: "grid", slidesPerGroup: "slidesPerGroup", slidesPerGroupSkip: "slidesPerGroupSkip", centeredSlides: "centeredSlides", centeredSlidesBounds: "centeredSlidesBounds", slidesOffsetBefore: "slidesOffsetBefore", slidesOffsetAfter: "slidesOffsetAfter", normalizeSlideIndex: "normalizeSlideIndex", centerInsufficientSlides: "centerInsufficientSlides", watchOverflow: "watchOverflow", roundLengths: "roundLengths", touchRatio: "touchRatio", touchAngle: "touchAngle", simulateTouch: "simulateTouch", shortSwipes: "shortSwipes", longSwipes: "longSwipes", longSwipesRatio: "longSwipesRatio", longSwipesMs: "longSwipesMs", followFinger: "followFinger", allowTouchMove: "allowTouchMove", threshold: "threshold", touchMoveStopPropagation: "touchMoveStopPropagation", touchStartPreventDefault: "touchStartPreventDefault", touchStartForcePreventDefault: "touchStartForcePreventDefault", touchReleaseOnEdges: "touchReleaseOnEdges", uniqueNavElements: "uniqueNavElements", resistance: "resistance", resistanceRatio: "resistanceRatio", watchSlidesProgress: "watchSlidesProgress", grabCursor: "grabCursor", preventClicks: "preventClicks", preventClicksPropagation: "preventClicksPropagation", slideToClickedSlide: "slideToClickedSlide", preloadImages: "preloadImages", updateOnImagesReady: "updateOnImagesReady", loop: "loop", loopAdditionalSlides: "loopAdditionalSlides", loopedSlides: "loopedSlides", loopFillGroupWithBlank: "loopFillGroupWithBlank", loopPreventsSlide: "loopPreventsSlide", allowSlidePrev: "allowSlidePrev", allowSlideNext: "allowSlideNext", swipeHandler: "swipeHandler", noSwiping: "noSwiping", noSwipingClass: "noSwipingClass", noSwipingSelector: "noSwipingSelector", passiveListeners: "passiveListeners", containerModifierClass: "containerModifierClass", slideClass: "slideClass", slideBlankClass: "slideBlankClass", slideActiveClass: "slideActiveClass", slideDuplicateActiveClass: "slideDuplicateActiveClass", slideVisibleClass: "slideVisibleClass", slideDuplicateClass: "slideDuplicateClass", slideNextClass: "slideNextClass", slideDuplicateNextClass: "slideDuplicateNextClass", slidePrevClass: "slidePrevClass", slideDuplicatePrevClass: "slideDuplicatePrevClass", wrapperClass: "wrapperClass", runCallbacksOnInit: "runCallbacksOnInit", observeParents: "observeParents", observeSlideChildren: "observeSlideChildren", a11y: "a11y", autoplay: "autoplay", controller: "controller", coverflowEffect: "coverflowEffect", cubeEffect: "cubeEffect", fadeEffect: "fadeEffect", flipEffect: "flipEffect", creativeEffect: "creativeEffect", cardsEffect: "cardsEffect", hashNavigation: "hashNavigation", history: "history", keyboard: "keyboard", lazy: "lazy", mousewheel: "mousewheel", parallax: "parallax", thumbs: "thumbs", zoom: "zoom", class: "class", id: "id", navigation: "navigation", pagination: "pagination", scrollbar: "scrollbar", virtual: "virtual", index: "index", config: "config" }, outputs: { s__beforeBreakpoint: "_beforeBreakpoint", s__containerClasses: "_containerClasses", s__slideClass: "_slideClass", s__swiper: "_swiper", s_activeIndexChange: "activeIndexChange", s_afterInit: "afterInit", s_autoplay: "autoplay", s_autoplayStart: "autoplayStart", s_autoplayStop: "autoplayStop", s_beforeDestroy: "beforeDestroy", s_beforeInit: "beforeInit", s_beforeLoopFix: "beforeLoopFix", s_beforeResize: "beforeResize", s_beforeSlideChangeStart: "beforeSlideChangeStart", s_beforeTransitionStart: "beforeTransitionStart", s_breakpoint: "breakpoint", s_changeDirection: "changeDirection", s_click: "click", s_doubleTap: "doubleTap", s_doubleClick: "doubleClick", s_destroy: "destroy", s_fromEdge: "fromEdge", s_hashChange: "hashChange", s_hashSet: "hashSet", s_imagesReady: "imagesReady", s_init: "init", s_keyPress: "keyPress", s_lazyImageLoad: "lazyImageLoad", s_lazyImageReady: "lazyImageReady", s_loopFix: "loopFix", s_momentumBounce: "momentumBounce", s_navigationHide: "navigationHide", s_navigationShow: "navigationShow", s_observerUpdate: "observerUpdate", s_orientationchange: "orientationchange", s_paginationHide: "paginationHide", s_paginationRender: "paginationRender", s_paginationShow: "paginationShow", s_paginationUpdate: "paginationUpdate", s_progress: "progress", s_reachBeginning: "reachBeginning", s_reachEnd: "reachEnd", s_realIndexChange: "realIndexChange", s_resize: "resize", s_scroll: "scroll", s_scrollbarDragEnd: "scrollbarDragEnd", s_scrollbarDragMove: "scrollbarDragMove", s_scrollbarDragStart: "scrollbarDragStart", s_setTransition: "setTransition", s_setTranslate: "setTranslate", s_slideChange: "slideChange", s_slideChangeTransitionEnd: "slideChangeTransitionEnd", s_slideChangeTransitionStart: "slideChangeTransitionStart", s_slideNextTransitionEnd: "slideNextTransitionEnd", s_slideNextTransitionStart: "slideNextTransitionStart", s_slidePrevTransitionEnd: "slidePrevTransitionEnd", s_slidePrevTransitionStart: "slidePrevTransitionStart", s_slideResetTransitionStart: "slideResetTransitionStart", s_slideResetTransitionEnd: "slideResetTransitionEnd", s_sliderMove: "sliderMove", s_sliderFirstMove: "sliderFirstMove", s_slidesLengthChange: "slidesLengthChange", s_slidesGridLengthChange: "slidesGridLengthChange", s_snapGridLengthChange: "snapGridLengthChange", s_snapIndexChange: "snapIndexChange", s_tap: "tap", s_toEdge: "toEdge", s_touchEnd: "touchEnd", s_touchMove: "touchMove", s_touchMoveOpposite: "touchMoveOpposite", s_touchStart: "touchStart", s_transitionEnd: "transitionEnd", s_transitionStart: "transitionStart", s_update: "update", s_zoomChange: "zoomChange", s_swiper: "swiper", indexChange: "indexChange" }, host: { properties: { "class": "this.containerClasses" } }, queries: [{ propertyName: "slidesEl", predicate: SwiperSlideDirective }], viewQueries: [{ propertyName: "prevElRef", first: true, predicate: ["prevElRef"], descendants: true }, { propertyName: "nextElRef", first: true, predicate: ["nextElRef"], descendants: true }, { propertyName: "scrollbarElRef", first: true, predicate: ["scrollbarElRef"], descendants: true }, { propertyName: "paginationElRef", first: true, predicate: ["paginationElRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "\n\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n\n\n\n \n
\n \n
\n \n
\n \n
\n\n", styles: ["\n swiper {\n display: block;\n }\n "], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "async": i1.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); -i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperComponent, decorators: [{ - type: Component, - args: [{ - selector: 'swiper, [swiper]', - templateUrl: './swiper.component.html', - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None, - styles: [ - ` - swiper { - display: block; - } - `, - ], - }] - }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: Object, decorators: [{ - type: Inject, - args: [PLATFORM_ID] - }] }]; }, propDecorators: { enabled: [{ - type: Input - }], direction: [{ - type: Input - }], touchEventsTarget: [{ - type: Input - }], initialSlide: [{ - type: Input - }], speed: [{ - type: Input - }], cssMode: [{ - type: Input - }], updateOnWindowResize: [{ - type: Input - }], resizeObserver: [{ - type: Input - }], nested: [{ - type: Input - }], focusableElements: [{ - type: Input - }], width: [{ - type: Input - }], height: [{ - type: Input - }], preventInteractionOnTransition: [{ - type: Input - }], userAgent: [{ - type: Input - }], url: [{ - type: Input - }], edgeSwipeDetection: [{ - type: Input - }], edgeSwipeThreshold: [{ - type: Input - }], freeMode: [{ - type: Input - }], autoHeight: [{ - type: Input - }], setWrapperSize: [{ - type: Input - }], virtualTranslate: [{ - type: Input - }], effect: [{ - type: Input - }], breakpoints: [{ - type: Input - }], spaceBetween: [{ - type: Input - }], slidesPerView: [{ - type: Input - }], grid: [{ - type: Input - }], slidesPerGroup: [{ - type: Input - }], slidesPerGroupSkip: [{ - type: Input - }], centeredSlides: [{ - type: Input - }], centeredSlidesBounds: [{ - type: Input - }], slidesOffsetBefore: [{ - type: Input - }], slidesOffsetAfter: [{ - type: Input - }], normalizeSlideIndex: [{ - type: Input - }], centerInsufficientSlides: [{ - type: Input - }], watchOverflow: [{ - type: Input - }], roundLengths: [{ - type: Input - }], touchRatio: [{ - type: Input - }], touchAngle: [{ - type: Input - }], simulateTouch: [{ - type: Input - }], shortSwipes: [{ - type: Input - }], longSwipes: [{ - type: Input - }], longSwipesRatio: [{ - type: Input - }], longSwipesMs: [{ - type: Input - }], followFinger: [{ - type: Input - }], allowTouchMove: [{ - type: Input - }], threshold: [{ - type: Input - }], touchMoveStopPropagation: [{ - type: Input - }], touchStartPreventDefault: [{ - type: Input - }], touchStartForcePreventDefault: [{ - type: Input - }], touchReleaseOnEdges: [{ - type: Input - }], uniqueNavElements: [{ - type: Input - }], resistance: [{ - type: Input - }], resistanceRatio: [{ - type: Input - }], watchSlidesProgress: [{ - type: Input - }], grabCursor: [{ - type: Input - }], preventClicks: [{ - type: Input - }], preventClicksPropagation: [{ - type: Input - }], slideToClickedSlide: [{ - type: Input - }], preloadImages: [{ - type: Input - }], updateOnImagesReady: [{ - type: Input - }], loop: [{ - type: Input - }], loopAdditionalSlides: [{ - type: Input - }], loopedSlides: [{ - type: Input - }], loopFillGroupWithBlank: [{ - type: Input - }], loopPreventsSlide: [{ - type: Input - }], allowSlidePrev: [{ - type: Input - }], allowSlideNext: [{ - type: Input - }], swipeHandler: [{ - type: Input - }], noSwiping: [{ - type: Input - }], noSwipingClass: [{ - type: Input - }], noSwipingSelector: [{ - type: Input - }], passiveListeners: [{ - type: Input - }], containerModifierClass: [{ - type: Input - }], slideClass: [{ - type: Input - }], slideBlankClass: [{ - type: Input - }], slideActiveClass: [{ - type: Input - }], slideDuplicateActiveClass: [{ - type: Input - }], slideVisibleClass: [{ - type: Input - }], slideDuplicateClass: [{ - type: Input - }], slideNextClass: [{ - type: Input - }], slideDuplicateNextClass: [{ - type: Input - }], slidePrevClass: [{ - type: Input - }], slideDuplicatePrevClass: [{ - type: Input - }], wrapperClass: [{ - type: Input - }], runCallbacksOnInit: [{ - type: Input - }], observeParents: [{ - type: Input - }], observeSlideChildren: [{ - type: Input - }], a11y: [{ - type: Input - }], autoplay: [{ - type: Input - }], controller: [{ - type: Input - }], coverflowEffect: [{ - type: Input - }], cubeEffect: [{ - type: Input - }], fadeEffect: [{ - type: Input - }], flipEffect: [{ - type: Input - }], creativeEffect: [{ - type: Input - }], cardsEffect: [{ - type: Input - }], hashNavigation: [{ - type: Input - }], history: [{ - type: Input - }], keyboard: [{ - type: Input - }], lazy: [{ - type: Input - }], mousewheel: [{ - type: Input - }], parallax: [{ - type: Input - }], thumbs: [{ - type: Input - }], zoom: [{ - type: Input - }], class: [{ - type: Input - }], id: [{ - type: Input - }], navigation: [{ - type: Input - }], pagination: [{ - type: Input - }], scrollbar: [{ - type: Input - }], virtual: [{ - type: Input - }], index: [{ - type: Input - }], config: [{ - type: Input - }], s__beforeBreakpoint: [{ - type: Output, - args: ['_beforeBreakpoint'] - }], s__containerClasses: [{ - type: Output, - args: ['_containerClasses'] - }], s__slideClass: [{ - type: Output, - args: ['_slideClass'] - }], s__swiper: [{ - type: Output, - args: ['_swiper'] - }], s_activeIndexChange: [{ - type: Output, - args: ['activeIndexChange'] - }], s_afterInit: [{ - type: Output, - args: ['afterInit'] - }], s_autoplay: [{ - type: Output, - args: ['autoplay'] - }], s_autoplayStart: [{ - type: Output, - args: ['autoplayStart'] - }], s_autoplayStop: [{ - type: Output, - args: ['autoplayStop'] - }], s_beforeDestroy: [{ - type: Output, - args: ['beforeDestroy'] - }], s_beforeInit: [{ - type: Output, - args: ['beforeInit'] - }], s_beforeLoopFix: [{ - type: Output, - args: ['beforeLoopFix'] - }], s_beforeResize: [{ - type: Output, - args: ['beforeResize'] - }], s_beforeSlideChangeStart: [{ - type: Output, - args: ['beforeSlideChangeStart'] - }], s_beforeTransitionStart: [{ - type: Output, - args: ['beforeTransitionStart'] - }], s_breakpoint: [{ - type: Output, - args: ['breakpoint'] - }], s_changeDirection: [{ - type: Output, - args: ['changeDirection'] - }], s_click: [{ - type: Output, - args: ['click'] - }], s_doubleTap: [{ - type: Output, - args: ['doubleTap'] - }], s_doubleClick: [{ - type: Output, - args: ['doubleClick'] - }], s_destroy: [{ - type: Output, - args: ['destroy'] - }], s_fromEdge: [{ - type: Output, - args: ['fromEdge'] - }], s_hashChange: [{ - type: Output, - args: ['hashChange'] - }], s_hashSet: [{ - type: Output, - args: ['hashSet'] - }], s_imagesReady: [{ - type: Output, - args: ['imagesReady'] - }], s_init: [{ - type: Output, - args: ['init'] - }], s_keyPress: [{ - type: Output, - args: ['keyPress'] - }], s_lazyImageLoad: [{ - type: Output, - args: ['lazyImageLoad'] - }], s_lazyImageReady: [{ - type: Output, - args: ['lazyImageReady'] - }], s_loopFix: [{ - type: Output, - args: ['loopFix'] - }], s_momentumBounce: [{ - type: Output, - args: ['momentumBounce'] - }], s_navigationHide: [{ - type: Output, - args: ['navigationHide'] - }], s_navigationShow: [{ - type: Output, - args: ['navigationShow'] - }], s_observerUpdate: [{ - type: Output, - args: ['observerUpdate'] - }], s_orientationchange: [{ - type: Output, - args: ['orientationchange'] - }], s_paginationHide: [{ - type: Output, - args: ['paginationHide'] - }], s_paginationRender: [{ - type: Output, - args: ['paginationRender'] - }], s_paginationShow: [{ - type: Output, - args: ['paginationShow'] - }], s_paginationUpdate: [{ - type: Output, - args: ['paginationUpdate'] - }], s_progress: [{ - type: Output, - args: ['progress'] - }], s_reachBeginning: [{ - type: Output, - args: ['reachBeginning'] - }], s_reachEnd: [{ - type: Output, - args: ['reachEnd'] - }], s_realIndexChange: [{ - type: Output, - args: ['realIndexChange'] - }], s_resize: [{ - type: Output, - args: ['resize'] - }], s_scroll: [{ - type: Output, - args: ['scroll'] - }], s_scrollbarDragEnd: [{ - type: Output, - args: ['scrollbarDragEnd'] - }], s_scrollbarDragMove: [{ - type: Output, - args: ['scrollbarDragMove'] - }], s_scrollbarDragStart: [{ - type: Output, - args: ['scrollbarDragStart'] - }], s_setTransition: [{ - type: Output, - args: ['setTransition'] - }], s_setTranslate: [{ - type: Output, - args: ['setTranslate'] - }], s_slideChange: [{ - type: Output, - args: ['slideChange'] - }], s_slideChangeTransitionEnd: [{ - type: Output, - args: ['slideChangeTransitionEnd'] - }], s_slideChangeTransitionStart: [{ - type: Output, - args: ['slideChangeTransitionStart'] - }], s_slideNextTransitionEnd: [{ - type: Output, - args: ['slideNextTransitionEnd'] - }], s_slideNextTransitionStart: [{ - type: Output, - args: ['slideNextTransitionStart'] - }], s_slidePrevTransitionEnd: [{ - type: Output, - args: ['slidePrevTransitionEnd'] - }], s_slidePrevTransitionStart: [{ - type: Output, - args: ['slidePrevTransitionStart'] - }], s_slideResetTransitionStart: [{ - type: Output, - args: ['slideResetTransitionStart'] - }], s_slideResetTransitionEnd: [{ - type: Output, - args: ['slideResetTransitionEnd'] - }], s_sliderMove: [{ - type: Output, - args: ['sliderMove'] - }], s_sliderFirstMove: [{ - type: Output, - args: ['sliderFirstMove'] - }], s_slidesLengthChange: [{ - type: Output, - args: ['slidesLengthChange'] - }], s_slidesGridLengthChange: [{ - type: Output, - args: ['slidesGridLengthChange'] - }], s_snapGridLengthChange: [{ - type: Output, - args: ['snapGridLengthChange'] - }], s_snapIndexChange: [{ - type: Output, - args: ['snapIndexChange'] - }], s_tap: [{ - type: Output, - args: ['tap'] - }], s_toEdge: [{ - type: Output, - args: ['toEdge'] - }], s_touchEnd: [{ - type: Output, - args: ['touchEnd'] - }], s_touchMove: [{ - type: Output, - args: ['touchMove'] - }], s_touchMoveOpposite: [{ - type: Output, - args: ['touchMoveOpposite'] - }], s_touchStart: [{ - type: Output, - args: ['touchStart'] - }], s_transitionEnd: [{ - type: Output, - args: ['transitionEnd'] - }], s_transitionStart: [{ - type: Output, - args: ['transitionStart'] - }], s_update: [{ - type: Output, - args: ['update'] - }], s_zoomChange: [{ - type: Output, - args: ['zoomChange'] - }], s_swiper: [{ - type: Output, - args: ['swiper'] - }], indexChange: [{ - type: Output - }], prevElRef: [{ - type: ViewChild, - args: ['prevElRef', { static: false }] - }], nextElRef: [{ - type: ViewChild, - args: ['nextElRef', { static: false }] - }], scrollbarElRef: [{ - type: ViewChild, - args: ['scrollbarElRef', { static: false }] - }], paginationElRef: [{ - type: ViewChild, - args: ['paginationElRef', { static: false }] - }], slidesEl: [{ - type: ContentChildren, - args: [SwiperSlideDirective, { descendants: false, emitDistinctChangesOnly: true }] - }], containerClasses: [{ - type: HostBinding, - args: ['class'] - }] } }); - -class SwiperModule { -} -SwiperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -SwiperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperModule, declarations: [SwiperComponent, SwiperSlideDirective], imports: [CommonModule], exports: [SwiperComponent, SwiperSlideDirective] }); -SwiperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperModule, imports: [[CommonModule]] }); -i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.2", ngImport: i0, type: SwiperModule, decorators: [{ - type: NgModule, - args: [{ - declarations: [SwiperComponent, SwiperSlideDirective], - exports: [SwiperComponent, SwiperSlideDirective], - imports: [CommonModule], - }] - }] }); - -/* - * Public API Surface of angular - */ - -/** - * Generated bundle index. Do not edit. - */ - -export { SwiperComponent, SwiperModule, SwiperSlideDirective }; -//# sourceMappingURL=swiper_angular.js.map diff --git a/resources/web/include/swiper/angular/fesm2015/swiper_angular.js.map b/resources/web/include/swiper/angular/fesm2015/swiper_angular.js.map deleted file mode 100644 index 56b5f76095..0000000000 --- a/resources/web/include/swiper/angular/fesm2015/swiper_angular.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"swiper_angular.js","sources":["../../../src/angular/src/utils/utils.ts","../../../src/angular/src/utils/params-list.ts","../../../src/angular/src/utils/get-params.ts","../../../src/angular/src/swiper-slide.directive.ts","../../../src/angular/src/swiper.component.ts","../../../src/angular/src/swiper.component.html","../../../src/angular/src/swiper.module.ts","../../../src/angular/src/public-api.ts","../../../src/swiper_angular.ts"],"sourcesContent":["export function isObject(o: any): boolean {\n return (\n typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n );\n}\n\nexport function isShowEl(val: any, obj: any, el: any): boolean {\n return (\n (coerceBooleanProperty(val) === true && obj && !obj.el) ||\n !(\n typeof obj !== 'boolean' &&\n obj.el !== el?.nativeElement &&\n (typeof obj.el === 'string' || typeof obj.el === 'object')\n )\n );\n}\n\nexport function extend(target: any, src: any) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src)\n .filter((key) => noExtend.indexOf(key) < 0)\n .forEach((key) => {\n if (typeof target[key] === 'undefined') {\n target[key] = src[key];\n return;\n }\n if (target[key] && !src[key]) {\n return;\n }\n if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];\n else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\n\nexport function coerceBooleanProperty(value: any): boolean {\n return value != null && `${value}` !== 'false';\n}\n\nexport const ignoreNgOnChanges = ['pagination', 'navigation', 'scrollbar', 'virtual'];\n\nexport function setProperty(val: any, obj = {}): {} | false {\n if (isObject(val)) {\n return val;\n }\n\n if (coerceBooleanProperty(val) === true) {\n return obj;\n }\n\n return false;\n}\n","/* underscore in name -> watch for changes */\nexport const paramsList = [\n 'init',\n 'enabled',\n '_direction',\n 'touchEventsTarget',\n 'initialSlide',\n '_speed',\n 'cssMode',\n 'updateOnWindowResize',\n 'resizeObserver',\n 'nested',\n 'focusableElements',\n '_width',\n '_height',\n 'preventInteractionOnTransition',\n 'userAgent',\n 'url',\n '_edgeSwipeDetection',\n '_edgeSwipeThreshold',\n '_freeMode',\n '_autoHeight',\n 'setWrapperSize',\n 'virtualTranslate',\n '_effect',\n 'breakpoints',\n '_spaceBetween',\n '_slidesPerView',\n '_grid',\n '_slidesPerGroup',\n '_slidesPerGroupSkip',\n '_centeredSlides',\n '_centeredSlidesBounds',\n '_slidesOffsetBefore',\n '_slidesOffsetAfter',\n 'normalizeSlideIndex',\n '_centerInsufficientSlides',\n '_watchOverflow',\n 'roundLengths',\n 'touchRatio',\n 'touchAngle',\n 'simulateTouch',\n '_shortSwipes',\n '_longSwipes',\n 'longSwipesRatio',\n 'longSwipesMs',\n '_followFinger',\n 'allowTouchMove',\n '_threshold',\n 'touchMoveStopPropagation',\n 'touchStartPreventDefault',\n 'touchStartForcePreventDefault',\n 'touchReleaseOnEdges',\n 'uniqueNavElements',\n '_resistance',\n '_resistanceRatio',\n '_watchSlidesProgress',\n '_grabCursor',\n 'preventClicks',\n 'preventClicksPropagation',\n '_slideToClickedSlide',\n '_preloadImages',\n 'updateOnImagesReady',\n '_loop',\n '_loopAdditionalSlides',\n '_loopedSlides',\n '_loopFillGroupWithBlank',\n 'loopPreventsSlide',\n '_allowSlidePrev',\n '_allowSlideNext',\n '_swipeHandler',\n '_noSwiping',\n 'noSwipingClass',\n 'noSwipingSelector',\n 'passiveListeners',\n 'containerModifierClass',\n 'slideClass',\n 'slideBlankClass',\n 'slideActiveClass',\n 'slideDuplicateActiveClass',\n 'slideVisibleClass',\n 'slideDuplicateClass',\n 'slideNextClass',\n 'slideDuplicateNextClass',\n 'slidePrevClass',\n 'slideDuplicatePrevClass',\n 'wrapperClass',\n 'runCallbacksOnInit',\n 'observer',\n 'observeParents',\n 'observeSlideChildren',\n\n // modules\n 'a11y',\n 'autoplay',\n '_controller',\n 'coverflowEffect',\n 'cubeEffect',\n 'fadeEffect',\n 'flipEffect',\n 'creativeEffect',\n 'cardsEffect',\n 'hashNavigation',\n 'history',\n 'keyboard',\n 'lazy',\n 'mousewheel',\n '_navigation',\n '_pagination',\n 'parallax',\n '_scrollbar',\n '_thumbs',\n 'virtual',\n 'zoom',\n];\n","// eslint-disable-next-line\nimport { isObject, extend } from './utils';\nimport { paramsList } from './params-list';\n// @ts-ignore\nimport Swiper from 'swiper';\n\nexport const allowedParams = paramsList.map((key) => key.replace(/_/, ''));\nexport function getParams(obj: any = {}) {\n const params: any = {\n on: {},\n };\n const passedParams: any = {};\n extend(params, Swiper.defaults);\n extend(params, Swiper.extendedDefaults);\n params._emitClasses = true;\n\n const rest: any = {};\n Object.keys(obj).forEach((key: string) => {\n const _key = key.replace(/^_/, '');\n if (typeof obj[_key] === 'undefined') return;\n if (allowedParams.indexOf(_key) >= 0) {\n if (isObject(obj[_key])) {\n params[_key] = {};\n passedParams[_key] = {};\n extend(params[_key], obj[_key]);\n extend(passedParams[_key], obj[_key]);\n } else {\n params[_key] = obj[_key];\n passedParams[_key] = obj[_key];\n }\n } else {\n rest[_key] = obj[_key];\n }\n });\n\n return { params, passedParams, rest };\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { coerceBooleanProperty } from './utils/utils';\n@Directive({\n selector: 'ng-template[swiperSlide]',\n})\nexport class SwiperSlideDirective {\n @Input() virtualIndex: number;\n @Input() class: string = '';\n @Input('data-swiper-autoplay') autoplayDelay: string | null = null;\n @Input()\n set zoom(val: boolean) {\n this._zoom = coerceBooleanProperty(val);\n }\n get zoom() {\n return this._zoom;\n }\n private _zoom: boolean;\n slideIndex: number;\n get classNames() {\n return this._classNames;\n }\n set classNames(val) {\n if (this._classNames === val) {\n return;\n }\n this._classNames = val;\n this.slideData = {\n isActive: this._hasClass(['swiper-slide-active', 'swiper-slide-duplicate-active']),\n isVisible: this._hasClass(['swiper-slide-visible']),\n isDuplicate: this._hasClass(['swiper-slide-duplicate']),\n isPrev: this._hasClass(['swiper-slide-prev', 'swiper-slide-duplicate-prev']),\n isNext: this._hasClass(['swiper-slide-next', 'swiper-slide-duplicate-next']),\n };\n }\n\n private _hasClass(classNames: string[]) {\n return classNames.some((className) => this._classNames.indexOf(className) >= 0);\n }\n slideData = {\n isActive: false,\n isPrev: false,\n isNext: false,\n isVisible: false,\n isDuplicate: false,\n };\n\n private _classNames: string;\n constructor(public template: TemplateRef) {}\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnInit,\n Output,\n PLATFORM_ID,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\n// @ts-ignore\nimport Swiper from 'swiper';\nimport { Observable, of, Subject } from 'rxjs';\nimport { getParams } from './utils/get-params';\nimport { SwiperSlideDirective } from './swiper-slide.directive';\nimport {\n extend,\n isObject,\n setProperty,\n ignoreNgOnChanges,\n coerceBooleanProperty,\n isShowEl,\n} from './utils/utils';\nimport {\n SwiperOptions,\n SwiperEvents,\n NavigationOptions,\n PaginationOptions,\n ScrollbarOptions,\n VirtualOptions,\n} from 'swiper/types';\nimport { isPlatformBrowser } from '@angular/common';\n@Component({\n selector: 'swiper, [swiper]',\n templateUrl: './swiper.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\n `\n swiper {\n display: block;\n }\n `,\n ],\n})\nexport class SwiperComponent implements OnInit {\n @Input() enabled: SwiperOptions['enabled'];\n @Input() direction: SwiperOptions['direction'];\n @Input() touchEventsTarget: SwiperOptions['touchEventsTarget'];\n @Input() initialSlide: SwiperOptions['initialSlide'];\n @Input() speed: SwiperOptions['speed'];\n @Input() cssMode: SwiperOptions['cssMode'];\n @Input() updateOnWindowResize: SwiperOptions['updateOnWindowResize'];\n @Input() resizeObserver: SwiperOptions['resizeObserver'];\n @Input() nested: SwiperOptions['nested'];\n @Input() focusableElements: SwiperOptions['focusableElements'];\n @Input() width: SwiperOptions['width'];\n @Input() height: SwiperOptions['height'];\n @Input() preventInteractionOnTransition: SwiperOptions['preventInteractionOnTransition'];\n @Input() userAgent: SwiperOptions['userAgent'];\n @Input() url: SwiperOptions['url'];\n @Input() edgeSwipeDetection: boolean | string;\n @Input() edgeSwipeThreshold: number;\n @Input() freeMode: SwiperOptions['freeMode'];\n @Input() autoHeight: SwiperOptions['autoHeight'];\n @Input() setWrapperSize: SwiperOptions['setWrapperSize'];\n @Input() virtualTranslate: SwiperOptions['virtualTranslate'];\n @Input() effect: SwiperOptions['effect'];\n @Input() breakpoints: SwiperOptions['breakpoints'];\n @Input() spaceBetween: SwiperOptions['spaceBetween'];\n @Input() slidesPerView: SwiperOptions['slidesPerView'];\n @Input() grid: SwiperOptions['grid'];\n @Input() slidesPerGroup: SwiperOptions['slidesPerGroup'];\n @Input() slidesPerGroupSkip: SwiperOptions['slidesPerGroupSkip'];\n @Input() centeredSlides: SwiperOptions['centeredSlides'];\n @Input() centeredSlidesBounds: SwiperOptions['centeredSlidesBounds'];\n @Input() slidesOffsetBefore: SwiperOptions['slidesOffsetBefore'];\n @Input() slidesOffsetAfter: SwiperOptions['slidesOffsetAfter'];\n @Input() normalizeSlideIndex: SwiperOptions['normalizeSlideIndex'];\n @Input() centerInsufficientSlides: SwiperOptions['centerInsufficientSlides'];\n @Input() watchOverflow: SwiperOptions['watchOverflow'];\n @Input() roundLengths: SwiperOptions['roundLengths'];\n @Input() touchRatio: SwiperOptions['touchRatio'];\n @Input() touchAngle: SwiperOptions['touchAngle'];\n @Input() simulateTouch: SwiperOptions['simulateTouch'];\n @Input() shortSwipes: SwiperOptions['shortSwipes'];\n @Input() longSwipes: SwiperOptions['longSwipes'];\n @Input() longSwipesRatio: SwiperOptions['longSwipesRatio'];\n @Input() longSwipesMs: SwiperOptions['longSwipesMs'];\n @Input() followFinger: SwiperOptions['followFinger'];\n @Input() allowTouchMove: SwiperOptions['allowTouchMove'];\n @Input() threshold: SwiperOptions['threshold'];\n @Input() touchMoveStopPropagation: SwiperOptions['touchMoveStopPropagation'];\n @Input() touchStartPreventDefault: SwiperOptions['touchStartPreventDefault'];\n @Input() touchStartForcePreventDefault: SwiperOptions['touchStartForcePreventDefault'];\n @Input() touchReleaseOnEdges: SwiperOptions['touchReleaseOnEdges'];\n @Input() uniqueNavElements: SwiperOptions['uniqueNavElements'];\n @Input() resistance: SwiperOptions['resistance'];\n @Input() resistanceRatio: SwiperOptions['resistanceRatio'];\n @Input() watchSlidesProgress: SwiperOptions['watchSlidesProgress'];\n @Input() grabCursor: SwiperOptions['grabCursor'];\n @Input() preventClicks: SwiperOptions['preventClicks'];\n @Input() preventClicksPropagation: SwiperOptions['preventClicksPropagation'];\n @Input() slideToClickedSlide: SwiperOptions['slideToClickedSlide'];\n @Input() preloadImages: SwiperOptions['preloadImages'];\n @Input() updateOnImagesReady: SwiperOptions['updateOnImagesReady'];\n @Input() loop: SwiperOptions['loop'];\n @Input() loopAdditionalSlides: SwiperOptions['loopAdditionalSlides'];\n @Input() loopedSlides: SwiperOptions['loopedSlides'];\n @Input() loopFillGroupWithBlank: SwiperOptions['loopFillGroupWithBlank'];\n @Input() loopPreventsSlide: SwiperOptions['loopPreventsSlide'];\n @Input() allowSlidePrev: SwiperOptions['allowSlidePrev'];\n @Input() allowSlideNext: SwiperOptions['allowSlideNext'];\n @Input() swipeHandler: SwiperOptions['swipeHandler'];\n @Input() noSwiping: SwiperOptions['noSwiping'];\n @Input() noSwipingClass: SwiperOptions['noSwipingClass'];\n @Input() noSwipingSelector: SwiperOptions['noSwipingSelector'];\n @Input() passiveListeners: SwiperOptions['passiveListeners'];\n @Input() containerModifierClass: SwiperOptions['containerModifierClass'];\n @Input() slideClass: SwiperOptions['slideClass'] = 'swiper-slide';\n @Input() slideBlankClass: SwiperOptions['slideBlankClass'];\n @Input() slideActiveClass: SwiperOptions['slideActiveClass'];\n @Input() slideDuplicateActiveClass: SwiperOptions['slideDuplicateActiveClass'];\n @Input() slideVisibleClass: SwiperOptions['slideVisibleClass'];\n @Input() slideDuplicateClass: SwiperOptions['slideDuplicateClass'];\n @Input() slideNextClass: SwiperOptions['slideNextClass'];\n @Input() slideDuplicateNextClass: SwiperOptions['slideDuplicateNextClass'];\n @Input() slidePrevClass: SwiperOptions['slidePrevClass'];\n @Input() slideDuplicatePrevClass: SwiperOptions['slideDuplicatePrevClass'];\n @Input() wrapperClass: SwiperOptions['wrapperClass'] = 'swiper-wrapper';\n @Input() runCallbacksOnInit: SwiperOptions['runCallbacksOnInit'];\n @Input() observeParents: SwiperOptions['observeParents'];\n @Input() observeSlideChildren: SwiperOptions['observeSlideChildren'];\n @Input() a11y: SwiperOptions['a11y'];\n @Input() autoplay: SwiperOptions['autoplay'];\n @Input() controller: SwiperOptions['controller'];\n @Input() coverflowEffect: SwiperOptions['coverflowEffect'];\n @Input() cubeEffect: SwiperOptions['cubeEffect'];\n @Input() fadeEffect: SwiperOptions['fadeEffect'];\n @Input() flipEffect: SwiperOptions['flipEffect'];\n @Input() creativeEffect: SwiperOptions['creativeEffect'];\n @Input() cardsEffect: SwiperOptions['cardsEffect'];\n @Input() hashNavigation: SwiperOptions['hashNavigation'];\n @Input() history: SwiperOptions['history'];\n @Input() keyboard: SwiperOptions['keyboard'];\n @Input() lazy: SwiperOptions['lazy'];\n @Input() mousewheel: SwiperOptions['mousewheel'];\n @Input() parallax: SwiperOptions['parallax'];\n @Input() thumbs: SwiperOptions['thumbs'];\n @Input() zoom: SwiperOptions['zoom'];\n @Input() class: string;\n @Input() id: string;\n @Input()\n set navigation(val) {\n const currentNext =\n typeof this._navigation !== 'boolean' && this._navigation !== ''\n ? this._navigation?.nextEl\n : null;\n const currentPrev =\n typeof this._navigation !== 'boolean' && this._navigation !== ''\n ? this._navigation?.prevEl\n : null;\n this._navigation = setProperty(val, {\n nextEl: currentNext || null,\n prevEl: currentPrev || null,\n });\n this.showNavigation = !(\n coerceBooleanProperty(val) !== true ||\n (this._navigation &&\n typeof this._navigation !== 'boolean' &&\n this._navigation.prevEl !== this._prevElRef?.nativeElement &&\n (this._navigation.prevEl !== null || this._navigation.nextEl !== null) &&\n (typeof this._navigation.nextEl === 'string' ||\n typeof this._navigation.prevEl === 'string' ||\n typeof this._navigation.nextEl === 'object' ||\n typeof this._navigation.prevEl === 'object'))\n );\n }\n get navigation() {\n return this._navigation;\n }\n private _navigation: NavigationOptions | boolean | '';\n showNavigation: boolean = true;\n\n @Input()\n set pagination(val) {\n const current =\n typeof this._pagination !== 'boolean' && this._pagination !== ''\n ? this._pagination?.el\n : null;\n this._pagination = setProperty(val, {\n el: current || null,\n });\n this.showPagination = isShowEl(val, this._pagination, this._paginationElRef);\n }\n get pagination() {\n return this._pagination;\n }\n private _pagination: PaginationOptions | boolean | '';\n showPagination: boolean = true;\n\n @Input()\n set scrollbar(val) {\n const current =\n typeof this._scrollbar !== 'boolean' && this._scrollbar !== '' ? this._scrollbar?.el : null;\n this._scrollbar = setProperty(val, {\n el: current || null,\n });\n this.showScrollbar = isShowEl(val, this._scrollbar, this._scrollbarElRef);\n }\n get scrollbar() {\n return this._scrollbar;\n }\n private _scrollbar: ScrollbarOptions | boolean | '';\n showScrollbar: boolean = true;\n\n @Input()\n set virtual(val) {\n this._virtual = setProperty(val);\n }\n get virtual() {\n return this._virtual;\n }\n private _virtual: VirtualOptions | boolean | '';\n\n @Input()\n set index(index: number) {\n console.warn('`[(index)]` prop is deprecated and will be removed in upcoming versions');\n this.setIndex(index);\n }\n @Input()\n set config(val: SwiperOptions) {\n this.updateSwiper(val);\n const { params } = getParams(val);\n Object.assign(this, params);\n }\n // prettier-ignore\n @Output('_beforeBreakpoint') s__beforeBreakpoint: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('_containerClasses') s__containerClasses: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('_slideClass') s__slideClass: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('_swiper') s__swiper: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('activeIndexChange') s_activeIndexChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('afterInit') s_afterInit: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('autoplay') s_autoplay: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('autoplayStart') s_autoplayStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('autoplayStop') s_autoplayStop: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeDestroy') s_beforeDestroy: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeInit') s_beforeInit: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeLoopFix') s_beforeLoopFix: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeResize') s_beforeResize: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeSlideChangeStart') s_beforeSlideChangeStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('beforeTransitionStart') s_beforeTransitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('breakpoint') s_breakpoint: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('changeDirection') s_changeDirection: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('click') s_click: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('doubleTap') s_doubleTap: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('doubleClick') s_doubleClick: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('destroy') s_destroy: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('fromEdge') s_fromEdge: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('hashChange') s_hashChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('hashSet') s_hashSet: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('imagesReady') s_imagesReady: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('init') s_init: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('keyPress') s_keyPress: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('lazyImageLoad') s_lazyImageLoad: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('lazyImageReady') s_lazyImageReady: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('loopFix') s_loopFix: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('momentumBounce') s_momentumBounce: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('navigationHide') s_navigationHide: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('navigationShow') s_navigationShow: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('observerUpdate') s_observerUpdate: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('orientationchange') s_orientationchange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('paginationHide') s_paginationHide: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('paginationRender') s_paginationRender: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('paginationShow') s_paginationShow: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('paginationUpdate') s_paginationUpdate: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('progress') s_progress: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('reachBeginning') s_reachBeginning: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('reachEnd') s_reachEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('realIndexChange') s_realIndexChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('resize') s_resize: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('scroll') s_scroll: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('scrollbarDragEnd') s_scrollbarDragEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('scrollbarDragMove') s_scrollbarDragMove: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('scrollbarDragStart') s_scrollbarDragStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('setTransition') s_setTransition: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('setTranslate') s_setTranslate: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideChange') s_slideChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideChangeTransitionEnd') s_slideChangeTransitionEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideChangeTransitionStart') s_slideChangeTransitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideNextTransitionEnd') s_slideNextTransitionEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideNextTransitionStart') s_slideNextTransitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slidePrevTransitionEnd') s_slidePrevTransitionEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slidePrevTransitionStart') s_slidePrevTransitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideResetTransitionStart') s_slideResetTransitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slideResetTransitionEnd') s_slideResetTransitionEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('sliderMove') s_sliderMove: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('sliderFirstMove') s_sliderFirstMove: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slidesLengthChange') s_slidesLengthChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('slidesGridLengthChange') s_slidesGridLengthChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('snapGridLengthChange') s_snapGridLengthChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('snapIndexChange') s_snapIndexChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('tap') s_tap: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('toEdge') s_toEdge: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('touchEnd') s_touchEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('touchMove') s_touchMove: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('touchMoveOpposite') s_touchMoveOpposite: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('touchStart') s_touchStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('transitionEnd') s_transitionEnd: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('transitionStart') s_transitionStart: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('update') s_update: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('zoomChange') s_zoomChange: EventEmitter = new EventEmitter();\n // prettier-ignore\n @Output('swiper') s_swiper: EventEmitter = new EventEmitter();\n\n @Output() indexChange = new EventEmitter();\n\n @ViewChild('prevElRef', { static: false })\n set prevElRef(el: ElementRef) {\n this._prevElRef = el;\n this._setElement(el, this.navigation, 'navigation', 'prevEl');\n }\n _prevElRef: ElementRef;\n @ViewChild('nextElRef', { static: false })\n set nextElRef(el: ElementRef) {\n this._nextElRef = el;\n this._setElement(el, this.navigation, 'navigation', 'nextEl');\n }\n _nextElRef: ElementRef;\n @ViewChild('scrollbarElRef', { static: false })\n set scrollbarElRef(el: ElementRef) {\n this._scrollbarElRef = el;\n this._setElement(el, this.scrollbar, 'scrollbar');\n }\n _scrollbarElRef: ElementRef;\n @ViewChild('paginationElRef', { static: false })\n set paginationElRef(el: ElementRef) {\n this._paginationElRef = el;\n this._setElement(el, this.pagination, 'pagination');\n }\n _paginationElRef: ElementRef;\n @ContentChildren(SwiperSlideDirective, { descendants: false, emitDistinctChangesOnly: true })\n slidesEl: QueryList;\n private slides: SwiperSlideDirective[];\n\n prependSlides: Observable;\n appendSlides: Observable;\n\n swiperRef: Swiper;\n readonly _activeSlides = new Subject();\n\n get activeSlides() {\n if (this.virtual) {\n return this._activeSlides;\n }\n return of(this.slides);\n }\n\n get zoomContainerClass() {\n return this.zoom && typeof this.zoom !== 'boolean'\n ? this.zoom.containerClass\n : 'swiper-zoom-container';\n }\n\n @HostBinding('class') containerClasses: string = 'swiper';\n constructor(\n private _ngZone: NgZone,\n private elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(PLATFORM_ID) private _platformId: Object,\n ) {}\n\n private _setElement(el: ElementRef, ref: any, update: string, key = 'el') {\n if (!el || !ref) {\n return;\n }\n if (ref && el.nativeElement) {\n if (ref[key] === el.nativeElement) {\n return;\n }\n ref[key] = el.nativeElement;\n }\n const updateObj: { [key: string]: boolean } = {};\n updateObj[update] = true;\n this.updateInitSwiper(updateObj);\n }\n ngOnInit(): void {\n const { params } = getParams(this);\n Object.assign(this, params);\n }\n ngAfterViewInit() {\n this.childrenSlidesInit();\n this.initSwiper();\n this._changeDetectorRef.detectChanges();\n setTimeout(() => {\n this.s_swiper.emit(this.swiperRef);\n });\n }\n\n private childrenSlidesInit() {\n this.slidesChanges(this.slidesEl);\n this.slidesEl.changes.subscribe(this.slidesChanges);\n }\n\n private slidesChanges = (val: QueryList) => {\n this.slides = val.map((slide: SwiperSlideDirective, index: number) => {\n slide.slideIndex = index;\n slide.classNames = this.slideClass || '';\n return slide;\n });\n if (this.loop && !this.loopedSlides) {\n this.calcLoopedSlides();\n }\n if (!this.virtual) {\n if (this.loopedSlides) {\n this.prependSlides = of(this.slides.slice(this.slides.length - this.loopedSlides));\n this.appendSlides = of(this.slides.slice(0, this.loopedSlides));\n }\n } else if (this.swiperRef && this.swiperRef.virtual) {\n this._ngZone.runOutsideAngular(() => {\n this.swiperRef.virtual.slides = this.slides;\n this.swiperRef.virtual.update(true);\n });\n }\n this._changeDetectorRef.detectChanges();\n };\n\n get isSwiperActive() {\n return this.swiperRef && !this.swiperRef.destroyed;\n }\n\n initSwiper() {\n const { params: swiperParams, passedParams } = getParams(this);\n Object.assign(this, swiperParams);\n this._ngZone.runOutsideAngular(() => {\n swiperParams.init = false;\n if (!swiperParams.virtual) {\n swiperParams.observer = true;\n }\n\n swiperParams.onAny = (eventName: keyof SwiperComponent, ...args: any[]) => {\n const emitter = this[('s_' + eventName) as keyof SwiperComponent] as EventEmitter;\n if (emitter) {\n emitter.emit(...args);\n }\n };\n const _slideClasses: SwiperEvents['_slideClasses'] = (_, updated) => {\n updated.forEach(({ slideEl, classNames }, index) => {\n const dataIndex = slideEl.getAttribute('data-swiper-slide-index');\n const slideIndex = dataIndex ? parseInt(dataIndex) : index;\n if (this.virtual) {\n const virtualSlide = this.slides.find((item) => {\n return item.virtualIndex && item.virtualIndex === slideIndex;\n });\n if (virtualSlide) {\n virtualSlide.classNames = classNames;\n return;\n }\n }\n\n if (this.slides[slideIndex]) {\n this.slides[slideIndex].classNames = classNames;\n }\n });\n this._changeDetectorRef.detectChanges();\n };\n const _containerClasses: SwiperEvents['_containerClasses'] = (_, classes) => {\n setTimeout(() => {\n this.containerClasses = classes;\n });\n };\n Object.assign(swiperParams.on, {\n _containerClasses,\n _slideClasses,\n });\n const swiperRef = new Swiper(swiperParams);\n swiperRef.loopCreate = () => {};\n swiperRef.loopDestroy = () => {};\n if (swiperParams.loop) {\n swiperRef.loopedSlides = this.loopedSlides;\n }\n const isVirtualEnabled =\n typeof swiperRef.params.virtual !== 'undefined' &&\n typeof swiperRef.params.virtual !== 'boolean' &&\n swiperRef.params.virtual.enabled;\n if (swiperRef.virtual && isVirtualEnabled) {\n swiperRef.virtual.slides = this.slides;\n const extendWith = {\n cache: false,\n slides: this.slides,\n renderExternal: this.updateVirtualSlides,\n renderExternalUpdate: false,\n };\n extend(swiperRef.params.virtual, extendWith);\n extend(swiperRef.originalParams.virtual, extendWith);\n }\n\n if (isPlatformBrowser(this._platformId)) {\n this.swiperRef = swiperRef.init(this.elementRef.nativeElement);\n const isEnabled =\n typeof this.swiperRef.params.virtual !== 'undefined' &&\n typeof this.swiperRef.params.virtual !== 'boolean' &&\n this.swiperRef.params.virtual.enabled;\n if (this.swiperRef.virtual && isEnabled) {\n this.swiperRef.virtual.update(true);\n }\n this._changeDetectorRef.detectChanges();\n swiperRef.on('slideChange', () => {\n this.indexChange.emit(this.swiperRef.realIndex);\n });\n }\n });\n }\n\n style: any = null;\n currentVirtualData: any; // TODO: type virtualData;\n private updateVirtualSlides = (virtualData: any) => {\n // TODO: type virtualData\n if (\n !this.swiperRef ||\n (this.currentVirtualData &&\n this.currentVirtualData.from === virtualData.from &&\n this.currentVirtualData.to === virtualData.to &&\n this.currentVirtualData.offset === virtualData.offset)\n ) {\n return;\n }\n this.style = this.swiperRef.isHorizontal()\n ? {\n [this.swiperRef.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`,\n }\n : {\n top: `${virtualData.offset}px`,\n };\n this.currentVirtualData = virtualData;\n this._activeSlides.next(virtualData.slides);\n this._ngZone.run(() => {\n this._changeDetectorRef.detectChanges();\n });\n this._ngZone.runOutsideAngular(() => {\n this.swiperRef.updateSlides();\n this.swiperRef.updateProgress();\n this.swiperRef.updateSlidesClasses();\n if (this.swiperRef.lazy && this.swiperRef.params.lazy['enabled']) {\n this.swiperRef.lazy.load();\n }\n this.swiperRef.virtual.update(true);\n });\n return;\n };\n\n ngOnChanges(changedParams: SimpleChanges) {\n this.updateSwiper(changedParams);\n this._changeDetectorRef.detectChanges();\n }\n\n updateInitSwiper(changedParams: any) {\n if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n\n this._ngZone.runOutsideAngular(() => {\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs,\n } = this.swiperRef;\n\n if (changedParams.pagination) {\n if (\n this.pagination &&\n typeof this.pagination !== 'boolean' &&\n this.pagination.el &&\n pagination &&\n !pagination.el\n ) {\n this.updateParameter('pagination', this.pagination);\n pagination.init();\n pagination.render();\n pagination.update();\n } else {\n pagination.destroy();\n pagination.el = null;\n }\n }\n\n if (changedParams.scrollbar) {\n if (\n this.scrollbar &&\n typeof this.scrollbar !== 'boolean' &&\n this.scrollbar.el &&\n scrollbar &&\n !scrollbar.el\n ) {\n this.updateParameter('scrollbar', this.scrollbar);\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n } else {\n scrollbar.destroy();\n scrollbar.el = null;\n }\n }\n\n if (changedParams.navigation) {\n if (\n this.navigation &&\n typeof this.navigation !== 'boolean' &&\n this.navigation.prevEl &&\n this.navigation.nextEl &&\n navigation &&\n !navigation.prevEl &&\n !navigation.nextEl\n ) {\n this.updateParameter('navigation', this.navigation);\n navigation.init();\n navigation.update();\n } else if (navigation.prevEl && navigation.nextEl) {\n navigation.destroy();\n navigation.nextEl = null;\n navigation.prevEl = null;\n }\n }\n if (changedParams.thumbs && this.thumbs && this.thumbs.swiper) {\n this.updateParameter('thumbs', this.thumbs);\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n\n if (changedParams.controller && this.controller && this.controller.control) {\n this.swiperRef.controller.control = this.controller.control;\n }\n\n this.swiperRef.update();\n });\n }\n\n updateSwiper(changedParams: SimpleChanges | any) {\n this._ngZone.runOutsideAngular(() => {\n if (changedParams.config) {\n return;\n }\n if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n for (const key in changedParams) {\n if (ignoreNgOnChanges.indexOf(key) >= 0) {\n continue;\n }\n const newValue = changedParams[key]?.currentValue ?? changedParams[key];\n this.updateParameter(key, newValue);\n }\n\n if (changedParams.allowSlideNext) {\n this.swiperRef.allowSlideNext = this.allowSlideNext;\n }\n if (changedParams.allowSlidePrev) {\n this.swiperRef.allowSlidePrev = this.allowSlidePrev;\n }\n if (changedParams.direction) {\n this.swiperRef.changeDirection(this.direction, false);\n }\n if (changedParams.breakpoints) {\n if (this.loop && !this.loopedSlides) {\n this.calcLoopedSlides();\n }\n this.swiperRef.currentBreakpoint = null;\n this.swiperRef.setBreakpoint();\n }\n\n if (changedParams.thumbs || changedParams.controller) {\n this.updateInitSwiper(changedParams);\n }\n this.swiperRef.update();\n });\n }\n\n calcLoopedSlides() {\n if (!this.loop) {\n return;\n }\n let slidesPerViewParams = this.slidesPerView;\n if (this.breakpoints) {\n const breakpoint = Swiper.prototype.getBreakpoint(this.breakpoints);\n const breakpointOnlyParams =\n breakpoint in this.breakpoints ? this.breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) {\n slidesPerViewParams = breakpointOnlyParams.slidesPerView;\n }\n }\n if (slidesPerViewParams === 'auto') {\n this.loopedSlides = this.slides.length;\n return this.slides.length;\n }\n let loopedSlides = this.loopedSlides || slidesPerViewParams;\n if (!loopedSlides) {\n // ?\n return;\n }\n\n if (this.loopAdditionalSlides) {\n loopedSlides += this.loopAdditionalSlides;\n }\n if (loopedSlides > this.slides.length) {\n loopedSlides = this.slides.length;\n }\n this.loopedSlides = loopedSlides;\n return loopedSlides;\n }\n\n updateParameter(key: string, value: any) {\n if (!(this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n const _key = key.replace(/^_/, '');\n const isCurrentParamObj = isObject(this.swiperRef.params[_key]);\n\n if (Object.keys(this.swiperRef.modules).indexOf(_key) >= 0) {\n const defaultParams = this.swiperRef.modules[_key].params[_key];\n if (isCurrentParamObj) {\n extend(this.swiperRef.params[_key], defaultParams);\n } else {\n this.swiperRef.params[_key] = defaultParams;\n }\n }\n if (_key === 'enabled') {\n if (value === true) {\n this.swiperRef.enable();\n } else if (value === false) {\n this.swiperRef.disable();\n }\n return;\n }\n if (isCurrentParamObj && isObject(value)) {\n extend(this.swiperRef.params[_key], value);\n } else {\n this.swiperRef.params[_key] = value;\n }\n }\n /**\n * @deprecated will be removed in upcoming versions\n */\n setIndex(index: number, speed?: number, silent?: boolean): void {\n if (!this.isSwiperActive) {\n this.initialSlide = index;\n return;\n }\n if (index === this.swiperRef.activeIndex) {\n return;\n }\n this._ngZone.runOutsideAngular(() => {\n if (this.loop) {\n this.swiperRef.slideToLoop(index, speed, !silent);\n } else {\n this.swiperRef.slideTo(index, speed, !silent);\n }\n });\n }\n\n ngOnDestroy() {\n this._ngZone.runOutsideAngular(() => {\n this.swiperRef?.destroy(true, false);\n });\n }\n}\n","\n\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n\n\n\n \n
\n \n
\n \n
\n \n \n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SwiperComponent } from './swiper.component';\nimport { SwiperSlideDirective } from './swiper-slide.directive';\n@NgModule({\n declarations: [SwiperComponent, SwiperSlideDirective],\n exports: [SwiperComponent, SwiperSlideDirective],\n imports: [CommonModule],\n})\nexport class SwiperModule {}\n","/*\n * Public API Surface of angular\n */\nexport * from './swiper.module';\nexport * from './swiper.component';\nexport * from './swiper-slide.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './swiper-angular';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/resources/web/include/swiper/angular/package.json b/resources/web/include/swiper/angular/package.json deleted file mode 100644 index 04ad3ce5bf..0000000000 --- a/resources/web/include/swiper/angular/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "swiper_angular", - "version": "0.0.1", - "private": "true", - "peerDependencies": { - "@angular/common": "^12.2.0", - "@angular/core": "^12.2.0" - }, - "dependencies": { - "tslib": "^2.3.0" - }, - "main": "bundles/swiper_angular.umd.js", - "module": "fesm2015/swiper_angular.js", - "es2015": "fesm2015/swiper_angular.js", - "esm2015": "esm2015/swiper_angular.js", - "fesm2015": "fesm2015/swiper_angular.js", - "typings": "swiper_angular.d.ts", - "sideEffects": false -} \ No newline at end of file diff --git a/resources/web/include/swiper/angular/swiper-angular.d.ts b/resources/web/include/swiper/angular/swiper-angular.d.ts deleted file mode 100644 index 7075866ce6..0000000000 --- a/resources/web/include/swiper/angular/swiper-angular.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './angular/src/public-api'; diff --git a/resources/web/include/swiper/angular/swiper_angular.d.ts b/resources/web/include/swiper/angular/swiper_angular.d.ts deleted file mode 100644 index a94e51beb1..0000000000 --- a/resources/web/include/swiper/angular/swiper_angular.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Generated bundle index. Do not edit. - */ -/// -export * from './swiper-angular'; diff --git a/resources/web/include/swiper/core/breakpoints/getBreakpoint.js b/resources/web/include/swiper/core/breakpoints/getBreakpoint.js deleted file mode 100644 index 34311b3037..0000000000 --- a/resources/web/include/swiper/core/breakpoints/getBreakpoint.js +++ /dev/null @@ -1,40 +0,0 @@ -import { getWindow } from 'ssr-window'; -export default 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'; -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/breakpoints/index.js b/resources/web/include/swiper/core/breakpoints/index.js deleted file mode 100644 index 341d640f6e..0000000000 --- a/resources/web/include/swiper/core/breakpoints/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import setBreakpoint from './setBreakpoint.js'; -import getBreakpoint from './getBreakpoint.js'; -export default { - setBreakpoint, - getBreakpoint -}; \ No newline at end of file diff --git a/resources/web/include/swiper/core/breakpoints/setBreakpoint.js b/resources/web/include/swiper/core/breakpoints/setBreakpoint.js deleted file mode 100644 index aa6455bc78..0000000000 --- a/resources/web/include/swiper/core/breakpoints/setBreakpoint.js +++ /dev/null @@ -1,72 +0,0 @@ -import { extend } from '../../shared/utils.js'; - -const isGridEnabled = (swiper, params) => { - return swiper.grid && params.grid && params.grid.rows > 1; -}; - -export default function setBreakpoint() { - const swiper = this; - const { - activeIndex, - initialized, - loopedSlides = 0, - params, - $el - } = swiper; - const breakpoints = params.breakpoints; - if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters - - const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); - 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 wasEnabled = params.enabled; - - if (wasMultiRow && !isMultiRow) { - $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`); - swiper.emitContainerClasses(); - } else if (!wasMultiRow && isMultiRow) { - $el.addClass(`${params.containerModifierClass}grid`); - - if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { - $el.addClass(`${params.containerModifierClass}grid-column`); - } - - swiper.emitContainerClasses(); - } - - const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; - const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); - - if (directionChanged && initialized) { - swiper.changeDirection(); - } - - extend(swiper.params, breakpointParams); - const isEnabled = swiper.params.enabled; - 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 (needsReLoop && initialized) { - swiper.loopDestroy(); - swiper.loopCreate(); - swiper.updateSlides(); - swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false); - } - - swiper.emit('breakpoint', breakpointParams); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/check-overflow/index.js b/resources/web/include/swiper/core/check-overflow/index.js deleted file mode 100644 index d21f522d7f..0000000000 --- a/resources/web/include/swiper/core/check-overflow/index.js +++ /dev/null @@ -1,38 +0,0 @@ -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'); - } -} - -export default { - checkOverflow -}; \ No newline at end of file diff --git a/resources/web/include/swiper/core/classes/addClasses.js b/resources/web/include/swiper/core/classes/addClasses.js deleted file mode 100644 index 3475b3e808..0000000000 --- a/resources/web/include/swiper/core/classes/addClasses.js +++ /dev/null @@ -1,52 +0,0 @@ -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; -} - -export default function addClasses() { - const swiper = this; - const { - classNames, - params, - rtl, - $el, - device, - support - } = swiper; // prettier-ignore - - const suffixes = prepareClasses(['initialized', params.direction, { - 'pointer-events': !support.touch - }, { - '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 - }], params.containerModifierClass); - classNames.push(...suffixes); - $el.addClass([...classNames].join(' ')); - swiper.emitContainerClasses(); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/classes/index.js b/resources/web/include/swiper/core/classes/index.js deleted file mode 100644 index 27cd28cd78..0000000000 --- a/resources/web/include/swiper/core/classes/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import addClasses from './addClasses.js'; -import removeClasses from './removeClasses.js'; -export default { - addClasses, - removeClasses -}; \ No newline at end of file diff --git a/resources/web/include/swiper/core/classes/removeClasses.js b/resources/web/include/swiper/core/classes/removeClasses.js deleted file mode 100644 index bd168b120d..0000000000 --- a/resources/web/include/swiper/core/classes/removeClasses.js +++ /dev/null @@ -1,9 +0,0 @@ -export default function removeClasses() { - const swiper = this; - const { - $el, - classNames - } = swiper; - $el.removeClass(classNames.join(' ')); - swiper.emitContainerClasses(); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/core.js b/resources/web/include/swiper/core/core.js deleted file mode 100644 index 9f657693b7..0000000000 --- a/resources/web/include/swiper/core/core.js +++ /dev/null @@ -1,610 +0,0 @@ -/* eslint no-param-reassign: "off" */ -import { getDocument } from 'ssr-window'; -import $ from '../shared/dom.js'; -import { extend, now, deleteProps } from '../shared/utils.js'; -import { getSupport } from '../shared/get-support.js'; -import { getDevice } from '../shared/get-device.js'; -import { getBrowser } from '../shared/get-browser.js'; -import Resize from './modules/resize/resize.js'; -import Observer from './modules/observer/observer.js'; -import eventsEmitter from './events-emitter.js'; -import update from './update/index.js'; -import translate from './translate/index.js'; -import transition from './transition/index.js'; -import slide from './slide/index.js'; -import loop from './loop/index.js'; -import grabCursor from './grab-cursor/index.js'; -import events from './events/index.js'; -import breakpoints from './breakpoints/index.js'; -import classes from './classes/index.js'; -import images from './images/index.js'; -import checkOverflow from './check-overflow/index.js'; -import defaults from './defaults.js'; -import moduleExtendParams from './moduleExtendParams.js'; -const prototypes = { - eventsEmitter, - update, - translate, - transition, - slide, - loop, - grabCursor, - events, - breakpoints, - checkOverflow, - classes, - images -}; -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; - - if (params.el && $(params.el).length > 1) { - const swipers = []; - $(params.el).each(containerEl => { - const newParams = extend({}, params, { - el: containerEl - }); - swipers.push(new Swiper(newParams)); - }); - 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)) { - swiper.modules.push(...params.modules); - } - - const allModulesParams = {}; - swiper.modules.forEach(mod => { - mod({ - 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); - } // Save Dom lib - - - swiper.$ = $; // 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, - // Locks - allowSlideNext: swiper.params.allowSlideNext, - allowSlidePrev: swiper.params.allowSlidePrev, - // Touch Events - touchEvents: function touchEvents() { - const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel']; - const desktop = ['pointerdown', 'pointermove', 'pointerup']; - swiper.touchEventsTouch = { - start: touch[0], - move: touch[1], - end: touch[2], - cancel: touch[3] - }; - swiper.touchEventsDesktop = { - start: desktop[0], - move: desktop[1], - end: desktop[2] - }; - return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop; - }(), - 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: now(), - clickTimeout: undefined, - // Velocities - velocities: [], - allowMomentumBounce: undefined, - isTouchEvent: undefined, - startMoving: undefined - }, - // 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 - - - return swiper; - } - - 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; - 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.each(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 (params.centeredSlides) { - let slideSize = slides[activeIndex].swiperSlideSize; - let breakLoop; - - for (let i = activeIndex + 1; i < slides.length; i += 1) { - if (slides[i] && !breakLoop) { - slideSize += 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.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 (swiper.params.freeMode && swiper.params.freeMode.enabled) { - setTranslate(); - - if (swiper.params.autoHeight) { - swiper.updateAutoHeight(); - } - } else { - if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { - translated = swiper.slideTo(swiper.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.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`); - swiper.emitContainerClasses(); - swiper.params.direction = newDirection; - swiper.slides.each(slideEl => { - if (newDirection === 'vertical') { - slideEl.style.width = ''; - } else { - slideEl.style.height = ''; - } - }); - swiper.emit('changeDirection'); - if (needUpdate) swiper.update(); - return swiper; - } - - mount(el) { - const swiper = this; - if (swiper.mounted) return true; // Find el - - const $el = $(el || swiper.params.el); - el = $el[0]; - - if (!el) { - return false; - } - - el.swiper = swiper; - - 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 - - res.children = options => $el.children(options); - - return res; - } - - return $el.children(getWrapperSelector()); - }; // Find Wrapper - - - let $wrapperEl = getWrapper(); - - if ($wrapperEl.length === 0 && swiper.params.createElements) { - const document = getDocument(); - const wrapper = document.createElement('div'); - $wrapperEl = $(wrapper); - wrapper.className = swiper.params.wrapperClass; - $el.append(wrapper); - $el.children(`.${swiper.params.slideClass}`).each(slideEl => { - $wrapperEl.append(slideEl); - }); - } - - Object.assign(swiper, { - $el, - el, - $wrapperEl, - wrapperEl: $wrapperEl[0], - mounted: true, - // RTL - rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl', - rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), - wrongRTL: $wrapperEl.css('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(); // Create loop - - if (swiper.params.loop) { - swiper.loopCreate(); - } // 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(); - } - - if (swiper.params.preloadImages) { - swiper.preloadImages(); - } // Slide To Initial Slide - - - if (swiper.params.loop) { - swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true); - } else { - swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); - } // Attach events - - - swiper.attachEvents(); // Init Flag - - swiper.initialized = true; // 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(); - $el.removeAttr('style'); - $wrapperEl.removeAttr('style'); - - if (slides && slides.length) { - slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index'); - } - } - - swiper.emit('destroy'); // Detach emitter events - - Object.keys(swiper.eventsListeners).forEach(eventName => { - swiper.off(eventName); - }); - - if (deleteInstance !== false) { - swiper.$el[0].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 default Swiper; \ No newline at end of file diff --git a/resources/web/include/swiper/core/defaults.js b/resources/web/include/swiper/core/defaults.js deleted file mode 100644 index cc324a859f..0000000000 --- a/resources/web/include/swiper/core/defaults.js +++ /dev/null @@ -1,120 +0,0 @@ -export default { - init: true, - direction: 'horizontal', - touchEventsTarget: 'wrapper', - initialSlide: 0, - speed: 300, - cssMode: false, - updateOnWindowResize: true, - resizeObserver: true, - nested: false, - createElements: false, - 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, - // 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: 0, - 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, - // Images - preloadImages: true, - updateOnImagesReady: true, - // loop - loop: false, - loopAdditionalSlides: 0, - loopedSlides: null, - loopFillGroupWithBlank: false, - loopPreventsSlide: true, - // Swiping/no swiping - allowSlidePrev: true, - allowSlideNext: true, - swipeHandler: null, - // '.swipe-handler', - noSwiping: true, - noSwipingClass: 'swiper-no-swiping', - noSwipingSelector: null, - // Passive Listeners - passiveListeners: true, - // NS - containerModifierClass: 'swiper-', - // NEW - slideClass: 'swiper-slide', - slideBlankClass: 'swiper-slide-invisible-blank', - slideActiveClass: 'swiper-slide-active', - slideDuplicateActiveClass: 'swiper-slide-duplicate-active', - slideVisibleClass: 'swiper-slide-visible', - slideDuplicateClass: 'swiper-slide-duplicate', - slideNextClass: 'swiper-slide-next', - slideDuplicateNextClass: 'swiper-slide-duplicate-next', - slidePrevClass: 'swiper-slide-prev', - slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', - wrapperClass: 'swiper-wrapper', - // Callbacks - runCallbacksOnInit: true, - // Internals - _emitClasses: false -}; \ No newline at end of file diff --git a/resources/web/include/swiper/core/events-emitter.js b/resources/web/include/swiper/core/events-emitter.js deleted file mode 100644 index ea577a9ce5..0000000000 --- a/resources/web/include/swiper/core/events-emitter.js +++ /dev/null @@ -1,108 +0,0 @@ -/* eslint-disable no-underscore-dangle */ -export default { - on(events, handler, priority) { - const self = this; - 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 (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 (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.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) 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) 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; - } - -}; \ No newline at end of file diff --git a/resources/web/include/swiper/core/events/index.js b/resources/web/include/swiper/core/events/index.js deleted file mode 100644 index 8b5c83b52a..0000000000 --- a/resources/web/include/swiper/core/events/index.js +++ /dev/null @@ -1,97 +0,0 @@ -import { getDocument } from 'ssr-window'; -import onTouchStart from './onTouchStart.js'; -import onTouchMove from './onTouchMove.js'; -import onTouchEnd from './onTouchEnd.js'; -import onResize from './onResize.js'; -import onClick from './onClick.js'; -import onScroll from './onScroll.js'; -let dummyEventAttached = false; - -function dummyEventListener() {} - -const events = (swiper, method) => { - const document = getDocument(); - const { - params, - touchEvents, - el, - wrapperEl, - device, - support - } = swiper; - const capture = !!params.nested; - const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; - const swiperMethod = method; // Touch Events - - if (!support.touch) { - el[domMethod](touchEvents.start, swiper.onTouchStart, false); - document[domMethod](touchEvents.move, swiper.onTouchMove, capture); - document[domMethod](touchEvents.end, swiper.onTouchEnd, false); - } else { - const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? { - passive: true, - capture: false - } : false; - el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener); - el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? { - passive: false, - capture - } : capture); - el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener); - - if (touchEvents.cancel) { - el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener); - } - } // 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); - } -}; - -function attachEvents() { - const swiper = this; - const document = getDocument(); - const { - params, - support - } = swiper; - swiper.onTouchStart = onTouchStart.bind(swiper); - swiper.onTouchMove = onTouchMove.bind(swiper); - swiper.onTouchEnd = onTouchEnd.bind(swiper); - - if (params.cssMode) { - swiper.onScroll = onScroll.bind(swiper); - } - - swiper.onClick = onClick.bind(swiper); - - if (support.touch && !dummyEventAttached) { - document.addEventListener('touchstart', dummyEventListener); - dummyEventAttached = true; - } - - events(swiper, 'on'); -} - -function detachEvents() { - const swiper = this; - events(swiper, 'off'); -} - -export default { - attachEvents, - detachEvents -}; \ No newline at end of file diff --git a/resources/web/include/swiper/core/events/onClick.js b/resources/web/include/swiper/core/events/onClick.js deleted file mode 100644 index 71f8da074f..0000000000 --- a/resources/web/include/swiper/core/events/onClick.js +++ /dev/null @@ -1,13 +0,0 @@ -export default 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(); - } - } -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/events/onResize.js b/resources/web/include/swiper/core/events/onResize.js deleted file mode 100644 index 85ac87164e..0000000000 --- a/resources/web/include/swiper/core/events/onResize.js +++ /dev/null @@ -1,43 +0,0 @@ -export default 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; // Disable locks on resize - - swiper.allowSlideNext = true; - swiper.allowSlidePrev = true; - swiper.updateSize(); - swiper.updateSlides(); - swiper.updateSlidesClasses(); - - if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) { - swiper.slideTo(swiper.slides.length - 1, 0, false, true); - } else { - swiper.slideTo(swiper.activeIndex, 0, false, true); - } - - if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { - swiper.autoplay.run(); - } // Return locks after resize - - - swiper.allowSlidePrev = allowSlidePrev; - swiper.allowSlideNext = allowSlideNext; - - if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { - swiper.checkOverflow(); - } -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/events/onScroll.js b/resources/web/include/swiper/core/events/onScroll.js deleted file mode 100644 index 738aea8603..0000000000 --- a/resources/web/include/swiper/core/events/onScroll.js +++ /dev/null @@ -1,35 +0,0 @@ -export default 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); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/events/onTouchEnd.js b/resources/web/include/swiper/core/events/onTouchEnd.js deleted file mode 100644 index 4ed79f012b..0000000000 --- a/resources/web/include/swiper/core/events/onTouchEnd.js +++ /dev/null @@ -1,143 +0,0 @@ -import { now, nextTick } from '../../shared/utils.js'; -export default function onTouchEnd(event) { - const swiper = this; - const data = swiper.touchEventsData; - const { - params, - touches, - rtlTranslate: rtl, - slidesGrid, - enabled - } = swiper; - if (!enabled) return; - let e = event; - if (e.originalEvent) e = e.originalEvent; - - 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) { - swiper.updateClickedSlide(e); - 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.currentTranslate === data.startTranslate) { - 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 (swiper.params.freeMode && params.freeMode.enabled) { - swiper.freeMode.onTouchEnd({ - currentPos - }); - return; - } // Find current slide - - - 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 (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { - stopIndex = i; - groupSize = slidesGrid[i + increment] - slidesGrid[i]; - } - } else if (currentPos >= slidesGrid[i]) { - stopIndex = i; - groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; - } - } // 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(stopIndex + increment);else swiper.slideTo(stopIndex); - } - - if (swiper.swipeDirection === 'prev') { - if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);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(stopIndex + increment); - } - - if (swiper.swipeDirection === 'prev') { - swiper.slideTo(stopIndex); - } - } else if (e.target === swiper.navigation.nextEl) { - swiper.slideTo(stopIndex + increment); - } else { - swiper.slideTo(stopIndex); - } - } -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/events/onTouchMove.js b/resources/web/include/swiper/core/events/onTouchMove.js deleted file mode 100644 index 015107dd6c..0000000000 --- a/resources/web/include/swiper/core/events/onTouchMove.js +++ /dev/null @@ -1,222 +0,0 @@ -import { getDocument } from 'ssr-window'; -import $ from '../../shared/dom.js'; -import { now } from '../../shared/utils.js'; -export default function onTouchMove(event) { - const document = getDocument(); - const swiper = this; - const data = swiper.touchEventsData; - const { - params, - touches, - rtlTranslate: rtl, - enabled - } = swiper; - if (!enabled) return; - let e = event; - if (e.originalEvent) e = e.originalEvent; - - if (!data.isTouched) { - if (data.startMoving && data.isScrolling) { - swiper.emit('touchMoveOpposite', e); - } - - return; - } - - if (data.isTouchEvent && e.type !== 'touchmove') return; - const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]); - const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX; - const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY; - - if (e.preventedByNestedSwiper) { - touches.startX = pageX; - touches.startY = pageY; - return; - } - - if (!swiper.allowTouchMove) { - // isMoved = true; - swiper.allowClick = false; - - if (data.isTouched) { - Object.assign(touches, { - startX: pageX, - startY: pageY, - currentX: pageX, - currentY: pageY - }); - data.touchStartTime = now(); - } - - return; - } - - if (data.isTouchEvent && 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 (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { - return; - } - } - - if (data.isTouchEvent && document.activeElement) { - if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) { - data.isMoved = true; - swiper.allowClick = false; - return; - } - } - - if (data.allowTouchCallbacks) { - swiper.emit('touchMove', e); - } - - if (e.targetTouches && e.targetTouches.length > 1) return; - 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) { - 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(); - } - - if (!data.isMoved) { - if (params.loop && !params.cssMode) { - swiper.loopFix(); - } - - data.startTranslate = swiper.getTranslate(); - swiper.setTransition(0); - - if (swiper.animating) { - swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); - } - - data.allowMomentumBounce = false; // Grab Cursor - - if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { - swiper.setGrabCursor(true); - } - - swiper.emit('sliderFirstMove', e); - } - - swiper.emit('sliderMove', e); - data.isMoved = true; - let diff = swiper.isHorizontal() ? diffX : diffY; - touches.diff = diff; - diff *= params.touchRatio; - if (rtl) diff = -diff; - swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; - data.currentTranslate = diff + data.startTranslate; - let disableParentSwiper = true; - let resistanceRatio = params.resistanceRatio; - - if (params.touchReleaseOnEdges) { - resistanceRatio = 0; - } - - if (diff > 0 && data.currentTranslate > swiper.minTranslate()) { - disableParentSwiper = false; - if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; - } else if (diff < 0 && 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 (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) { - swiper.freeMode.onTouchMove(); - } // Update progress - - - swiper.updateProgress(data.currentTranslate); // Update translate - - swiper.setTranslate(data.currentTranslate); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/events/onTouchStart.js b/resources/web/include/swiper/core/events/onTouchStart.js deleted file mode 100644 index cc5a257a24..0000000000 --- a/resources/web/include/swiper/core/events/onTouchStart.js +++ /dev/null @@ -1,114 +0,0 @@ -import { getWindow, getDocument } from 'ssr-window'; -import $ from '../../shared/dom.js'; -import { now } from '../../shared/utils.js'; // 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); - return found || __closestFrom(el.getRootNode().host); - } - - return __closestFrom(base); -} - -export default function onTouchStart(event) { - const swiper = this; - const document = getDocument(); - const window = getWindow(); - const data = swiper.touchEventsData; - const { - params, - touches, - enabled - } = swiper; - if (!enabled) return; - - if (swiper.animating && params.preventInteractionOnTransition) { - return; - } - - if (!swiper.animating && params.cssMode && params.loop) { - swiper.loopFix(); - } - - let e = event; - if (e.originalEvent) e = e.originalEvent; - let $targetEl = $(e.target); - - if (params.touchEventsTarget === 'wrapper') { - if (!$targetEl.closest(swiper.wrapperEl).length) return; - } - - data.isTouchEvent = e.type === 'touchstart'; - if (!data.isTouchEvent && 'which' in e && e.which === 3) return; - if (!data.isTouchEvent && '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 !== ''; - - if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) { - $targetEl = $(event.path[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, e.target) : $targetEl.closest(noSwipingSelector)[0])) { - swiper.allowClick = true; - return; - } - - if (params.swipeHandler) { - if (!$targetEl.closest(params.swipeHandler)[0]) return; - } - - touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; - touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : 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 - - const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; - const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; - - if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { - if (edgeSwipeDetection === 'prevent') { - event.preventDefault(); - } else { - 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; - - if (e.type !== 'touchstart') { - let preventDefault = true; - if ($targetEl.is(data.focusableElements)) preventDefault = false; - - if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) { - document.activeElement.blur(); - } - - const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; - - if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) { - e.preventDefault(); - } - } - - swiper.emit('touchStart', e); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/grab-cursor/index.js b/resources/web/include/swiper/core/grab-cursor/index.js deleted file mode 100644 index ac4bdcf6ff..0000000000 --- a/resources/web/include/swiper/core/grab-cursor/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import setGrabCursor from './setGrabCursor.js'; -import unsetGrabCursor from './unsetGrabCursor.js'; -export default { - setGrabCursor, - unsetGrabCursor -}; \ No newline at end of file diff --git a/resources/web/include/swiper/core/grab-cursor/setGrabCursor.js b/resources/web/include/swiper/core/grab-cursor/setGrabCursor.js deleted file mode 100644 index 96e6227214..0000000000 --- a/resources/web/include/swiper/core/grab-cursor/setGrabCursor.js +++ /dev/null @@ -1,9 +0,0 @@ -export default function setGrabCursor(moving) { - const swiper = this; - if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; - const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; - el.style.cursor = 'move'; - el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab'; - el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab'; - el.style.cursor = moving ? 'grabbing' : 'grab'; -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/grab-cursor/unsetGrabCursor.js b/resources/web/include/swiper/core/grab-cursor/unsetGrabCursor.js deleted file mode 100644 index 923e23d446..0000000000 --- a/resources/web/include/swiper/core/grab-cursor/unsetGrabCursor.js +++ /dev/null @@ -1,9 +0,0 @@ -export default function unsetGrabCursor() { - const swiper = this; - - if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { - return; - } - - swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/images/index.js b/resources/web/include/swiper/core/images/index.js deleted file mode 100644 index ee01026096..0000000000 --- a/resources/web/include/swiper/core/images/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import loadImage from './loadImage.js'; -import preloadImages from './preloadImages.js'; -export default { - loadImage, - preloadImages -}; \ No newline at end of file diff --git a/resources/web/include/swiper/core/images/loadImage.js b/resources/web/include/swiper/core/images/loadImage.js deleted file mode 100644 index 0811b4c9a9..0000000000 --- a/resources/web/include/swiper/core/images/loadImage.js +++ /dev/null @@ -1,37 +0,0 @@ -import { getWindow } from 'ssr-window'; -import $ from '../../shared/dom.js'; -export default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) { - const window = getWindow(); - let image; - - function onReady() { - if (callback) callback(); - } - - const isPicture = $(imageEl).parent('picture')[0]; - - if (!isPicture && (!imageEl.complete || !checkForComplete)) { - if (src) { - image = new window.Image(); - image.onload = onReady; - image.onerror = onReady; - - if (sizes) { - image.sizes = sizes; - } - - if (srcset) { - image.srcset = srcset; - } - - if (src) { - image.src = src; - } - } else { - onReady(); - } - } else { - // image already loaded... - onReady(); - } -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/images/preloadImages.js b/resources/web/include/swiper/core/images/preloadImages.js deleted file mode 100644 index 464d9a776d..0000000000 --- a/resources/web/include/swiper/core/images/preloadImages.js +++ /dev/null @@ -1,19 +0,0 @@ -export default function preloadImages() { - const swiper = this; - swiper.imagesToLoad = swiper.$el.find('img'); - - function onReady() { - if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return; - if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1; - - if (swiper.imagesLoaded === swiper.imagesToLoad.length) { - if (swiper.params.updateOnImagesReady) swiper.update(); - swiper.emit('imagesReady'); - } - } - - for (let i = 0; i < swiper.imagesToLoad.length; i += 1) { - const imageEl = swiper.imagesToLoad[i]; - swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady); - } -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/loop/index.js b/resources/web/include/swiper/core/loop/index.js deleted file mode 100644 index 428da41404..0000000000 --- a/resources/web/include/swiper/core/loop/index.js +++ /dev/null @@ -1,8 +0,0 @@ -import loopCreate from './loopCreate.js'; -import loopFix from './loopFix.js'; -import loopDestroy from './loopDestroy.js'; -export default { - loopCreate, - loopFix, - loopDestroy -}; \ No newline at end of file diff --git a/resources/web/include/swiper/core/loop/loopCreate.js b/resources/web/include/swiper/core/loop/loopCreate.js deleted file mode 100644 index 69edf0aa2a..0000000000 --- a/resources/web/include/swiper/core/loop/loopCreate.js +++ /dev/null @@ -1,59 +0,0 @@ -import { getDocument } from 'ssr-window'; -import $ from '../../shared/dom.js'; -export default function loopCreate() { - const swiper = this; - const document = getDocument(); - const { - params, - $wrapperEl - } = swiper; // Remove duplicated slides - - const $selector = $($wrapperEl.children()[0].parentNode); - $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove(); - let slides = $selector.children(`.${params.slideClass}`); - - if (params.loopFillGroupWithBlank) { - const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup; - - if (blankSlidesNum !== params.slidesPerGroup) { - for (let i = 0; i < blankSlidesNum; i += 1) { - const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`); - $selector.append(blankNode); - } - - slides = $selector.children(`.${params.slideClass}`); - } - } - - if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length; - swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10)); - swiper.loopedSlides += params.loopAdditionalSlides; - - if (swiper.loopedSlides > slides.length) { - swiper.loopedSlides = slides.length; - } - - const prependSlides = []; - const appendSlides = []; - slides.each((el, index) => { - const slide = $(el); - - if (index < swiper.loopedSlides) { - appendSlides.push(el); - } - - if (index < slides.length && index >= slides.length - swiper.loopedSlides) { - prependSlides.push(el); - } - - slide.attr('data-swiper-slide-index', index); - }); - - for (let i = 0; i < appendSlides.length; i += 1) { - $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); - } - - for (let i = prependSlides.length - 1; i >= 0; i -= 1) { - $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); - } -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/loop/loopDestroy.js b/resources/web/include/swiper/core/loop/loopDestroy.js deleted file mode 100644 index 4c77968cec..0000000000 --- a/resources/web/include/swiper/core/loop/loopDestroy.js +++ /dev/null @@ -1,10 +0,0 @@ -export default function loopDestroy() { - const swiper = this; - const { - $wrapperEl, - params, - slides - } = swiper; - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove(); - slides.removeAttr('data-swiper-slide-index'); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/loop/loopFix.js b/resources/web/include/swiper/core/loop/loopFix.js deleted file mode 100644 index 16f332e633..0000000000 --- a/resources/web/include/swiper/core/loop/loopFix.js +++ /dev/null @@ -1,41 +0,0 @@ -export default function loopFix() { - const swiper = this; - swiper.emit('beforeLoopFix'); - const { - activeIndex, - slides, - loopedSlides, - allowSlidePrev, - allowSlideNext, - snapGrid, - rtlTranslate: rtl - } = swiper; - let newIndex; - swiper.allowSlidePrev = true; - swiper.allowSlideNext = true; - const snapTranslate = -snapGrid[activeIndex]; - const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding - - if (activeIndex < loopedSlides) { - newIndex = slides.length - loopedSlides * 3 + activeIndex; - newIndex += loopedSlides; - const slideChanged = swiper.slideTo(newIndex, 0, false, true); - - if (slideChanged && diff !== 0) { - swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); - } - } else if (activeIndex >= slides.length - loopedSlides) { - // Fix For Positive Oversliding - newIndex = -slides.length + activeIndex + loopedSlides; - newIndex += loopedSlides; - const slideChanged = swiper.slideTo(newIndex, 0, false, true); - - if (slideChanged && diff !== 0) { - swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); - } - } - - swiper.allowSlidePrev = allowSlidePrev; - swiper.allowSlideNext = allowSlideNext; - swiper.emit('loopFix'); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/moduleExtendParams.js b/resources/web/include/swiper/core/moduleExtendParams.js deleted file mode 100644 index 82cb57abcc..0000000000 --- a/resources/web/include/swiper/core/moduleExtendParams.js +++ /dev/null @@ -1,38 +0,0 @@ -import { extend } from '../shared/utils.js'; -export default 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 (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) { - params[moduleParamName] = { - auto: true - }; - } - - if (!(moduleParamName in params && 'enabled' in moduleParams)) { - extend(allModulesParams, obj); - return; - } - - if (params[moduleParamName] === true) { - params[moduleParamName] = { - enabled: true - }; - } - - if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { - params[moduleParamName].enabled = true; - } - - if (!params[moduleParamName]) params[moduleParamName] = { - enabled: false - }; - extend(allModulesParams, obj); - }; -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/modules/observer/observer.js b/resources/web/include/swiper/core/modules/observer/observer.js deleted file mode 100644 index 66a6374bdb..0000000000 --- a/resources/web/include/swiper/core/modules/observer/observer.js +++ /dev/null @@ -1,75 +0,0 @@ -import { getWindow } from 'ssr-window'; -export default 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 (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: 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 = swiper.$el.parents(); - - for (let i = 0; i < containerParents.length; i += 1) { - attach(containerParents[i]); - } - } // Observe container - - - attach(swiper.$el[0], { - childList: swiper.params.observeSlideChildren - }); // Observe wrapper - - attach(swiper.$wrapperEl[0], { - 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); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/modules/resize/resize.js b/resources/web/include/swiper/core/modules/resize/resize.js deleted file mode 100644 index 7538804e26..0000000000 --- a/resources/web/include/swiper/core/modules/resize/resize.js +++ /dev/null @@ -1,68 +0,0 @@ -import { getWindow } from 'ssr-window'; -export default function Resize({ - swiper, - on, - emit -}) { - const window = getWindow(); - let observer = 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 => { - 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 (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); - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/slide/index.js b/resources/web/include/swiper/core/slide/index.js deleted file mode 100644 index 105c438ee9..0000000000 --- a/resources/web/include/swiper/core/slide/index.js +++ /dev/null @@ -1,16 +0,0 @@ -import slideTo from './slideTo.js'; -import slideToLoop from './slideToLoop.js'; -import slideNext from './slideNext.js'; -import slidePrev from './slidePrev.js'; -import slideReset from './slideReset.js'; -import slideToClosest from './slideToClosest.js'; -import slideToClickedSlide from './slideToClickedSlide.js'; -export default { - slideTo, - slideToLoop, - slideNext, - slidePrev, - slideReset, - slideToClosest, - slideToClickedSlide -}; \ No newline at end of file diff --git a/resources/web/include/swiper/core/slide/slideNext.js b/resources/web/include/swiper/core/slide/slideNext.js deleted file mode 100644 index b96bf6a025..0000000000 --- a/resources/web/include/swiper/core/slide/slideNext.js +++ /dev/null @@ -1,26 +0,0 @@ -/* eslint no-unused-vars: "off" */ -export default function slideNext(speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - const { - animating, - enabled, - params - } = swiper; - if (!enabled) return swiper; - 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; - - if (params.loop) { - if (animating && params.loopPreventsSlide) return false; - swiper.loopFix(); // eslint-disable-next-line - - swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; - } - - return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/slide/slidePrev.js b/resources/web/include/swiper/core/slide/slidePrev.js deleted file mode 100644 index 17f32256f5..0000000000 --- a/resources/web/include/swiper/core/slide/slidePrev.js +++ /dev/null @@ -1,59 +0,0 @@ -/* eslint no-unused-vars: "off" */ -export default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - const { - params, - animating, - snapGrid, - slidesGrid, - rtlTranslate, - enabled - } = swiper; - if (!enabled) return swiper; - - if (params.loop) { - if (animating && params.loopPreventsSlide) return false; - swiper.loopFix(); // eslint-disable-next-line - - swiper._clientLeft = swiper.$wrapperEl[0].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)); - let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; - - if (typeof prevSnap === 'undefined' && params.cssMode) { - let prevSnapIndex; - snapGrid.forEach((snap, snapIndex) => { - if (normalizedTranslate >= snap) { - // prevSnap = snap; - prevSnapIndex = snapIndex; - } - }); - - if (typeof prevSnapIndex !== 'undefined') { - prevSnap = 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); - } - } - - return swiper.slideTo(prevIndex, speed, runCallbacks, internal); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/slide/slideReset.js b/resources/web/include/swiper/core/slide/slideReset.js deleted file mode 100644 index d7c430a77a..0000000000 --- a/resources/web/include/swiper/core/slide/slideReset.js +++ /dev/null @@ -1,5 +0,0 @@ -/* eslint no-unused-vars: "off" */ -export default function slideReset(speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/slide/slideTo.js b/resources/web/include/swiper/core/slide/slideTo.js deleted file mode 100644 index 73a41cf0d0..0000000000 --- a/resources/web/include/swiper/core/slide/slideTo.js +++ /dev/null @@ -1,189 +0,0 @@ -import { animateCSSModeScroll } from '../../shared/utils.js'; -export default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) { - if (typeof index !== 'number' && typeof index !== 'string') { - throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`); - } - - if (typeof index === 'string') { - /** - * The `index` argument converted from `string` to `number`. - * @type {number} - */ - const indexAsNumber = parseInt(index, 10); - /** - * Determines whether the `index` argument is a valid `number` - * after being converted from the `string` type. - * @type {boolean} - */ - - const isValidNumber = isFinite(indexAsNumber); - - if (!isValidNumber) { - throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`); - } // Knowing that the converted `index` is a valid number, - // we can update the original argument's value. - - - index = indexAsNumber; - } - - const swiper = this; - let slideIndex = index; - if (slideIndex < 0) slideIndex = 0; - const { - params, - snapGrid, - slidesGrid, - previousIndex, - activeIndex, - rtlTranslate: rtl, - wrapperEl, - enabled - } = swiper; - - if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) { - return false; - } - - 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; - - if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { - swiper.emit('beforeSlideChangeStart'); - } - - const translate = -snapGrid[snapIndex]; // Update progress - - swiper.updateProgress(translate); // 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 && translate < swiper.translate && translate < swiper.minTranslate()) { - return false; - } - - if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { - if ((activeIndex || 0) !== slideIndex) return false; - } - } - - let direction; - if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index - - if (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) { - const isVirtual = swiper.virtual && swiper.params.virtual.enabled; - - if (isVirtual) { - swiper.wrapperEl.style.scrollSnapType = 'none'; - swiper._immediateVirtual = true; - } - - wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; - - if (isVirtual) { - requestAnimationFrame(() => { - swiper.wrapperEl.style.scrollSnapType = ''; - swiper._swiperImmediateVirtual = 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; - } - - if (speed === 0) { - swiper.setTransition(0); - swiper.setTranslate(translate); - swiper.updateActiveIndex(slideIndex); - swiper.updateSlidesClasses(); - swiper.emit('beforeTransitionStart', speed, internal); - swiper.transitionStart(runCallbacks, direction); - swiper.transitionEnd(runCallbacks, direction); - } else { - swiper.setTransition(speed); - swiper.setTranslate(translate); - swiper.updateActiveIndex(slideIndex); - swiper.updateSlidesClasses(); - swiper.emit('beforeTransitionStart', speed, internal); - swiper.transitionStart(runCallbacks, direction); - - 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[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); - swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); - swiper.onSlideToWrapperTransitionEnd = null; - delete swiper.onSlideToWrapperTransitionEnd; - swiper.transitionEnd(runCallbacks, direction); - }; - } - - swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); - swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); - } - } - - return true; -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/slide/slideToClickedSlide.js b/resources/web/include/swiper/core/slide/slideToClickedSlide.js deleted file mode 100644 index cda7da88ca..0000000000 --- a/resources/web/include/swiper/core/slide/slideToClickedSlide.js +++ /dev/null @@ -1,39 +0,0 @@ -import $ from '../../shared/dom.js'; -import { nextTick } from '../../shared/utils.js'; -export default function slideToClickedSlide() { - const swiper = this; - const { - params, - $wrapperEl - } = swiper; - const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; - let slideToIndex = swiper.clickedIndex; - let realIndex; - - if (params.loop) { - if (swiper.animating) return; - realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10); - - if (params.centeredSlides) { - if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { - swiper.loopFix(); - slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index(); - nextTick(() => { - swiper.slideTo(slideToIndex); - }); - } else { - swiper.slideTo(slideToIndex); - } - } else if (slideToIndex > swiper.slides.length - slidesPerView) { - swiper.loopFix(); - slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index(); - nextTick(() => { - swiper.slideTo(slideToIndex); - }); - } else { - swiper.slideTo(slideToIndex); - } - } else { - swiper.slideTo(slideToIndex); - } -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/slide/slideToClosest.js b/resources/web/include/swiper/core/slide/slideToClosest.js deleted file mode 100644 index bebfd224fd..0000000000 --- a/resources/web/include/swiper/core/slide/slideToClosest.js +++ /dev/null @@ -1,32 +0,0 @@ -/* eslint no-unused-vars: "off" */ -export default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) { - const swiper = this; - 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); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/slide/slideToLoop.js b/resources/web/include/swiper/core/slide/slideToLoop.js deleted file mode 100644 index 916522c431..0000000000 --- a/resources/web/include/swiper/core/slide/slideToLoop.js +++ /dev/null @@ -1,10 +0,0 @@ -export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - let newIndex = index; - - if (swiper.params.loop) { - newIndex += swiper.loopedSlides; - } - - return swiper.slideTo(newIndex, speed, runCallbacks, internal); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/transition/index.js b/resources/web/include/swiper/core/transition/index.js deleted file mode 100644 index 212e4ed538..0000000000 --- a/resources/web/include/swiper/core/transition/index.js +++ /dev/null @@ -1,8 +0,0 @@ -import setTransition from './setTransition.js'; -import transitionStart from './transitionStart.js'; -import transitionEnd from './transitionEnd.js'; -export default { - setTransition, - transitionStart, - transitionEnd -}; \ No newline at end of file diff --git a/resources/web/include/swiper/core/transition/setTransition.js b/resources/web/include/swiper/core/transition/setTransition.js deleted file mode 100644 index df4afebf2e..0000000000 --- a/resources/web/include/swiper/core/transition/setTransition.js +++ /dev/null @@ -1,9 +0,0 @@ -export default function setTransition(duration, byController) { - const swiper = this; - - if (!swiper.params.cssMode) { - swiper.$wrapperEl.transition(duration); - } - - swiper.emit('setTransition', duration, byController); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/transition/transitionEmit.js b/resources/web/include/swiper/core/transition/transitionEmit.js deleted file mode 100644 index 089b8fe79b..0000000000 --- a/resources/web/include/swiper/core/transition/transitionEmit.js +++ /dev/null @@ -1,33 +0,0 @@ -export default 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 && activeIndex !== previousIndex) { - if (dir === 'reset') { - swiper.emit(`slideResetTransition${step}`); - return; - } - - swiper.emit(`slideChangeTransition${step}`); - - if (dir === 'next') { - swiper.emit(`slideNextTransition${step}`); - } else { - swiper.emit(`slidePrevTransition${step}`); - } - } -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/transition/transitionEnd.js b/resources/web/include/swiper/core/transition/transitionEnd.js deleted file mode 100644 index b34fbc5946..0000000000 --- a/resources/web/include/swiper/core/transition/transitionEnd.js +++ /dev/null @@ -1,16 +0,0 @@ -import transitionEmit from './transitionEmit.js'; -export default 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' - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/transition/transitionStart.js b/resources/web/include/swiper/core/transition/transitionStart.js deleted file mode 100644 index aa311125b3..0000000000 --- a/resources/web/include/swiper/core/transition/transitionStart.js +++ /dev/null @@ -1,19 +0,0 @@ -import transitionEmit from './transitionEmit.js'; -export default 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' - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/translate/getTranslate.js b/resources/web/include/swiper/core/translate/getTranslate.js deleted file mode 100644 index 4ade9fa29f..0000000000 --- a/resources/web/include/swiper/core/translate/getTranslate.js +++ /dev/null @@ -1,22 +0,0 @@ -import { getTranslate } from '../../shared/utils.js'; -export default 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[0], axis); - if (rtl) currentTranslate = -currentTranslate; - return currentTranslate || 0; -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/translate/index.js b/resources/web/include/swiper/core/translate/index.js deleted file mode 100644 index 5e962ecab2..0000000000 --- a/resources/web/include/swiper/core/translate/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import getTranslate from './getTranslate.js'; -import setTranslate from './setTranslate.js'; -import minTranslate from './minTranslate.js'; -import maxTranslate from './maxTranslate.js'; -import translateTo from './translateTo.js'; -export default { - getTranslate, - setTranslate, - minTranslate, - maxTranslate, - translateTo -}; \ No newline at end of file diff --git a/resources/web/include/swiper/core/translate/maxTranslate.js b/resources/web/include/swiper/core/translate/maxTranslate.js deleted file mode 100644 index 4f2bbb9d72..0000000000 --- a/resources/web/include/swiper/core/translate/maxTranslate.js +++ /dev/null @@ -1,3 +0,0 @@ -export default function maxTranslate() { - return -this.snapGrid[this.snapGrid.length - 1]; -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/translate/minTranslate.js b/resources/web/include/swiper/core/translate/minTranslate.js deleted file mode 100644 index db06141760..0000000000 --- a/resources/web/include/swiper/core/translate/minTranslate.js +++ /dev/null @@ -1,3 +0,0 @@ -export default function minTranslate() { - return -this.snapGrid[0]; -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/translate/setTranslate.js b/resources/web/include/swiper/core/translate/setTranslate.js deleted file mode 100644 index c4c1fb52f2..0000000000 --- a/resources/web/include/swiper/core/translate/setTranslate.js +++ /dev/null @@ -1,48 +0,0 @@ -export default function setTranslate(translate, byController) { - const swiper = this; - const { - rtlTranslate: rtl, - params, - $wrapperEl, - 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); - } - - if (params.cssMode) { - wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; - } else if (!params.virtualTranslate) { - $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`); - } - - swiper.previousTranslate = swiper.translate; - swiper.translate = swiper.isHorizontal() ? x : y; // 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); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/translate/translateTo.js b/resources/web/include/swiper/core/translate/translateTo.js deleted file mode 100644 index f7fae3048c..0000000000 --- a/resources/web/include/swiper/core/translate/translateTo.js +++ /dev/null @@ -1,85 +0,0 @@ -import { animateCSSModeScroll } from '../../shared/utils.js'; -export default 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[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); - swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); - swiper.onTranslateToWrapperTransitionEnd = null; - delete swiper.onTranslateToWrapperTransitionEnd; - - if (runCallbacks) { - swiper.emit('transitionEnd'); - } - }; - } - - swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); - swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); - } - } - - return true; -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/update/index.js b/resources/web/include/swiper/core/update/index.js deleted file mode 100644 index 3191727ada..0000000000 --- a/resources/web/include/swiper/core/update/index.js +++ /dev/null @@ -1,20 +0,0 @@ -import updateSize from './updateSize.js'; -import updateSlides from './updateSlides.js'; -import updateAutoHeight from './updateAutoHeight.js'; -import updateSlidesOffset from './updateSlidesOffset.js'; -import updateSlidesProgress from './updateSlidesProgress.js'; -import updateProgress from './updateProgress.js'; -import updateSlidesClasses from './updateSlidesClasses.js'; -import updateActiveIndex from './updateActiveIndex.js'; -import updateClickedSlide from './updateClickedSlide.js'; -export default { - updateSize, - updateSlides, - updateAutoHeight, - updateSlidesOffset, - updateSlidesProgress, - updateProgress, - updateSlidesClasses, - updateActiveIndex, - updateClickedSlide -}; \ No newline at end of file diff --git a/resources/web/include/swiper/core/update/updateActiveIndex.js b/resources/web/include/swiper/core/update/updateActiveIndex.js deleted file mode 100644 index 3f5b7f51c5..0000000000 --- a/resources/web/include/swiper/core/update/updateActiveIndex.js +++ /dev/null @@ -1,70 +0,0 @@ -export default function updateActiveIndex(newActiveIndex) { - const swiper = this; - const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; - const { - slidesGrid, - snapGrid, - params, - activeIndex: previousIndex, - realIndex: previousRealIndex, - snapIndex: previousSnapIndex - } = swiper; - let activeIndex = newActiveIndex; - let snapIndex; - - if (typeof activeIndex === 'undefined') { - 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; - } - } - - 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) { - if (snapIndex !== previousSnapIndex) { - swiper.snapIndex = snapIndex; - swiper.emit('snapIndexChange'); - } - - return; - } // Get real index - - - const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10); - Object.assign(swiper, { - snapIndex, - realIndex, - previousIndex, - activeIndex - }); - swiper.emit('activeIndexChange'); - swiper.emit('snapIndexChange'); - - if (previousRealIndex !== realIndex) { - swiper.emit('realIndexChange'); - } - - if (swiper.initialized || swiper.params.runCallbacksOnInit) { - swiper.emit('slideChange'); - } -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/update/updateAutoHeight.js b/resources/web/include/swiper/core/update/updateAutoHeight.js deleted file mode 100644 index eaa53c9f10..0000000000 --- a/resources/web/include/swiper/core/update/updateAutoHeight.js +++ /dev/null @@ -1,49 +0,0 @@ -export default 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.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0]; - } - - return swiper.slides.eq(index)[0]; - }; // Find slides currently in view - - - if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { - if (swiper.params.centeredSlides) { - swiper.visibleSlides.each(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) swiper.$wrapperEl.css('height', `${newHeight}px`); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/update/updateClickedSlide.js b/resources/web/include/swiper/core/update/updateClickedSlide.js deleted file mode 100644 index 6e910bd300..0000000000 --- a/resources/web/include/swiper/core/update/updateClickedSlide.js +++ /dev/null @@ -1,36 +0,0 @@ -import $ from '../../shared/dom.js'; -export default function updateClickedSlide(e) { - const swiper = this; - const params = swiper.params; - const slide = $(e.target).closest(`.${params.slideClass}`)[0]; - 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).attr('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(); - } -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/update/updateProgress.js b/resources/web/include/swiper/core/update/updateProgress.js deleted file mode 100644 index 4c06eac37b..0000000000 --- a/resources/web/include/swiper/core/update/updateProgress.js +++ /dev/null @@ -1,50 +0,0 @@ -export default 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 - } = swiper; - const wasBeginning = isBeginning; - const wasEnd = isEnd; - - if (translatesDiff === 0) { - progress = 0; - isBeginning = true; - isEnd = true; - } else { - progress = (translate - swiper.minTranslate()) / translatesDiff; - isBeginning = progress <= 0; - isEnd = progress >= 1; - } - - Object.assign(swiper, { - progress, - 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); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/update/updateSize.js b/resources/web/include/swiper/core/update/updateSize.js deleted file mode 100644 index 2e24aa8b98..0000000000 --- a/resources/web/include/swiper/core/update/updateSize.js +++ /dev/null @@ -1,33 +0,0 @@ -export default 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[0].clientWidth; - } - - if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { - height = swiper.params.height; - } else { - height = $el[0].clientHeight; - } - - if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { - return; - } // Subtract paddings - - - width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10); - height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('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 - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/update/updateSlides.js b/resources/web/include/swiper/core/update/updateSlides.js deleted file mode 100644 index 1d9bb70dde..0000000000 --- a/resources/web/include/swiper/core/update/updateSlides.js +++ /dev/null @@ -1,309 +0,0 @@ -import { setCSSProperty } from '../../shared/utils.js'; -export default function updateSlides() { - const swiper = this; - - function getDirectionLabel(property) { - if (swiper.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]; - } - - function getDirectionPropertyValue(node, label) { - return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0); - } - - const params = swiper.params; - const { - $wrapperEl, - size: swiperSize, - rtlTranslate: rtl, - wrongRTL - } = swiper; - const isVirtual = swiper.virtual && params.virtual.enabled; - const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; - const slides = $wrapperEl.children(`.${swiper.params.slideClass}`); - 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; - 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; - } - - swiper.virtualSize = -spaceBetween; // reset margins - - if (rtl) slides.css({ - marginLeft: '', - marginBottom: '', - marginTop: '' - });else slides.css({ - marginRight: '', - marginBottom: '', - marginTop: '' - }); // reset cssMode offsets - - if (params.centeredSlides && params.cssMode) { - setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', ''); - setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', ''); - } - - const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; - - if (gridEnabled) { - swiper.grid.initSlides(slidesLength); - } // 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.eq(i); - - if (gridEnabled) { - swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel); - } - - if (slide.css('display') === 'none') continue; // eslint-disable-line - - if (params.slidesPerView === 'auto') { - if (shouldResetSlideSize) { - slides[i].style[getDirectionLabel('width')] = ``; - } - - const slideStyles = getComputedStyle(slide[0]); - const currentTransform = slide[0].style.transform; - const currentWebKitTransform = slide[0].style.webkitTransform; - - if (currentTransform) { - slide[0].style.transform = 'none'; - } - - if (currentWebKitTransform) { - slide[0].style.webkitTransform = 'none'; - } - - if (params.roundLengths) { - slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(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[0]; - slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); - } - } - - if (currentTransform) { - slide[0].style.transform = currentTransform; - } - - if (currentWebKitTransform) { - slide[0].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 (slides[i]) { - slides[i].style[getDirectionLabel('width')] = `${slideSize}px`; - } - } - - if (slides[i]) { - slides[i].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.css({ - width: `${swiper.virtualSize + params.spaceBetween}px` - }); - } - - if (params.setWrapperSize) { - $wrapperEl.css({ - [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px` - }); - } - - if (gridEnabled) { - swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel); - } // Remove last grid elements depending on width - - - if (!params.centeredSlides) { - const newSlidesGrid = []; - - for (let i = 0; i < snapGrid.length; i += 1) { - let slidesGridItem = snapGrid[i]; - if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); - - if (snapGrid[i] <= swiper.virtualSize - swiperSize) { - newSlidesGrid.push(slidesGridItem); - } - } - - snapGrid = newSlidesGrid; - - if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { - snapGrid.push(swiper.virtualSize - swiperSize); - } - } - - if (snapGrid.length === 0) snapGrid = [0]; - - if (params.spaceBetween !== 0) { - const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight'); - slides.filter((_, slideIndex) => { - if (!params.cssMode) return true; - - if (slideIndex === slides.length - 1) { - return false; - } - - return true; - }).css({ - [key]: `${spaceBetween}px` - }); - } - - if (params.centeredSlides && params.centeredSlidesBounds) { - let allSlidesSize = 0; - slidesSizesGrid.forEach(slideSizeValue => { - allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); - }); - allSlidesSize -= params.spaceBetween; - const maxSnap = allSlidesSize - swiperSize; - 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 + (params.spaceBetween ? params.spaceBetween : 0); - }); - allSlidesSize -= params.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(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); - setCSSProperty(swiper.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(); - } -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/update/updateSlidesClasses.js b/resources/web/include/swiper/core/update/updateSlidesClasses.js deleted file mode 100644 index 06166d3510..0000000000 --- a/resources/web/include/swiper/core/update/updateSlidesClasses.js +++ /dev/null @@ -1,64 +0,0 @@ -export default function updateSlidesClasses() { - const swiper = this; - const { - slides, - params, - $wrapperEl, - activeIndex, - realIndex - } = swiper; - const isVirtual = swiper.virtual && params.virtual.enabled; - slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`); - let activeSlide; - - if (isVirtual) { - activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`); - } else { - activeSlide = slides.eq(activeIndex); - } // Active classes - - - activeSlide.addClass(params.slideActiveClass); - - if (params.loop) { - // Duplicate to all looped slides - if (activeSlide.hasClass(params.slideDuplicateClass)) { - $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass); - } else { - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass); - } - } // Next Slide - - - let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass); - - if (params.loop && nextSlide.length === 0) { - nextSlide = slides.eq(0); - nextSlide.addClass(params.slideNextClass); - } // Prev Slide - - - let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass); - - if (params.loop && prevSlide.length === 0) { - prevSlide = slides.eq(-1); - prevSlide.addClass(params.slidePrevClass); - } - - if (params.loop) { - // Duplicate to all looped slides - if (nextSlide.hasClass(params.slideDuplicateClass)) { - $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass); - } else { - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass); - } - - if (prevSlide.hasClass(params.slideDuplicateClass)) { - $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass); - } else { - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass); - } - } - - swiper.emitSlidesClasses(); -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/update/updateSlidesOffset.js b/resources/web/include/swiper/core/update/updateSlidesOffset.js deleted file mode 100644 index 8856e955e0..0000000000 --- a/resources/web/include/swiper/core/update/updateSlidesOffset.js +++ /dev/null @@ -1,8 +0,0 @@ -export default function updateSlidesOffset() { - const swiper = this; - const slides = swiper.slides; - - for (let i = 0; i < slides.length; i += 1) { - slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; - } -} \ No newline at end of file diff --git a/resources/web/include/swiper/core/update/updateSlidesProgress.js b/resources/web/include/swiper/core/update/updateSlidesProgress.js deleted file mode 100644 index f8bc772178..0000000000 --- a/resources/web/include/swiper/core/update/updateSlidesProgress.js +++ /dev/null @@ -1,44 +0,0 @@ -import $ from '../../shared/dom.js'; -export default 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; // Visible Slides - - slides.removeClass(params.slideVisibleClass); - swiper.visibleSlidesIndexes = []; - swiper.visibleSlides = []; - - 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 + params.spaceBetween); - const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween); - const slideBefore = -(offsetCenter - slideOffset); - const slideAfter = slideBefore + 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); - slides.eq(i).addClass(params.slideVisibleClass); - } - - slide.progress = rtl ? -slideProgress : slideProgress; - slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; - } - - swiper.visibleSlides = $(swiper.visibleSlides); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/a11y/a11y.js b/resources/web/include/swiper/modules/a11y/a11y.js deleted file mode 100644 index b8d6402564..0000000000 --- a/resources/web/include/swiper/modules/a11y/a11y.js +++ /dev/null @@ -1,283 +0,0 @@ -import classesToSelector from '../../shared/classes-to-selector.js'; -import $ from '../../shared/dom.js'; -export default 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, - itemRoleDescriptionMessage: null, - slideRole: 'group' - } - }); - let liveRegion = null; - - function notify(message) { - const notification = liveRegion; - if (notification.length === 0) return; - notification.html(''); - notification.html(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.attr('tabIndex', '0'); - } - - function makeElNotFocusable($el) { - $el.attr('tabIndex', '-1'); - } - - function addElRole($el, role) { - $el.attr('role', role); - } - - function addElRoleDescription($el, description) { - $el.attr('aria-roledescription', description); - } - - function addElControls($el, controls) { - $el.attr('aria-controls', controls); - } - - function addElLabel($el, label) { - $el.attr('aria-label', label); - } - - function addElId($el, id) { - $el.attr('id', id); - } - - function addElLive($el, live) { - $el.attr('aria-live', live); - } - - function disableEl($el) { - $el.attr('aria-disabled', true); - } - - function enableEl($el) { - $el.attr('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.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) { - if (!(swiper.isEnd && !swiper.params.loop)) { - swiper.slideNext(); - } - - if (swiper.isEnd) { - notify(params.lastSlideMessage); - } else { - notify(params.nextSlideMessage); - } - } - - if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) { - if (!(swiper.isBeginning && !swiper.params.loop)) { - swiper.slidePrev(); - } - - if (swiper.isBeginning) { - notify(params.firstSlideMessage); - } else { - notify(params.prevSlideMessage); - } - } - - if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) { - $targetEl[0].click(); - } - } - - function updateNavigation() { - if (swiper.params.loop || !swiper.navigation) return; - const { - $nextEl, - $prevEl - } = swiper.navigation; - - if ($prevEl && $prevEl.length > 0) { - if (swiper.isBeginning) { - disableEl($prevEl); - makeElNotFocusable($prevEl); - } else { - enableEl($prevEl); - makeElFocusable($prevEl); - } - } - - if ($nextEl && $nextEl.length > 0) { - if (swiper.isEnd) { - disableEl($nextEl); - makeElNotFocusable($nextEl); - } else { - enableEl($nextEl); - makeElFocusable($nextEl); - } - } - } - - function hasPagination() { - return swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length; - } - - function updatePagination() { - const params = swiper.params.a11y; - - if (hasPagination()) { - swiper.pagination.bullets.each(bulletEl => { - const $bulletEl = $(bulletEl); - makeElFocusable($bulletEl); - - if (!swiper.params.pagination.renderBullet) { - addElRole($bulletEl, 'button'); - addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1)); - } - }); - } - } - - const initNavEl = ($el, wrapperId, message) => { - makeElFocusable($el); - - if ($el[0].tagName !== 'BUTTON') { - addElRole($el, 'button'); - $el.on('keydown', onEnterOrSpaceKey); - } - - addElLabel($el, message); - addElControls($el, wrapperId); - }; - - function 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); - } // Wrapper - - - const $wrapperEl = swiper.$wrapperEl; - const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`; - const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; - addElId($wrapperEl, wrapperId); - addElLive($wrapperEl, live); // Slide - - if (params.itemRoleDescriptionMessage) { - addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage); - } - - addElRole($(swiper.slides), params.slideRole); - const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length; - swiper.slides.each((slideEl, index) => { - const $slideEl = $(slideEl); - const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index; - const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); - addElLabel($slideEl, ariaLabelMessage); - }); // Navigation - - let $nextEl; - let $prevEl; - - if (swiper.navigation && swiper.navigation.$nextEl) { - $nextEl = swiper.navigation.$nextEl; - } - - if (swiper.navigation && swiper.navigation.$prevEl) { - $prevEl = swiper.navigation.$prevEl; - } - - if ($nextEl && $nextEl.length) { - initNavEl($nextEl, wrapperId, params.nextSlideMessage); - } - - if ($prevEl && $prevEl.length) { - initNavEl($prevEl, wrapperId, params.prevSlideMessage); - } // Pagination - - - if (hasPagination()) { - swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey); - } - } - - function destroy() { - if (liveRegion && liveRegion.length > 0) liveRegion.remove(); - let $nextEl; - let $prevEl; - - if (swiper.navigation && swiper.navigation.$nextEl) { - $nextEl = swiper.navigation.$nextEl; - } - - if (swiper.navigation && swiper.navigation.$prevEl) { - $prevEl = swiper.navigation.$prevEl; - } - - if ($nextEl) { - $nextEl.off('keydown', onEnterOrSpaceKey); - } - - if ($prevEl) { - $prevEl.off('keydown', onEnterOrSpaceKey); - } // Pagination - - - if (hasPagination()) { - swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey); - } - } - - on('beforeInit', () => { - liveRegion = $(``); - }); - on('afterInit', () => { - if (!swiper.params.a11y.enabled) return; - init(); - updateNavigation(); - }); - on('toEdge', () => { - if (!swiper.params.a11y.enabled) return; - updateNavigation(); - }); - on('fromEdge', () => { - 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(); - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/a11y/a11y.less b/resources/web/include/swiper/modules/a11y/a11y.less deleted file mode 100644 index c5f9eec456..0000000000 --- a/resources/web/include/swiper/modules/a11y/a11y.less +++ /dev/null @@ -1,9 +0,0 @@ -/* a11y */ -.swiper .swiper-notification { - position: absolute; - left: 0; - top: 0; - pointer-events: none; - opacity: 0; - z-index: -1000; -} diff --git a/resources/web/include/swiper/modules/a11y/a11y.min.css b/resources/web/include/swiper/modules/a11y/a11y.min.css deleted file mode 100644 index 78c39d57a6..0000000000 --- a/resources/web/include/swiper/modules/a11y/a11y.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/a11y/a11y.scss b/resources/web/include/swiper/modules/a11y/a11y.scss deleted file mode 100644 index c5f9eec456..0000000000 --- a/resources/web/include/swiper/modules/a11y/a11y.scss +++ /dev/null @@ -1,9 +0,0 @@ -/* a11y */ -.swiper .swiper-notification { - position: absolute; - left: 0; - top: 0; - pointer-events: none; - opacity: 0; - z-index: -1000; -} diff --git a/resources/web/include/swiper/modules/autoplay/autoplay.js b/resources/web/include/swiper/modules/autoplay/autoplay.js deleted file mode 100644 index 0d7cd34241..0000000000 --- a/resources/web/include/swiper/modules/autoplay/autoplay.js +++ /dev/null @@ -1,222 +0,0 @@ -/* eslint no-underscore-dangle: "off" */ - -/* eslint no-use-before-define: "off" */ -import { getDocument } from 'ssr-window'; -import { nextTick } from '../../shared/utils.js'; -export default function Autoplay({ - swiper, - extendParams, - on, - emit -}) { - let timeout; - swiper.autoplay = { - running: false, - paused: false - }; - extendParams({ - autoplay: { - enabled: false, - delay: 3000, - waitForTransition: true, - disableOnInteraction: true, - stopOnLastSlide: false, - reverseDirection: false, - pauseOnMouseEnter: false - } - }); - - function run() { - const $activeSlideEl = swiper.slides.eq(swiper.activeIndex); - let delay = swiper.params.autoplay.delay; - - if ($activeSlideEl.attr('data-swiper-autoplay')) { - delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay; - } - - clearTimeout(timeout); - timeout = nextTick(() => { - let autoplayResult; - - if (swiper.params.autoplay.reverseDirection) { - if (swiper.params.loop) { - swiper.loopFix(); - autoplayResult = swiper.slidePrev(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.isBeginning) { - autoplayResult = swiper.slidePrev(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.params.autoplay.stopOnLastSlide) { - autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); - emit('autoplay'); - } else { - stop(); - } - } else if (swiper.params.loop) { - swiper.loopFix(); - autoplayResult = swiper.slideNext(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.isEnd) { - autoplayResult = swiper.slideNext(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.params.autoplay.stopOnLastSlide) { - autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true); - emit('autoplay'); - } else { - stop(); - } - - if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) { - run(); - } - }, delay); - } - - function start() { - if (typeof timeout !== 'undefined') return false; - if (swiper.autoplay.running) return false; - swiper.autoplay.running = true; - emit('autoplayStart'); - run(); - return true; - } - - function stop() { - if (!swiper.autoplay.running) return false; - if (typeof timeout === 'undefined') return false; - - if (timeout) { - clearTimeout(timeout); - timeout = undefined; - } - - swiper.autoplay.running = false; - emit('autoplayStop'); - return true; - } - - function pause(speed) { - if (!swiper.autoplay.running) return; - if (swiper.autoplay.paused) return; - if (timeout) clearTimeout(timeout); - swiper.autoplay.paused = true; - - if (speed === 0 || !swiper.params.autoplay.waitForTransition) { - swiper.autoplay.paused = false; - run(); - } else { - ['transitionend', 'webkitTransitionEnd'].forEach(event => { - swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd); - }); - } - } - - function onVisibilityChange() { - const document = getDocument(); - - if (document.visibilityState === 'hidden' && swiper.autoplay.running) { - pause(); - } - - if (document.visibilityState === 'visible' && swiper.autoplay.paused) { - run(); - swiper.autoplay.paused = false; - } - } - - function onTransitionEnd(e) { - if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return; - if (e.target !== swiper.$wrapperEl[0]) return; - ['transitionend', 'webkitTransitionEnd'].forEach(event => { - swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd); - }); - swiper.autoplay.paused = false; - - if (!swiper.autoplay.running) { - stop(); - } else { - run(); - } - } - - function onMouseEnter() { - if (swiper.params.autoplay.disableOnInteraction) { - stop(); - } else { - pause(); - } - - ['transitionend', 'webkitTransitionEnd'].forEach(event => { - swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd); - }); - } - - function onMouseLeave() { - if (swiper.params.autoplay.disableOnInteraction) { - return; - } - - swiper.autoplay.paused = false; - run(); - } - - function attachMouseEvents() { - if (swiper.params.autoplay.pauseOnMouseEnter) { - swiper.$el.on('mouseenter', onMouseEnter); - swiper.$el.on('mouseleave', onMouseLeave); - } - } - - function detachMouseEvents() { - swiper.$el.off('mouseenter', onMouseEnter); - swiper.$el.off('mouseleave', onMouseLeave); - } - - on('init', () => { - if (swiper.params.autoplay.enabled) { - start(); - const document = getDocument(); - document.addEventListener('visibilitychange', onVisibilityChange); - attachMouseEvents(); - } - }); - on('beforeTransitionStart', (_s, speed, internal) => { - if (swiper.autoplay.running) { - if (internal || !swiper.params.autoplay.disableOnInteraction) { - swiper.autoplay.pause(speed); - } else { - stop(); - } - } - }); - on('sliderFirstMove', () => { - if (swiper.autoplay.running) { - if (swiper.params.autoplay.disableOnInteraction) { - stop(); - } else { - pause(); - } - } - }); - on('touchEnd', () => { - if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) { - run(); - } - }); - on('destroy', () => { - detachMouseEvents(); - - if (swiper.autoplay.running) { - stop(); - } - - const document = getDocument(); - document.removeEventListener('visibilitychange', onVisibilityChange); - }); - Object.assign(swiper.autoplay, { - pause, - run, - start, - stop - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/autoplay/autoplay.less b/resources/web/include/swiper/modules/autoplay/autoplay.less deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/autoplay/autoplay.min.css b/resources/web/include/swiper/modules/autoplay/autoplay.min.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/autoplay/autoplay.scss b/resources/web/include/swiper/modules/autoplay/autoplay.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/controller/controller.js b/resources/web/include/swiper/modules/controller/controller.js deleted file mode 100644 index 55b32f2002..0000000000 --- a/resources/web/include/swiper/modules/controller/controller.js +++ /dev/null @@ -1,191 +0,0 @@ -/* eslint no-bitwise: ["error", { "allow": [">>"] }] */ -import { nextTick } from '../../shared/utils.js'; -export default 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; - } // xxx: for now i will just save one spline function to to - - - function getInterpolateFunction(c) { - if (!swiper.controller.spline) { - 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) { - // 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()); - 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) { - c.setTransition(duration, swiper); - - if (duration !== 0) { - c.transitionStart(); - - if (c.params.autoHeight) { - nextTick(() => { - c.updateAutoHeight(); - }); - } - - c.$wrapperEl.transitionEnd(() => { - if (!controlled) return; - - if (c.params.loop && swiper.params.controller.by === 'slide') { - c.loopFix(); - } - - 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', () => { - 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) return; - swiper.controller.setTranslate(translate, byController); - }); - on('setTransition', (_s, duration, byController) => { - if (!swiper.controller.control) return; - swiper.controller.setTransition(duration, byController); - }); - Object.assign(swiper.controller, { - setTranslate, - setTransition - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/controller/controller.less b/resources/web/include/swiper/modules/controller/controller.less deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/controller/controller.min.css b/resources/web/include/swiper/modules/controller/controller.min.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/controller/controller.scss b/resources/web/include/swiper/modules/controller/controller.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/effect-cards/effect-cards.js b/resources/web/include/swiper/modules/effect-cards/effect-cards.js deleted file mode 100644 index 7709bed9c4..0000000000 --- a/resources/web/include/swiper/modules/effect-cards/effect-cards.js +++ /dev/null @@ -1,125 +0,0 @@ -import createShadow from '../../shared/create-shadow.js'; -import effectInit from '../../shared/effect-init.js'; -import effectTarget from '../../shared/effect-target.js'; -import effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js'; -export default function EffectCards({ - swiper, - extendParams, - on -}) { - extendParams({ - cardsEffect: { - slideShadows: true, - transformEl: null - } - }); - - const setTranslate = () => { - const { - slides, - activeIndex - } = swiper; - const params = swiper.params.cardsEffect; - const { - startTranslate, - isTouched - } = swiper.touchEventsData; - const currentTranslate = swiper.translate; - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - const slideProgress = $slideEl[0].progress; - const progress = Math.min(Math.max(slideProgress, -4), 4); - let offset = $slideEl[0].swiperSlideOffset; - - if (swiper.params.centeredSlides && !swiper.params.cssMode) { - swiper.$wrapperEl.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 = -2 * progress; - let tXAdd = 8 - Math.abs(progress) * 0.75; - const isSwipeToNext = (i === activeIndex || i === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; - const isSwipeToPrev = (i === activeIndex || i === 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 = `${-25 * subProgress * Math.abs(progress)}%`; - } - - if (progress < 0) { - // next - tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`; - } else if (progress > 0) { - // prev - tX = `calc(${tX}px + (-${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}`; - const transform = ` - translate3d(${tX}, ${tY}, ${tZ}px) - rotateZ(${rotate}deg) - scale(${scaleString}) - `; - - if (params.slideShadows) { - // Set shadows - let $shadowEl = $slideEl.find('.swiper-slide-shadow'); - - if ($shadowEl.length === 0) { - $shadowEl = createShadow(params, $slideEl); - } - - if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); - } - - $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(transform); - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.cardsEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl - }); - }; - - effectInit({ - effect: 'cards', - swiper, - on, - setTranslate, - setTransition, - perspective: () => true, - overwriteParams: () => ({ - watchSlidesProgress: true, - virtualTranslate: !swiper.params.cssMode - }) - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/effect-cards/effect-cards.less b/resources/web/include/swiper/modules/effect-cards/effect-cards.less deleted file mode 100644 index ab9034258f..0000000000 --- a/resources/web/include/swiper/modules/effect-cards/effect-cards.less +++ /dev/null @@ -1,8 +0,0 @@ -.swiper-cards { - overflow: visible; - .swiper-slide { - transform-origin: center bottom; - backface-visibility: hidden; - overflow: hidden; - } -} diff --git a/resources/web/include/swiper/modules/effect-cards/effect-cards.min.css b/resources/web/include/swiper/modules/effect-cards/effect-cards.min.css deleted file mode 100644 index 1769ef29bc..0000000000 --- a/resources/web/include/swiper/modules/effect-cards/effect-cards.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/effect-cards/effect-cards.scss b/resources/web/include/swiper/modules/effect-cards/effect-cards.scss deleted file mode 100644 index 32c4489f8f..0000000000 --- a/resources/web/include/swiper/modules/effect-cards/effect-cards.scss +++ /dev/null @@ -1,7 +0,0 @@ -.swiper-cards { - overflow: visible; - .swiper-slide { - transform-origin: center bottom; - backface-visibility: hidden; - } -} diff --git a/resources/web/include/swiper/modules/effect-coverflow/effect-coverflow.js b/resources/web/include/swiper/modules/effect-coverflow/effect-coverflow.js deleted file mode 100644 index 7f182bb88e..0000000000 --- a/resources/web/include/swiper/modules/effect-coverflow/effect-coverflow.js +++ /dev/null @@ -1,103 +0,0 @@ -import createShadow from '../../shared/create-shadow.js'; -import effectInit from '../../shared/effect-init.js'; -import effectTarget from '../../shared/effect-target.js'; -export default function EffectCoverflow({ - swiper, - extendParams, - on -}) { - extendParams({ - coverflowEffect: { - rotate: 50, - stretch: 0, - depth: 100, - scale: 1, - modifier: 1, - slideShadows: true, - transformEl: null - } - }); - - 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; // Each slide offset from center - - for (let i = 0, length = slides.length; i < length; i += 1) { - const $slideEl = slides.eq(i); - const slideSize = slidesSizesGrid[i]; - const slideOffset = $slideEl[0].swiperSlideOffset; - const offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * 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(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`; - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(slideTransform); - $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; - - if (params.slideShadows) { - // Set shadows - let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); - let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); - - if ($shadowBeforeEl.length === 0) { - $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top'); - } - - if ($shadowAfterEl.length === 0) { - $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom'); - } - - if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; - if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; - } - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.coverflowEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - }; - - effectInit({ - effect: 'coverflow', - swiper, - on, - setTranslate, - setTransition, - perspective: () => true, - overwriteParams: () => ({ - watchSlidesProgress: true - }) - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/effect-coverflow/effect-coverflow.less b/resources/web/include/swiper/modules/effect-coverflow/effect-coverflow.less deleted file mode 100644 index ac504bf1a6..0000000000 --- a/resources/web/include/swiper/modules/effect-coverflow/effect-coverflow.less +++ /dev/null @@ -1,2 +0,0 @@ -.swiper-coverflow { -} diff --git a/resources/web/include/swiper/modules/effect-coverflow/effect-coverflow.min.css b/resources/web/include/swiper/modules/effect-coverflow/effect-coverflow.min.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/effect-coverflow/effect-coverflow.scss b/resources/web/include/swiper/modules/effect-coverflow/effect-coverflow.scss deleted file mode 100644 index ac504bf1a6..0000000000 --- a/resources/web/include/swiper/modules/effect-coverflow/effect-coverflow.scss +++ /dev/null @@ -1,2 +0,0 @@ -.swiper-coverflow { -} diff --git a/resources/web/include/swiper/modules/effect-creative/effect-creative.js b/resources/web/include/swiper/modules/effect-creative/effect-creative.js deleted file mode 100644 index cc0542be7c..0000000000 --- a/resources/web/include/swiper/modules/effect-creative/effect-creative.js +++ /dev/null @@ -1,154 +0,0 @@ -import createShadow from '../../shared/create-shadow.js'; -import effectInit from '../../shared/effect-init.js'; -import effectTarget from '../../shared/effect-target.js'; -import effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js'; -export default function EffectCreative({ - swiper, - extendParams, - on -}) { - extendParams({ - creativeEffect: { - transformEl: null, - 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; - - if (isCenteredSlides) { - const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; - $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`); - } - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - const slideProgress = $slideEl[0].progress; - const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress); - let originalProgress = progress; - - if (!isCenteredSlides) { - originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress); - } - - const offset = $slideEl[0].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) => { - r[index] = data.rotate[index] * Math.abs(progress * multiplier); - }); - $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; - const translateString = t.join(', '); - const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${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.children('.swiper-slide-shadow'); - - if ($shadowEl.length === 0 && data.shadow) { - $shadowEl = createShadow(params, $slideEl); - } - - if ($shadowEl.length) { - const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; - $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); - } - } - - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(transform).css({ - opacity: opacityString - }); - - if (data.origin) { - $targetEl.css('transform-origin', data.origin); - } - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.creativeEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl, - allSlides: true - }); - }; - - effectInit({ - effect: 'creative', - swiper, - on, - setTranslate, - setTransition, - perspective: () => swiper.params.creativeEffect.perspective, - overwriteParams: () => ({ - watchSlidesProgress: true, - virtualTranslate: !swiper.params.cssMode - }) - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/effect-creative/effect-creative.less b/resources/web/include/swiper/modules/effect-creative/effect-creative.less deleted file mode 100644 index b893cad5c8..0000000000 --- a/resources/web/include/swiper/modules/effect-creative/effect-creative.less +++ /dev/null @@ -1,7 +0,0 @@ -.swiper-creative { - .swiper-slide { - backface-visibility: hidden; - overflow: hidden; - transition-property: transform, opacity, height; - } -} diff --git a/resources/web/include/swiper/modules/effect-creative/effect-creative.min.css b/resources/web/include/swiper/modules/effect-creative/effect-creative.min.css deleted file mode 100644 index 404da2c284..0000000000 --- a/resources/web/include/swiper/modules/effect-creative/effect-creative.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/effect-creative/effect-creative.scss b/resources/web/include/swiper/modules/effect-creative/effect-creative.scss deleted file mode 100644 index b893cad5c8..0000000000 --- a/resources/web/include/swiper/modules/effect-creative/effect-creative.scss +++ /dev/null @@ -1,7 +0,0 @@ -.swiper-creative { - .swiper-slide { - backface-visibility: hidden; - overflow: hidden; - transition-property: transform, opacity, height; - } -} diff --git a/resources/web/include/swiper/modules/effect-cube/effect-cube.js b/resources/web/include/swiper/modules/effect-cube/effect-cube.js deleted file mode 100644 index f15389331c..0000000000 --- a/resources/web/include/swiper/modules/effect-cube/effect-cube.js +++ /dev/null @@ -1,180 +0,0 @@ -import $ from '../../shared/dom.js'; -import effectInit from '../../shared/effect-init.js'; -export default function EffectCube({ - swiper, - extendParams, - on -}) { - extendParams({ - cubeEffect: { - slideShadows: true, - shadow: true, - shadowOffset: 20, - shadowScale: 0.94 - } - }); - - const setTranslate = () => { - const { - $el, - $wrapperEl, - slides, - width: swiperWidth, - height: swiperHeight, - rtlTranslate: rtl, - size: swiperSize, - browser - } = 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 = $wrapperEl.find('.swiper-cube-shadow'); - - if ($cubeShadowEl.length === 0) { - $cubeShadowEl = $('
'); - $wrapperEl.append($cubeShadowEl); - } - - $cubeShadowEl.css({ - height: `${swiperWidth}px` - }); - } else { - $cubeShadowEl = $el.find('.swiper-cube-shadow'); - - if ($cubeShadowEl.length === 0) { - $cubeShadowEl = $('
'); - $el.append($cubeShadowEl); - } - } - } - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - let slideIndex = i; - - if (isVirtual) { - slideIndex = parseInt($slideEl.attr('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[0].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(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${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.transform(transform); - - if (params.slideShadows) { - // Set shadows - let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); - let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); - - if (shadowBefore.length === 0) { - shadowBefore = $(`
`); - $slideEl.append(shadowBefore); - } - - if (shadowAfter.length === 0) { - shadowAfter = $(`
`); - $slideEl.append(shadowAfter); - } - - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - } - - $wrapperEl.css({ - '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`, - 'transform-origin': `50% 50% -${swiperSize / 2}px` - }); - - if (params.shadow) { - if (isHorizontal) { - $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) 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.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`); - } - } - - const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0; - $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`); - }; - - const setTransition = duration => { - const { - $el, - slides - } = swiper; - slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - - if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { - $el.find('.swiper-cube-shadow').transition(duration); - } - }; - - effectInit({ - effect: 'cube', - swiper, - on, - setTranslate, - setTransition, - perspective: () => true, - overwriteParams: () => ({ - slidesPerView: 1, - slidesPerGroup: 1, - watchSlidesProgress: true, - resistanceRatio: 0, - spaceBetween: 0, - centeredSlides: false, - virtualTranslate: true - }) - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/effect-cube/effect-cube.less b/resources/web/include/swiper/modules/effect-cube/effect-cube.less deleted file mode 100644 index ae4c92cb31..0000000000 --- a/resources/web/include/swiper/modules/effect-cube/effect-cube.less +++ /dev/null @@ -1,59 +0,0 @@ -.swiper-cube { - overflow: visible; - .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, - .swiper-slide-next + .swiper-slide { - pointer-events: auto; - visibility: visible; - } - .swiper-slide-shadow-top, - .swiper-slide-shadow-bottom, - .swiper-slide-shadow-left, - .swiper-slide-shadow-right { - z-index: 0; - backface-visibility: hidden; - } - .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; - -webkit-filter: blur(50px); - filter: blur(50px); - } - } -} diff --git a/resources/web/include/swiper/modules/effect-cube/effect-cube.min.css b/resources/web/include/swiper/modules/effect-cube/effect-cube.min.css deleted file mode 100644 index 103dcee2b5..0000000000 --- a/resources/web/include/swiper/modules/effect-cube/effect-cube.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-next+.swiper-slide,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.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)} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/effect-cube/effect-cube.scss b/resources/web/include/swiper/modules/effect-cube/effect-cube.scss deleted file mode 100644 index ae4c92cb31..0000000000 --- a/resources/web/include/swiper/modules/effect-cube/effect-cube.scss +++ /dev/null @@ -1,59 +0,0 @@ -.swiper-cube { - overflow: visible; - .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, - .swiper-slide-next + .swiper-slide { - pointer-events: auto; - visibility: visible; - } - .swiper-slide-shadow-top, - .swiper-slide-shadow-bottom, - .swiper-slide-shadow-left, - .swiper-slide-shadow-right { - z-index: 0; - backface-visibility: hidden; - } - .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; - -webkit-filter: blur(50px); - filter: blur(50px); - } - } -} diff --git a/resources/web/include/swiper/modules/effect-fade/effect-fade.js b/resources/web/include/swiper/modules/effect-fade/effect-fade.js deleted file mode 100644 index 5ac9bcbdcf..0000000000 --- a/resources/web/include/swiper/modules/effect-fade/effect-fade.js +++ /dev/null @@ -1,70 +0,0 @@ -import effectInit from '../../shared/effect-init.js'; -import effectTarget from '../../shared/effect-target.js'; -import effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js'; -export default function EffectFade({ - swiper, - extendParams, - on -}) { - extendParams({ - fadeEffect: { - crossFade: false, - transformEl: null - } - }); - - const setTranslate = () => { - const { - slides - } = swiper; - const params = swiper.params.fadeEffect; - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = swiper.slides.eq(i); - const offset = $slideEl[0].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[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0); - const $targetEl = effectTarget(params, $slideEl); - $targetEl.css({ - opacity: slideOpacity - }).transform(`translate3d(${tx}px, ${ty}px, 0px)`); - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.fadeEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl, - allSlides: true - }); - }; - - effectInit({ - effect: 'fade', - swiper, - on, - setTranslate, - setTransition, - overwriteParams: () => ({ - slidesPerView: 1, - slidesPerGroup: 1, - watchSlidesProgress: true, - spaceBetween: 0, - virtualTranslate: !swiper.params.cssMode - }) - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/effect-fade/effect-fade.less b/resources/web/include/swiper/modules/effect-fade/effect-fade.less deleted file mode 100644 index bb059dd354..0000000000 --- a/resources/web/include/swiper/modules/effect-fade/effect-fade.less +++ /dev/null @@ -1,20 +0,0 @@ -.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 { - &, - & .swiper-slide-active { - pointer-events: auto; - } - } -} diff --git a/resources/web/include/swiper/modules/effect-fade/effect-fade.min.css b/resources/web/include/swiper/modules/effect-fade/effect-fade.min.css deleted file mode 100644 index ec1d7bfd82..0000000000 --- a/resources/web/include/swiper/modules/effect-fade/effect-fade.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/effect-fade/effect-fade.scss b/resources/web/include/swiper/modules/effect-fade/effect-fade.scss deleted file mode 100644 index bb059dd354..0000000000 --- a/resources/web/include/swiper/modules/effect-fade/effect-fade.scss +++ /dev/null @@ -1,20 +0,0 @@ -.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 { - &, - & .swiper-slide-active { - pointer-events: auto; - } - } -} diff --git a/resources/web/include/swiper/modules/effect-flip/effect-flip.js b/resources/web/include/swiper/modules/effect-flip/effect-flip.js deleted file mode 100644 index e923008176..0000000000 --- a/resources/web/include/swiper/modules/effect-flip/effect-flip.js +++ /dev/null @@ -1,102 +0,0 @@ -import createShadow from '../../shared/create-shadow.js'; -import effectInit from '../../shared/effect-init.js'; -import effectTarget from '../../shared/effect-target.js'; -import effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js'; -export default function EffectFlip({ - swiper, - extendParams, - on -}) { - extendParams({ - flipEffect: { - slideShadows: true, - limitRotation: true, - transformEl: null - } - }); - - const setTranslate = () => { - const { - slides, - rtlTranslate: rtl - } = swiper; - const params = swiper.params.flipEffect; - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - let progress = $slideEl[0].progress; - - if (swiper.params.flipEffect.limitRotation) { - progress = Math.max(Math.min($slideEl[0].progress, 1), -1); - } - - const offset = $slideEl[0].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[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length; - - if (params.slideShadows) { - // Set shadows - let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); - let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); - - if (shadowBefore.length === 0) { - shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top'); - } - - if (shadowAfter.length === 0) { - shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); - } - - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - - const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(transform); - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.flipEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl - }); - }; - - effectInit({ - effect: 'flip', - swiper, - on, - setTranslate, - setTransition, - perspective: () => true, - overwriteParams: () => ({ - slidesPerView: 1, - slidesPerGroup: 1, - watchSlidesProgress: true, - spaceBetween: 0, - virtualTranslate: !swiper.params.cssMode - }) - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/effect-flip/effect-flip.less b/resources/web/include/swiper/modules/effect-flip/effect-flip.less deleted file mode 100644 index f200173bdd..0000000000 --- a/resources/web/include/swiper/modules/effect-flip/effect-flip.less +++ /dev/null @@ -1,24 +0,0 @@ -.swiper-flip { - overflow: visible; - .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; - } - } - .swiper-slide-shadow-top, - .swiper-slide-shadow-bottom, - .swiper-slide-shadow-left, - .swiper-slide-shadow-right { - z-index: 0; - backface-visibility: hidden; - } -} diff --git a/resources/web/include/swiper/modules/effect-flip/effect-flip.min.css b/resources/web/include/swiper/modules/effect-flip/effect-flip.min.css deleted file mode 100644 index ae2ed654e0..0000000000 --- a/resources/web/include/swiper/modules/effect-flip/effect-flip.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/effect-flip/effect-flip.scss b/resources/web/include/swiper/modules/effect-flip/effect-flip.scss deleted file mode 100644 index f200173bdd..0000000000 --- a/resources/web/include/swiper/modules/effect-flip/effect-flip.scss +++ /dev/null @@ -1,24 +0,0 @@ -.swiper-flip { - overflow: visible; - .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; - } - } - .swiper-slide-shadow-top, - .swiper-slide-shadow-bottom, - .swiper-slide-shadow-left, - .swiper-slide-shadow-right { - z-index: 0; - backface-visibility: hidden; - } -} diff --git a/resources/web/include/swiper/modules/free-mode/free-mode.js b/resources/web/include/swiper/modules/free-mode/free-mode.js deleted file mode 100644 index 83b00af846..0000000000 --- a/resources/web/include/swiper/modules/free-mode/free-mode.js +++ /dev/null @@ -1,245 +0,0 @@ -import { now } from '../../shared/utils.js'; -export default 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 onTouchMove() { - 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 - }) { - 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; - $wrapperEl.transitionEnd(() => { - if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; - emit('momentumBounce'); - swiper.setTransition(params.speed); - setTimeout(() => { - swiper.setTranslate(afterBouncePosition); - $wrapperEl.transitionEnd(() => { - 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; - $wrapperEl.transitionEnd(() => { - 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) { - swiper.updateProgress(); - swiper.updateActiveIndex(); - swiper.updateSlidesClasses(); - } - } - - Object.assign(swiper, { - freeMode: { - onTouchMove, - onTouchEnd - } - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/free-mode/free-mode.less b/resources/web/include/swiper/modules/free-mode/free-mode.less deleted file mode 100644 index 9c289eb769..0000000000 --- a/resources/web/include/swiper/modules/free-mode/free-mode.less +++ /dev/null @@ -1,4 +0,0 @@ -.swiper-free-mode > .swiper-wrapper { - transition-timing-function: ease-out; - margin: 0 auto; -} diff --git a/resources/web/include/swiper/modules/free-mode/free-mode.min.css b/resources/web/include/swiper/modules/free-mode/free-mode.min.css deleted file mode 100644 index ecc8120383..0000000000 --- a/resources/web/include/swiper/modules/free-mode/free-mode.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/free-mode/free-mode.scss b/resources/web/include/swiper/modules/free-mode/free-mode.scss deleted file mode 100644 index 9c289eb769..0000000000 --- a/resources/web/include/swiper/modules/free-mode/free-mode.scss +++ /dev/null @@ -1,4 +0,0 @@ -.swiper-free-mode > .swiper-wrapper { - transition-timing-function: ease-out; - margin: 0 auto; -} diff --git a/resources/web/include/swiper/modules/grid/grid.js b/resources/web/include/swiper/modules/grid/grid.js deleted file mode 100644 index 853cb9b0e1..0000000000 --- a/resources/web/include/swiper/modules/grid/grid.js +++ /dev/null @@ -1,116 +0,0 @@ -export default function Grid({ - swiper, - extendParams -}) { - extendParams({ - grid: { - rows: 1, - fill: 'column' - } - }); - let slidesNumberEvenToRows; - let slidesPerRow; - let numFullColumns; - - const initSlides = slidesLength => { - const { - slidesPerView - } = swiper.params; - const { - rows, - fill - } = swiper.params.grid; - slidesPerRow = slidesNumberEvenToRows / rows; - 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); - } - }; - - const updateSlide = (i, slide, slidesLength, getDirectionLabel) => { - const { - slidesPerGroup, - spaceBetween - } = swiper.params; - const { - rows, - fill - } = swiper.params.grid; // 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.css({ - '-webkit-order': newSlideOrderIndex, - 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.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : ''); - }; - - const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => { - const { - spaceBetween, - centeredSlides, - roundLengths - } = swiper.params; - const { - rows - } = swiper.params.grid; - swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; - swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; - swiper.$wrapperEl.css({ - [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px` - }); - - if (centeredSlides) { - snapGrid.splice(0, snapGrid.length); - 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.push(...newSlidesGrid); - } - }; - - swiper.grid = { - initSlides, - updateSlide, - updateWrapperSize - }; -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/grid/grid.less b/resources/web/include/swiper/modules/grid/grid.less deleted file mode 100644 index 136cb654c1..0000000000 --- a/resources/web/include/swiper/modules/grid/grid.less +++ /dev/null @@ -1,7 +0,0 @@ -.swiper-grid > .swiper-wrapper { - flex-wrap: wrap; -} -.swiper-grid-column > .swiper-wrapper { - flex-wrap: wrap; - flex-direction: column; -} diff --git a/resources/web/include/swiper/modules/grid/grid.min.css b/resources/web/include/swiper/modules/grid/grid.min.css deleted file mode 100644 index 7d5f8f9226..0000000000 --- a/resources/web/include/swiper/modules/grid/grid.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/grid/grid.scss b/resources/web/include/swiper/modules/grid/grid.scss deleted file mode 100644 index 136cb654c1..0000000000 --- a/resources/web/include/swiper/modules/grid/grid.scss +++ /dev/null @@ -1,7 +0,0 @@ -.swiper-grid > .swiper-wrapper { - flex-wrap: wrap; -} -.swiper-grid-column > .swiper-wrapper { - flex-wrap: wrap; - flex-direction: column; -} diff --git a/resources/web/include/swiper/modules/hash-navigation/hash-navigation.js b/resources/web/include/swiper/modules/hash-navigation/hash-navigation.js deleted file mode 100644 index 50556c7f3d..0000000000 --- a/resources/web/include/swiper/modules/hash-navigation/hash-navigation.js +++ /dev/null @@ -1,96 +0,0 @@ -import { getWindow, getDocument } from 'ssr-window'; -import $ from '../../shared/dom.js'; -export default function HashNavigation({ - swiper, - extendParams, - emit, - on -}) { - let initialized = false; - const document = getDocument(); - const window = getWindow(); - extendParams({ - hashNavigation: { - enabled: false, - replaceState: false, - watchState: false - } - }); - - const onHashChange = () => { - emit('hashChange'); - const newHash = document.location.hash.replace('#', ''); - const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash'); - - if (newHash !== activeSlideHash) { - const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index(); - if (typeof newIndex === 'undefined') return; - swiper.slideTo(newIndex); - } - }; - - const setHash = () => { - if (!initialized || !swiper.params.hashNavigation.enabled) return; - - if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { - window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''); - emit('hashSet'); - } else { - const slide = swiper.slides.eq(swiper.activeIndex); - const hash = slide.attr('data-hash') || slide.attr('data-history'); - document.location.hash = hash || ''; - 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; - - for (let i = 0, length = swiper.slides.length; i < length; i += 1) { - const slide = swiper.slides.eq(i); - const slideHash = slide.attr('data-hash') || slide.attr('data-history'); - - if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) { - const index = slide.index(); - swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true); - } - } - } - - if (swiper.params.hashNavigation.watchState) { - $(window).on('hashchange', onHashChange); - } - }; - - const destroy = () => { - if (swiper.params.hashNavigation.watchState) { - $(window).off('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(); - } - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/hash-navigation/hash-navigation.less b/resources/web/include/swiper/modules/hash-navigation/hash-navigation.less deleted file mode 100644 index eafcdd6f56..0000000000 --- a/resources/web/include/swiper/modules/hash-navigation/hash-navigation.less +++ /dev/null @@ -1,2 +0,0 @@ -@import url('../../swiper-vars.less'); - diff --git a/resources/web/include/swiper/modules/hash-navigation/hash-navigation.min.css b/resources/web/include/swiper/modules/hash-navigation/hash-navigation.min.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/hash-navigation/hash-navigation.scss b/resources/web/include/swiper/modules/hash-navigation/hash-navigation.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/history/history.js b/resources/web/include/swiper/modules/history/history.js deleted file mode 100644 index 84c59dd303..0000000000 --- a/resources/web/include/swiper/modules/history/history.js +++ /dev/null @@ -1,150 +0,0 @@ -import { getWindow } from 'ssr-window'; -export default function History({ - swiper, - extendParams, - on -}) { - extendParams({ - history: { - enabled: false, - root: '', - replaceState: false, - key: 'slides' - } - }); - 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.slides.eq(index); - let value = slugify(slide.attr('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}/${value}`; - } else if (!location.pathname.includes(key)) { - value = `${key}/${value}`; - } - - 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.eq(i); - const slideHistory = slugify(slide.attr('data-history')); - - if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) { - const index = slide.index(); - swiper.slideTo(index, speed, runCallbacks); - } - } - } else { - swiper.slideTo(0, speed, runCallbacks); - } - }; - - const setHistoryPopState = () => { - paths = getPathValues(swiper.params.url); - scrollToSlide(swiper.params.speed, swiper.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) 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); - } - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/history/history.less b/resources/web/include/swiper/modules/history/history.less deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/history/history.min.css b/resources/web/include/swiper/modules/history/history.min.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/history/history.scss b/resources/web/include/swiper/modules/history/history.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/keyboard/keyboard.js b/resources/web/include/swiper/modules/keyboard/keyboard.js deleted file mode 100644 index bb24e7e463..0000000000 --- a/resources/web/include/swiper/modules/keyboard/keyboard.js +++ /dev/null @@ -1,131 +0,0 @@ -/* eslint-disable consistent-return */ -import { getWindow, getDocument } from 'ssr-window'; -import $ from '../../shared/dom.js'; -export default function Keyboard({ - swiper, - extendParams, - on, - emit -}) { - const document = getDocument(); - const window = getWindow(); - swiper.keyboard = { - enabled: false - }; - extendParams({ - keyboard: { - enabled: false, - onlyInViewport: true, - pageUpDown: true - } - }); - - 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.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 (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) { - return undefined; - } - - const $el = swiper.$el; - const swiperWidth = $el[0].clientWidth; - const swiperHeight = $el[0].clientHeight; - const windowWidth = window.innerWidth; - const windowHeight = window.innerHeight; - const swiperOffset = swiper.$el.offset(); - if (rtl) swiperOffset.left -= swiper.$el[0].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; - } - - 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(); - if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); - } else { - if (isPageUp || isPageDown || isArrowUp || isArrowDown) { - if (e.preventDefault) e.preventDefault();else e.returnValue = false; - } - - if (isPageDown || isArrowDown) swiper.slideNext(); - if (isPageUp || isArrowUp) swiper.slidePrev(); - } - - emit('keyPress', kc); - return undefined; - } - - function enable() { - if (swiper.keyboard.enabled) return; - $(document).on('keydown', handle); - swiper.keyboard.enabled = true; - } - - function disable() { - if (!swiper.keyboard.enabled) return; - $(document).off('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 - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/keyboard/keyboard.less b/resources/web/include/swiper/modules/keyboard/keyboard.less deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/keyboard/keyboard.min.css b/resources/web/include/swiper/modules/keyboard/keyboard.min.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/keyboard/keyboard.scss b/resources/web/include/swiper/modules/keyboard/keyboard.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/lazy/lazy.js b/resources/web/include/swiper/modules/lazy/lazy.js deleted file mode 100644 index cfba3111b0..0000000000 --- a/resources/web/include/swiper/modules/lazy/lazy.js +++ /dev/null @@ -1,283 +0,0 @@ -import { getWindow } from 'ssr-window'; -import $ from '../../shared/dom.js'; -export default function Lazy({ - swiper, - extendParams, - on, - emit -}) { - extendParams({ - lazy: { - checkInView: false, - enabled: false, - loadPrevNext: false, - loadPrevNextAmount: 1, - loadOnTransitionStart: false, - scrollingElement: '', - elementClass: 'swiper-lazy', - loadingClass: 'swiper-lazy-loading', - loadedClass: 'swiper-lazy-loaded', - preloaderClass: 'swiper-lazy-preloader' - } - }); - swiper.lazy = {}; - let scrollHandlerAttached = false; - let initialImageLoaded = false; - - function loadInSlide(index, loadInDuplicate = true) { - const params = swiper.params.lazy; - if (typeof index === 'undefined') return; - if (swiper.slides.length === 0) return; - const isVirtual = swiper.virtual && swiper.params.virtual.enabled; - const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`) : swiper.slides.eq(index); - const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`); - - if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) { - $images.push($slideEl[0]); - } - - if ($images.length === 0) return; - $images.each(imageEl => { - const $imageEl = $(imageEl); - $imageEl.addClass(params.loadingClass); - const background = $imageEl.attr('data-background'); - const src = $imageEl.attr('data-src'); - const srcset = $imageEl.attr('data-srcset'); - const sizes = $imageEl.attr('data-sizes'); - const $pictureEl = $imageEl.parent('picture'); - swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => { - if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return; - - if (background) { - $imageEl.css('background-image', `url("${background}")`); - $imageEl.removeAttr('data-background'); - } else { - if (srcset) { - $imageEl.attr('srcset', srcset); - $imageEl.removeAttr('data-srcset'); - } - - if (sizes) { - $imageEl.attr('sizes', sizes); - $imageEl.removeAttr('data-sizes'); - } - - if ($pictureEl.length) { - $pictureEl.children('source').each(sourceEl => { - const $source = $(sourceEl); - - if ($source.attr('data-srcset')) { - $source.attr('srcset', $source.attr('data-srcset')); - $source.removeAttr('data-srcset'); - } - }); - } - - if (src) { - $imageEl.attr('src', src); - $imageEl.removeAttr('data-src'); - } - } - - $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); - $slideEl.find(`.${params.preloaderClass}`).remove(); - - if (swiper.params.loop && loadInDuplicate) { - const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index'); - - if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) { - const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`); - loadInSlide(originalSlide.index(), false); - } else { - const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`); - loadInSlide(duplicatedSlide.index(), false); - } - } - - emit('lazyImageReady', $slideEl[0], $imageEl[0]); - - if (swiper.params.autoHeight) { - swiper.updateAutoHeight(); - } - }); - emit('lazyImageLoad', $slideEl[0], $imageEl[0]); - }); - } - - function load() { - const { - $wrapperEl, - params: swiperParams, - slides, - activeIndex - } = swiper; - const isVirtual = swiper.virtual && swiperParams.virtual.enabled; - const params = swiperParams.lazy; - let slidesPerView = swiperParams.slidesPerView; - - if (slidesPerView === 'auto') { - slidesPerView = 0; - } - - function slideExist(index) { - if (isVirtual) { - if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) { - return true; - } - } else if (slides[index]) return true; - - return false; - } - - function slideIndex(slideEl) { - if (isVirtual) { - return $(slideEl).attr('data-swiper-slide-index'); - } - - return $(slideEl).index(); - } - - if (!initialImageLoaded) initialImageLoaded = true; - - if (swiper.params.watchSlidesProgress) { - $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => { - const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index(); - loadInSlide(index); - }); - } else if (slidesPerView > 1) { - for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) { - if (slideExist(i)) loadInSlide(i); - } - } else { - loadInSlide(activeIndex); - } - - if (params.loadPrevNext) { - if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) { - const amount = params.loadPrevNextAmount; - const spv = slidesPerView; - const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); - const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides - - for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) { - if (slideExist(i)) loadInSlide(i); - } // Prev Slides - - - for (let i = minIndex; i < activeIndex; i += 1) { - if (slideExist(i)) loadInSlide(i); - } - } else { - const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`); - if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide)); - const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`); - if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide)); - } - } - } - - function checkInViewOnLoad() { - const window = getWindow(); - if (!swiper || swiper.destroyed) return; - const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window); - const isWindow = $scrollElement[0] === window; - const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth; - const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight; - const swiperOffset = swiper.$el.offset(); - const { - rtlTranslate: rtl - } = swiper; - let inView = false; - if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft; - const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]]; - - for (let i = 0; i < swiperCoord.length; i += 1) { - const point = swiperCoord[i]; - - if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) { - if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line - - inView = true; - } - } - - const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? { - passive: true, - capture: false - } : false; - - if (inView) { - load(); - $scrollElement.off('scroll', checkInViewOnLoad, passiveListener); - } else if (!scrollHandlerAttached) { - scrollHandlerAttached = true; - $scrollElement.on('scroll', checkInViewOnLoad, passiveListener); - } - } - - on('beforeInit', () => { - if (swiper.params.lazy.enabled && swiper.params.preloadImages) { - swiper.params.preloadImages = false; - } - }); - on('init', () => { - if (swiper.params.lazy.enabled) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - }); - on('scroll', () => { - if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) { - load(); - } - }); - on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => { - if (swiper.params.lazy.enabled) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - }); - on('transitionStart', () => { - if (swiper.params.lazy.enabled) { - if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - } - }); - on('transitionEnd', () => { - if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - }); - on('slideChange', () => { - const { - lazy, - cssMode, - watchSlidesProgress, - touchReleaseOnEdges, - resistanceRatio - } = swiper.params; - - if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) { - load(); - } - }); - Object.assign(swiper.lazy, { - load, - loadInSlide - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/lazy/lazy.less b/resources/web/include/swiper/modules/lazy/lazy.less deleted file mode 100644 index caaf125617..0000000000 --- a/resources/web/include/swiper/modules/lazy/lazy.less +++ /dev/null @@ -1,34 +0,0 @@ -/* Preloader */ -:root { - /* - --swiper-preloader-color: var(--swiper-theme-color); - */ -} -.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%; - animation: swiper-preloader-spin 1s infinite linear; - box-sizing: border-box; - border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); - border-radius: 50%; - border-top-color: transparent; -} - -.swiper-lazy-preloader-white { - --swiper-preloader-color: #fff; -} -.swiper-lazy-preloader-black { - --swiper-preloader-color: #000; -} -@keyframes swiper-preloader-spin { - 100% { - transform: rotate(360deg); - } -} diff --git a/resources/web/include/swiper/modules/lazy/lazy.min.css b/resources/web/include/swiper/modules/lazy/lazy.min.css deleted file mode 100644 index e73cca095c..0000000000 --- a/resources/web/include/swiper/modules/lazy/lazy.min.css +++ /dev/null @@ -1 +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%;animation:swiper-preloader-spin 1s infinite linear;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/lazy/lazy.scss b/resources/web/include/swiper/modules/lazy/lazy.scss deleted file mode 100644 index caaf125617..0000000000 --- a/resources/web/include/swiper/modules/lazy/lazy.scss +++ /dev/null @@ -1,34 +0,0 @@ -/* Preloader */ -:root { - /* - --swiper-preloader-color: var(--swiper-theme-color); - */ -} -.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%; - animation: swiper-preloader-spin 1s infinite linear; - box-sizing: border-box; - border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); - border-radius: 50%; - border-top-color: transparent; -} - -.swiper-lazy-preloader-white { - --swiper-preloader-color: #fff; -} -.swiper-lazy-preloader-black { - --swiper-preloader-color: #000; -} -@keyframes swiper-preloader-spin { - 100% { - transform: rotate(360deg); - } -} diff --git a/resources/web/include/swiper/modules/manipulation/manipulation.js b/resources/web/include/swiper/modules/manipulation/manipulation.js deleted file mode 100644 index c4b176b733..0000000000 --- a/resources/web/include/swiper/modules/manipulation/manipulation.js +++ /dev/null @@ -1,16 +0,0 @@ -import appendSlide from './methods/appendSlide.js'; -import prependSlide from './methods/prependSlide.js'; -import addSlide from './methods/addSlide.js'; -import removeSlide from './methods/removeSlide.js'; -import removeAllSlides from './methods/removeAllSlides.js'; -export default 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) - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/manipulation/manipulation.less b/resources/web/include/swiper/modules/manipulation/manipulation.less deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/manipulation/manipulation.min.css b/resources/web/include/swiper/modules/manipulation/manipulation.min.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/manipulation/manipulation.scss b/resources/web/include/swiper/modules/manipulation/manipulation.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/manipulation/methods/addSlide.js b/resources/web/include/swiper/modules/manipulation/methods/addSlide.js deleted file mode 100644 index 6b830084d5..0000000000 --- a/resources/web/include/swiper/modules/manipulation/methods/addSlide.js +++ /dev/null @@ -1,64 +0,0 @@ -export default function addSlide(index, slides) { - const swiper = this; - const { - $wrapperEl, - params, - activeIndex - } = swiper; - let activeIndexBuffer = activeIndex; - - if (params.loop) { - activeIndexBuffer -= swiper.loopedSlides; - swiper.loopDestroy(); - swiper.slides = $wrapperEl.children(`.${params.slideClass}`); - } - - 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.eq(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]) $wrapperEl.append(slides[i]); - } - - newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; - } else { - $wrapperEl.append(slides); - } - - for (let i = 0; i < slidesBuffer.length; i += 1) { - $wrapperEl.append(slidesBuffer[i]); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - swiper.update(); - } - - if (params.loop) { - swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); - } else { - swiper.slideTo(newActiveIndex, 0, false); - } -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/manipulation/methods/appendSlide.js b/resources/web/include/swiper/modules/manipulation/methods/appendSlide.js deleted file mode 100644 index 9a649af2a9..0000000000 --- a/resources/web/include/swiper/modules/manipulation/methods/appendSlide.js +++ /dev/null @@ -1,27 +0,0 @@ -export default function appendSlide(slides) { - const swiper = this; - const { - $wrapperEl, - params - } = swiper; - - if (params.loop) { - swiper.loopDestroy(); - } - - if (typeof slides === 'object' && 'length' in slides) { - for (let i = 0; i < slides.length; i += 1) { - if (slides[i]) $wrapperEl.append(slides[i]); - } - } else { - $wrapperEl.append(slides); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - swiper.update(); - } -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/manipulation/methods/prependSlide.js b/resources/web/include/swiper/modules/manipulation/methods/prependSlide.js deleted file mode 100644 index 2195621a3e..0000000000 --- a/resources/web/include/swiper/modules/manipulation/methods/prependSlide.js +++ /dev/null @@ -1,34 +0,0 @@ -export default function prependSlide(slides) { - const swiper = this; - const { - params, - $wrapperEl, - activeIndex - } = swiper; - - if (params.loop) { - swiper.loopDestroy(); - } - - let newActiveIndex = activeIndex + 1; - - if (typeof slides === 'object' && 'length' in slides) { - for (let i = 0; i < slides.length; i += 1) { - if (slides[i]) $wrapperEl.prepend(slides[i]); - } - - newActiveIndex = activeIndex + slides.length; - } else { - $wrapperEl.prepend(slides); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - swiper.update(); - } - - swiper.slideTo(newActiveIndex, 0, false); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/manipulation/methods/removeAllSlides.js b/resources/web/include/swiper/modules/manipulation/methods/removeAllSlides.js deleted file mode 100644 index f24e494c48..0000000000 --- a/resources/web/include/swiper/modules/manipulation/methods/removeAllSlides.js +++ /dev/null @@ -1,10 +0,0 @@ -export default function removeAllSlides() { - const swiper = this; - const slidesIndexes = []; - - for (let i = 0; i < swiper.slides.length; i += 1) { - slidesIndexes.push(i); - } - - swiper.removeSlide(slidesIndexes); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/manipulation/methods/removeSlide.js b/resources/web/include/swiper/modules/manipulation/methods/removeSlide.js deleted file mode 100644 index 2cf6373175..0000000000 --- a/resources/web/include/swiper/modules/manipulation/methods/removeSlide.js +++ /dev/null @@ -1,47 +0,0 @@ -export default function removeSlide(slidesIndexes) { - const swiper = this; - const { - params, - $wrapperEl, - activeIndex - } = swiper; - let activeIndexBuffer = activeIndex; - - if (params.loop) { - activeIndexBuffer -= swiper.loopedSlides; - swiper.loopDestroy(); - swiper.slides = $wrapperEl.children(`.${params.slideClass}`); - } - - 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.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex -= 1; - } - - newActiveIndex = Math.max(newActiveIndex, 0); - } else { - indexToRemove = slidesIndexes; - if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex -= 1; - newActiveIndex = Math.max(newActiveIndex, 0); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - swiper.update(); - } - - if (params.loop) { - swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); - } else { - swiper.slideTo(newActiveIndex, 0, false); - } -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/mousewheel/mousewheel.js b/resources/web/include/swiper/modules/mousewheel/mousewheel.js deleted file mode 100644 index 4907c564e1..0000000000 --- a/resources/web/include/swiper/modules/mousewheel/mousewheel.js +++ /dev/null @@ -1,422 +0,0 @@ -/* eslint-disable consistent-return */ -import { getWindow } from 'ssr-window'; -import $ from '../../shared/dom.js'; -import { now, nextTick } from '../../shared/utils.js'; -export default 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 - } - }); - 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; - const params = swiper.params.mousewheel; - - if (swiper.params.cssMode) { - e.preventDefault(); - } - - let target = swiper.$el; - - if (swiper.params.mousewheel.eventsTarget !== 'container') { - target = $(swiper.params.mousewheel.eventsTarget); - } - - if (!swiper.mouseEntered && !target[0].contains(e.target) && !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; - - if (swiper.params.loop) { - swiper.loopFix(); - } - - 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.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(() => { - 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(() => { - 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.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions - - if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true; - } - } - - if (e.preventDefault) e.preventDefault();else e.returnValue = false; - return false; - } - - function events(method) { - let target = swiper.$el; - - if (swiper.params.mousewheel.eventsTarget !== 'container') { - target = $(swiper.params.mousewheel.eventsTarget); - } - - target[method]('mouseenter', handleMouseEnter); - target[method]('mouseleave', handleMouseLeave); - target[method]('wheel', handle); - } - - function enable() { - if (swiper.params.cssMode) { - swiper.wrapperEl.removeEventListener('wheel', handle); - return true; - } - - if (swiper.mousewheel.enabled) return false; - events('on'); - 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('off'); - 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 - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/mousewheel/mousewheel.less b/resources/web/include/swiper/modules/mousewheel/mousewheel.less deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/mousewheel/mousewheel.min.css b/resources/web/include/swiper/modules/mousewheel/mousewheel.min.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/mousewheel/mousewheel.scss b/resources/web/include/swiper/modules/mousewheel/mousewheel.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/navigation/navigation.js b/resources/web/include/swiper/modules/navigation/navigation.js deleted file mode 100644 index bfe98802c9..0000000000 --- a/resources/web/include/swiper/modules/navigation/navigation.js +++ /dev/null @@ -1,185 +0,0 @@ -import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js'; -import $ from '../../shared/dom.js'; -export default function Navigation({ - swiper, - extendParams, - on, - emit -}) { - extendParams({ - navigation: { - nextEl: null, - prevEl: null, - hideOnClick: false, - disabledClass: 'swiper-button-disabled', - hiddenClass: 'swiper-button-hidden', - lockClass: 'swiper-button-lock' - } - }); - swiper.navigation = { - nextEl: null, - $nextEl: null, - prevEl: null, - $prevEl: null - }; - - function getEl(el) { - let $el; - - if (el) { - $el = $(el); - - if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) { - $el = swiper.$el.find(el); - } - } - - return $el; - } - - function toggleEl($el, disabled) { - const params = swiper.params.navigation; - - if ($el && $el.length > 0) { - $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass); - if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled; - - if (swiper.params.watchOverflow && swiper.enabled) { - $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); - } - } - } - - function update() { - // Update Navigation Buttons - if (swiper.params.loop) return; - const { - $nextEl, - $prevEl - } = swiper.navigation; - toggleEl($prevEl, swiper.isBeginning); - toggleEl($nextEl, swiper.isEnd); - } - - function onPrevClick(e) { - e.preventDefault(); - if (swiper.isBeginning && !swiper.params.loop) return; - swiper.slidePrev(); - } - - function onNextClick(e) { - e.preventDefault(); - if (swiper.isEnd && !swiper.params.loop) return; - swiper.slideNext(); - } - - 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; - const $nextEl = getEl(params.nextEl); - const $prevEl = getEl(params.prevEl); - - if ($nextEl && $nextEl.length > 0) { - $nextEl.on('click', onNextClick); - } - - if ($prevEl && $prevEl.length > 0) { - $prevEl.on('click', onPrevClick); - } - - Object.assign(swiper.navigation, { - $nextEl, - nextEl: $nextEl && $nextEl[0], - $prevEl, - prevEl: $prevEl && $prevEl[0] - }); - - if (!swiper.enabled) { - if ($nextEl) $nextEl.addClass(params.lockClass); - if ($prevEl) $prevEl.addClass(params.lockClass); - } - } - - function destroy() { - const { - $nextEl, - $prevEl - } = swiper.navigation; - - if ($nextEl && $nextEl.length) { - $nextEl.off('click', onNextClick); - $nextEl.removeClass(swiper.params.navigation.disabledClass); - } - - if ($prevEl && $prevEl.length) { - $prevEl.off('click', onPrevClick); - $prevEl.removeClass(swiper.params.navigation.disabledClass); - } - } - - on('init', () => { - init(); - update(); - }); - on('toEdge fromEdge lock unlock', () => { - update(); - }); - on('destroy', () => { - destroy(); - }); - on('enable disable', () => { - const { - $nextEl, - $prevEl - } = swiper.navigation; - - if ($nextEl) { - $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass); - } - - if ($prevEl) { - $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass); - } - }); - on('click', (_s, e) => { - const { - $nextEl, - $prevEl - } = swiper.navigation; - const targetEl = e.target; - - if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) { - if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; - let isHidden; - - if ($nextEl) { - isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass); - } else if ($prevEl) { - isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass); - } - - if (isHidden === true) { - emit('navigationShow'); - } else { - emit('navigationHide'); - } - - if ($nextEl) { - $nextEl.toggleClass(swiper.params.navigation.hiddenClass); - } - - if ($prevEl) { - $prevEl.toggleClass(swiper.params.navigation.hiddenClass); - } - } - }); - Object.assign(swiper.navigation, { - update, - init, - destroy - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/navigation/navigation.less b/resources/web/include/swiper/modules/navigation/navigation.less deleted file mode 100644 index 84c535fe7f..0000000000 --- a/resources/web/include/swiper/modules/navigation/navigation.less +++ /dev/null @@ -1,55 +0,0 @@ -@import url('../../swiper-vars.less'); - -:root { - --swiper-navigation-size: 44px; - /* - --swiper-navigation-color: var(--swiper-theme-color); - */ -} -.swiper-button-prev, -.swiper-button-next { - position: absolute; - top: 50%; - width: calc(var(--swiper-navigation-size) / 44 * 27); - height: var(--swiper-navigation-size); - margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); - 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; - } - &:after { - font-family: swiper-icons; - font-size: var(--swiper-navigation-size); - text-transform: none !important; - letter-spacing: 0; - text-transform: none; - font-variant: initial; - line-height: 1; - } -} -.swiper-button-prev, -.swiper-rtl .swiper-button-next { - &:after { - content: 'prev'; - } - left: 10px; - right: auto; -} -.swiper-button-next, -.swiper-rtl .swiper-button-prev { - &:after { - content: 'next'; - } - right: 10px; - left: auto; -} -.swiper-button-lock { - display: none; -} diff --git a/resources/web/include/swiper/modules/navigation/navigation.min.css b/resources/web/include/swiper/modules/navigation/navigation.min.css deleted file mode 100644 index 41446eb392..0000000000 --- a/resources/web/include/swiper/modules/navigation/navigation.min.css +++ /dev/null @@ -1 +0,0 @@ -:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;text-transform:none;font-variant:initial;line-height:1}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-button-lock{display:none} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/navigation/navigation.scss b/resources/web/include/swiper/modules/navigation/navigation.scss deleted file mode 100644 index b84d59c231..0000000000 --- a/resources/web/include/swiper/modules/navigation/navigation.scss +++ /dev/null @@ -1,56 +0,0 @@ -@import '../../swiper-vars.scss'; - -:root { - --swiper-navigation-size: 44px; - /* - --swiper-navigation-color: var(--swiper-theme-color); - */ -} -.swiper-button-prev, -.swiper-button-next { - position: absolute; - top: 50%; - width: calc(var(--swiper-navigation-size) / 44 * 27); - height: var(--swiper-navigation-size); - margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); - 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; - } - &:after { - font-family: swiper-icons; - font-size: var(--swiper-navigation-size); - text-transform: none !important; - letter-spacing: 0; - text-transform: none; - font-variant: initial; - line-height: 1; - } -} -.swiper-button-prev, -.swiper-rtl .swiper-button-next { - &:after { - content: 'prev'; - } - left: 10px; - right: auto; -} -.swiper-button-next, -.swiper-rtl .swiper-button-prev { - &:after { - content: 'next'; - } - right: 10px; - left: auto; -} - -.swiper-button-lock { - display: none; -} diff --git a/resources/web/include/swiper/modules/pagination/pagination.js b/resources/web/include/swiper/modules/pagination/pagination.js deleted file mode 100644 index 58c28738ad..0000000000 --- a/resources/web/include/swiper/modules/pagination/pagination.js +++ /dev/null @@ -1,410 +0,0 @@ -import $ from '../../shared/dom.js'; -import classesToSelector from '../../shared/classes-to-selector.js'; -import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js'; -export default 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` - } - }); - swiper.pagination = { - el: null, - $el: null, - bullets: [] - }; - let bulletSize; - let dynamicBulletIndex = 0; - - function isPaginationDisabled() { - return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0; - } - - function setSideBullets($bulletEl, position) { - const { - bulletActiveClass - } = swiper.params.pagination; - $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`); - } - - function update() { - // Render || Update Pagination bullets/items - const rtl = swiper.rtl; - const params = swiper.params.pagination; - if (isPaginationDisabled()) return; - const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; - const $el = swiper.pagination.$el; // Current/Total - - let current; - const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; - - if (swiper.params.loop) { - current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); - - if (current > slidesLength - 1 - swiper.loopedSlides * 2) { - current -= slidesLength - swiper.loopedSlides * 2; - } - - if (current > total - 1) current -= total; - if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current; - } else if (typeof swiper.snapIndex !== 'undefined') { - current = swiper.snapIndex; - } else { - 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 = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true); - $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`); - - if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { - dynamicBulletIndex += current - swiper.previousIndex; - - if (dynamicBulletIndex > params.dynamicMainBullets - 1) { - dynamicBulletIndex = params.dynamicMainBullets - 1; - } else if (dynamicBulletIndex < 0) { - dynamicBulletIndex = 0; - } - } - - firstIndex = current - dynamicBulletIndex; - lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); - midIndex = (lastIndex + firstIndex) / 2; - } - - bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' ')); - - if ($el.length > 1) { - bullets.each(bullet => { - const $bullet = $(bullet); - const bulletIndex = $bullet.index(); - - if (bulletIndex === current) { - $bullet.addClass(params.bulletActiveClass); - } - - if (params.dynamicBullets) { - if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { - $bullet.addClass(`${params.bulletActiveClass}-main`); - } - - if (bulletIndex === firstIndex) { - setSideBullets($bullet, 'prev'); - } - - if (bulletIndex === lastIndex) { - setSideBullets($bullet, 'next'); - } - } - }); - } else { - const $bullet = bullets.eq(current); - const bulletIndex = $bullet.index(); - $bullet.addClass(params.bulletActiveClass); - - if (params.dynamicBullets) { - const $firstDisplayedBullet = bullets.eq(firstIndex); - const $lastDisplayedBullet = bullets.eq(lastIndex); - - for (let i = firstIndex; i <= lastIndex; i += 1) { - bullets.eq(i).addClass(`${params.bulletActiveClass}-main`); - } - - if (swiper.params.loop) { - if (bulletIndex >= bullets.length - params.dynamicMainBullets) { - for (let i = params.dynamicMainBullets; i >= 0; i -= 1) { - bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`); - } - - bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`); - } else { - setSideBullets($firstDisplayedBullet, 'prev'); - setSideBullets($lastDisplayedBullet, 'next'); - } - } else { - 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.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`); - } - } - - if (params.type === 'fraction') { - $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1)); - $el.find(classesToSelector(params.totalClass)).text(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; - } - - $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed); - } - - if (params.type === 'custom' && params.renderCustom) { - $el.html(params.renderCustom(swiper, current + 1, total)); - emit('paginationRender', $el[0]); - } else { - emit('paginationUpdate', $el[0]); - } - - if (swiper.params.watchOverflow && swiper.enabled) { - $el[swiper.isLocked ? 'addClass' : 'removeClass'](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.slides.length; - const $el = swiper.pagination.$el; - let paginationHTML = ''; - - if (params.type === 'bullets') { - let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; - - if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) { - numberOfBullets = slidesLength; - } - - for (let i = 0; i < numberOfBullets; i += 1) { - if (params.renderBullet) { - paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); - } else { - paginationHTML += `<${params.bulletElement} class="${params.bulletClass}">`; - } - } - - $el.html(paginationHTML); - swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass)); - } - - if (params.type === 'fraction') { - if (params.renderFraction) { - paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); - } else { - paginationHTML = `` + ' / ' + ``; - } - - $el.html(paginationHTML); - } - - if (params.type === 'progressbar') { - if (params.renderProgressbar) { - paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); - } else { - paginationHTML = ``; - } - - $el.html(paginationHTML); - } - - if (params.type !== 'custom') { - emit('paginationRender', swiper.pagination.$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 = $(params.el); - if ($el.length === 0) return; - - if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) { - $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper - - if ($el.length > 1) { - $el = $el.filter(el => { - if ($(el).parents('.swiper')[0] !== swiper.el) return false; - return true; - }); - } - } - - if (params.type === 'bullets' && params.clickable) { - $el.addClass(params.clickableClass); - } - - $el.addClass(params.modifierClass + params.type); - $el.addClass(params.modifierClass + swiper.params.direction); - - if (params.type === 'bullets' && params.dynamicBullets) { - $el.addClass(`${params.modifierClass}${params.type}-dynamic`); - dynamicBulletIndex = 0; - - if (params.dynamicMainBullets < 1) { - params.dynamicMainBullets = 1; - } - } - - if (params.type === 'progressbar' && params.progressbarOpposite) { - $el.addClass(params.progressbarOppositeClass); - } - - if (params.clickable) { - $el.on('click', classesToSelector(params.bulletClass), function onClick(e) { - e.preventDefault(); - let index = $(this).index() * swiper.params.slidesPerGroup; - if (swiper.params.loop) index += swiper.loopedSlides; - swiper.slideTo(index); - }); - } - - Object.assign(swiper.pagination, { - $el, - el: $el[0] - }); - - if (!swiper.enabled) { - $el.addClass(params.lockClass); - } - } - - function destroy() { - const params = swiper.params.pagination; - if (isPaginationDisabled()) return; - const $el = swiper.pagination.$el; - $el.removeClass(params.hiddenClass); - $el.removeClass(params.modifierClass + params.type); - $el.removeClass(params.modifierClass + swiper.params.direction); - if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass); - - if (params.clickable) { - $el.off('click', classesToSelector(params.bulletClass)); - } - } - - on('init', () => { - init(); - render(); - update(); - }); - on('activeIndexChange', () => { - if (swiper.params.loop) { - update(); - } else if (typeof swiper.snapIndex === 'undefined') { - update(); - } - }); - on('snapIndexChange', () => { - if (!swiper.params.loop) { - update(); - } - }); - on('slidesLengthChange', () => { - if (swiper.params.loop) { - render(); - update(); - } - }); - on('snapGridLengthChange', () => { - if (!swiper.params.loop) { - render(); - update(); - } - }); - on('destroy', () => { - destroy(); - }); - on('enable disable', () => { - const { - $el - } = swiper.pagination; - - if ($el) { - $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass); - } - }); - on('lock unlock', () => { - update(); - }); - on('click', (_s, e) => { - const targetEl = e.target; - const { - $el - } = swiper.pagination; - - if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(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.hasClass(swiper.params.pagination.hiddenClass); - - if (isHidden === true) { - emit('paginationShow'); - } else { - emit('paginationHide'); - } - - $el.toggleClass(swiper.params.pagination.hiddenClass); - } - }); - Object.assign(swiper.pagination, { - render, - update, - init, - destroy - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/pagination/pagination.less b/resources/web/include/swiper/modules/pagination/pagination.less deleted file mode 100644 index b245ae6833..0000000000 --- a/resources/web/include/swiper/modules/pagination/pagination.less +++ /dev/null @@ -1,163 +0,0 @@ -@import url('../../swiper-vars.less'); - -:root { - /* - --swiper-pagination-color: var(--swiper-theme-color); - --swiper-pagination-bullet-size: 8px; - --swiper-pagination-bullet-width: 8px; - --swiper-pagination-bullet-height: 8px; - --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; - } -} -/* Common Styles */ -.swiper-pagination-fraction, -.swiper-pagination-custom, -.swiper-horizontal > .swiper-pagination-bullets, -.swiper-pagination-bullets.swiper-pagination-horizontal { - bottom: 10px; - 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: 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: 10px; - 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; -} -/* Progress */ -.swiper-pagination-progressbar { - background: 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: 4px; - left: 0; - top: 0; - } - .swiper-vertical > &, - &.swiper-pagination-vertical, - .swiper-horizontal > &.swiper-pagination-progressbar-opposite, - &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { - width: 4px; - height: 100%; - left: 0; - top: 0; - } -} -.swiper-pagination-lock { - display: none; -} diff --git a/resources/web/include/swiper/modules/pagination/pagination.min.css b/resources/web/include/swiper/modules/pagination/pagination.min.css deleted file mode 100644 index cb5e95b159..0000000000 --- a/resources/web/include/swiper/modules/pagination/pagination.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.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(.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{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:50%;background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance: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-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.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:.2s transform,.2s 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:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-progressbar{background:rgba(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-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.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{width:4px;height:100%;left:0;top:0}.swiper-pagination-lock{display:none} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/pagination/pagination.scss b/resources/web/include/swiper/modules/pagination/pagination.scss deleted file mode 100644 index e24b29ae3e..0000000000 --- a/resources/web/include/swiper/modules/pagination/pagination.scss +++ /dev/null @@ -1,163 +0,0 @@ -@import '../../swiper-vars.scss'; - -:root { - /* - --swiper-pagination-color: var(--swiper-theme-color); - --swiper-pagination-bullet-size: 8px; - --swiper-pagination-bullet-width: 8px; - --swiper-pagination-bullet-height: 8px; - --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; - } -} -/* Common Styles */ -.swiper-pagination-fraction, -.swiper-pagination-custom, -.swiper-horizontal > .swiper-pagination-bullets, -.swiper-pagination-bullets.swiper-pagination-horizontal { - bottom: 10px; - 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: 50%; - background: var(--swiper-pagination-bullet-inactive-color, #000); - opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); - @at-root 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: 10px; - 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; -} -/* Progress */ -.swiper-pagination-progressbar { - background: 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: 4px; - left: 0; - top: 0; - } - .swiper-vertical > &, - &.swiper-pagination-vertical, - .swiper-horizontal > &.swiper-pagination-progressbar-opposite, - &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { - width: 4px; - height: 100%; - left: 0; - top: 0; - } -} -.swiper-pagination-lock { - display: none; -} diff --git a/resources/web/include/swiper/modules/parallax/parallax.js b/resources/web/include/swiper/modules/parallax/parallax.js deleted file mode 100644 index 05b2bc86e9..0000000000 --- a/resources/web/include/swiper/modules/parallax/parallax.js +++ /dev/null @@ -1,114 +0,0 @@ -import $ from '../../shared/dom.js'; -export default function Parallax({ - swiper, - extendParams, - on -}) { - extendParams({ - parallax: { - enabled: false - } - }); - - const setTransform = (el, progress) => { - const { - rtl - } = swiper; - const $el = $(el); - const rtlFactor = rtl ? -1 : 1; - const p = $el.attr('data-swiper-parallax') || '0'; - let x = $el.attr('data-swiper-parallax-x'); - let y = $el.attr('data-swiper-parallax-y'); - const scale = $el.attr('data-swiper-parallax-scale'); - const opacity = $el.attr('data-swiper-parallax-opacity'); - - 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[0].style.opacity = currentOpacity; - } - - if (typeof scale === 'undefined' || scale === null) { - $el.transform(`translate3d(${x}, ${y}, 0px)`); - } else { - const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); - $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`); - } - }; - - const setTranslate = () => { - const { - $el, - slides, - progress, - snapGrid - } = swiper; - $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => { - setTransform(el, progress); - }); - slides.each((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).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => { - setTransform(el, slideProgress); - }); - }); - }; - - const setTransition = (duration = swiper.params.speed) => { - const { - $el - } = swiper; - $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => { - const $parallaxEl = $(parallaxEl); - let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration; - if (duration === 0) parallaxDuration = 0; - $parallaxEl.transition(parallaxDuration); - }); - }; - - 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); - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/parallax/parallax.less b/resources/web/include/swiper/modules/parallax/parallax.less deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/parallax/parallax.min.css b/resources/web/include/swiper/modules/parallax/parallax.min.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/parallax/parallax.scss b/resources/web/include/swiper/modules/parallax/parallax.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/scrollbar/scrollbar.js b/resources/web/include/swiper/modules/scrollbar/scrollbar.js deleted file mode 100644 index 9d1cd011d8..0000000000 --- a/resources/web/include/swiper/modules/scrollbar/scrollbar.js +++ /dev/null @@ -1,361 +0,0 @@ -import { getDocument } from 'ssr-window'; -import $ from '../../shared/dom.js'; -import { nextTick } from '../../shared/utils.js'; -import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js'; -export default 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' - } - }); - swiper.scrollbar = { - el: null, - dragEl: null, - $el: null, - $dragEl: null - }; - - function setTranslate() { - if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; - const { - scrollbar, - rtlTranslate: rtl, - progress - } = swiper; - const { - $dragEl, - $el - } = scrollbar; - const params = swiper.params.scrollbar; - 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.transform(`translate3d(${newPos}px, 0, 0)`); - $dragEl[0].style.width = `${newSize}px`; - } else { - $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`); - $dragEl[0].style.height = `${newSize}px`; - } - - if (params.hide) { - clearTimeout(timeout); - $el[0].style.opacity = 1; - timeout = setTimeout(() => { - $el[0].style.opacity = 0; - $el.transition(400); - }, 1000); - } - } - - function setTransition(duration) { - if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; - swiper.scrollbar.$dragEl.transition(duration); - } - - function updateSize() { - if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; - const { - scrollbar - } = swiper; - const { - $dragEl, - $el - } = scrollbar; - $dragEl[0].style.width = ''; - $dragEl[0].style.height = ''; - trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].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[0].style.width = `${dragSize}px`; - } else { - $dragEl[0].style.height = `${dragSize}px`; - } - - if (divider >= 1) { - $el[0].style.display = 'none'; - } else { - $el[0].style.display = ''; - } - - if (swiper.params.scrollbar.hide) { - $el[0].style.opacity = 0; - } - - if (swiper.params.watchOverflow && swiper.enabled) { - scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass); - } - } - - function getPointerPosition(e) { - if (swiper.isHorizontal()) { - return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX; - } - - return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY; - } - - function setDragPosition(e) { - const { - scrollbar, - rtlTranslate: rtl - } = swiper; - const { - $el - } = scrollbar; - let positionRatio; - positionRatio = (getPointerPosition(e) - $el.offset()[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[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; - e.preventDefault(); - e.stopPropagation(); - $wrapperEl.transition(100); - $dragEl.transition(100); - setDragPosition(e); - clearTimeout(dragTimeout); - $el.transition(0); - - if (params.hide) { - $el.css('opacity', 1); - } - - if (swiper.params.cssMode) { - swiper.$wrapperEl.css('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.preventDefault();else e.returnValue = false; - setDragPosition(e); - $wrapperEl.transition(0); - $el.transition(0); - $dragEl.transition(0); - 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.css('scroll-snap-type', ''); - $wrapperEl.transition(''); - } - - if (params.hide) { - clearTimeout(dragTimeout); - dragTimeout = nextTick(() => { - $el.css('opacity', 0); - $el.transition(400); - }, 1000); - } - - emit('scrollbarDragEnd', e); - - if (params.snapOnRelease) { - swiper.slideToClosest(); - } - } - - function events(method) { - const { - scrollbar, - touchEventsTouch, - touchEventsDesktop, - params, - support - } = swiper; - const $el = scrollbar.$el; - const target = $el[0]; - const activeListener = support.passiveListener && params.passiveListeners ? { - passive: false, - capture: false - } : false; - const passiveListener = support.passiveListener && params.passiveListeners ? { - passive: true, - capture: false - } : false; - if (!target) return; - const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; - - if (!support.touch) { - target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener); - document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener); - document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener); - } else { - target[eventMethod](touchEventsTouch.start, onDragStart, activeListener); - target[eventMethod](touchEventsTouch.move, onDragMove, activeListener); - target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener); - } - } - - function enableDraggable() { - if (!swiper.params.scrollbar.el) return; - events('on'); - } - - function disableDraggable() { - if (!swiper.params.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 = $(params.el); - - if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) { - $el = $swiperEl.find(params.el); - } - - let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`); - - if ($dragEl.length === 0) { - $dragEl = $(`
`); - $el.append($dragEl); - } - - Object.assign(scrollbar, { - $el, - el: $el[0], - $dragEl, - dragEl: $dragEl[0] - }); - - if (params.draggable) { - enableDraggable(); - } - - if ($el) { - $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass); - } - } - - function destroy() { - disableDraggable(); - } - - on('init', () => { - init(); - updateSize(); - setTranslate(); - }); - on('update resize observerUpdate lock unlock', () => { - updateSize(); - }); - on('setTranslate', () => { - setTranslate(); - }); - on('setTransition', (_s, duration) => { - setTransition(duration); - }); - on('enable disable', () => { - const { - $el - } = swiper.scrollbar; - - if ($el) { - $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass); - } - }); - on('destroy', () => { - destroy(); - }); - Object.assign(swiper.scrollbar, { - updateSize, - setTranslate, - init, - destroy - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/scrollbar/scrollbar.less b/resources/web/include/swiper/modules/scrollbar/scrollbar.less deleted file mode 100644 index e6f133b1d2..0000000000 --- a/resources/web/include/swiper/modules/scrollbar/scrollbar.less +++ /dev/null @@ -1,38 +0,0 @@ -/* Scrollbar */ -.swiper-scrollbar { - border-radius: 10px; - position: relative; - -ms-touch-action: none; - background: rgba(0, 0, 0, 0.1); - .swiper-horizontal > & { - position: absolute; - left: 1%; - bottom: 3px; - z-index: 50; - height: 5px; - width: 98%; - } - .swiper-vertical > & { - position: absolute; - right: 3px; - top: 1%; - z-index: 50; - width: 5px; - height: 98%; - } -} -.swiper-scrollbar-drag { - height: 100%; - width: 100%; - position: relative; - background: rgba(0, 0, 0, 0.5); - border-radius: 10px; - left: 0; - top: 0; -} -.swiper-scrollbar-cursor-drag { - cursor: move; -} -.swiper-scrollbar-lock { - display: none; -} diff --git a/resources/web/include/swiper/modules/scrollbar/scrollbar.min.css b/resources/web/include/swiper/modules/scrollbar/scrollbar.min.css deleted file mode 100644 index 09c1fba0f6..0000000000 --- a/resources/web/include/swiper/modules/scrollbar/scrollbar.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/scrollbar/scrollbar.scss b/resources/web/include/swiper/modules/scrollbar/scrollbar.scss deleted file mode 100644 index e6f133b1d2..0000000000 --- a/resources/web/include/swiper/modules/scrollbar/scrollbar.scss +++ /dev/null @@ -1,38 +0,0 @@ -/* Scrollbar */ -.swiper-scrollbar { - border-radius: 10px; - position: relative; - -ms-touch-action: none; - background: rgba(0, 0, 0, 0.1); - .swiper-horizontal > & { - position: absolute; - left: 1%; - bottom: 3px; - z-index: 50; - height: 5px; - width: 98%; - } - .swiper-vertical > & { - position: absolute; - right: 3px; - top: 1%; - z-index: 50; - width: 5px; - height: 98%; - } -} -.swiper-scrollbar-drag { - height: 100%; - width: 100%; - position: relative; - background: rgba(0, 0, 0, 0.5); - border-radius: 10px; - left: 0; - top: 0; -} -.swiper-scrollbar-cursor-drag { - cursor: move; -} -.swiper-scrollbar-lock { - display: none; -} diff --git a/resources/web/include/swiper/modules/thumbs/thumbs.js b/resources/web/include/swiper/modules/thumbs/thumbs.js deleted file mode 100644 index 75e6b82e66..0000000000 --- a/resources/web/include/swiper/modules/thumbs/thumbs.js +++ /dev/null @@ -1,204 +0,0 @@ -import { isObject } from '../../shared/utils.js'; -import $ from '../../shared/dom.js'; -export default 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 onThumbClick() { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) return; - const clickedIndex = thumbsSwiper.clickedIndex; - const clickedSlide = thumbsSwiper.clickedSlide; - if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return; - if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; - let slideToIndex; - - if (thumbsSwiper.params.loop) { - slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10); - } else { - slideToIndex = clickedIndex; - } - - if (swiper.params.loop) { - let currentIndex = swiper.activeIndex; - - if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) { - swiper.loopFix(); // eslint-disable-next-line - - swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; - currentIndex = swiper.activeIndex; - } - - const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); - const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); - if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex; - } - - 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) { - 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 - }); - } 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.addClass(swiper.params.thumbs.thumbsContainerClass); - swiper.thumbs.swiper.on('tap', onThumbClick); - return true; - } - - function update(initial) { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) 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) { - let currentThumbsIndex = thumbsSwiper.activeIndex; - let newThumbsIndex; - let direction; - - if (thumbsSwiper.params.loop) { - if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) { - thumbsSwiper.loopFix(); // eslint-disable-next-line - - thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft; - currentThumbsIndex = thumbsSwiper.activeIndex; - } // Find actual thumbs index to slide to - - - const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index(); - const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index(); - - if (typeof prevThumbsIndex === 'undefined') { - newThumbsIndex = nextThumbsIndex; - } else if (typeof nextThumbsIndex === 'undefined') { - newThumbsIndex = prevThumbsIndex; - } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) { - newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex; - } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { - newThumbsIndex = nextThumbsIndex; - } else { - newThumbsIndex = prevThumbsIndex; - } - - 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) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1; - } - - thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); - } - } // 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.removeClass(thumbActiveClass); - - if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { - for (let i = 0; i < thumbsToActivate; i += 1) { - thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass); - } - } else { - for (let i = 0; i < thumbsToActivate; i += 1) { - thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass); - } - } - } - - on('beforeInit', () => { - const { - thumbs - } = swiper.params; - if (!thumbs || !thumbs.swiper) return; - init(); - update(true); - }); - on('slideChange update resize observerUpdate', () => { - if (!swiper.thumbs.swiper) return; - update(); - }); - on('setTransition', (_s, duration) => { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) return; - thumbsSwiper.setTransition(duration); - }); - on('beforeDestroy', () => { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) return; - - if (swiperCreated && thumbsSwiper) { - thumbsSwiper.destroy(); - } - }); - Object.assign(swiper.thumbs, { - init, - update - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/thumbs/thumbs.less b/resources/web/include/swiper/modules/thumbs/thumbs.less deleted file mode 100644 index 9eaa1b3c04..0000000000 --- a/resources/web/include/swiper/modules/thumbs/thumbs.less +++ /dev/null @@ -1,5 +0,0 @@ -.swiper-thumbs { - .swiper-slide-thumb-active { - // Styles for active thumb slide - } -} diff --git a/resources/web/include/swiper/modules/thumbs/thumbs.min.css b/resources/web/include/swiper/modules/thumbs/thumbs.min.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/resources/web/include/swiper/modules/thumbs/thumbs.scss b/resources/web/include/swiper/modules/thumbs/thumbs.scss deleted file mode 100644 index 9eaa1b3c04..0000000000 --- a/resources/web/include/swiper/modules/thumbs/thumbs.scss +++ /dev/null @@ -1,5 +0,0 @@ -.swiper-thumbs { - .swiper-slide-thumb-active { - // Styles for active thumb slide - } -} diff --git a/resources/web/include/swiper/modules/virtual/virtual.js b/resources/web/include/swiper/modules/virtual/virtual.js deleted file mode 100644 index 15dd1d745e..0000000000 --- a/resources/web/include/swiper/modules/virtual/virtual.js +++ /dev/null @@ -1,291 +0,0 @@ -import $ from '../../shared/dom.js'; -import { setCSSProperty } from '../../shared/utils.js'; -export default function Virtual({ - swiper, - extendParams, - on -}) { - extendParams({ - virtual: { - enabled: false, - slides: [], - cache: true, - renderSlide: null, - renderExternal: null, - renderExternalUpdate: true, - addSlidesBefore: 0, - addSlidesAfter: 0 - } - }); - let cssModeTimeout; - swiper.virtual = { - cache: {}, - from: undefined, - to: undefined, - slides: [], - offset: 0, - slidesGrid: [] - }; - - function renderSlide(slide, index) { - const params = swiper.params.virtual; - - if (params.cache && swiper.virtual.cache[index]) { - return swiper.virtual.cache[index]; - } - - const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`
${slide}
`); - if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index); - if (params.cache) swiper.virtual.cache[index] = $slideEl; - return $slideEl; - } - - function update(force) { - const { - slidesPerView, - slidesPerGroup, - centeredSlides - } = swiper.params; - const { - addSlidesBefore, - addSlidesAfter - } = swiper.params.virtual; - const { - from: previousFrom, - to: previousTo, - slides, - slidesGrid: previousSlidesGrid, - offset: previousOffset - } = swiper.virtual; - - if (!swiper.params.cssMode) { - swiper.updateActiveIndex(); - } - - const activeIndex = swiper.activeIndex || 0; - let offsetProp; - if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; - let slidesAfter; - let slidesBefore; - - if (centeredSlides) { - slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; - slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; - } else { - slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; - slidesBefore = slidesPerGroup + addSlidesBefore; - } - - const from = Math.max((activeIndex || 0) - slidesBefore, 0); - const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1); - const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); - Object.assign(swiper.virtual, { - from, - to, - offset, - slidesGrid: swiper.slidesGrid - }); - - function onRendered() { - swiper.updateSlides(); - swiper.updateProgress(); - swiper.updateSlidesClasses(); - - if (swiper.lazy && swiper.params.lazy.enabled) { - swiper.lazy.load(); - } - } - - if (previousFrom === from && previousTo === to && !force) { - if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { - swiper.slides.css(offsetProp, `${offset}px`); - } - - swiper.updateProgress(); - 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(); - } - - return; - } - - const prependIndexes = []; - const appendIndexes = []; - - if (force) { - swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove(); - } else { - for (let i = previousFrom; i <= previousTo; i += 1) { - if (i < from || i > to) { - swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove(); - } - } - } - - for (let i = 0; i < slides.length; i += 1) { - if (i >= from && i <= to) { - if (typeof previousTo === 'undefined' || force) { - appendIndexes.push(i); - } else { - if (i > previousTo) appendIndexes.push(i); - if (i < previousFrom) prependIndexes.push(i); - } - } - } - - appendIndexes.forEach(index => { - swiper.$wrapperEl.append(renderSlide(slides[index], index)); - }); - prependIndexes.sort((a, b) => b - a).forEach(index => { - swiper.$wrapperEl.prepend(renderSlide(slides[index], index)); - }); - swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}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.attr('data-swiper-slide-index'); - - if (cachedElIndex) { - $cachedEl.attr('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) { - swiper.virtual.slides.splice(slidesIndexes[i], 1); - - if (swiper.params.virtual.cache) { - delete swiper.virtual.cache[slidesIndexes[i]]; - } - - if (slidesIndexes[i] < activeIndex) activeIndex -= 1; - activeIndex = Math.max(activeIndex, 0); - } - } else { - swiper.virtual.slides.splice(slidesIndexes, 1); - - if (swiper.params.virtual.cache) { - delete swiper.virtual.cache[slidesIndexes]; - } - - 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; - swiper.virtual.slides = swiper.params.virtual.slides; - swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); - swiper.params.watchSlidesProgress = true; - swiper.originalParams.watchSlidesProgress = true; - - if (!swiper.params.initialSlide) { - update(); - } - }); - 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 - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/virtual/virtual.less b/resources/web/include/swiper/modules/virtual/virtual.less deleted file mode 100644 index e209999a1e..0000000000 --- a/resources/web/include/swiper/modules/virtual/virtual.less +++ /dev/null @@ -1,17 +0,0 @@ -.swiper-virtual.swiper-css-mode { - .swiper-wrapper::after { - content: ''; - position: absolute; - left: 0; - top: 0; - pointer-events: none; - } - &.swiper-horizontal .swiper-wrapper::after { - height: 1px; - width: var(--swiper-virtual-size); - } - &.swiper-vertical .swiper-wrapper::after { - width: 1px; - height: var(--swiper-virtual-size); - } -} diff --git a/resources/web/include/swiper/modules/virtual/virtual.min.css b/resources/web/include/swiper/modules/virtual/virtual.min.css deleted file mode 100644 index f6bde7380b..0000000000 --- a/resources/web/include/swiper/modules/virtual/virtual.min.css +++ /dev/null @@ -1 +0,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)} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/virtual/virtual.scss b/resources/web/include/swiper/modules/virtual/virtual.scss deleted file mode 100644 index e209999a1e..0000000000 --- a/resources/web/include/swiper/modules/virtual/virtual.scss +++ /dev/null @@ -1,17 +0,0 @@ -.swiper-virtual.swiper-css-mode { - .swiper-wrapper::after { - content: ''; - position: absolute; - left: 0; - top: 0; - pointer-events: none; - } - &.swiper-horizontal .swiper-wrapper::after { - height: 1px; - width: var(--swiper-virtual-size); - } - &.swiper-vertical .swiper-wrapper::after { - width: 1px; - height: var(--swiper-virtual-size); - } -} diff --git a/resources/web/include/swiper/modules/zoom/zoom.js b/resources/web/include/swiper/modules/zoom/zoom.js deleted file mode 100644 index 2c352efc6f..0000000000 --- a/resources/web/include/swiper/modules/zoom/zoom.js +++ /dev/null @@ -1,612 +0,0 @@ -import { getWindow } from 'ssr-window'; -import $ from '../../shared/dom.js'; -import { getTranslate } from '../../shared/utils.js'; -export default function Zoom({ - swiper, - extendParams, - on, - emit -}) { - const window = getWindow(); - extendParams({ - zoom: { - enabled: false, - maxRatio: 3, - minRatio: 1, - toggle: true, - containerClass: 'swiper-zoom-container', - zoomedSlideClass: 'swiper-slide-zoomed' - } - }); - swiper.zoom = { - enabled: false - }; - let currentScale = 1; - let isScaling = false; - let gesturesEnabled; - let fakeGestureTouched; - let fakeGestureMoved; - const gesture = { - $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 ? gesture.$imageEl[0] : undefined; - const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined; - emit('zoomChange', value, imageEl, slideEl); - } - - scale = value; - } - - }); - - function getDistanceBetweenTouches(e) { - if (e.targetTouches.length < 2) return 1; - const x1 = e.targetTouches[0].pageX; - const y1 = e.targetTouches[0].pageY; - const x2 = e.targetTouches[1].pageX; - const y2 = e.targetTouches[1].pageY; - const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); - return distance; - } // Events - - - function onGestureStart(e) { - const support = swiper.support; - const params = swiper.params.zoom; - fakeGestureTouched = false; - fakeGestureMoved = false; - - if (!support.gestures) { - if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) { - return; - } - - fakeGestureTouched = true; - gesture.scaleStart = getDistanceBetweenTouches(e); - } - - if (!gesture.$slideEl || !gesture.$slideEl.length) { - gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`); - if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); - gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target'); - gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); - gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; - - if (gesture.$imageWrapEl.length === 0) { - gesture.$imageEl = undefined; - return; - } - } - - if (gesture.$imageEl) { - gesture.$imageEl.transition(0); - } - - isScaling = true; - } - - function onGestureChange(e) { - const support = swiper.support; - const params = swiper.params.zoom; - const zoom = swiper.zoom; - - if (!support.gestures) { - if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) { - return; - } - - fakeGestureMoved = true; - gesture.scaleMove = getDistanceBetweenTouches(e); - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0) { - if (e.type === 'gesturechange') onGestureStart(e); - return; - } - - if (support.gestures) { - zoom.scale = e.scale * currentScale; - } else { - 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.transform(`translate3d(0,0,0) scale(${zoom.scale})`); - } - - function onGestureEnd(e) { - const device = swiper.device; - const support = swiper.support; - const params = swiper.params.zoom; - const zoom = swiper.zoom; - - if (!support.gestures) { - if (!fakeGestureTouched || !fakeGestureMoved) { - return; - } - - if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) { - return; - } - - fakeGestureTouched = false; - fakeGestureMoved = false; - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; - zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); - gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`); - currentScale = zoom.scale; - isScaling = false; - if (zoom.scale === 1) gesture.$slideEl = undefined; - } - - function onTouchStart(e) { - const device = swiper.device; - if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; - if (image.isTouched) return; - if (device.android && e.cancelable) e.preventDefault(); - image.isTouched = true; - image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; - image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; - } - - function onTouchMove(e) { - const zoom = swiper.zoom; - if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; - swiper.allowClick = false; - if (!image.isTouched || !gesture.$slideEl) return; - - if (!image.isMoved) { - image.width = gesture.$imageEl[0].offsetWidth; - image.height = gesture.$imageEl[0].offsetHeight; - image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0; - image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0; - gesture.slideWidth = gesture.$slideEl[0].offsetWidth; - gesture.slideHeight = gesture.$slideEl[0].offsetHeight; - gesture.$imageWrapEl.transition(0); - } // Define if we need image drag - - - const scaledWidth = image.width * zoom.scale; - const scaledHeight = image.height * zoom.scale; - if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; - 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 = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - - 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; - 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; - return; - } - } - - if (e.cancelable) { - e.preventDefault(); - } - - e.stopPropagation(); - image.isMoved = true; - image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX; - image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY; - - 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.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); - } - - function onTouchEnd() { - const zoom = swiper.zoom; - if (!gesture.$imageEl || gesture.$imageEl.length === 0) 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.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); - } - - function onTransitionEnd() { - const zoom = swiper.zoom; - - if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) { - if (gesture.$imageEl) { - gesture.$imageEl.transform('translate3d(0,0,0) scale(1)'); - } - - if (gesture.$imageWrapEl) { - gesture.$imageWrapEl.transform('translate3d(0,0,0)'); - } - - zoom.scale = 1; - currentScale = 1; - gesture.$slideEl = undefined; - gesture.$imageEl = undefined; - gesture.$imageWrapEl = undefined; - } - } - - 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}`); - } - - if (!gesture.$slideEl) { - if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { - gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); - } else { - gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); - } - } - - gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target'); - gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return; - - if (swiper.params.cssMode) { - swiper.wrapperEl.style.overflow = 'hidden'; - swiper.wrapperEl.style.touchAction = 'none'; - } - - gesture.$slideEl.addClass(`${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.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX; - touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY; - } else { - touchX = image.touchesStart.x; - touchY = image.touchesStart.y; - } - - zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; - currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; - - if (e) { - slideWidth = gesture.$slideEl[0].offsetWidth; - slideHeight = gesture.$slideEl[0].offsetHeight; - offsetX = gesture.$slideEl.offset().left + window.scrollX; - offsetY = gesture.$slideEl.offset().top + window.scrollY; - diffX = offsetX + slideWidth / 2 - touchX; - diffY = offsetY + slideHeight / 2 - touchY; - imageWidth = gesture.$imageEl[0].offsetWidth; - imageHeight = gesture.$imageEl[0].offsetHeight; - 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; - 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; - } - - gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`); - gesture.$imageEl.transition(300).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 = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); - } else { - gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); - } - - gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target'); - gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return; - - if (swiper.params.cssMode) { - swiper.wrapperEl.style.overflow = ''; - swiper.wrapperEl.style.touchAction = ''; - } - - zoom.scale = 1; - currentScale = 1; - gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); - gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); - gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`); - gesture.$slideEl = undefined; - } // 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 support = swiper.support; - const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? { - passive: true, - capture: false - } : false; - const activeListenerWithCapture = support.passiveListener ? { - passive: false, - capture: true - } : true; - return { - passiveListener, - activeListenerWithCapture - }; - } - - function getSlideSelector() { - return `.${swiper.params.slideClass}`; - } - - function toggleGestures(method) { - const { - passiveListener - } = getListeners(); - const slideSelector = getSlideSelector(); - swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener); - swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener); - swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener); - } - - function enableGestures() { - if (gesturesEnabled) return; - gesturesEnabled = true; - toggleGestures('on'); - } - - function disableGestures() { - if (!gesturesEnabled) return; - gesturesEnabled = false; - toggleGestures('off'); - } // Attach/Detach Events - - - function enable() { - const zoom = swiper.zoom; - if (zoom.enabled) return; - zoom.enabled = true; - const support = swiper.support; - const { - passiveListener, - activeListenerWithCapture - } = getListeners(); - const slideSelector = getSlideSelector(); // Scale image - - if (support.gestures) { - swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener); - swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener); - } else if (swiper.touchEvents.start === 'touchstart') { - swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener); - swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture); - swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener); - - if (swiper.touchEvents.cancel) { - swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener); - } - } // Move image - - - swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture); - } - - function disable() { - const zoom = swiper.zoom; - if (!zoom.enabled) return; - const support = swiper.support; - zoom.enabled = false; - const { - passiveListener, - activeListenerWithCapture - } = getListeners(); - const slideSelector = getSlideSelector(); // Scale image - - if (support.gestures) { - swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener); - swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener); - } else if (swiper.touchEvents.start === 'touchstart') { - swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener); - swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture); - swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener); - - if (swiper.touchEvents.cancel) { - swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener); - } - } // Move image - - - swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, 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(e); - }); - 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 - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/zoom/zoom.less b/resources/web/include/swiper/modules/zoom/zoom.less deleted file mode 100644 index fdbea05c57..0000000000 --- a/resources/web/include/swiper/modules/zoom/zoom.less +++ /dev/null @@ -1,20 +0,0 @@ -.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; - } -} - -.swiper-slide-zoomed { - cursor: move; -} diff --git a/resources/web/include/swiper/modules/zoom/zoom.min.css b/resources/web/include/swiper/modules/zoom/zoom.min.css deleted file mode 100644 index f40e5818d1..0000000000 --- a/resources/web/include/swiper/modules/zoom/zoom.min.css +++ /dev/null @@ -1 +0,0 @@ -.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move} \ No newline at end of file diff --git a/resources/web/include/swiper/modules/zoom/zoom.scss b/resources/web/include/swiper/modules/zoom/zoom.scss deleted file mode 100644 index fdbea05c57..0000000000 --- a/resources/web/include/swiper/modules/zoom/zoom.scss +++ /dev/null @@ -1,20 +0,0 @@ -.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; - } -} - -.swiper-slide-zoomed { - cursor: move; -} diff --git a/resources/web/include/swiper/node_modules/dom7/LICENSE b/resources/web/include/swiper/node_modules/dom7/LICENSE deleted file mode 100644 index e7e872c2b2..0000000000 --- a/resources/web/include/swiper/node_modules/dom7/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 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/resources/web/include/swiper/node_modules/dom7/README.md b/resources/web/include/swiper/node_modules/dom7/README.md deleted file mode 100644 index 8b28ad2abf..0000000000 --- a/resources/web/include/swiper/node_modules/dom7/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# Dom7 - -### Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API - -Dom7 - is the default DOM manipulation library built-in [Framework7](https://framework7.io). It utilizes most edge and high-performance methods for DOM manipulation. You don’t need to learn something new, its usage is very simple because it has the same syntax as well known jQuery library with support of the most popular and widely used methods and jQuery-like chaining. - -See [Framework7 Dom7](https://framework7.io/docs/dom7.html) documentation for usage examples and available methods. - -## Installation - -Dom7 can be installed with NPM: - -``` -npm install dom7 --save -``` - -## Usage - -```js -// import Dom7 and methods you need -import { $, addClass, removeClass, toggleClass, on } from 'dom7'; - -// install methods -$.fn.addClass = addClass; -$.fn.removeClass = removeClass; -$.fn.toggleClass = toggleClass; -$.fn.on = on; - -// use -$('p').addClass('custom-paragraph'); - -$('p').on('click', function() { - $(this).toggleClass('custom-paragraph'); -}); -``` - -## Documentation - -See [full documenation here](https://framework7.io/docs/dom7.html) - -## Contribution - -Yes please! See the [contributing guidelines](https://github.com/nolimits4web/dom7/blob/master/CONTRIBUTING.md) for details. - -## Licence - -This project is licensed under the terms of the [MIT license](https://github.com/nolimits4web/dom7/blob/master/LICENSE). diff --git a/resources/web/include/swiper/node_modules/dom7/dom7.d.ts b/resources/web/include/swiper/node_modules/dom7/dom7.d.ts deleted file mode 100644 index 1815f3dcd7..0000000000 --- a/resources/web/include/swiper/node_modules/dom7/dom7.d.ts +++ /dev/null @@ -1,628 +0,0 @@ -export interface Dom7Array { - /* ====== DEFAULT ARRAY METHODS ====== */ - /** - * Gets or sets the length of the array. This is a number one higher than the highest element defined in an array. - */ - length: number; - - /** - * Removes the last element from an array and returns it. - */ - pop(): Element | undefined; - /** - * Appends new elements to an array, and returns the new length of the array. - * @param items New elements of the Array. - */ - push(...items: Element[]): number; - /** - * Combines two or more arrays. - * @param items Additional items to add to the end of array1. - */ - concat(...items: ConcatArray[]): Element[]; - /** - * Combines two or more arrays. - * @param items Additional items to add to the end of array1. - */ - concat(...items: (Element | ConcatArray)[]): Element[]; - /** - * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the resulting String. If omitted, the array elements are separated with a comma. - */ - join(separator?: string): string; - /** - * Reverses the elements in an Array. - */ - reverse(): Element[]; - /** - * Removes the first element from an array and returns it. - */ - shift(): Element | undefined; - /** - * Returns a section of an array. - * @param start The beginning of the specified portion of the array. - * @param end The end of the specified portion of the array. This is exclusive of the element at the index 'end'. - */ - slice(start?: number, end?: number): Element[]; - /** - * Sorts an array. - * @param compareFn Function used to determine the order of the elements. It is expected to return - * a negative value if first argument is less than second argument, zero if they're equal and a positive - * value otherwise. If omitted, the elements are sorted in ascending, ASCII character order. - * ```ts - * [11,2,22,1].sort((a, b) => a - b) - * ``` - */ - sort(compareFn?: (a: Element, b: Element) => number): this; - /** - * Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements. - * @param start The zero-based location in the array from which to start removing elements. - * @param deleteCount The number of elements to remove. - */ - splice(start: number, deleteCount?: number): Element[]; - /** - * Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements. - * @param start The zero-based location in the array from which to start removing elements. - * @param deleteCount The number of elements to remove. - * @param items Elements to insert into the array in place of the deleted elements. - */ - splice(start: number, deleteCount: number, ...items: Element[]): Element[]; - /** - * Inserts new elements at the start of an array. - * @param items Elements to insert at the start of the Array. - */ - unshift(...items: Element[]): number; - /** - * Returns the index of the first occurrence of a value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0. - */ - indexOf(searchElement: Element, fromIndex?: number): number; - /** - * Returns the index of the last occurrence of a specified value in an array. - * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at the last index in the array. - */ - lastIndexOf(searchElement: Element, fromIndex?: number): number; - /** - * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in the array until the callbackfn returns a value - * which is coercible to the Boolean value false, or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - every( - callbackfn: (value: Element, index: number, array: Element[]) => unknown, - thisArg?: any, - ): boolean; - /** - * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls - * the callbackfn function for each element in the array until the callbackfn returns a value - * which is coercible to the Boolean value true, or until the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. - * If thisArg is omitted, undefined is used as the this value. - */ - some( - callbackfn: (value: Element, index: number, array: Element[]) => unknown, - thisArg?: any, - ): boolean; - /** - * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - forEach( - callbackfn: (value: Element, index: number, array: Element[]) => void, - thisArg?: any, - ): void; - /** - * Calls a defined callback function on each element of an array, and returns an array that contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. - */ - map( - callbackfn: (value: Element, index: number, array: Element[]) => U, - thisArg?: any, - ): U[]; - - /* ====== DOM7 ARRAY METHODS ====== */ - - /** Retrieve one of the elements matched by the Dom7Array object (jQuery syntax). **/ - [index: number]: Element; - - // CLASSES - /** Add class to elements */ - addClass(className: string): Dom7Array; - /** Remove specified class */ - removeClass(className: string): Dom7Array; - /** Determine whether any of the matched elements are assigned the given class */ - hasClass(className: string): Dom7Array; - /** Remove (if class is present) or add (if not) one or more classes from each element in the set of matched elements */ - toggleClass(className: string): Dom7Array; - - // ATTRIBUTES AND PROPERTIES - /** Get property value */ - prop(propName: string): any; - /** Set single property value */ - prop(propName: string, propValue: any): Dom7Array; - /** Set multiple properties */ - prop(propertiesObject: any): Dom7Array; - /** Get attribute value */ - attr(attrName: string): string; - /** Set single attribute value */ - attr(attrName: string, attrValue: string): Dom7Array; - /** Set multiple attributes */ - attr(attributesObject: any): Dom7Array; - /** Remove specified attribute */ - removeAttr(attrName: string): Dom7Array; - /** Get the current value of the first element in the set of matched elements */ - val(): any; - /** Set the value of every matched element */ - val(newValue: any): Dom7Array; - - // DATA - /** Store arbitrary data associated with the matched elements */ - data(key: string, value: any): Dom7Array; - /** Return the value at the named data store for the first element in the collection, as set by data(key, value) or by an HTML5 data-* attribute */ - data(key: string): any; - /** Remove specified data */ - removeData(key: string): void; - /** Returns element's data set (set of data- attributes) as plain Object */ - dataset(): any; - - // CSS TRASFORMS, TRANSITIONS - /** Adds prefixed CSS transform property */ - transform(CSSTransformString: string): Dom7Array; - /** Set CSS transition-duration property to collection */ - transition(transitionDuration: number): Dom7Array; - - // EVENTS - /** Add event handler function to one or more events to the selected elements */ - on( - eventName: string, - handler: (event: Event) => void, - useCapture?: boolean, - ): Dom7Array; - /** Live/delegated event handler */ - on( - eventName: string, - delegatedTarget: string, - handler: (event: Event) => void, - useCapture?: boolean, - ): Dom7Array; - /** Add event handler function to one or more events to the selected elements that will be executed only once */ - once( - eventName: string, - handler: (event: Event) => void, - useCapture?: boolean, - ): Dom7Array; - /** Live/delegated event handler that will be executed only once */ - once( - eventName: string, - delegatedTarget: string, - handler: (event: Event) => void, - useCapture?: boolean, - ): Dom7Array; - /** Remove event handler */ - off( - eventName: string, - handler: (event: Event) => void, - useCapture?: boolean, - ): Dom7Array; - /** Remove live/delegated event handler */ - off( - eventName: string, - delegatedTarget: string, - handler: (event: Event) => void, - useCapture?: boolean, - ): Dom7Array; - /** Execute all handlers added to the matched elements for the specified event */ - trigger(eventName: string, eventData?: any): Dom7Array; - /** Adds transitionEnd event handler to collection */ - transitionEnd(callback: () => void): Dom7Array; - /** Adds animationEnd event handler to collection */ - animationEnd(callback: () => void): Dom7Array; - - // STYLES - /** Get the current computed width for the first element in the set of matched elements */ - width(): number; - /** Set width for the first element in the set of matched elements */ - width(value: string | number): Dom7Array; - /** Get the current computed width for the first element in the set of matched elements, including padding and border, and margin (if includeMargin is true) */ - outerWidth(includeMargin?: boolean): number; - /** Set width for the first element in the set of matched elements, including padding and border, and margin (if includeMargin is true) */ - outerWidth(value: string | number): Dom7Array; - /** Get the current computed height for the first element in the set of matched elements */ - height(): number; - /** Set height for the first element in the set of matched elements */ - height(value: string | number): Dom7Array; - /** Get the current computed height for the first element in the set of matched elements, including padding and border, and margin (if includeMargin is true) */ - outerHeight(includeMargin?: boolean): number; - /** Set height for the first element in the set of matched elements, including padding and border, and margin (if includeMargin is true) */ - outerHeight(value: string | number): Dom7Array; - /** Get the current coordinates of the first element relative to the document */ - offset(): { top: number; left: number }; - /** Set the coordinates of the first element relative to the document */ - offset(value: string | number): Dom7Array; - /** Set "display:none" to the matched elements */ - hide(): void; - /** Set "display:block" to the matched elements */ - show(): void; - /** Get value of specified CSS property for the first element */ - css(property: string): string | number; - /** Set specified CSS property to the matched elements */ - css(property: string, value: string | number): Dom7Array; - /** Set multiple CSS properties to the matched elements */ - css(propertiesObject: any): Dom7Array; - - // SCROLL - /** Get scrollTop position of element */ - scrollTop(): number; - /** Set scrollTop "position" with animation during "duration" (in ms). Scroll top position will be set immediately if duration is not specified. If you have specified "callback" function, then it will be executed after scrolling completed */ - scrollTop( - position: number, - duration?: number, - callback?: () => void, - ): Dom7Array; - /** Get scrollLeft position of element */ - scrollLeft(): number; - /** Set scrollLeft "position" with animation during "duration" (in ms). Scroll left postion will be set immediately if duration is not specified. If you have specified "callback" function, then it will be executed after scrolling completed */ - scrollLeft( - position: number, - duration?: number, - callback?: () => void, - ): Dom7Array; - /** Set scroll left and scroll top with animation during "duration" (in ms). Scroll postion will be set immediately if duration is not specified. If you have specified "callback" function, then it will be executed after scrolling completed */ - scrollTo( - left: number, - top: number, - duration?: number, - callback?: () => void, - ): Dom7Array; - - // DOM MANIPULATION - /** Add HTML element to the set of matched elements */ - add(html: string): Dom7Array; - /** Create a new Dom7Array collection with elements added to the set of matched elements */ - add(...elements: Array): Dom7Array; - /** Iterate over collection, executing a callback function for each matched element */ - each(callback: (element: any, index: number) => void): Dom7Array; - /** Get the HTML contents of the first element in the set of matched elements */ - html(): string; - /** Set the HTML contents of every matched element */ - html(newInnerHTML: string): Dom7Array; - /** Get the text contents of the first element in the set of matched elements */ - text(): string; - /** Set the text contents of every matched element */ - text(newTextContent: string): Dom7Array; - /** `.is(CSSSelector)` : - * Check the current matched set of elements against CSS selector - * - * `.is(HTMLElement)` : - * Check the current matched set of elements against HTML element or Dom7Array collection - * */ - is(CSSSelector: string | Element | Dom7Array): boolean; - /** Return the position of the first element within the Dom7Array collection relative to its sibling elements */ - index(): number; - /** Reduce the set of matched elements to the one at the specified index */ - eq(index: number): Dom7Array; - /** `.append(HTMLString)` : - * Insert content, specified by the parameter, to the end of each element in the set of matched elements - * - * `.append(HTMLElement)` : - * Insert specified HTML element to the end of element in the set of matched elements - * */ - append(element: string | Element | Dom7Array): Dom7Array; - /** Insert content/elements, to the end of element specified in parameter */ - appendTo(element: string | Element | Dom7Array): Dom7Array; - /** `.prepend(newHTML)` : - * Insert content, specified by the parameter, to the beginning of each element in the set of matched elements - * - * `.prepend(HTMLElement)` : - * Insert specified HTML element to the beginning of element in the set of matched elements - * */ - prepend(element: string | Element | Dom7Array): Dom7Array; - /** Insert content/elements, to the beginning of element specified in parameter */ - prependTo(element: string | Element | Dom7Array): Dom7Array; - /** Insert every element in the set of matched elements before the target. Target could be specified as CSS selector or HTML element or Dom7Array collection */ - insertBefore(element: string | Element | Dom7Array): Dom7Array; - /** Insert every element in the set of matched elements after the target. Target could be specified as CSS selector or HTML element or Dom7Array collection */ - insertAfter(element: string | Element | Dom7Array): Dom7Array; - /** Get the immediately following sibling of each element in the set of matched elements. If a selector is provided, it retrieves the next sibling only if it matches that selector */ - next(selector?: string): Dom7Array; - /** Get all following siblings of each element in the set of matched elements, optionally filtered by a selector */ - nextAll(selector?: string): Dom7Array; - /** Get the immediately preceding sibling of each element in the set of matched elements, optionally filtered by a selector */ - prev(selector?: string): Dom7Array; - /** Get all preceding siblings of each element in the set of matched elements, optionally filtered by a selector */ - prevAll(selector?: string): Dom7Array; - /** Get the siblings of each element in the set of matched elements, optionally filtered by a selector */ - siblings(selector?: string): Dom7Array; - /** Get the first parent of each element in the current set of matched elements, optionally filtered by a selector */ - parent(selector?: string): Dom7Array; - /** Get the ancestors of each element in the current set of matched elements, optionally filtered by a selector */ - parents(selector?: string): Dom7Array; - /** For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree */ - closest(selector?: string): Dom7Array; - /** Get the descendants of each element in the current set of matched elements, filtered by a selector */ - find(selector?: string): Dom7Array; - /** Get the children of each element in the set of matched elements, optionally filtered by a selector */ - children(selector?: string): Dom7Array; - /** Filter collection of elements */ - filter(callback: (element: any, index: number) => boolean): Dom7Array; - /** Remove/detach matched elements from the Dom */ - remove(): Dom7Array; - /** Remove all child nodes of the set of matched elements from the DOM. Alias for `.html('')` */ - empty(): Dom7Array; - - // SHORTCUTS - /** Trigger "click" event on collection */ - click(): Dom7Array; - /** Add "click" event handler to collection */ - click(handler: (event: Event) => void): Dom7Array; - /** Trigger "blur" event on collection */ - blur(): Dom7Array; - /** Add "blur" event handler to collection */ - blur(handler: (event: Event) => void): Dom7Array; - /** Trigger "focus" event on collection */ - focus(): Dom7Array; - /** Add "focus" event handler to collection */ - focus(handler: (event: Event) => void): Dom7Array; - /** Trigger "focusin" event on collection */ - focusin(): Dom7Array; - /** Add "focusin" event handler to collection */ - focusin(handler: (event: Event) => void): Dom7Array; - /** Trigger "focusout" event on collection */ - focusout(): Dom7Array; - /** Add "focusout" event handler to collection */ - focusout(handler: (event: Event) => void): Dom7Array; - /** Trigger "keyup" event on collection */ - keyup(): Dom7Array; - /** Add "keyup" event handler to collection */ - keyup(handler: (event: Event) => void): Dom7Array; - /** Trigger "keydown" event on collection */ - keydown(): Dom7Array; - /** Add "keydown" event handler to collection */ - keydown(handler: (event: Event) => void): Dom7Array; - /** Trigger "keypress" event on collection */ - keypress(): Dom7Array; - /** Add "keypress" event handler to collection */ - keypress(handler: (event: Event) => void): Dom7Array; - /** Trigger "submit" event on collection */ - submit(): Dom7Array; - /** Add "submit" event handler to collection */ - submit(handler: (event: Event) => void): Dom7Array; - /** Trigger "change" event on collection */ - change(): Dom7Array; - /** Add "change" event handler to collection */ - change(handler: (event: Event) => void): Dom7Array; - /** Trigger "mousedown" event on collection */ - mousedown(): Dom7Array; - /** Add "mousedown" event handler to collection */ - mousedown(handler: (event: Event) => void): Dom7Array; - /** Trigger "mousemove" event on collection */ - mousemove(): Dom7Array; - /** Add "mousemove" event handler to collection */ - mousemove(handler: (event: Event) => void): Dom7Array; - /** Trigger "mouseup" event on collection */ - mouseup(): Dom7Array; - /** Add "mouseup" event handler to collection */ - mouseup(handler: (event: Event) => void): Dom7Array; - /** Trigger "mouseenter" event on collection */ - mouseenter(): Dom7Array; - /** Add "mouseenter" event handler to collection */ - mouseenter(handler: (event: Event) => void): Dom7Array; - /** Trigger "mouseleave" event on collection */ - mouseleave(): Dom7Array; - /** Add "mouseleave" event handler to collection */ - mouseleave(handler: (event: Event) => void): Dom7Array; - /** Trigger "mouseout" event on collection */ - mouseout(): Dom7Array; - /** Add "mouseout" event handler to collection */ - mouseout(handler: (event: Event) => void): Dom7Array; - /** Trigger "mouseover" event on collection */ - mouseover(): Dom7Array; - /** Add "mouseover" event handler to collection */ - mouseover(handler: (event: Event) => void): Dom7Array; - /** Trigger "touchstart" event on collection */ - touchstart(): Dom7Array; - /** Add "touchstart" event handler to collection */ - touchstart(handler: (event: Event) => void): Dom7Array; - /** Trigger "touchend" event on collection */ - touchend(): Dom7Array; - /** Add "touchend" event handler to collection */ - touchend(handler: (event: Event) => void): Dom7Array; - /** Trigger "touchmove" event on collection */ - touchmove(): Dom7Array; - /** Add "touchmove" event handler to collection */ - touchmove(handler: (event: Event) => void): Dom7Array; - /** Add "resize" event handler to collection */ - resize(handler: (event: Event) => void): Dom7Array; - /** Add "scroll" event handler to collection */ - scroll(handler: (event: Event) => void): Dom7Array; - /** Perform a custom animation of a set of CSS properties */ - animate(properties: any, parameters: any): Dom7Array; -} - -export interface Dom7 { - (): Dom7Array; - (selector: string, context?: Element | Dom7Array): Dom7Array; - (element: Element): Dom7Array; - (element: Document): Dom7Array; - (elementArray: Element[]): Dom7Array; - (event: EventTarget): Dom7Array; - fn: any; -} - -declare const Dom7: Dom7; - -declare const add: () => void; -declare const addClass: () => void; -declare const animate: () => void; -declare const animationEnd: () => void; -declare const append: () => void; -declare const appendTo: () => void; -declare const attr: () => void; -declare const blur: () => void; -declare const change: () => void; -declare const children: () => void; -declare const click: () => void; -declare const closest: () => void; -declare const css: () => void; -declare const data: () => void; -declare const dataset: () => void; -declare const detach: () => void; -declare const each: () => void; -declare const empty: () => void; -declare const eq: () => void; -declare const filter: () => void; -declare const find: () => void; -declare const focus: () => void; -declare const focusin: () => void; -declare const focusout: () => void; -declare const hasClass: () => void; -declare const height: () => void; -declare const hide: () => void; -declare const html: () => void; -declare const insertAfter: () => void; -declare const insertBefore: () => void; -declare const is: () => void; -declare const keydown: () => void; -declare const keypress: () => void; -declare const keyup: () => void; -declare const mousedown: () => void; -declare const mouseenter: () => void; -declare const mouseleave: () => void; -declare const mousemove: () => void; -declare const mouseout: () => void; -declare const mouseover: () => void; -declare const mouseup: () => void; -declare const next: () => void; -declare const nextAll: () => void; -declare const off: () => void; -declare const offset: () => void; -declare const on: () => void; -declare const once: () => void; -declare const outerHeight: () => void; -declare const outerWidth: () => void; -declare const parent: () => void; -declare const parents: () => void; -declare const prepend: () => void; -declare const prependTo: () => void; -declare const prev: () => void; -declare const prevAll: () => void; -declare const prop: () => void; -declare const remove: () => void; -declare const removeAttr: () => void; -declare const removeClass: () => void; -declare const removeData: () => void; -declare const resize: () => void; -declare const scroll: () => void; -declare const scrollLeft: () => void; -declare const scrollTo: () => void; -declare const scrollTop: () => void; -declare const show: () => void; -declare const siblings: () => void; -declare const stop: () => void; -declare const styles: () => void; -declare const submit: () => void; -declare const text: () => void; -declare const toggleClass: () => void; -declare const touchend: () => void; -declare const touchmove: () => void; -declare const touchstart: () => void; -declare const transform: () => void; -declare const transition: () => void; -declare const transitionEnd: () => void; -declare const trigger: () => void; -declare const val: () => void; -declare const value: () => void; -declare const width: () => void; - -export { - Dom7 as $, - add, - addClass, - animate, - animationEnd, - append, - appendTo, - attr, - blur, - change, - children, - click, - closest, - css, - data, - dataset, - detach, - each, - empty, - eq, - filter, - find, - focus, - focusin, - focusout, - hasClass, - height, - hide, - html, - insertAfter, - insertBefore, - is, - keydown, - keypress, - keyup, - mousedown, - mouseenter, - mouseleave, - mousemove, - mouseout, - mouseover, - mouseup, - next, - nextAll, - off, - offset, - on, - once, - outerHeight, - outerWidth, - parent, - parents, - prepend, - prependTo, - prev, - prevAll, - prop, - remove, - removeAttr, - removeClass, - removeData, - resize, - scroll, - scrollLeft, - scrollTo, - scrollTop, - show, - siblings, - stop, - styles, - submit, - text, - toggleClass, - touchend, - touchmove, - touchstart, - transform, - transition, - transitionEnd, - trigger, - val, - value, - width, -}; -export default Dom7; diff --git a/resources/web/include/swiper/node_modules/dom7/dom7.esm.js b/resources/web/include/swiper/node_modules/dom7/dom7.esm.js deleted file mode 100644 index 96a5881ef3..0000000000 --- a/resources/web/include/swiper/node_modules/dom7/dom7.esm.js +++ /dev/null @@ -1,1478 +0,0 @@ -/** - * Dom7 4.0.1 - * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API - * https://framework7.io/docs/dom7.html - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: October 27, 2021 - */ -import { getWindow, getDocument } from 'ssr-window'; - -/* eslint-disable no-proto */ -function makeReactive(obj) { - const proto = obj.__proto__; - Object.defineProperty(obj, '__proto__', { - get() { - return proto; - }, - - set(value) { - proto.__proto__ = value; - } - - }); -} - -class Dom7 extends Array { - constructor(items) { - super(...(items || [])); - makeReactive(this); - } - -} - -function arrayFlat(arr = []) { - const res = []; - arr.forEach(el => { - if (Array.isArray(el)) { - res.push(...arrayFlat(el)); - } else { - res.push(el); - } - }); - return res; -} -function arrayFilter(arr, callback) { - return Array.prototype.filter.call(arr, callback); -} -function arrayUnique(arr) { - const uniqueArray = []; - - for (let i = 0; i < arr.length; i += 1) { - if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]); - } - - return uniqueArray; -} -function toCamelCase(string) { - return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase()); -} - -// eslint-disable-next-line - -function qsa(selector, context) { - if (typeof selector !== 'string') { - return [selector]; - } - - const a = []; - const res = context.querySelectorAll(selector); - - for (let i = 0; i < res.length; i += 1) { - a.push(res[i]); - } - - return a; -} - -function $(selector, context) { - const window = getWindow(); - const document = getDocument(); - let arr = []; - - if (!context && selector instanceof Dom7) { - return selector; - } - - if (!selector) { - return new Dom7(arr); - } - - if (typeof selector === 'string') { - const html = selector.trim(); - - if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { - let toCreate = 'div'; - if (html.indexOf(' c.split(' '))); - this.forEach(el => { - el.classList.add(...classNames); - }); - return this; -} - -function removeClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - this.forEach(el => { - el.classList.remove(...classNames); - }); - return this; -} - -function toggleClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - this.forEach(el => { - classNames.forEach(className => { - el.classList.toggle(className); - }); - }); -} - -function hasClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - return arrayFilter(this, el => { - return classNames.filter(className => el.classList.contains(className)).length > 0; - }).length > 0; -} - -function attr(attrs, value) { - if (arguments.length === 1 && typeof attrs === 'string') { - // Get attr - if (this[0]) return this[0].getAttribute(attrs); - return undefined; - } // Set attrs - - - for (let i = 0; i < this.length; i += 1) { - if (arguments.length === 2) { - // String - this[i].setAttribute(attrs, value); - } else { - // Object - for (const attrName in attrs) { - this[i][attrName] = attrs[attrName]; - this[i].setAttribute(attrName, attrs[attrName]); - } - } - } - - return this; -} - -function removeAttr(attr) { - for (let i = 0; i < this.length; i += 1) { - this[i].removeAttribute(attr); - } - - return this; -} - -function prop(props, value) { - if (arguments.length === 1 && typeof props === 'string') { - // Get prop - if (this[0]) return this[0][props]; - } else { - // Set props - for (let i = 0; i < this.length; i += 1) { - if (arguments.length === 2) { - // String - this[i][props] = value; - } else { - // Object - for (const propName in props) { - this[i][propName] = props[propName]; - } - } - } - - return this; - } - - return this; -} - -function data(key, value) { - let el; - - if (typeof value === 'undefined') { - el = this[0]; - if (!el) return undefined; // Get value - - if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) { - return el.dom7ElementDataStorage[key]; - } - - const dataKey = el.getAttribute(`data-${key}`); - - if (dataKey) { - return dataKey; - } - - return undefined; - } // Set value - - - for (let i = 0; i < this.length; i += 1) { - el = this[i]; - if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {}; - el.dom7ElementDataStorage[key] = value; - } - - return this; -} - -function removeData(key) { - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) { - el.dom7ElementDataStorage[key] = null; - delete el.dom7ElementDataStorage[key]; - } - } -} - -function dataset() { - const el = this[0]; - if (!el) return undefined; - const dataset = {}; // eslint-disable-line - - if (el.dataset) { - for (const dataKey in el.dataset) { - dataset[dataKey] = el.dataset[dataKey]; - } - } else { - for (let i = 0; i < el.attributes.length; i += 1) { - const attr = el.attributes[i]; - - if (attr.name.indexOf('data-') >= 0) { - dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value; - } - } - } - - for (const key in dataset) { - if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1; - } - - return dataset; -} - -function val(value) { - if (typeof value === 'undefined') { - // get value - const el = this[0]; - if (!el) return undefined; - - if (el.multiple && el.nodeName.toLowerCase() === 'select') { - const values = []; - - for (let i = 0; i < el.selectedOptions.length; i += 1) { - values.push(el.selectedOptions[i].value); - } - - return values; - } - - return el.value; - } // set value - - - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') { - for (let j = 0; j < el.options.length; j += 1) { - el.options[j].selected = value.indexOf(el.options[j].value) >= 0; - } - } else { - el.value = value; - } - } - - return this; -} - -function value(value) { - return this.val(value); -} - -function transform(transform) { - for (let i = 0; i < this.length; i += 1) { - this[i].style.transform = transform; - } - - return this; -} - -function transition(duration) { - for (let i = 0; i < this.length; i += 1) { - this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration; - } - - return this; -} - -function on(...args) { - let [eventType, targetSelector, listener, capture] = args; - - if (typeof args[1] === 'function') { - [eventType, listener, capture] = args; - targetSelector = undefined; - } - - if (!capture) capture = false; - - function handleLiveEvent(e) { - const target = e.target; - if (!target) return; - const eventData = e.target.dom7EventData || []; - - if (eventData.indexOf(e) < 0) { - eventData.unshift(e); - } - - if ($(target).is(targetSelector)) listener.apply(target, eventData);else { - const parents = $(target).parents(); // eslint-disable-line - - for (let k = 0; k < parents.length; k += 1) { - if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData); - } - } - } - - function handleEvent(e) { - const eventData = e && e.target ? e.target.dom7EventData || [] : []; - - if (eventData.indexOf(e) < 0) { - eventData.unshift(e); - } - - listener.apply(this, eventData); - } - - const events = eventType.split(' '); - let j; - - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (!targetSelector) { - for (j = 0; j < events.length; j += 1) { - const event = events[j]; - if (!el.dom7Listeners) el.dom7Listeners = {}; - if (!el.dom7Listeners[event]) el.dom7Listeners[event] = []; - el.dom7Listeners[event].push({ - listener, - proxyListener: handleEvent - }); - el.addEventListener(event, handleEvent, capture); - } - } else { - // Live events - for (j = 0; j < events.length; j += 1) { - const event = events[j]; - if (!el.dom7LiveListeners) el.dom7LiveListeners = {}; - if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = []; - el.dom7LiveListeners[event].push({ - listener, - proxyListener: handleLiveEvent - }); - el.addEventListener(event, handleLiveEvent, capture); - } - } - } - - return this; -} - -function off(...args) { - let [eventType, targetSelector, listener, capture] = args; - - if (typeof args[1] === 'function') { - [eventType, listener, capture] = args; - targetSelector = undefined; - } - - if (!capture) capture = false; - const events = eventType.split(' '); - - for (let i = 0; i < events.length; i += 1) { - const event = events[i]; - - for (let j = 0; j < this.length; j += 1) { - const el = this[j]; - let handlers; - - if (!targetSelector && el.dom7Listeners) { - handlers = el.dom7Listeners[event]; - } else if (targetSelector && el.dom7LiveListeners) { - handlers = el.dom7LiveListeners[event]; - } - - if (handlers && handlers.length) { - for (let k = handlers.length - 1; k >= 0; k -= 1) { - const handler = handlers[k]; - - if (listener && handler.listener === listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } else if (!listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } - } - } - } - } - - return this; -} - -function once(...args) { - const dom = this; - let [eventName, targetSelector, listener, capture] = args; - - if (typeof args[1] === 'function') { - [eventName, listener, capture] = args; - targetSelector = undefined; - } - - function onceHandler(...eventArgs) { - listener.apply(this, eventArgs); - dom.off(eventName, targetSelector, onceHandler, capture); - - if (onceHandler.dom7proxy) { - delete onceHandler.dom7proxy; - } - } - - onceHandler.dom7proxy = listener; - return dom.on(eventName, targetSelector, onceHandler, capture); -} - -function trigger(...args) { - const window = getWindow(); - const events = args[0].split(' '); - const eventData = args[1]; - - for (let i = 0; i < events.length; i += 1) { - const event = events[i]; - - for (let j = 0; j < this.length; j += 1) { - const el = this[j]; - - if (window.CustomEvent) { - const evt = new window.CustomEvent(event, { - detail: eventData, - bubbles: true, - cancelable: true - }); - el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0); - el.dispatchEvent(evt); - el.dom7EventData = []; - delete el.dom7EventData; - } - } - } - - return this; -} - -function transitionEnd(callback) { - const dom = this; - - function fireCallBack(e) { - if (e.target !== this) return; - callback.call(this, e); - dom.off('transitionend', fireCallBack); - } - - if (callback) { - dom.on('transitionend', fireCallBack); - } - - return this; -} - -function animationEnd(callback) { - const dom = this; - - function fireCallBack(e) { - if (e.target !== this) return; - callback.call(this, e); - dom.off('animationend', fireCallBack); - } - - if (callback) { - dom.on('animationend', fireCallBack); - } - - return this; -} - -function width() { - const window = getWindow(); - - if (this[0] === window) { - return window.innerWidth; - } - - if (this.length > 0) { - return parseFloat(this.css('width')); - } - - return null; -} - -function outerWidth(includeMargins) { - if (this.length > 0) { - if (includeMargins) { - const styles = this.styles(); - return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left')); - } - - return this[0].offsetWidth; - } - - return null; -} - -function height() { - const window = getWindow(); - - if (this[0] === window) { - return window.innerHeight; - } - - if (this.length > 0) { - return parseFloat(this.css('height')); - } - - return null; -} - -function outerHeight(includeMargins) { - if (this.length > 0) { - if (includeMargins) { - const styles = this.styles(); - return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom')); - } - - return this[0].offsetHeight; - } - - return null; -} - -function offset() { - if (this.length > 0) { - const window = getWindow(); - const document = getDocument(); - const el = this[0]; - 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 - }; - } - - return null; -} - -function hide() { - for (let i = 0; i < this.length; i += 1) { - this[i].style.display = 'none'; - } - - return this; -} - -function show() { - const window = getWindow(); - - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (el.style.display === 'none') { - el.style.display = ''; - } - - if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') { - // Still not visible - el.style.display = 'block'; - } - } - - return this; -} - -function styles() { - const window = getWindow(); - if (this[0]) return window.getComputedStyle(this[0], null); - return {}; -} - -function css(props, value) { - const window = getWindow(); - let i; - - if (arguments.length === 1) { - if (typeof props === 'string') { - // .css('width') - if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props); - } else { - // .css({ width: '100px' }) - for (i = 0; i < this.length; i += 1) { - for (const prop in props) { - this[i].style[prop] = props[prop]; - } - } - - return this; - } - } - - if (arguments.length === 2 && typeof props === 'string') { - // .css('width', '100px') - for (i = 0; i < this.length; i += 1) { - this[i].style[props] = value; - } - - return this; - } - - return this; -} - -function each(callback) { - if (!callback) return this; - this.forEach((el, index) => { - callback.apply(el, [el, index]); - }); - return this; -} - -function filter(callback) { - const result = arrayFilter(this, callback); - return $(result); -} - -function html(html) { - if (typeof html === 'undefined') { - return this[0] ? this[0].innerHTML : null; - } - - for (let i = 0; i < this.length; i += 1) { - this[i].innerHTML = html; - } - - return this; -} - -function text(text) { - if (typeof text === 'undefined') { - return this[0] ? this[0].textContent.trim() : null; - } - - for (let i = 0; i < this.length; i += 1) { - this[i].textContent = text; - } - - return this; -} - -function is(selector) { - const window = getWindow(); - const document = getDocument(); - const el = this[0]; - let compareWith; - let i; - if (!el || typeof selector === 'undefined') return false; - - if (typeof selector === 'string') { - if (el.matches) return el.matches(selector); - if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector); - if (el.msMatchesSelector) return el.msMatchesSelector(selector); - compareWith = $(selector); - - for (i = 0; i < compareWith.length; i += 1) { - if (compareWith[i] === el) return true; - } - - return false; - } - - if (selector === document) { - return el === document; - } - - if (selector === window) { - return el === window; - } - - if (selector.nodeType || selector instanceof Dom7) { - compareWith = selector.nodeType ? [selector] : selector; - - for (i = 0; i < compareWith.length; i += 1) { - if (compareWith[i] === el) return true; - } - - return false; - } - - return false; -} - -function index() { - let child = this[0]; - 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 eq(index) { - if (typeof index === 'undefined') return this; - const length = this.length; - - if (index > length - 1) { - return $([]); - } - - if (index < 0) { - const returnIndex = length + index; - if (returnIndex < 0) return $([]); - return $([this[returnIndex]]); - } - - return $([this[index]]); -} - -function append(...els) { - let newChild; - const document = getDocument(); - - for (let k = 0; k < els.length; k += 1) { - newChild = els[k]; - - for (let i = 0; i < this.length; i += 1) { - if (typeof newChild === 'string') { - const tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - - while (tempDiv.firstChild) { - this[i].appendChild(tempDiv.firstChild); - } - } else if (newChild instanceof Dom7) { - for (let j = 0; j < newChild.length; j += 1) { - this[i].appendChild(newChild[j]); - } - } else { - this[i].appendChild(newChild); - } - } - } - - return this; -} - -function appendTo(parent) { - $(parent).append(this); - return this; -} - -function prepend(newChild) { - const document = getDocument(); - let i; - let j; - - for (i = 0; i < this.length; i += 1) { - if (typeof newChild === 'string') { - const tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - - for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) { - this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); - } - } else if (newChild instanceof Dom7) { - for (j = 0; j < newChild.length; j += 1) { - this[i].insertBefore(newChild[j], this[i].childNodes[0]); - } - } else { - this[i].insertBefore(newChild, this[i].childNodes[0]); - } - } - - return this; -} - -function prependTo(parent) { - $(parent).prepend(this); - return this; -} - -function insertBefore(selector) { - const before = $(selector); - - for (let i = 0; i < this.length; i += 1) { - if (before.length === 1) { - before[0].parentNode.insertBefore(this[i], before[0]); - } else if (before.length > 1) { - for (let j = 0; j < before.length; j += 1) { - before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]); - } - } - } -} - -function insertAfter(selector) { - const after = $(selector); - - for (let i = 0; i < this.length; i += 1) { - if (after.length === 1) { - after[0].parentNode.insertBefore(this[i], after[0].nextSibling); - } else if (after.length > 1) { - for (let j = 0; j < after.length; j += 1) { - after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling); - } - } - } -} - -function next(selector) { - if (this.length > 0) { - if (selector) { - if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { - return $([this[0].nextElementSibling]); - } - - return $([]); - } - - if (this[0].nextElementSibling) return $([this[0].nextElementSibling]); - return $([]); - } - - return $([]); -} - -function nextAll(selector) { - const nextEls = []; - let el = this[0]; - if (!el) return $([]); - - while (el.nextElementSibling) { - const next = el.nextElementSibling; // eslint-disable-line - - if (selector) { - if ($(next).is(selector)) nextEls.push(next); - } else nextEls.push(next); - - el = next; - } - - return $(nextEls); -} - -function prev(selector) { - if (this.length > 0) { - const el = this[0]; - - if (selector) { - if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { - return $([el.previousElementSibling]); - } - - return $([]); - } - - if (el.previousElementSibling) return $([el.previousElementSibling]); - return $([]); - } - - return $([]); -} - -function prevAll(selector) { - const prevEls = []; - let el = this[0]; - if (!el) return $([]); - - while (el.previousElementSibling) { - const prev = el.previousElementSibling; // eslint-disable-line - - if (selector) { - if ($(prev).is(selector)) prevEls.push(prev); - } else prevEls.push(prev); - - el = prev; - } - - return $(prevEls); -} - -function siblings(selector) { - return this.nextAll(selector).add(this.prevAll(selector)); -} - -function parent(selector) { - const parents = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - if (this[i].parentNode !== null) { - if (selector) { - if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode); - } else { - parents.push(this[i].parentNode); - } - } - } - - return $(parents); -} - -function parents(selector) { - const parents = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - let parent = this[i].parentNode; // eslint-disable-line - - while (parent) { - if (selector) { - if ($(parent).is(selector)) parents.push(parent); - } else { - parents.push(parent); - } - - parent = parent.parentNode; - } - } - - return $(parents); -} - -function closest(selector) { - let closest = this; // eslint-disable-line - - if (typeof selector === 'undefined') { - return $([]); - } - - if (!closest.is(selector)) { - closest = closest.parents(selector).eq(0); - } - - return closest; -} - -function find(selector) { - const foundElements = []; - - for (let i = 0; i < this.length; i += 1) { - const found = this[i].querySelectorAll(selector); - - for (let j = 0; j < found.length; j += 1) { - foundElements.push(found[j]); - } - } - - return $(foundElements); -} - -function children(selector) { - const children = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - const childNodes = this[i].children; - - for (let j = 0; j < childNodes.length; j += 1) { - if (!selector || $(childNodes[j]).is(selector)) { - children.push(childNodes[j]); - } - } - } - - return $(children); -} - -function remove() { - for (let i = 0; i < this.length; i += 1) { - if (this[i].parentNode) this[i].parentNode.removeChild(this[i]); - } - - return this; -} - -function detach() { - return this.remove(); -} - -function add(...els) { - const dom = this; - let i; - let j; - - for (i = 0; i < els.length; i += 1) { - const toAdd = $(els[i]); - - for (j = 0; j < toAdd.length; j += 1) { - dom.push(toAdd[j]); - } - } - - return dom; -} - -function empty() { - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (el.nodeType === 1) { - for (let j = 0; j < el.childNodes.length; j += 1) { - if (el.childNodes[j].parentNode) { - el.childNodes[j].parentNode.removeChild(el.childNodes[j]); - } - } - - el.textContent = ''; - } - } - - return this; -} - -// eslint-disable-next-line - -function scrollTo(...args) { - const window = getWindow(); - let [left, top, duration, easing, callback] = args; - - if (args.length === 4 && typeof easing === 'function') { - callback = easing; - [left, top, duration, callback, easing] = args; - } - - if (typeof easing === 'undefined') easing = 'swing'; - return this.each(function animate() { - const el = this; - let currentTop; - let currentLeft; - let maxTop; - let maxLeft; - let newTop; - let newLeft; - let scrollTop; // eslint-disable-line - - let scrollLeft; // eslint-disable-line - - let animateTop = top > 0 || top === 0; - let animateLeft = left > 0 || left === 0; - - if (typeof easing === 'undefined') { - easing = 'swing'; - } - - if (animateTop) { - currentTop = el.scrollTop; - - if (!duration) { - el.scrollTop = top; - } - } - - if (animateLeft) { - currentLeft = el.scrollLeft; - - if (!duration) { - el.scrollLeft = left; - } - } - - if (!duration) return; - - if (animateTop) { - maxTop = el.scrollHeight - el.offsetHeight; - newTop = Math.max(Math.min(top, maxTop), 0); - } - - if (animateLeft) { - maxLeft = el.scrollWidth - el.offsetWidth; - newLeft = Math.max(Math.min(left, maxLeft), 0); - } - - let startTime = null; - if (animateTop && newTop === currentTop) animateTop = false; - if (animateLeft && newLeft === currentLeft) animateLeft = false; - - function render(time = new Date().getTime()) { - if (startTime === null) { - startTime = time; - } - - const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); - const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2; - let done; - if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop); - if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft); - - if (animateTop && newTop > currentTop && scrollTop >= newTop) { - el.scrollTop = newTop; - done = true; - } - - if (animateTop && newTop < currentTop && scrollTop <= newTop) { - el.scrollTop = newTop; - done = true; - } - - if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) { - el.scrollLeft = newLeft; - done = true; - } - - if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) { - el.scrollLeft = newLeft; - done = true; - } - - if (done) { - if (callback) callback(); - return; - } - - if (animateTop) el.scrollTop = scrollTop; - if (animateLeft) el.scrollLeft = scrollLeft; - window.requestAnimationFrame(render); - } - - window.requestAnimationFrame(render); - }); -} // scrollTop(top, duration, easing, callback) { - - -function scrollTop(...args) { - let [top, duration, easing, callback] = args; - - if (args.length === 3 && typeof easing === 'function') { - [top, duration, callback, easing] = args; - } - - const dom = this; - - if (typeof top === 'undefined') { - if (dom.length > 0) return dom[0].scrollTop; - return null; - } - - return dom.scrollTo(undefined, top, duration, easing, callback); -} - -function scrollLeft(...args) { - let [left, duration, easing, callback] = args; - - if (args.length === 3 && typeof easing === 'function') { - [left, duration, callback, easing] = args; - } - - const dom = this; - - if (typeof left === 'undefined') { - if (dom.length > 0) return dom[0].scrollLeft; - return null; - } - - return dom.scrollTo(left, undefined, duration, easing, callback); -} - -// eslint-disable-next-line - -function animate(initialProps, initialParams) { - const window = getWindow(); - const els = this; - const a = { - props: Object.assign({}, initialProps), - params: Object.assign({ - duration: 300, - easing: 'swing' // or 'linear' - - /* Callbacks - begin(elements) - complete(elements) - progress(elements, complete, remaining, start, tweenValue) - */ - - }, initialParams), - elements: els, - animating: false, - que: [], - - easingProgress(easing, progress) { - if (easing === 'swing') { - return 0.5 - Math.cos(progress * Math.PI) / 2; - } - - if (typeof easing === 'function') { - return easing(progress); - } - - return progress; - }, - - stop() { - if (a.frameId) { - window.cancelAnimationFrame(a.frameId); - } - - a.animating = false; - a.elements.each(el => { - const element = el; - delete element.dom7AnimateInstance; - }); - a.que = []; - }, - - done(complete) { - a.animating = false; - a.elements.each(el => { - const element = el; - delete element.dom7AnimateInstance; - }); - if (complete) complete(els); - - if (a.que.length > 0) { - const que = a.que.shift(); - a.animate(que[0], que[1]); - } - }, - - animate(props, params) { - if (a.animating) { - a.que.push([props, params]); - return a; - } - - const elements = []; // Define & Cache Initials & Units - - a.elements.each((el, index) => { - let initialFullValue; - let initialValue; - let unit; - let finalValue; - let finalFullValue; - if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a; - elements[index] = { - container: el - }; - Object.keys(props).forEach(prop => { - initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.'); - initialValue = parseFloat(initialFullValue); - unit = initialFullValue.replace(initialValue, ''); - finalValue = parseFloat(props[prop]); - finalFullValue = props[prop] + unit; - elements[index][prop] = { - initialFullValue, - initialValue, - unit, - finalValue, - finalFullValue, - currentValue: initialValue - }; - }); - }); - let startTime = null; - let time; - let elementsDone = 0; - let propsDone = 0; - let done; - let began = false; - a.animating = true; - - function render() { - time = new Date().getTime(); - let progress; - let easeProgress; // let el; - - if (!began) { - began = true; - if (params.begin) params.begin(els); - } - - if (startTime === null) { - startTime = time; - } - - if (params.progress) { - // eslint-disable-next-line - params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime); - } - - elements.forEach(element => { - const el = element; - if (done || el.done) return; - Object.keys(props).forEach(prop => { - if (done || el.done) return; - progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0); - easeProgress = a.easingProgress(params.easing, progress); - const { - initialValue, - finalValue, - unit - } = el[prop]; - el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue); - const currentValue = el[prop].currentValue; - - if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) { - el.container.style[prop] = finalValue + unit; - propsDone += 1; - - if (propsDone === Object.keys(props).length) { - el.done = true; - elementsDone += 1; - } - - if (elementsDone === elements.length) { - done = true; - } - } - - if (done) { - a.done(params.complete); - return; - } - - el.container.style[prop] = currentValue + unit; - }); - }); - if (done) return; // Then call - - a.frameId = window.requestAnimationFrame(render); - } - - a.frameId = window.requestAnimationFrame(render); - return a; - } - - }; - - if (a.elements.length === 0) { - return els; - } - - let animateInstance; - - for (let i = 0; i < a.elements.length; i += 1) { - if (a.elements[i].dom7AnimateInstance) { - animateInstance = a.elements[i].dom7AnimateInstance; - } else a.elements[i].dom7AnimateInstance = a; - } - - if (!animateInstance) { - animateInstance = a; - } - - if (initialProps === 'stop') { - animateInstance.stop(); - } else { - animateInstance.animate(a.props, a.params); - } - - return els; -} - -function stop() { - const els = this; - - for (let i = 0; i < els.length; i += 1) { - if (els[i].dom7AnimateInstance) { - els[i].dom7AnimateInstance.stop(); - } - } -} - -const noTrigger = 'resize scroll'.split(' '); - -function shortcut(name) { - function eventHandler(...args) { - if (typeof args[0] === 'undefined') { - for (let i = 0; i < this.length; i += 1) { - if (noTrigger.indexOf(name) < 0) { - if (name in this[i]) this[i][name]();else { - $(this[i]).trigger(name); - } - } - } - - return this; - } - - return this.on(name, ...args); - } - - return eventHandler; -} - -const click = shortcut('click'); -const blur = shortcut('blur'); -const focus = shortcut('focus'); -const focusin = shortcut('focusin'); -const focusout = shortcut('focusout'); -const keyup = shortcut('keyup'); -const keydown = shortcut('keydown'); -const keypress = shortcut('keypress'); -const submit = shortcut('submit'); -const change = shortcut('change'); -const mousedown = shortcut('mousedown'); -const mousemove = shortcut('mousemove'); -const mouseup = shortcut('mouseup'); -const mouseenter = shortcut('mouseenter'); -const mouseleave = shortcut('mouseleave'); -const mouseout = shortcut('mouseout'); -const mouseover = shortcut('mouseover'); -const touchstart = shortcut('touchstart'); -const touchend = shortcut('touchend'); -const touchmove = shortcut('touchmove'); -const resize = shortcut('resize'); -const scroll = shortcut('scroll'); - -export default $; -export { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width }; diff --git a/resources/web/include/swiper/node_modules/dom7/dom7.js b/resources/web/include/swiper/node_modules/dom7/dom7.js deleted file mode 100644 index 4327572706..0000000000 --- a/resources/web/include/swiper/node_modules/dom7/dom7.js +++ /dev/null @@ -1,1768 +0,0 @@ -/** - * Dom7 4.0.1 - * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API - * https://framework7.io/docs/dom7.html - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: October 27, 2021 - */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Dom7 = factory()); -}(this, (function () { 'use strict'; - - /** - * SSR Window 4.0.0 - * Better handling for window object in SSR environment - * https://github.com/nolimits4web/ssr-window - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: August 25, 2021 - */ - - /* eslint-disable no-param-reassign */ - function isObject(obj) { - return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; - } - - function extend(target = {}, src = {}) { - Object.keys(src).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; - } - - /* eslint-disable no-proto */ - function makeReactive(obj) { - const proto = obj.__proto__; - Object.defineProperty(obj, '__proto__', { - get() { - return proto; - }, - - set(value) { - proto.__proto__ = value; - } - - }); - } - - class Dom7 extends Array { - constructor(items) { - super(...(items || [])); - makeReactive(this); - } - - } - - function arrayFlat(arr = []) { - const res = []; - arr.forEach(el => { - if (Array.isArray(el)) { - res.push(...arrayFlat(el)); - } else { - res.push(el); - } - }); - return res; - } - function arrayFilter(arr, callback) { - return Array.prototype.filter.call(arr, callback); - } - function arrayUnique(arr) { - const uniqueArray = []; - - for (let i = 0; i < arr.length; i += 1) { - if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]); - } - - return uniqueArray; - } - function toCamelCase(string) { - return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase()); - } - - // eslint-disable-next-line - - function qsa(selector, context) { - if (typeof selector !== 'string') { - return [selector]; - } - - const a = []; - const res = context.querySelectorAll(selector); - - for (let i = 0; i < res.length; i += 1) { - a.push(res[i]); - } - - return a; - } - - function $(selector, context) { - const window = getWindow(); - const document = getDocument(); - let arr = []; - - if (!context && selector instanceof Dom7) { - return selector; - } - - if (!selector) { - return new Dom7(arr); - } - - if (typeof selector === 'string') { - const html = selector.trim(); - - if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { - let toCreate = 'div'; - if (html.indexOf(' c.split(' '))); - this.forEach(el => { - el.classList.add(...classNames); - }); - return this; - } - - function removeClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - this.forEach(el => { - el.classList.remove(...classNames); - }); - return this; - } - - function toggleClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - this.forEach(el => { - classNames.forEach(className => { - el.classList.toggle(className); - }); - }); - } - - function hasClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - return arrayFilter(this, el => { - return classNames.filter(className => el.classList.contains(className)).length > 0; - }).length > 0; - } - - function attr(attrs, value) { - if (arguments.length === 1 && typeof attrs === 'string') { - // Get attr - if (this[0]) return this[0].getAttribute(attrs); - return undefined; - } // Set attrs - - - for (let i = 0; i < this.length; i += 1) { - if (arguments.length === 2) { - // String - this[i].setAttribute(attrs, value); - } else { - // Object - for (const attrName in attrs) { - this[i][attrName] = attrs[attrName]; - this[i].setAttribute(attrName, attrs[attrName]); - } - } - } - - return this; - } - - function removeAttr(attr) { - for (let i = 0; i < this.length; i += 1) { - this[i].removeAttribute(attr); - } - - return this; - } - - function prop(props, value) { - if (arguments.length === 1 && typeof props === 'string') { - // Get prop - if (this[0]) return this[0][props]; - } else { - // Set props - for (let i = 0; i < this.length; i += 1) { - if (arguments.length === 2) { - // String - this[i][props] = value; - } else { - // Object - for (const propName in props) { - this[i][propName] = props[propName]; - } - } - } - - return this; - } - - return this; - } - - function data(key, value) { - let el; - - if (typeof value === 'undefined') { - el = this[0]; - if (!el) return undefined; // Get value - - if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) { - return el.dom7ElementDataStorage[key]; - } - - const dataKey = el.getAttribute(`data-${key}`); - - if (dataKey) { - return dataKey; - } - - return undefined; - } // Set value - - - for (let i = 0; i < this.length; i += 1) { - el = this[i]; - if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {}; - el.dom7ElementDataStorage[key] = value; - } - - return this; - } - - function removeData(key) { - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) { - el.dom7ElementDataStorage[key] = null; - delete el.dom7ElementDataStorage[key]; - } - } - } - - function dataset() { - const el = this[0]; - if (!el) return undefined; - const dataset = {}; // eslint-disable-line - - if (el.dataset) { - for (const dataKey in el.dataset) { - dataset[dataKey] = el.dataset[dataKey]; - } - } else { - for (let i = 0; i < el.attributes.length; i += 1) { - const attr = el.attributes[i]; - - if (attr.name.indexOf('data-') >= 0) { - dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value; - } - } - } - - for (const key in dataset) { - if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1; - } - - return dataset; - } - - function val(value) { - if (typeof value === 'undefined') { - // get value - const el = this[0]; - if (!el) return undefined; - - if (el.multiple && el.nodeName.toLowerCase() === 'select') { - const values = []; - - for (let i = 0; i < el.selectedOptions.length; i += 1) { - values.push(el.selectedOptions[i].value); - } - - return values; - } - - return el.value; - } // set value - - - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') { - for (let j = 0; j < el.options.length; j += 1) { - el.options[j].selected = value.indexOf(el.options[j].value) >= 0; - } - } else { - el.value = value; - } - } - - return this; - } - - function value(value) { - return this.val(value); - } - - function transform(transform) { - for (let i = 0; i < this.length; i += 1) { - this[i].style.transform = transform; - } - - return this; - } - - function transition(duration) { - for (let i = 0; i < this.length; i += 1) { - this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration; - } - - return this; - } - - function on(...args) { - let [eventType, targetSelector, listener, capture] = args; - - if (typeof args[1] === 'function') { - [eventType, listener, capture] = args; - targetSelector = undefined; - } - - if (!capture) capture = false; - - function handleLiveEvent(e) { - const target = e.target; - if (!target) return; - const eventData = e.target.dom7EventData || []; - - if (eventData.indexOf(e) < 0) { - eventData.unshift(e); - } - - if ($(target).is(targetSelector)) listener.apply(target, eventData);else { - const parents = $(target).parents(); // eslint-disable-line - - for (let k = 0; k < parents.length; k += 1) { - if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData); - } - } - } - - function handleEvent(e) { - const eventData = e && e.target ? e.target.dom7EventData || [] : []; - - if (eventData.indexOf(e) < 0) { - eventData.unshift(e); - } - - listener.apply(this, eventData); - } - - const events = eventType.split(' '); - let j; - - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (!targetSelector) { - for (j = 0; j < events.length; j += 1) { - const event = events[j]; - if (!el.dom7Listeners) el.dom7Listeners = {}; - if (!el.dom7Listeners[event]) el.dom7Listeners[event] = []; - el.dom7Listeners[event].push({ - listener, - proxyListener: handleEvent - }); - el.addEventListener(event, handleEvent, capture); - } - } else { - // Live events - for (j = 0; j < events.length; j += 1) { - const event = events[j]; - if (!el.dom7LiveListeners) el.dom7LiveListeners = {}; - if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = []; - el.dom7LiveListeners[event].push({ - listener, - proxyListener: handleLiveEvent - }); - el.addEventListener(event, handleLiveEvent, capture); - } - } - } - - return this; - } - - function off(...args) { - let [eventType, targetSelector, listener, capture] = args; - - if (typeof args[1] === 'function') { - [eventType, listener, capture] = args; - targetSelector = undefined; - } - - if (!capture) capture = false; - const events = eventType.split(' '); - - for (let i = 0; i < events.length; i += 1) { - const event = events[i]; - - for (let j = 0; j < this.length; j += 1) { - const el = this[j]; - let handlers; - - if (!targetSelector && el.dom7Listeners) { - handlers = el.dom7Listeners[event]; - } else if (targetSelector && el.dom7LiveListeners) { - handlers = el.dom7LiveListeners[event]; - } - - if (handlers && handlers.length) { - for (let k = handlers.length - 1; k >= 0; k -= 1) { - const handler = handlers[k]; - - if (listener && handler.listener === listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } else if (!listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } - } - } - } - } - - return this; - } - - function once(...args) { - const dom = this; - let [eventName, targetSelector, listener, capture] = args; - - if (typeof args[1] === 'function') { - [eventName, listener, capture] = args; - targetSelector = undefined; - } - - function onceHandler(...eventArgs) { - listener.apply(this, eventArgs); - dom.off(eventName, targetSelector, onceHandler, capture); - - if (onceHandler.dom7proxy) { - delete onceHandler.dom7proxy; - } - } - - onceHandler.dom7proxy = listener; - return dom.on(eventName, targetSelector, onceHandler, capture); - } - - function trigger(...args) { - const window = getWindow(); - const events = args[0].split(' '); - const eventData = args[1]; - - for (let i = 0; i < events.length; i += 1) { - const event = events[i]; - - for (let j = 0; j < this.length; j += 1) { - const el = this[j]; - - if (window.CustomEvent) { - const evt = new window.CustomEvent(event, { - detail: eventData, - bubbles: true, - cancelable: true - }); - el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0); - el.dispatchEvent(evt); - el.dom7EventData = []; - delete el.dom7EventData; - } - } - } - - return this; - } - - function transitionEnd(callback) { - const dom = this; - - function fireCallBack(e) { - if (e.target !== this) return; - callback.call(this, e); - dom.off('transitionend', fireCallBack); - } - - if (callback) { - dom.on('transitionend', fireCallBack); - } - - return this; - } - - function animationEnd(callback) { - const dom = this; - - function fireCallBack(e) { - if (e.target !== this) return; - callback.call(this, e); - dom.off('animationend', fireCallBack); - } - - if (callback) { - dom.on('animationend', fireCallBack); - } - - return this; - } - - function width() { - const window = getWindow(); - - if (this[0] === window) { - return window.innerWidth; - } - - if (this.length > 0) { - return parseFloat(this.css('width')); - } - - return null; - } - - function outerWidth(includeMargins) { - if (this.length > 0) { - if (includeMargins) { - const styles = this.styles(); - return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left')); - } - - return this[0].offsetWidth; - } - - return null; - } - - function height() { - const window = getWindow(); - - if (this[0] === window) { - return window.innerHeight; - } - - if (this.length > 0) { - return parseFloat(this.css('height')); - } - - return null; - } - - function outerHeight(includeMargins) { - if (this.length > 0) { - if (includeMargins) { - const styles = this.styles(); - return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom')); - } - - return this[0].offsetHeight; - } - - return null; - } - - function offset() { - if (this.length > 0) { - const window = getWindow(); - const document = getDocument(); - const el = this[0]; - 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 - }; - } - - return null; - } - - function hide() { - for (let i = 0; i < this.length; i += 1) { - this[i].style.display = 'none'; - } - - return this; - } - - function show() { - const window = getWindow(); - - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (el.style.display === 'none') { - el.style.display = ''; - } - - if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') { - // Still not visible - el.style.display = 'block'; - } - } - - return this; - } - - function styles() { - const window = getWindow(); - if (this[0]) return window.getComputedStyle(this[0], null); - return {}; - } - - function css(props, value) { - const window = getWindow(); - let i; - - if (arguments.length === 1) { - if (typeof props === 'string') { - // .css('width') - if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props); - } else { - // .css({ width: '100px' }) - for (i = 0; i < this.length; i += 1) { - for (const prop in props) { - this[i].style[prop] = props[prop]; - } - } - - return this; - } - } - - if (arguments.length === 2 && typeof props === 'string') { - // .css('width', '100px') - for (i = 0; i < this.length; i += 1) { - this[i].style[props] = value; - } - - return this; - } - - return this; - } - - function each(callback) { - if (!callback) return this; - this.forEach((el, index) => { - callback.apply(el, [el, index]); - }); - return this; - } - - function filter(callback) { - const result = arrayFilter(this, callback); - return $(result); - } - - function html(html) { - if (typeof html === 'undefined') { - return this[0] ? this[0].innerHTML : null; - } - - for (let i = 0; i < this.length; i += 1) { - this[i].innerHTML = html; - } - - return this; - } - - function text(text) { - if (typeof text === 'undefined') { - return this[0] ? this[0].textContent.trim() : null; - } - - for (let i = 0; i < this.length; i += 1) { - this[i].textContent = text; - } - - return this; - } - - function is(selector) { - const window = getWindow(); - const document = getDocument(); - const el = this[0]; - let compareWith; - let i; - if (!el || typeof selector === 'undefined') return false; - - if (typeof selector === 'string') { - if (el.matches) return el.matches(selector); - if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector); - if (el.msMatchesSelector) return el.msMatchesSelector(selector); - compareWith = $(selector); - - for (i = 0; i < compareWith.length; i += 1) { - if (compareWith[i] === el) return true; - } - - return false; - } - - if (selector === document) { - return el === document; - } - - if (selector === window) { - return el === window; - } - - if (selector.nodeType || selector instanceof Dom7) { - compareWith = selector.nodeType ? [selector] : selector; - - for (i = 0; i < compareWith.length; i += 1) { - if (compareWith[i] === el) return true; - } - - return false; - } - - return false; - } - - function index() { - let child = this[0]; - 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 eq(index) { - if (typeof index === 'undefined') return this; - const length = this.length; - - if (index > length - 1) { - return $([]); - } - - if (index < 0) { - const returnIndex = length + index; - if (returnIndex < 0) return $([]); - return $([this[returnIndex]]); - } - - return $([this[index]]); - } - - function append(...els) { - let newChild; - const document = getDocument(); - - for (let k = 0; k < els.length; k += 1) { - newChild = els[k]; - - for (let i = 0; i < this.length; i += 1) { - if (typeof newChild === 'string') { - const tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - - while (tempDiv.firstChild) { - this[i].appendChild(tempDiv.firstChild); - } - } else if (newChild instanceof Dom7) { - for (let j = 0; j < newChild.length; j += 1) { - this[i].appendChild(newChild[j]); - } - } else { - this[i].appendChild(newChild); - } - } - } - - return this; - } - - function appendTo(parent) { - $(parent).append(this); - return this; - } - - function prepend(newChild) { - const document = getDocument(); - let i; - let j; - - for (i = 0; i < this.length; i += 1) { - if (typeof newChild === 'string') { - const tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - - for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) { - this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); - } - } else if (newChild instanceof Dom7) { - for (j = 0; j < newChild.length; j += 1) { - this[i].insertBefore(newChild[j], this[i].childNodes[0]); - } - } else { - this[i].insertBefore(newChild, this[i].childNodes[0]); - } - } - - return this; - } - - function prependTo(parent) { - $(parent).prepend(this); - return this; - } - - function insertBefore(selector) { - const before = $(selector); - - for (let i = 0; i < this.length; i += 1) { - if (before.length === 1) { - before[0].parentNode.insertBefore(this[i], before[0]); - } else if (before.length > 1) { - for (let j = 0; j < before.length; j += 1) { - before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]); - } - } - } - } - - function insertAfter(selector) { - const after = $(selector); - - for (let i = 0; i < this.length; i += 1) { - if (after.length === 1) { - after[0].parentNode.insertBefore(this[i], after[0].nextSibling); - } else if (after.length > 1) { - for (let j = 0; j < after.length; j += 1) { - after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling); - } - } - } - } - - function next(selector) { - if (this.length > 0) { - if (selector) { - if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { - return $([this[0].nextElementSibling]); - } - - return $([]); - } - - if (this[0].nextElementSibling) return $([this[0].nextElementSibling]); - return $([]); - } - - return $([]); - } - - function nextAll(selector) { - const nextEls = []; - let el = this[0]; - if (!el) return $([]); - - while (el.nextElementSibling) { - const next = el.nextElementSibling; // eslint-disable-line - - if (selector) { - if ($(next).is(selector)) nextEls.push(next); - } else nextEls.push(next); - - el = next; - } - - return $(nextEls); - } - - function prev(selector) { - if (this.length > 0) { - const el = this[0]; - - if (selector) { - if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { - return $([el.previousElementSibling]); - } - - return $([]); - } - - if (el.previousElementSibling) return $([el.previousElementSibling]); - return $([]); - } - - return $([]); - } - - function prevAll(selector) { - const prevEls = []; - let el = this[0]; - if (!el) return $([]); - - while (el.previousElementSibling) { - const prev = el.previousElementSibling; // eslint-disable-line - - if (selector) { - if ($(prev).is(selector)) prevEls.push(prev); - } else prevEls.push(prev); - - el = prev; - } - - return $(prevEls); - } - - function siblings(selector) { - return this.nextAll(selector).add(this.prevAll(selector)); - } - - function parent(selector) { - const parents = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - if (this[i].parentNode !== null) { - if (selector) { - if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode); - } else { - parents.push(this[i].parentNode); - } - } - } - - return $(parents); - } - - function parents(selector) { - const parents = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - let parent = this[i].parentNode; // eslint-disable-line - - while (parent) { - if (selector) { - if ($(parent).is(selector)) parents.push(parent); - } else { - parents.push(parent); - } - - parent = parent.parentNode; - } - } - - return $(parents); - } - - function closest(selector) { - let closest = this; // eslint-disable-line - - if (typeof selector === 'undefined') { - return $([]); - } - - if (!closest.is(selector)) { - closest = closest.parents(selector).eq(0); - } - - return closest; - } - - function find(selector) { - const foundElements = []; - - for (let i = 0; i < this.length; i += 1) { - const found = this[i].querySelectorAll(selector); - - for (let j = 0; j < found.length; j += 1) { - foundElements.push(found[j]); - } - } - - return $(foundElements); - } - - function children(selector) { - const children = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - const childNodes = this[i].children; - - for (let j = 0; j < childNodes.length; j += 1) { - if (!selector || $(childNodes[j]).is(selector)) { - children.push(childNodes[j]); - } - } - } - - return $(children); - } - - function remove() { - for (let i = 0; i < this.length; i += 1) { - if (this[i].parentNode) this[i].parentNode.removeChild(this[i]); - } - - return this; - } - - function detach() { - return this.remove(); - } - - function add(...els) { - const dom = this; - let i; - let j; - - for (i = 0; i < els.length; i += 1) { - const toAdd = $(els[i]); - - for (j = 0; j < toAdd.length; j += 1) { - dom.push(toAdd[j]); - } - } - - return dom; - } - - function empty() { - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (el.nodeType === 1) { - for (let j = 0; j < el.childNodes.length; j += 1) { - if (el.childNodes[j].parentNode) { - el.childNodes[j].parentNode.removeChild(el.childNodes[j]); - } - } - - el.textContent = ''; - } - } - - return this; - } - - var methods = /*#__PURE__*/Object.freeze({ - __proto__: null, - addClass: addClass, - removeClass: removeClass, - toggleClass: toggleClass, - hasClass: hasClass, - attr: attr, - removeAttr: removeAttr, - prop: prop, - data: data, - removeData: removeData, - dataset: dataset, - val: val, - value: value, - transform: transform, - transition: transition, - on: on, - off: off, - once: once, - trigger: trigger, - transitionEnd: transitionEnd, - animationEnd: animationEnd, - width: width, - outerWidth: outerWidth, - height: height, - outerHeight: outerHeight, - offset: offset, - hide: hide, - show: show, - styles: styles, - css: css, - each: each, - filter: filter, - html: html, - text: text, - is: is, - index: index, - eq: eq, - append: append, - appendTo: appendTo, - prepend: prepend, - prependTo: prependTo, - insertBefore: insertBefore, - insertAfter: insertAfter, - next: next, - nextAll: nextAll, - prev: prev, - prevAll: prevAll, - siblings: siblings, - parent: parent, - parents: parents, - closest: closest, - find: find, - children: children, - remove: remove, - detach: detach, - add: add, - empty: empty - }); - - // eslint-disable-next-line - - function scrollTo(...args) { - const window = getWindow(); - let [left, top, duration, easing, callback] = args; - - if (args.length === 4 && typeof easing === 'function') { - callback = easing; - [left, top, duration, callback, easing] = args; - } - - if (typeof easing === 'undefined') easing = 'swing'; - return this.each(function animate() { - const el = this; - let currentTop; - let currentLeft; - let maxTop; - let maxLeft; - let newTop; - let newLeft; - let scrollTop; // eslint-disable-line - - let scrollLeft; // eslint-disable-line - - let animateTop = top > 0 || top === 0; - let animateLeft = left > 0 || left === 0; - - if (typeof easing === 'undefined') { - easing = 'swing'; - } - - if (animateTop) { - currentTop = el.scrollTop; - - if (!duration) { - el.scrollTop = top; - } - } - - if (animateLeft) { - currentLeft = el.scrollLeft; - - if (!duration) { - el.scrollLeft = left; - } - } - - if (!duration) return; - - if (animateTop) { - maxTop = el.scrollHeight - el.offsetHeight; - newTop = Math.max(Math.min(top, maxTop), 0); - } - - if (animateLeft) { - maxLeft = el.scrollWidth - el.offsetWidth; - newLeft = Math.max(Math.min(left, maxLeft), 0); - } - - let startTime = null; - if (animateTop && newTop === currentTop) animateTop = false; - if (animateLeft && newLeft === currentLeft) animateLeft = false; - - function render(time = new Date().getTime()) { - if (startTime === null) { - startTime = time; - } - - const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); - const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2; - let done; - if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop); - if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft); - - if (animateTop && newTop > currentTop && scrollTop >= newTop) { - el.scrollTop = newTop; - done = true; - } - - if (animateTop && newTop < currentTop && scrollTop <= newTop) { - el.scrollTop = newTop; - done = true; - } - - if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) { - el.scrollLeft = newLeft; - done = true; - } - - if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) { - el.scrollLeft = newLeft; - done = true; - } - - if (done) { - if (callback) callback(); - return; - } - - if (animateTop) el.scrollTop = scrollTop; - if (animateLeft) el.scrollLeft = scrollLeft; - window.requestAnimationFrame(render); - } - - window.requestAnimationFrame(render); - }); - } // scrollTop(top, duration, easing, callback) { - - - function scrollTop(...args) { - let [top, duration, easing, callback] = args; - - if (args.length === 3 && typeof easing === 'function') { - [top, duration, callback, easing] = args; - } - - const dom = this; - - if (typeof top === 'undefined') { - if (dom.length > 0) return dom[0].scrollTop; - return null; - } - - return dom.scrollTo(undefined, top, duration, easing, callback); - } - - function scrollLeft(...args) { - let [left, duration, easing, callback] = args; - - if (args.length === 3 && typeof easing === 'function') { - [left, duration, callback, easing] = args; - } - - const dom = this; - - if (typeof left === 'undefined') { - if (dom.length > 0) return dom[0].scrollLeft; - return null; - } - - return dom.scrollTo(left, undefined, duration, easing, callback); - } - - var scroll$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - scrollTo: scrollTo, - scrollTop: scrollTop, - scrollLeft: scrollLeft - }); - - // eslint-disable-next-line - - function animate(initialProps, initialParams) { - const window = getWindow(); - const els = this; - const a = { - props: Object.assign({}, initialProps), - params: Object.assign({ - duration: 300, - easing: 'swing' // or 'linear' - - /* Callbacks - begin(elements) - complete(elements) - progress(elements, complete, remaining, start, tweenValue) - */ - - }, initialParams), - elements: els, - animating: false, - que: [], - - easingProgress(easing, progress) { - if (easing === 'swing') { - return 0.5 - Math.cos(progress * Math.PI) / 2; - } - - if (typeof easing === 'function') { - return easing(progress); - } - - return progress; - }, - - stop() { - if (a.frameId) { - window.cancelAnimationFrame(a.frameId); - } - - a.animating = false; - a.elements.each(el => { - const element = el; - delete element.dom7AnimateInstance; - }); - a.que = []; - }, - - done(complete) { - a.animating = false; - a.elements.each(el => { - const element = el; - delete element.dom7AnimateInstance; - }); - if (complete) complete(els); - - if (a.que.length > 0) { - const que = a.que.shift(); - a.animate(que[0], que[1]); - } - }, - - animate(props, params) { - if (a.animating) { - a.que.push([props, params]); - return a; - } - - const elements = []; // Define & Cache Initials & Units - - a.elements.each((el, index) => { - let initialFullValue; - let initialValue; - let unit; - let finalValue; - let finalFullValue; - if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a; - elements[index] = { - container: el - }; - Object.keys(props).forEach(prop => { - initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.'); - initialValue = parseFloat(initialFullValue); - unit = initialFullValue.replace(initialValue, ''); - finalValue = parseFloat(props[prop]); - finalFullValue = props[prop] + unit; - elements[index][prop] = { - initialFullValue, - initialValue, - unit, - finalValue, - finalFullValue, - currentValue: initialValue - }; - }); - }); - let startTime = null; - let time; - let elementsDone = 0; - let propsDone = 0; - let done; - let began = false; - a.animating = true; - - function render() { - time = new Date().getTime(); - let progress; - let easeProgress; // let el; - - if (!began) { - began = true; - if (params.begin) params.begin(els); - } - - if (startTime === null) { - startTime = time; - } - - if (params.progress) { - // eslint-disable-next-line - params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime); - } - - elements.forEach(element => { - const el = element; - if (done || el.done) return; - Object.keys(props).forEach(prop => { - if (done || el.done) return; - progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0); - easeProgress = a.easingProgress(params.easing, progress); - const { - initialValue, - finalValue, - unit - } = el[prop]; - el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue); - const currentValue = el[prop].currentValue; - - if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) { - el.container.style[prop] = finalValue + unit; - propsDone += 1; - - if (propsDone === Object.keys(props).length) { - el.done = true; - elementsDone += 1; - } - - if (elementsDone === elements.length) { - done = true; - } - } - - if (done) { - a.done(params.complete); - return; - } - - el.container.style[prop] = currentValue + unit; - }); - }); - if (done) return; // Then call - - a.frameId = window.requestAnimationFrame(render); - } - - a.frameId = window.requestAnimationFrame(render); - return a; - } - - }; - - if (a.elements.length === 0) { - return els; - } - - let animateInstance; - - for (let i = 0; i < a.elements.length; i += 1) { - if (a.elements[i].dom7AnimateInstance) { - animateInstance = a.elements[i].dom7AnimateInstance; - } else a.elements[i].dom7AnimateInstance = a; - } - - if (!animateInstance) { - animateInstance = a; - } - - if (initialProps === 'stop') { - animateInstance.stop(); - } else { - animateInstance.animate(a.props, a.params); - } - - return els; - } - - function stop() { - const els = this; - - for (let i = 0; i < els.length; i += 1) { - if (els[i].dom7AnimateInstance) { - els[i].dom7AnimateInstance.stop(); - } - } - } - - var animate$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - animate: animate, - stop: stop - }); - - const noTrigger = 'resize scroll'.split(' '); - - function shortcut(name) { - function eventHandler(...args) { - if (typeof args[0] === 'undefined') { - for (let i = 0; i < this.length; i += 1) { - if (noTrigger.indexOf(name) < 0) { - if (name in this[i]) this[i][name]();else { - $(this[i]).trigger(name); - } - } - } - - return this; - } - - return this.on(name, ...args); - } - - return eventHandler; - } - - const click = shortcut('click'); - const blur = shortcut('blur'); - const focus = shortcut('focus'); - const focusin = shortcut('focusin'); - const focusout = shortcut('focusout'); - const keyup = shortcut('keyup'); - const keydown = shortcut('keydown'); - const keypress = shortcut('keypress'); - const submit = shortcut('submit'); - const change = shortcut('change'); - const mousedown = shortcut('mousedown'); - const mousemove = shortcut('mousemove'); - const mouseup = shortcut('mouseup'); - const mouseenter = shortcut('mouseenter'); - const mouseleave = shortcut('mouseleave'); - const mouseout = shortcut('mouseout'); - const mouseover = shortcut('mouseover'); - const touchstart = shortcut('touchstart'); - const touchend = shortcut('touchend'); - const touchmove = shortcut('touchmove'); - const resize = shortcut('resize'); - const scroll = shortcut('scroll'); - - var shortcuts = /*#__PURE__*/Object.freeze({ - __proto__: null, - click: click, - blur: blur, - focus: focus, - focusin: focusin, - focusout: focusout, - keyup: keyup, - keydown: keydown, - keypress: keypress, - submit: submit, - change: change, - mousedown: mousedown, - mousemove: mousemove, - mouseup: mouseup, - mouseenter: mouseenter, - mouseleave: mouseleave, - mouseout: mouseout, - mouseover: mouseover, - touchstart: touchstart, - touchend: touchend, - touchmove: touchmove, - resize: resize, - scroll: scroll - }); - - [methods, scroll$1, animate$1, shortcuts].forEach(group => { - Object.keys(group).forEach(methodName => { - $.fn[methodName] = group[methodName]; - }); - }); - - return $; - -}))); -//# sourceMappingURL=dom7.js.map diff --git a/resources/web/include/swiper/node_modules/dom7/dom7.js.map b/resources/web/include/swiper/node_modules/dom7/dom7.js.map deleted file mode 100644 index 50290dca01..0000000000 --- a/resources/web/include/swiper/node_modules/dom7/dom7.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"dom7.js","sources":["../node_modules/ssr-window/ssr-window.esm.js","../src/dom7-class.js","../src/utils.js","../src/$.js","../src/methods.js","../src/scroll.js","../src/animate.js","../src/shortcuts.js","../src/dom7.bundle.js"],"sourcesContent":["/**\n * SSR Window 4.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: August 25, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n set(value) {\n proto.__proto__ = value;\n },\n });\n}\nclass Dom7 extends Array {\n constructor(items) {\n super(...(items || []));\n\n makeReactive(this);\n }\n}\nexport default Dom7;\n","export function arrayFlat(arr = []) {\n const res = [];\n arr.forEach((el) => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nexport function arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nexport function arrayUnique(arr) {\n const uniqueArray = [];\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n return uniqueArray;\n}\nexport function toCamelCase(string) {\n return string\n .toLowerCase()\n .replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n","// eslint-disable-next-line\nimport { getWindow, getDocument } from 'ssr-window';\nimport Dom7 from './dom7-class';\nimport { arrayUnique } from './utils';\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n const a = [];\n const res = context.querySelectorAll(selector);\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n if (!selector) {\n return new Dom7(arr);\n }\n if (typeof selector === 'string') {\n const html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach((el) => {\n el.classList.add(...classNames);\n });\n return this;\n}\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map((c) => c.split(' ')));\n this.forEach((el) => {\n el.classList.remove(...classNames);\n });\n return this;\n}\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map((c) => c.split(' ')));\n this.forEach((el) => {\n classNames.forEach((className) => {\n el.classList.toggle(className);\n });\n });\n}\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map((c) => c.split(' ')));\n return (\n arrayFilter(this, (el) => {\n return (\n classNames.filter((className) => el.classList.contains(className))\n .length > 0\n );\n }).length > 0\n );\n}\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n }\n\n // Set attrs\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n return this;\n}\nfunction data(key, value) {\n let el;\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined;\n // Get value\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n\n // Set value\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n}\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;\n else if (dataset[key] === 'true') dataset[key] = true;\n else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n return dataset;\n}\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n return values;\n }\n return el.value;\n }\n\n // set value\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (\n Array.isArray(value) &&\n el.multiple &&\n el.nodeName.toLowerCase() === 'select'\n ) {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n return this;\n}\nfunction value(value) {\n return this.val(value);\n}\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration =\n typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n return this;\n}\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) listener.apply(target, eventData);\n else {\n const parents = $(target).parents(); // eslint-disable-line\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector))\n listener.apply(parents[k], eventData);\n }\n }\n }\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n const events = eventType.split(' ');\n let j;\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n return this;\n}\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n const events = eventType.split(' ');\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (\n listener &&\n handler.listener &&\n handler.listener.dom7proxy &&\n handler.listener.dom7proxy === listener\n ) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n return this;\n}\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n const dom = this;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n return this;\n}\nfunction animationEnd(callback) {\n const dom = this;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n return this;\n}\nfunction width() {\n const window = getWindow();\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return (\n this[0].offsetWidth +\n parseFloat(styles.getPropertyValue('margin-right')) +\n parseFloat(styles.getPropertyValue('margin-left'))\n );\n }\n return this[0].offsetWidth;\n }\n return null;\n}\nfunction height() {\n const window = getWindow();\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return (\n this[0].offsetHeight +\n parseFloat(styles.getPropertyValue('margin-top')) +\n parseFloat(styles.getPropertyValue('margin-bottom'))\n );\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft,\n };\n }\n\n return null;\n}\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n return this;\n}\nfunction show() {\n const window = getWindow();\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n if (\n window.getComputedStyle(el, null).getPropertyValue('display') === 'none'\n ) {\n // Still not visible\n el.style.display = 'block';\n }\n }\n return this;\n}\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n const window = getWindow();\n let i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0])\n return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n if (selector === document) {\n return el === document;\n }\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n return false;\n}\nfunction index() {\n let child = this[0];\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n if (index > length - 1) {\n return $([]);\n }\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n return $([this[index]]);\n}\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n}\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\nfunction insertBefore(selector) {\n const before = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\nfunction insertAfter(selector) {\n const after = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(\n this[i].cloneNode(true),\n after[j].nextSibling,\n );\n }\n }\n }\n}\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (\n this[0].nextElementSibling &&\n $(this[0].nextElementSibling).is(selector)\n ) {\n return $([this[0].nextElementSibling]);\n }\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n return $([]);\n}\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return $(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n if (selector) {\n if (\n el.previousElementSibling &&\n $(el.previousElementSibling).is(selector)\n ) {\n return $([el.previousElementSibling]);\n }\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n return $([]);\n}\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return $(prevEls);\n}\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector))\n parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(parents);\n}\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(parents);\n}\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return $([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n const foundElements = [];\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return $(foundElements);\n}\nfunction children(selector) {\n const children = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return $(children);\n}\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n}\nfunction detach() {\n return this.remove();\n}\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n return dom;\n}\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n el.textContent = '';\n }\n }\n return this;\n}\n\nexport {\n addClass,\n removeClass,\n toggleClass,\n hasClass,\n attr,\n removeAttr,\n prop,\n data,\n removeData,\n dataset,\n val,\n value,\n transform,\n transition,\n on,\n off,\n once,\n trigger,\n transitionEnd,\n animationEnd,\n width,\n outerWidth,\n height,\n outerHeight,\n offset,\n hide,\n show,\n styles,\n css,\n each,\n filter,\n html,\n text,\n is,\n index,\n eq,\n append,\n appendTo,\n prepend,\n prependTo,\n insertBefore,\n insertAfter,\n next,\n nextAll,\n prev,\n prevAll,\n siblings,\n parent,\n parents,\n closest,\n find,\n children,\n remove,\n detach,\n add,\n empty,\n};\n","// eslint-disable-next-line\nimport { getWindow } from 'ssr-window';\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n if (typeof easing === 'undefined') easing = 'swing';\n\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n let scrollLeft; // eslint-disable-line\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n if (animateTop) {\n currentTop = el.scrollTop;\n if (!duration) {\n el.scrollTop = top;\n }\n }\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n if (!duration) return;\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress =\n easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop)\n scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft)\n scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n window.requestAnimationFrame(render);\n });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nexport { scrollTo, scrollTop, scrollLeft };\n","// eslint-disable-next-line\nimport { getWindow } from 'ssr-window';\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign(\n {\n duration: 300,\n easing: 'swing', // or 'linear'\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n },\n initialParams,\n ),\n\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each((el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done(complete) {\n a.animating = false;\n a.elements.each((el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n const elements = [];\n\n // Define & Cache Initials & Units\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n elements[index] = {\n container: el,\n };\n Object.keys(props).forEach((prop) => {\n initialFullValue = window\n .getComputedStyle(el, null)\n .getPropertyValue(prop)\n .replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue,\n };\n });\n });\n\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress;\n // let el;\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n if (startTime === null) {\n startTime = time;\n }\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(\n els,\n Math.max(Math.min((time - startTime) / params.duration, 1), 0),\n startTime + params.duration - time < 0\n ? 0\n : startTime + params.duration - time,\n startTime,\n );\n }\n\n elements.forEach((element) => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach((prop) => {\n if (done || el.done) return;\n progress = Math.max(\n Math.min((time - startTime) / params.duration, 1),\n 0,\n );\n easeProgress = a.easingProgress(params.easing, progress);\n const { initialValue, finalValue, unit } = el[prop];\n el[prop].currentValue =\n initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (\n (finalValue > initialValue && currentValue >= finalValue) ||\n (finalValue < initialValue && currentValue <= finalValue)\n ) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n if (done) {\n a.done(params.complete);\n return;\n }\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return;\n // Then call\n a.frameId = window.requestAnimationFrame(render);\n }\n a.frameId = window.requestAnimationFrame(render);\n return a;\n },\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nexport { animate, stop };\n","import $ from './$';\n\nconst noTrigger = 'resize scroll'.split(' ');\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();\n else {\n $(this[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return this.on(name, ...args);\n }\n return eventHandler;\n}\nexport const click = shortcut('click');\nexport const blur = shortcut('blur');\nexport const focus = shortcut('focus');\nexport const focusin = shortcut('focusin');\nexport const focusout = shortcut('focusout');\nexport const keyup = shortcut('keyup');\nexport const keydown = shortcut('keydown');\nexport const keypress = shortcut('keypress');\nexport const submit = shortcut('submit');\nexport const change = shortcut('change');\nexport const mousedown = shortcut('mousedown');\nexport const mousemove = shortcut('mousemove');\nexport const mouseup = shortcut('mouseup');\nexport const mouseenter = shortcut('mouseenter');\nexport const mouseleave = shortcut('mouseleave');\nexport const mouseout = shortcut('mouseout');\nexport const mouseover = shortcut('mouseover');\nexport const touchstart = shortcut('touchstart');\nexport const touchend = shortcut('touchend');\nexport const touchmove = shortcut('touchmove');\nexport const resize = shortcut('resize');\nexport const scroll = shortcut('scroll');\n","import $ from './$';\nimport * as methods from './methods';\nimport * as scroll from './scroll';\nimport * as animate from './animate';\nimport * as shortcuts from './shortcuts';\n\n[methods, scroll, animate, shortcuts].forEach((group) => {\n Object.keys(group).forEach((methodName) => {\n $.fn[methodName] = group[methodName];\n });\n});\n\nexport default $;\n"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","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","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","makeReactive","proto","__proto__","defineProperty","get","set","value","Dom7","Array","items","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","arrayUnique","uniqueArray","i","indexOf","toCamelCase","string","toLowerCase","replace","match","group","toUpperCase","qsa","selector","context","a","$","html","trim","toCreate","tempParent","innerHTML","nodeType","fn","addClass","classes","classNames","map","c","split","classList","add","removeClass","remove","toggleClass","className","toggle","hasClass","contains","attr","attrs","arguments","getAttribute","undefined","attrName","removeAttr","removeAttribute","prop","props","propName","data","dom7ElementDataStorage","dataKey","removeData","dataset","attributes","name","parseFloat","val","multiple","values","selectedOptions","j","options","selected","transform","transition","duration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","events","event","dom7Listeners","proxyListener","dom7LiveListeners","off","handlers","handler","splice","dom7proxy","once","dom","eventName","onceHandler","eventArgs","trigger","evt","detail","bubbles","cancelable","dataIndex","dispatchEvent","transitionEnd","fireCallBack","animationEnd","width","innerWidth","css","outerWidth","includeMargins","styles","offsetWidth","height","innerHeight","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","hide","display","show","each","index","result","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","firstChild","appendChild","appendTo","parent","prepend","insertBefore","prependTo","before","parentNode","cloneNode","insertAfter","after","nextSibling","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","siblings","closest","find","foundElements","found","removeChild","detach","toAdd","empty","scrollTo","easing","animate","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","Math","max","min","scrollWidth","startTime","render","time","getTime","progress","easeProgress","cos","PI","done","initialProps","initialParams","assign","params","elements","animating","que","easingProgress","stop","frameId","element","dom7AnimateInstance","complete","shift","initialFullValue","initialValue","unit","finalValue","finalFullValue","container","currentValue","elementsDone","propsDone","began","begin","animateInstance","noTrigger","shortcut","eventHandler","click","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","methods","shortcuts","methodName"],"mappings":"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"} \ No newline at end of file diff --git a/resources/web/include/swiper/node_modules/dom7/dom7.min.js b/resources/web/include/swiper/node_modules/dom7/dom7.min.js deleted file mode 100644 index f160069f42..0000000000 --- a/resources/web/include/swiper/node_modules/dom7/dom7.min.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Dom7 4.0.1 - * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API - * https://framework7.io/docs/dom7.html - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: October 27, 2021 - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Dom7=e()}(this,(function(){"use strict";function t(t){return null!==t&&"object"==typeof t&&"constructor"in t&&t.constructor===Object}function e(n={},i={}){Object.keys(i).forEach((o=>{void 0===n[o]?n[o]=i[o]:t(i[o])&&t(n[o])&&Object.keys(i[o]).length>0&&e(n[o],i[o])}))}const n={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 t="undefined"!=typeof document?document:{};return e(t,n),t}const o={document:n,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:t=>"undefined"==typeof setTimeout?(t(),null):setTimeout(t,0),cancelAnimationFrame(t){"undefined"!=typeof setTimeout&&clearTimeout(t)}};function s(){const t="undefined"!=typeof window?window:{};return e(t,o),t}class r extends Array{constructor(t){super(...t||[]),function(t){const e=t.__proto__;Object.defineProperty(t,"__proto__",{get:()=>e,set(t){e.__proto__=t}})}(this)}}function l(t=[]){const e=[];return t.forEach((t=>{Array.isArray(t)?e.push(...l(t)):e.push(t)})),e}function h(t,e){return Array.prototype.filter.call(t,e)}function u(t,e){const n=s(),o=i();let l=[];if(!e&&t instanceof r)return t;if(!t)return new r(l);if("string"==typeof t){const n=t.trim();if(n.indexOf("<")>=0&&n.indexOf(">")>=0){let t="div";0===n.indexOf("t.split(" "))));return this.forEach((t=>{t.classList.add(...e)})),this},removeClass:function(...t){const e=l(t.map((t=>t.split(" "))));return this.forEach((t=>{t.classList.remove(...e)})),this},toggleClass:function(...t){const e=l(t.map((t=>t.split(" "))));this.forEach((t=>{e.forEach((e=>{t.classList.toggle(e)}))}))},hasClass:function(...t){const e=l(t.map((t=>t.split(" "))));return h(this,(t=>e.filter((e=>t.classList.contains(e))).length>0)).length>0},attr:function(t,e){if(1===arguments.length&&"string"==typeof t)return this[0]?this[0].getAttribute(t):void 0;for(let n=0;n=0&&(e[(n=o.name.split("data-")[1],n.toLowerCase().replace(/-(.)/g,((t,e)=>e.toUpperCase())))]=o.value)}var n;for(const t in e)"false"===e[t]?e[t]=!1:"true"===e[t]?e[t]=!0:parseFloat(e[t])===1*e[t]&&(e[t]*=1);return e},val:function(t){if(void 0===t){const t=this[0];if(!t)return;if(t.multiple&&"select"===t.nodeName.toLowerCase()){const e=[];for(let n=0;n=0;else n.value=t}return this},value:function(t){return this.val(t)},transform:function(t){for(let e=0;e=0;t-=1){const n=r[t];i&&n.listener===i||i&&n.listener&&n.listener.dom7proxy&&n.listener.dom7proxy===i?(s.removeEventListener(e,n.proxyListener,o),r.splice(t,1)):i||(s.removeEventListener(e,n.proxyListener,o),r.splice(t,1))}}}return this},once:function(...t){const e=this;let[n,i,o,s]=t;function r(...t){o.apply(this,t),e.off(n,i,r,s),r.dom7proxy&&delete r.dom7proxy}return"function"==typeof t[1]&&([n,o,s]=t,i=void 0),r.dom7proxy=o,e.on(n,i,r,s)},trigger:function(...t){const e=s(),n=t[0].split(" "),i=t[1];for(let o=0;oe>0)),o.dispatchEvent(n),o.dom7EventData=[],delete o.dom7EventData}}}return this},transitionEnd:function(t){const e=this;return t&&e.on("transitionend",(function n(i){i.target===this&&(t.call(this,i),e.off("transitionend",n))})),this},animationEnd:function(t){const e=this;return t&&e.on("animationend",(function n(i){i.target===this&&(t.call(this,i),e.off("animationend",n))})),this},width:function(){const t=s();return this[0]===t?t.innerWidth:this.length>0?parseFloat(this.css("width")):null},outerWidth:function(t){if(this.length>0){if(t){const t=this.styles();return this[0].offsetWidth+parseFloat(t.getPropertyValue("margin-right"))+parseFloat(t.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null},height:function(){const t=s();return this[0]===t?t.innerHeight:this.length>0?parseFloat(this.css("height")):null},outerHeight:function(t){if(this.length>0){if(t){const t=this.styles();return this[0].offsetHeight+parseFloat(t.getPropertyValue("margin-top"))+parseFloat(t.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null},offset:function(){if(this.length>0){const t=s(),e=i(),n=this[0],o=n.getBoundingClientRect(),r=e.body,l=n.clientTop||r.clientTop||0,h=n.clientLeft||r.clientLeft||0,u=n===t?t.scrollY:n.scrollTop,a=n===t?t.scrollX:n.scrollLeft;return{top:o.top+u-l,left:o.left+a-h}}return null},hide:function(){for(let t=0;t{t.apply(e,[e,n])})),this):this},filter:function(t){return u(h(this,t))},html:function(t){if(void 0===t)return this[0]?this[0].innerHTML:null;for(let e=0;ee-1)return u([]);if(t<0){const n=e+t;return u(n<0?[]:[this[n]])}return u([this[t]])},append:function(...t){let e;const n=i();for(let i=0;i=0;o-=1)this[n].insertBefore(i.childNodes[o],this[n].childNodes[0])}else if(t instanceof r)for(o=0;o1)for(let n=0;n1)for(let n=0;n0?t?this[0].nextElementSibling&&u(this[0].nextElementSibling).is(t)?u([this[0].nextElementSibling]):u([]):this[0].nextElementSibling?u([this[0].nextElementSibling]):u([]):u([])},nextAll:function(t){const e=[];let n=this[0];if(!n)return u([]);for(;n.nextElementSibling;){const i=n.nextElementSibling;t?u(i).is(t)&&e.push(i):e.push(i),n=i}return u(e)},prev:function(t){if(this.length>0){const e=this[0];return t?e.previousElementSibling&&u(e.previousElementSibling).is(t)?u([e.previousElementSibling]):u([]):e.previousElementSibling?u([e.previousElementSibling]):u([])}return u([])},prevAll:function(t){const e=[];let n=this[0];if(!n)return u([]);for(;n.previousElementSibling;){const i=n.previousElementSibling;t?u(i).is(t)&&e.push(i):e.push(i),n=i}return u(e)},siblings:function(t){return this.nextAll(t).add(this.prevAll(t))},parent:function(t){const e=[];for(let n=0;n0||0===i,g=n>0||0===n;if(void 0===r&&(r="swing"),m&&(s=t.scrollTop,o||(t.scrollTop=i)),g&&(h=t.scrollLeft,o||(t.scrollLeft=n)),!o)return;m&&(u=t.scrollHeight-t.offsetHeight,c=Math.max(Math.min(i,u),0)),g&&(a=t.scrollWidth-t.offsetWidth,f=Math.max(Math.min(n,a),0));let y=null;m&&c===s&&(m=!1),g&&f===h&&(g=!1),e.requestAnimationFrame((function n(i=(new Date).getTime()){null===y&&(y=i);const u=Math.max(Math.min((i-y)/o,1),0),a="linear"===r?u:.5-Math.cos(u*Math.PI)/2;let v;m&&(d=s+a*(c-s)),g&&(p=h+a*(f-h)),m&&c>s&&d>=c&&(t.scrollTop=c,v=!0),m&&ch&&p>=f&&(t.scrollLeft=f,v=!0),g&&f0?s[0].scrollTop:null:s.scrollTo(void 0,e,n,i,o)},scrollLeft:function(...t){let[e,n,i,o]=t;3===t.length&&"function"==typeof i&&([e,n,o,i]=t);const s=this;return void 0===e?s.length>0?s[0].scrollLeft:null:s.scrollTo(e,void 0,n,i,o)}});var f=Object.freeze({__proto__:null,animate:function(t,e){const n=s(),i=this,o={props:Object.assign({},t),params:Object.assign({duration:300,easing:"swing"},e),elements:i,animating:!1,que:[],easingProgress:(t,e)=>"swing"===t?.5-Math.cos(e*Math.PI)/2:"function"==typeof t?t(e):e,stop(){o.frameId&&n.cancelAnimationFrame(o.frameId),o.animating=!1,o.elements.each((t=>{delete t.dom7AnimateInstance})),o.que=[]},done(t){if(o.animating=!1,o.elements.each((t=>{delete t.dom7AnimateInstance})),t&&t(i),o.que.length>0){const t=o.que.shift();o.animate(t[0],t[1])}},animate(t,e){if(o.animating)return o.que.push([t,e]),o;const s=[];o.elements.each(((e,i)=>{let r,l,h,u,a;e.dom7AnimateInstance||(o.elements[i].dom7AnimateInstance=o),s[i]={container:e},Object.keys(t).forEach((o=>{r=n.getComputedStyle(e,null).getPropertyValue(o).replace(",","."),l=parseFloat(r),h=r.replace(l,""),u=parseFloat(t[o]),a=t[o]+h,s[i][o]={initialFullValue:r,initialValue:l,unit:h,finalValue:u,finalFullValue:a,currentValue:l}}))}));let r,l,h=null,u=0,a=0,c=!1;return o.animating=!0,o.frameId=n.requestAnimationFrame((function f(){let d,p;r=(new Date).getTime(),c||(c=!0,e.begin&&e.begin(i)),null===h&&(h=r),e.progress&&e.progress(i,Math.max(Math.min((r-h)/e.duration,1),0),h+e.duration-r<0?0:h+e.duration-r,h),s.forEach((n=>{const i=n;l||i.done||Object.keys(t).forEach((n=>{if(l||i.done)return;d=Math.max(Math.min((r-h)/e.duration,1),0),p=o.easingProgress(e.easing,d);const{initialValue:c,finalValue:f,unit:m}=i[n];i[n].currentValue=c+p*(f-c);const g=i[n].currentValue;(f>c&&g>=f||f{Object.keys(t).forEach((e=>{u.fn[e]=t[e]}))})),u})); -//# sourceMappingURL=dom7.min.js.map \ No newline at end of file diff --git a/resources/web/include/swiper/node_modules/dom7/dom7.min.js.map b/resources/web/include/swiper/node_modules/dom7/dom7.min.js.map deleted file mode 100644 index 426ac13c94..0000000000 --- a/resources/web/include/swiper/node_modules/dom7/dom7.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../node_modules/ssr-window/ssr-window.esm.js","../src/dom7-class.js","../src/utils.js","../src/$.js","../src/methods.js","../src/scroll.js","../src/animate.js","../src/shortcuts.js","../src/dom7.bundle.js"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","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","Dom7","Array","items","super","proto","__proto__","defineProperty","get","set","value","makeReactive","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","$","selector","context","html","trim","indexOf","toCreate","tempParent","innerHTML","i","a","qsa","nodeType","uniqueArray","arrayUnique","fn","classes","classNames","map","c","split","classList","add","remove","className","toggle","contains","attrs","arguments","getAttribute","attrName","attr","removeAttribute","props","propName","dom7ElementDataStorage","dataKey","dataset","attributes","name","string","toLowerCase","replace","match","group","toUpperCase","parseFloat","multiple","values","selectedOptions","j","options","selected","val","transform","duration","transitionDuration","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","event","dom7LiveListeners","proxyListener","dom7Listeners","handlers","handler","dom7proxy","splice","dom","eventName","onceHandler","eventArgs","off","on","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","fireCallBack","innerWidth","css","includeMargins","styles","offsetWidth","innerHeight","offsetHeight","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","display","prop","index","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","returnIndex","els","newChild","tempDiv","firstChild","appendChild","parent","append","insertBefore","prepend","before","parentNode","cloneNode","after","nextSibling","nextElementSibling","nextEls","next","previousElementSibling","prevEls","prev","nextAll","prevAll","closest","eq","foundElements","found","removeChild","toAdd","easing","each","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","Math","max","min","scrollWidth","startTime","render","time","getTime","progress","easeProgress","cos","PI","done","scrollTo","initialProps","initialParams","assign","params","elements","animating","que","easingProgress","stop","frameId","dom7AnimateInstance","complete","shift","animate","initialFullValue","initialValue","unit","finalValue","finalFullValue","container","currentValue","elementsDone","propsDone","began","begin","element","animateInstance","noTrigger","shortcut","trigger","click","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","methods","methodName"],"mappings":"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","file":"dom7.min.js","sourcesContent":["/**\n * SSR Window 4.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: August 25, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n set(value) {\n proto.__proto__ = value;\n },\n });\n}\nclass Dom7 extends Array {\n constructor(items) {\n super(...(items || []));\n\n makeReactive(this);\n }\n}\nexport default Dom7;\n","export function arrayFlat(arr = []) {\n const res = [];\n arr.forEach((el) => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nexport function arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nexport function arrayUnique(arr) {\n const uniqueArray = [];\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n return uniqueArray;\n}\nexport function toCamelCase(string) {\n return string\n .toLowerCase()\n .replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n","// eslint-disable-next-line\nimport { getWindow, getDocument } from 'ssr-window';\nimport Dom7 from './dom7-class';\nimport { arrayUnique } from './utils';\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n const a = [];\n const res = context.querySelectorAll(selector);\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n if (!selector) {\n return new Dom7(arr);\n }\n if (typeof selector === 'string') {\n const html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach((el) => {\n el.classList.add(...classNames);\n });\n return this;\n}\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map((c) => c.split(' ')));\n this.forEach((el) => {\n el.classList.remove(...classNames);\n });\n return this;\n}\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map((c) => c.split(' ')));\n this.forEach((el) => {\n classNames.forEach((className) => {\n el.classList.toggle(className);\n });\n });\n}\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map((c) => c.split(' ')));\n return (\n arrayFilter(this, (el) => {\n return (\n classNames.filter((className) => el.classList.contains(className))\n .length > 0\n );\n }).length > 0\n );\n}\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n }\n\n // Set attrs\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n return this;\n}\nfunction data(key, value) {\n let el;\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined;\n // Get value\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n\n // Set value\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n}\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;\n else if (dataset[key] === 'true') dataset[key] = true;\n else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n return dataset;\n}\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n return values;\n }\n return el.value;\n }\n\n // set value\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (\n Array.isArray(value) &&\n el.multiple &&\n el.nodeName.toLowerCase() === 'select'\n ) {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n return this;\n}\nfunction value(value) {\n return this.val(value);\n}\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration =\n typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n return this;\n}\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) listener.apply(target, eventData);\n else {\n const parents = $(target).parents(); // eslint-disable-line\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector))\n listener.apply(parents[k], eventData);\n }\n }\n }\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n const events = eventType.split(' ');\n let j;\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n return this;\n}\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n const events = eventType.split(' ');\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (\n listener &&\n handler.listener &&\n handler.listener.dom7proxy &&\n handler.listener.dom7proxy === listener\n ) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n return this;\n}\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n const dom = this;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n return this;\n}\nfunction animationEnd(callback) {\n const dom = this;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n return this;\n}\nfunction width() {\n const window = getWindow();\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return (\n this[0].offsetWidth +\n parseFloat(styles.getPropertyValue('margin-right')) +\n parseFloat(styles.getPropertyValue('margin-left'))\n );\n }\n return this[0].offsetWidth;\n }\n return null;\n}\nfunction height() {\n const window = getWindow();\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return (\n this[0].offsetHeight +\n parseFloat(styles.getPropertyValue('margin-top')) +\n parseFloat(styles.getPropertyValue('margin-bottom'))\n );\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft,\n };\n }\n\n return null;\n}\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n return this;\n}\nfunction show() {\n const window = getWindow();\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n if (\n window.getComputedStyle(el, null).getPropertyValue('display') === 'none'\n ) {\n // Still not visible\n el.style.display = 'block';\n }\n }\n return this;\n}\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n const window = getWindow();\n let i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0])\n return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n if (selector === document) {\n return el === document;\n }\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n return false;\n}\nfunction index() {\n let child = this[0];\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n if (index > length - 1) {\n return $([]);\n }\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n return $([this[index]]);\n}\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n}\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\nfunction insertBefore(selector) {\n const before = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\nfunction insertAfter(selector) {\n const after = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(\n this[i].cloneNode(true),\n after[j].nextSibling,\n );\n }\n }\n }\n}\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (\n this[0].nextElementSibling &&\n $(this[0].nextElementSibling).is(selector)\n ) {\n return $([this[0].nextElementSibling]);\n }\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n return $([]);\n}\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return $(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n if (selector) {\n if (\n el.previousElementSibling &&\n $(el.previousElementSibling).is(selector)\n ) {\n return $([el.previousElementSibling]);\n }\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n return $([]);\n}\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return $(prevEls);\n}\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector))\n parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(parents);\n}\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(parents);\n}\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return $([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n const foundElements = [];\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return $(foundElements);\n}\nfunction children(selector) {\n const children = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return $(children);\n}\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n}\nfunction detach() {\n return this.remove();\n}\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n return dom;\n}\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n el.textContent = '';\n }\n }\n return this;\n}\n\nexport {\n addClass,\n removeClass,\n toggleClass,\n hasClass,\n attr,\n removeAttr,\n prop,\n data,\n removeData,\n dataset,\n val,\n value,\n transform,\n transition,\n on,\n off,\n once,\n trigger,\n transitionEnd,\n animationEnd,\n width,\n outerWidth,\n height,\n outerHeight,\n offset,\n hide,\n show,\n styles,\n css,\n each,\n filter,\n html,\n text,\n is,\n index,\n eq,\n append,\n appendTo,\n prepend,\n prependTo,\n insertBefore,\n insertAfter,\n next,\n nextAll,\n prev,\n prevAll,\n siblings,\n parent,\n parents,\n closest,\n find,\n children,\n remove,\n detach,\n add,\n empty,\n};\n","// eslint-disable-next-line\nimport { getWindow } from 'ssr-window';\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n if (typeof easing === 'undefined') easing = 'swing';\n\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n let scrollLeft; // eslint-disable-line\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n if (animateTop) {\n currentTop = el.scrollTop;\n if (!duration) {\n el.scrollTop = top;\n }\n }\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n if (!duration) return;\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress =\n easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop)\n scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft)\n scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n window.requestAnimationFrame(render);\n });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nexport { scrollTo, scrollTop, scrollLeft };\n","// eslint-disable-next-line\nimport { getWindow } from 'ssr-window';\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign(\n {\n duration: 300,\n easing: 'swing', // or 'linear'\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n },\n initialParams,\n ),\n\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each((el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done(complete) {\n a.animating = false;\n a.elements.each((el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n const elements = [];\n\n // Define & Cache Initials & Units\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n elements[index] = {\n container: el,\n };\n Object.keys(props).forEach((prop) => {\n initialFullValue = window\n .getComputedStyle(el, null)\n .getPropertyValue(prop)\n .replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue,\n };\n });\n });\n\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress;\n // let el;\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n if (startTime === null) {\n startTime = time;\n }\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(\n els,\n Math.max(Math.min((time - startTime) / params.duration, 1), 0),\n startTime + params.duration - time < 0\n ? 0\n : startTime + params.duration - time,\n startTime,\n );\n }\n\n elements.forEach((element) => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach((prop) => {\n if (done || el.done) return;\n progress = Math.max(\n Math.min((time - startTime) / params.duration, 1),\n 0,\n );\n easeProgress = a.easingProgress(params.easing, progress);\n const { initialValue, finalValue, unit } = el[prop];\n el[prop].currentValue =\n initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (\n (finalValue > initialValue && currentValue >= finalValue) ||\n (finalValue < initialValue && currentValue <= finalValue)\n ) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n if (done) {\n a.done(params.complete);\n return;\n }\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return;\n // Then call\n a.frameId = window.requestAnimationFrame(render);\n }\n a.frameId = window.requestAnimationFrame(render);\n return a;\n },\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nexport { animate, stop };\n","import $ from './$';\n\nconst noTrigger = 'resize scroll'.split(' ');\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();\n else {\n $(this[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return this.on(name, ...args);\n }\n return eventHandler;\n}\nexport const click = shortcut('click');\nexport const blur = shortcut('blur');\nexport const focus = shortcut('focus');\nexport const focusin = shortcut('focusin');\nexport const focusout = shortcut('focusout');\nexport const keyup = shortcut('keyup');\nexport const keydown = shortcut('keydown');\nexport const keypress = shortcut('keypress');\nexport const submit = shortcut('submit');\nexport const change = shortcut('change');\nexport const mousedown = shortcut('mousedown');\nexport const mousemove = shortcut('mousemove');\nexport const mouseup = shortcut('mouseup');\nexport const mouseenter = shortcut('mouseenter');\nexport const mouseleave = shortcut('mouseleave');\nexport const mouseout = shortcut('mouseout');\nexport const mouseover = shortcut('mouseover');\nexport const touchstart = shortcut('touchstart');\nexport const touchend = shortcut('touchend');\nexport const touchmove = shortcut('touchmove');\nexport const resize = shortcut('resize');\nexport const scroll = shortcut('scroll');\n","import $ from './$';\nimport * as methods from './methods';\nimport * as scroll from './scroll';\nimport * as animate from './animate';\nimport * as shortcuts from './shortcuts';\n\n[methods, scroll, animate, shortcuts].forEach((group) => {\n Object.keys(group).forEach((methodName) => {\n $.fn[methodName] = group[methodName];\n });\n});\n\nexport default $;\n"]} \ No newline at end of file diff --git a/resources/web/include/swiper/node_modules/dom7/package.json b/resources/web/include/swiper/node_modules/dom7/package.json deleted file mode 100644 index f171d6df4d..0000000000 --- a/resources/web/include/swiper/node_modules/dom7/package.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "_from": "dom7@^4.0.1", - "_id": "dom7@4.0.1", - "_inBundle": false, - "_integrity": "sha512-y/RWjw3gK3qQnZz6IqDaIoqH6+xBhcB3Wsh5HFwl0abwuO/NAgbSB31ZbxtBDcuDe8jAX5NYUNDLTx4Ul48sIw==", - "_location": "/swiper/dom7", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "dom7@^4.0.1", - "name": "dom7", - "escapedName": "dom7", - "rawSpec": "^4.0.1", - "saveSpec": null, - "fetchSpec": "^4.0.1" - }, - "_requiredBy": [ - "/swiper" - ], - "_resolved": "https://registry.npmjs.org/dom7/-/dom7-4.0.1.tgz", - "_shasum": "821209df1bfdf97dd82b5156e50f7cb66b3f166c", - "_spec": "dom7@^4.0.1", - "_where": "C:\\Users\\Administrator\\node_modules\\swiper", - "author": { - "name": "Vladimir Kharlampidi" - }, - "bugs": { - "url": "https://github.com/nolimits4web/dom7/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ssr-window": "^4.0.0" - }, - "deprecated": false, - "description": "Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API", - "exports": { - ".": "./dom7.esm.js" - }, - "homepage": "https://framework7.io/docs/dom7.html", - "keywords": [ - "dom", - "dom7", - "jquery", - "mobile", - "framework7" - ], - "license": "MIT", - "main": "./dom7.esm.js", - "module": "./dom7.esm.js", - "name": "dom7", - "repository": { - "type": "git", - "url": "git+https://github.com/nolimits4web/dom7.git" - }, - "sideEffects": false, - "type": "module", - "types": "dom7.d.ts", - "version": "4.0.1" -} diff --git a/resources/web/include/swiper/node_modules/ssr-window/LICENSE b/resources/web/include/swiper/node_modules/ssr-window/LICENSE deleted file mode 100644 index 27267dbdc6..0000000000 --- a/resources/web/include/swiper/node_modules/ssr-window/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2018 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/resources/web/include/swiper/node_modules/ssr-window/README.md b/resources/web/include/swiper/node_modules/ssr-window/README.md deleted file mode 100644 index f7c227a7e2..0000000000 --- a/resources/web/include/swiper/node_modules/ssr-window/README.md +++ /dev/null @@ -1,59 +0,0 @@ -# SSR Window - -Better handling for `window` and `document` object in SSR environment. - -This library doesn't implement the DOM (like JSDOM), it just patches (or creates `window` and `document` objects) to avoid them to fail (throw errors) during server-side rendering. - -Was created for use in: - -- [Dom7](https://github.com/nolimits4web/dom7) -- [Swiper](https://github.com/nolimits4web/swiper) -- [Framework7](https://github.com/framework7io/framework7) - -## Installation - -Library available on NPM: - -``` -npm i ssr-window -``` - -## Usage - -```js -import { window, document } from 'ssr-window'; - -window.addEventListener('resize', () => {}); - -const div = document.querySelectorAll('div'); -``` - -## Extending - -If you rely on some window/document properties which are not included here, you can use `extend` helper to add them: - -```js -import { window, document, extend } from 'ssr-window'; - -// add window.navigator.language -extend(window, { - navigator: { - language: 'en', - }, -}); - -// add document.body -extend(document, { - body: { - /* ... */ - }, -}); -``` - -## Contribution - -Yes please! See the [contributing guidelines](https://github.com/nolimits4web/ssr-window/blob/master/CONTRIBUTING.md) for details. - -## Licence - -This project is licensed under the terms of the [MIT license](https://github.com/nolimits4web/ssr-window/blob/master/LICENSE). diff --git a/resources/web/include/swiper/node_modules/ssr-window/package.json b/resources/web/include/swiper/node_modules/ssr-window/package.json deleted file mode 100644 index 3ce129f8a3..0000000000 --- a/resources/web/include/swiper/node_modules/ssr-window/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "_from": "ssr-window@^4.0.1", - "_id": "ssr-window@4.0.1", - "_inBundle": false, - "_integrity": "sha512-5q936lkCk5Lg5hM6tG8Nutdym4vNiuFSWorslTzOn71PWb3Wnx44q/k2Ryn1LWA1G4FtxMzjywUFOiOxPkVGrA==", - "_location": "/swiper/ssr-window", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ssr-window@^4.0.1", - "name": "ssr-window", - "escapedName": "ssr-window", - "rawSpec": "^4.0.1", - "saveSpec": null, - "fetchSpec": "^4.0.1" - }, - "_requiredBy": [ - "/swiper", - "/swiper/dom7" - ], - "_resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-4.0.1.tgz", - "_shasum": "514bf2ca81952f63fe88e8b0c623a23f90f7feb3", - "_spec": "ssr-window@^4.0.1", - "_where": "C:\\Users\\Administrator\\node_modules\\swiper", - "author": { - "name": "Vladimir Kharlampidi" - }, - "bugs": { - "url": "https://github.com/nolimits4web/ssr-window/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "Better handling for window object in SSR environment", - "exports": { - ".": "./ssr-window.esm.js" - }, - "homepage": "https://github.com/nolimits4web/ssr-window", - "keywords": [ - "ssr", - "window", - "document" - ], - "license": "MIT", - "main": "./ssr-window.esm.js", - "module": "./ssr-window.esm.js", - "name": "ssr-window", - "repository": { - "type": "git", - "url": "git+https://github.com/nolimits4web/ssr-window.git" - }, - "type": "module", - "typings": "types/ssr-window.d.ts", - "version": "4.0.1" -} diff --git a/resources/web/include/swiper/node_modules/ssr-window/ssr-window.esm.js b/resources/web/include/swiper/node_modules/ssr-window/ssr-window.esm.js deleted file mode 100644 index 4fe1a59911..0000000000 --- a/resources/web/include/swiper/node_modules/ssr-window/ssr-window.esm.js +++ /dev/null @@ -1,148 +0,0 @@ -/** - * SSR Window 4.0.1 - * Better handling for window object in SSR environment - * https://github.com/nolimits4web/ssr-window - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: October 27, 2021 - */ -/* eslint-disable no-param-reassign */ -function isObject(obj) { - return (obj !== null && - typeof obj === 'object' && - 'constructor' in obj && - obj.constructor === Object); -} -function extend(target = {}, src = {}) { - Object.keys(src).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 { extend, getDocument, getWindow, ssrDocument, ssrWindow }; diff --git a/resources/web/include/swiper/node_modules/ssr-window/ssr-window.umd.js b/resources/web/include/swiper/node_modules/ssr-window/ssr-window.umd.js deleted file mode 100644 index a3bf9aa81a..0000000000 --- a/resources/web/include/swiper/node_modules/ssr-window/ssr-window.umd.js +++ /dev/null @@ -1,163 +0,0 @@ -/** - * SSR Window 4.0.1 - * Better handling for window object in SSR environment - * https://github.com/nolimits4web/ssr-window - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: October 27, 2021 - */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ssrWindow = {})); -}(this, (function (exports) { 'use strict'; - - /* eslint-disable no-param-reassign */ - function isObject(obj) { - return (obj !== null && - typeof obj === 'object' && - 'constructor' in obj && - obj.constructor === Object); - } - function extend(target = {}, src = {}) { - Object.keys(src).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; - } - - exports.extend = extend; - exports.getDocument = getDocument; - exports.getWindow = getWindow; - exports.ssrDocument = ssrDocument; - exports.ssrWindow = ssrWindow; - - Object.defineProperty(exports, '__esModule', { value: true }); - -}))); -//# sourceMappingURL=ssr-window.umd.js.map diff --git a/resources/web/include/swiper/node_modules/ssr-window/ssr-window.umd.js.map b/resources/web/include/swiper/node_modules/ssr-window/ssr-window.umd.js.map deleted file mode 100644 index 712accd2e9..0000000000 --- a/resources/web/include/swiper/node_modules/ssr-window/ssr-window.umd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ssr-window.umd.js.map","sources":["../src/extend.ts","../src/document.ts","../src/window.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":";;;;;;;;;;;;;;;;;IAAA;IACA,SAAS,QAAQ,CAAC,GAAG;QACnB,QACE,GAAG,KAAK,IAAI;YACZ,OAAO,GAAG,KAAK,QAAQ;YACvB,aAAa,IAAI,GAAG;YACpB,GAAG,CAAC,WAAW,KAAK,MAAM,EAC1B;IACJ,CAAC;IAED,SAAS,MAAM,CAAC,SAAc,EAAE,EAAE,MAAW,EAAE;QAC7C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG;YAC3B,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,WAAW;gBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;iBAC1D,IACH,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAChC;gBACA,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;aAC/B;SACF,CAAC,CAAC;IACL;;UCnBM,WAAW,GAAG;QAClB,IAAI,EAAE,EAAE;QACR,gBAAgB,MAAK;QACrB,mBAAmB,MAAK;QACxB,aAAa,EAAE;YACb,IAAI,MAAK;YACT,QAAQ,EAAE,EAAE;SACb;QACD,aAAa;YACX,OAAO,IAAI,CAAC;SACb;QACD,gBAAgB;YACd,OAAO,EAAE,CAAC;SACX;QACD,cAAc;YACZ,OAAO,IAAI,CAAC;SACb;QACD,WAAW;YACT,OAAO;gBACL,SAAS,MAAK;aACf,CAAC;SACH;QACD,aAAa;YACX,OAAO;gBACL,QAAQ,EAAE,EAAE;gBACZ,UAAU,EAAE,EAAE;gBACd,KAAK,EAAE,EAAE;gBACT,YAAY,MAAK;gBACjB,oBAAoB;oBAClB,OAAO,EAAE,CAAC;iBACX;aACF,CAAC;SACH;QACD,eAAe;YACb,OAAO,EAAE,CAAC;SACX;QACD,UAAU;YACR,OAAO,IAAI,CAAC;SACb;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,EAAE;SACX;MACD;IAEF,SAAS,WAAW;QAClB,MAAM,GAAG,GACP,OAAO,QAAQ,KAAK,WAAW,GAAG,QAAQ,GAAI,EAAe,CAAC;QAChE,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACzB,OAAO,GAAG,CAAC;IACb;;UCvDM,SAAS,GAAG;QAChB,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE;YACT,SAAS,EAAE,EAAE;SACd;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,EAAE;SACX;QACD,OAAO,EAAE;YACP,YAAY,MAAK;YACjB,SAAS,MAAK;YACd,EAAE,MAAK;YACP,IAAI,MAAK;SACV;QACD,WAAW,EAAE,SAAS,WAAW;YAC/B,OAAO,IAAI,CAAC;SACb;QACD,gBAAgB,MAAK;QACrB,mBAAmB,MAAK;QACxB,gBAAgB;YACd,OAAO;gBACL,gBAAgB;oBACd,OAAO,EAAE,CAAC;iBACX;aACF,CAAC;SACH;QACD,KAAK,MAAK;QACV,IAAI,MAAK;QACT,MAAM,EAAE,EAAE;QACV,UAAU,MAAK;QACf,YAAY,MAAK;QACjB,UAAU;YACR,OAAO,EAAE,CAAC;SACX;QACD,qBAAqB,CAAC,QAAQ;YAC5B,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;gBACrC,QAAQ,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC;aACb;YACD,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;SAChC;QACD,oBAAoB,CAAC,EAAE;YACrB,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;gBACrC,OAAO;aACR;YACD,YAAY,CAAC,EAAE,CAAC,CAAC;SAClB;MACD;IAEF,SAAS,SAAS;QAChB,MAAM,GAAG,GAAW,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAI,EAAa,CAAC;QAC5E,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACvB,OAAO,GAAG,CAAC;IACb;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/resources/web/include/swiper/node_modules/ssr-window/ssr-window.umd.min.js b/resources/web/include/swiper/node_modules/ssr-window/ssr-window.umd.min.js deleted file mode 100644 index c9fa6ec11d..0000000000 --- a/resources/web/include/swiper/node_modules/ssr-window/ssr-window.umd.min.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * SSR Window 4.0.1 - * Better handling for window object in SSR environment - * https://github.com/nolimits4web/ssr-window - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: October 27, 2021 - */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ssrWindow={})}(this,(function(e){"use strict";function t(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function n(e={},o={}){Object.keys(o).forEach((i=>{void 0===e[i]?e[i]=o[i]:t(o[i])&&t(e[i])&&Object.keys(o[i]).length>0&&n(e[i],o[i])}))}const o={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:""}};const i={document:o,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)}};e.extend=n,e.getDocument=function(){const e="undefined"!=typeof document?document:{};return n(e,o),e},e.getWindow=function(){const e="undefined"!=typeof window?window:{};return n(e,i),e},e.ssrDocument=o,e.ssrWindow=i,Object.defineProperty(e,"__esModule",{value:!0})})); -//# sourceMappingURL=ssr-window.umd.min.js.map \ No newline at end of file diff --git a/resources/web/include/swiper/node_modules/ssr-window/ssr-window.umd.min.js.map b/resources/web/include/swiper/node_modules/ssr-window/ssr-window.umd.min.js.map deleted file mode 100644 index a3fe002c85..0000000000 --- a/resources/web/include/swiper/node_modules/ssr-window/ssr-window.umd.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/extend.ts","../src/document.ts","../src/window.ts"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","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","ssrWindow","document","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","doc","win","window"],"mappings":";;;;;;;;;;;iPACA,SAASA,EAASC,GAChB,OACU,OAARA,GACe,iBAARA,GACP,gBAAiBA,GACjBA,EAAIC,cAAgBC,OAIxB,SAASC,EAAOC,EAAc,GAAIC,EAAW,IAC3CH,OAAOI,KAAKD,GAAKE,SAASC,SACG,IAAhBJ,EAAOI,GAAsBJ,EAAOI,GAAOH,EAAIG,GAExDT,EAASM,EAAIG,KACbT,EAASK,EAAOI,KAChBN,OAAOI,KAAKD,EAAIG,IAAMC,OAAS,GAE/BN,EAAOC,EAAOI,GAAMH,EAAIG,aChBxBE,EAAc,CAClBC,KAAM,GACNC,qBACAC,wBACAC,cAAe,CACbC,SACAC,SAAU,IAEZC,cAAa,IACJ,KAETC,iBAAgB,IACP,GAETC,eAAc,IACL,KAETC,YAAW,KACF,CACLC,gBAGJC,cAAa,KACJ,CACLC,SAAU,GACVC,WAAY,GACZC,MAAO,GACPC,iBACAC,qBAAoB,IACX,KAIbC,gBAAe,KACN,IAETC,WAAU,IACD,KAETC,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,WC9CNC,EAAY,CAChBC,SAAU9B,EACV+B,UAAW,CACTC,UAAW,IAEbZ,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEVK,QAAS,CACPC,iBACAC,cACAC,OACAC,UAEFC,YAAa,WACX,OAAOC,MAETrC,qBACAC,wBACAqC,iBAAgB,KACP,CACLC,iBAAgB,IACP,KAIbC,UACAC,SACAC,OAAQ,GACRC,eACAC,iBACAC,WAAU,KACD,IAETC,sBAAsBC,GACM,oBAAfJ,YACTI,IACO,MAEFJ,WAAWI,EAAU,GAE9BC,qBAAqBC,GACO,oBAAfN,YAGXC,aAAaK,8BDFjB,WACE,MAAMC,EACgB,oBAAbtB,SAA2BA,SAAY,GAEhD,OADArC,EAAO2D,EAAKpD,GACLoD,eCET,WACE,MAAMC,EAAgC,oBAAXC,OAAyBA,OAAU,GAE9D,OADA7D,EAAO4D,EAAKxB,GACLwB","file":"ssr-window.umd.min.js"} \ No newline at end of file diff --git a/resources/web/include/swiper/node_modules/ssr-window/types/document.d.ts b/resources/web/include/swiper/node_modules/ssr-window/types/document.d.ts deleted file mode 100644 index 63b28dec51..0000000000 --- a/resources/web/include/swiper/node_modules/ssr-window/types/document.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -declare const ssrDocument: { - body: {}; - addEventListener(): void; - removeEventListener(): void; - activeElement: { - blur(): void; - nodeName: string; - }; - querySelector(): any; - querySelectorAll(): any[]; - getElementById(): any; - createEvent(): { - initEvent(): void; - }; - createElement(): { - children: any[]; - childNodes: any[]; - style: {}; - setAttribute(): void; - getElementsByTagName(): any[]; - }; - createElementNS(): {}; - importNode(): any; - location: { - hash: string; - host: string; - hostname: string; - href: string; - origin: string; - pathname: string; - protocol: string; - search: string; - }; -}; -declare function getDocument(): Document; -export { getDocument, ssrDocument }; diff --git a/resources/web/include/swiper/node_modules/ssr-window/types/extend.d.ts b/resources/web/include/swiper/node_modules/ssr-window/types/extend.d.ts deleted file mode 100644 index 5044ccf4a9..0000000000 --- a/resources/web/include/swiper/node_modules/ssr-window/types/extend.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare function extend(target?: any, src?: any): void; -export default extend; diff --git a/resources/web/include/swiper/node_modules/ssr-window/types/ssr-window.d.ts b/resources/web/include/swiper/node_modules/ssr-window/types/ssr-window.d.ts deleted file mode 100644 index feb2e20ffb..0000000000 --- a/resources/web/include/swiper/node_modules/ssr-window/types/ssr-window.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { getDocument, ssrDocument } from './document'; -import { getWindow, ssrWindow } from './window'; -import extend from './extend'; -export { getDocument, ssrDocument, getWindow, ssrWindow, extend }; diff --git a/resources/web/include/swiper/node_modules/ssr-window/types/window.d.ts b/resources/web/include/swiper/node_modules/ssr-window/types/window.d.ts deleted file mode 100644 index 734a96cbad..0000000000 --- a/resources/web/include/swiper/node_modules/ssr-window/types/window.d.ts +++ /dev/null @@ -1,72 +0,0 @@ -/// -declare const ssrWindow: { - document: { - body: {}; - addEventListener(): void; - removeEventListener(): void; - activeElement: { - blur(): void; - nodeName: string; - }; - querySelector(): any; - querySelectorAll(): any[]; - getElementById(): any; - createEvent(): { - initEvent(): void; - }; - createElement(): { - children: any[]; - childNodes: any[]; - style: {}; - setAttribute(): void; - getElementsByTagName(): any[]; - }; - createElementNS(): {}; - importNode(): any; - location: { - hash: string; - host: string; - hostname: string; - href: string; - origin: string; - pathname: string; - protocol: string; - search: string; - }; - }; - navigator: { - userAgent: string; - }; - location: { - hash: string; - host: string; - hostname: string; - href: string; - origin: string; - pathname: string; - protocol: string; - search: string; - }; - history: { - replaceState(): void; - pushState(): void; - go(): void; - back(): void; - }; - CustomEvent: () => any; - addEventListener(): void; - removeEventListener(): void; - getComputedStyle(): { - getPropertyValue(): string; - }; - Image(): void; - Date(): void; - screen: {}; - setTimeout(): void; - clearTimeout(): void; - matchMedia(): {}; - requestAnimationFrame(callback: any): NodeJS.Timeout; - cancelAnimationFrame(id: any): void; -}; -declare function getWindow(): Window; -export { getWindow, ssrWindow }; diff --git a/resources/web/include/swiper/package.json b/resources/web/include/swiper/package.json deleted file mode 100644 index 30302966db..0000000000 --- a/resources/web/include/swiper/package.json +++ /dev/null @@ -1,191 +0,0 @@ -{ - "_from": "swiper", - "_id": "swiper@7.2.0", - "_inBundle": false, - "_integrity": "sha512-CUL6Nvzcf3fU0b8dHaraYphgBT7l44PY1B6T8b+E12pim4DEcwFZDy/KZoIKrAnn+rfbayCmcksYmSDIP5nDHg==", - "_location": "/swiper", - "_phantomChildren": {}, - "_requested": { - "type": "tag", - "registry": true, - "raw": "swiper", - "name": "swiper", - "escapedName": "swiper", - "rawSpec": "", - "saveSpec": null, - "fetchSpec": "latest" - }, - "_requiredBy": [ - "#USER", - "/" - ], - "_resolved": "https://registry.npmjs.org/swiper/-/swiper-7.2.0.tgz", - "_shasum": "aae2bb7632798467abd5c1ab3e2441598a70dbd7", - "_spec": "swiper", - "_where": "C:\\Users\\Administrator", - "author": { - "name": "Vladimir Kharlampidi" - }, - "bugs": { - "url": "https://github.com/nolimits4web/swiper/issues" - }, - "bundleDependencies": false, - "dependencies": { - "dom7": "^4.0.1", - "ssr-window": "^4.0.1" - }, - "deprecated": false, - "description": "Most modern mobile touch slider and framework with hardware accelerated transitions", - "engines": { - "node": ">= 4.7.0" - }, - "exports": { - ".": "./swiper.esm.js", - "./core": "./swiper.esm.js", - "./bundle": "./swiper-bundle.esm.js", - "./css": "./swiper.min.css", - "./css/bundle": "./swiper-bundle.min.css", - "./css/a11y": "./modules/a11y/a11y.min.css", - "./css/autoplay": "./modules/autoplay/autoplay.min.css", - "./css/controller": "./modules/controller/controller.min.css", - "./css/effect-coverflow": "./modules/effect-coverflow/effect-coverflow.min.css", - "./css/effect-cube": "./modules/effect-cube/effect-cube.min.css", - "./css/effect-fade": "./modules/effect-fade/effect-fade.min.css", - "./css/effect-flip": "./modules/effect-flip/effect-flip.min.css", - "./css/effect-creative": "./modules/effect-creative/effect-creative.min.css", - "./css/effect-cards": "./modules/effect-cards/effect-cards.min.css", - "./css/free-mode": "./modules/free-mode/free-mode.min.css", - "./css/grid": "./modules/grid/grid.min.css", - "./css/hash-navigation": "./modules/hash-navigation/hash-navigation.min.css", - "./css/history": "./modules/history/history.min.css", - "./css/keyboard": "./modules/keyboard/keyboard.min.css", - "./css/lazy": "./modules/lazy/lazy.min.css", - "./css/manipulation": "./modules/manipulation/manipulation.min.css", - "./css/mousewheel": "./modules/mousewheel/mousewheel.min.css", - "./css/navigation": "./modules/navigation/navigation.min.css", - "./css/pagination": "./modules/pagination/pagination.min.css", - "./css/parallax": "./modules/parallax/parallax.min.css", - "./css/scrollbar": "./modules/scrollbar/scrollbar.min.css", - "./css/thumbs": "./modules/thumbs/thumbs.min.css", - "./css/virtual": "./modules/virtual/virtual.min.css", - "./css/zoom": "./modules/zoom/zoom.min.css", - "./less": "./swiper.less", - "./less/a11y": "./modules/a11y/a11y.less", - "./less/autoplay": "./modules/autoplay/autoplay.less", - "./less/controller": "./modules/controller/controller.less", - "./less/effect-coverflow": "./modules/effect-coverflow/effect-coverflow.less", - "./less/effect-cube": "./modules/effect-cube/effect-cube.less", - "./less/effect-fade": "./modules/effect-fade/effect-fade.less", - "./less/effect-flip": "./modules/effect-flip/effect-flip.less", - "./less/effect-creative": "./modules/effect-creative/effect-creative.less", - "./less/effect-cards": "./modules/effect-cards/effect-cards.less", - "./less/free-mode": "./modules/free-mode/free-mode.less", - "./less/grid": "./modules/grid/grid.less", - "./less/hash-navigation": "./modules/hash-navigation/hash-navigation.less", - "./less/history": "./modules/history/history.less", - "./less/keyboard": "./modules/keyboard/keyboard.less", - "./less/lazy": "./modules/lazy/lazy.less", - "./less/manipulation": "./modules/manipulation/manipulation.less", - "./less/mousewheel": "./modules/mousewheel/mousewheel.less", - "./less/navigation": "./modules/navigation/navigation.less", - "./less/pagination": "./modules/pagination/pagination.less", - "./less/parallax": "./modules/parallax/parallax.less", - "./less/scrollbar": "./modules/scrollbar/scrollbar.less", - "./less/thumbs": "./modules/thumbs/thumbs.less", - "./less/virtual": "./modules/virtual/virtual.less", - "./less/zoom": "./modules/zoom/zoom.less", - "./scss": "./swiper.scss", - "./scss/a11y": "./modules/a11y/a11y.scss", - "./scss/autoplay": "./modules/autoplay/autoplay.scss", - "./scss/controller": "./modules/controller/controller.scss", - "./scss/effect-coverflow": "./modules/effect-coverflow/effect-coverflow.scss", - "./scss/effect-cube": "./modules/effect-cube/effect-cube.scss", - "./scss/effect-fade": "./modules/effect-fade/effect-fade.scss", - "./scss/effect-flip": "./modules/effect-flip/effect-flip.scss", - "./scss/effect-creative": "./modules/effect-creative/effect-creative.scss", - "./scss/effect-cards": "./modules/effect-cards/effect-cards.scss", - "./scss/free-mode": "./modules/free-mode/free-mode.scss", - "./scss/grid": "./modules/grid/grid.scss", - "./scss/hash-navigation": "./modules/hash-navigation/hash-navigation.scss", - "./scss/history": "./modules/history/history.scss", - "./scss/keyboard": "./modules/keyboard/keyboard.scss", - "./scss/lazy": "./modules/lazy/lazy.scss", - "./scss/manipulation": "./modules/manipulation/manipulation.scss", - "./scss/mousewheel": "./modules/mousewheel/mousewheel.scss", - "./scss/navigation": "./modules/navigation/navigation.scss", - "./scss/pagination": "./modules/pagination/pagination.scss", - "./scss/parallax": "./modules/parallax/parallax.scss", - "./scss/scrollbar": "./modules/scrollbar/scrollbar.scss", - "./scss/thumbs": "./modules/thumbs/thumbs.scss", - "./scss/virtual": "./modules/virtual/virtual.scss", - "./scss/zoom": "./modules/zoom/zoom.scss", - "./angular": "./angular/fesm2015/swiper_angular.js", - "./react": "./react/swiper-react.js", - "./vue": "./vue/swiper-vue.js", - "./svelte": "./svelte/swiper-svelte.js", - "./types": "./types/index.d.ts", - "./package.json": "./package.json" - }, - "funding": [ - { - "type": "patreon", - "url": "https://www.patreon.com/swiperjs" - }, - { - "type": "open_collective", - "url": "http://opencollective.com/swiper" - } - ], - "homepage": "https://swiperjs.com", - "keywords": [ - "swiper", - "swipe", - "slider", - "touch", - "ios", - "mobile", - "cordova", - "phonegap", - "app", - "framework", - "framework7", - "carousel", - "gallery", - "plugin", - "react", - "vue", - "angular", - "svelte", - "slideshow" - ], - "license": "MIT", - "main": "./swiper.esm.js", - "module": "./swiper.esm.js", - "name": "swiper", - "repository": { - "type": "git", - "url": "git+https://github.com/nolimits4web/Swiper.git" - }, - "scripts": { - "postinstall": "node -e \"try{require('./postinstall')}catch(e){}\"" - }, - "type": "module", - "typesVersions": { - "*": { - "angular": [ - "angular/swiper_angular.d.ts" - ], - "react": [ - "react/swiper-react.d.ts" - ], - "svelte": [ - "svelte/swiper-svelte.d.ts" - ], - "vue": [ - "vue/swiper-vue.d.ts" - ] - } - }, - "typings": "swiper.d.ts", - "version": "7.2.0" -} diff --git a/resources/web/include/swiper/postinstall.js b/resources/web/include/swiper/postinstall.js deleted file mode 100644 index 90cce0b1f8..0000000000 --- a/resources/web/include/swiper/postinstall.js +++ /dev/null @@ -1,36 +0,0 @@ -/* eslint-disable max-len -- for better formatting */ -var env = process.env; - -var ADBLOCK = is(env.ADBLOCK); -var COLOR = is(env.npm_config_color); -var DISABLE_OPENCOLLECTIVE = is(env.DISABLE_OPENCOLLECTIVE); -var SILENT = ['silent', 'error', 'warn'].indexOf(env.npm_config_loglevel) !== -1; -var OPEN_SOURCE_CONTRIBUTOR = is(env.OPEN_SOURCE_CONTRIBUTOR); - -// you could add a PR with an env variable for your CI detection -var CI = [ - 'BUILD_NUMBER', - 'CI', - 'CONTINUOUS_INTEGRATION', - 'DRONE', - 'RUN_ID' -].some(function (it) { return is(env[it]); }); - -var BANNER = '\u001b[35m\u001b[1mLove Swiper? Support Vladimir\'s work by donating or pledging: \u001B[0m\n' + -'\u001b[22m\u001b[39m\u001b[32m> On Patreon https://patreon.com/swiperjs \u001B[0m\n' + -'\u001b[22m\u001b[39m\u001b[32m> On Open Collective https://opencollective.com/swiper'; - -function is(it) { - return !!it && it !== '0' && it !== 'false'; -} - -function isBannerRequired() { - return !(ADBLOCK || CI || DISABLE_OPENCOLLECTIVE || SILENT || OPEN_SOURCE_CONTRIBUTOR); -} - -function showBanner() { - // eslint-disable-next-line no-console,no-control-regex -- output - console.log(COLOR ? BANNER : BANNER.replace(/\u001B\[\d+m/g, '')); -} - -if (isBannerRequired()) showBanner(); diff --git a/resources/web/include/swiper/react/get-changed-params.js b/resources/web/include/swiper/react/get-changed-params.js deleted file mode 100644 index d45ece48e8..0000000000 --- a/resources/web/include/swiper/react/get-changed-params.js +++ /dev/null @@ -1,43 +0,0 @@ -import { paramsList } from './params-list.js'; -import { isObject } from './utils.js'; - -function getChangedParams(swiperParams, oldParams, children, oldChildren) { - const keys = []; - if (!oldParams) return keys; - - const addKey = key => { - if (keys.indexOf(key) < 0) keys.push(key); - }; - - const oldChildrenKeys = oldChildren.map(child => child.key); - const childrenKeys = children.map(child => child.key); - 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; -} - -export { getChangedParams }; \ No newline at end of file diff --git a/resources/web/include/swiper/react/get-children.js b/resources/web/include/swiper/react/get-children.js deleted file mode 100644 index 8e01a9f7a3..0000000000 --- a/resources/web/include/swiper/react/get-children.js +++ /dev/null @@ -1,46 +0,0 @@ -import React from 'react'; - -function processChildren(c) { - const slides = []; - React.Children.toArray(c).forEach(child => { - if (child.type && child.type.displayName === 'SwiperSlide') { - 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 (child.type && child.type.displayName === 'SwiperSlide') { - 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 - }; -} - -export { getChildren }; \ No newline at end of file diff --git a/resources/web/include/swiper/react/get-params.js b/resources/web/include/swiper/react/get-params.js deleted file mode 100644 index 1ee41081d2..0000000000 --- a/resources/web/include/swiper/react/get-params.js +++ /dev/null @@ -1,46 +0,0 @@ -import Swiper from 'swiper'; -import { isObject, extend } from './utils.js'; -import { paramsList } from './params-list.js'; - -function getParams(obj = {}) { - const params = { - on: {} - }; - const events = {}; - const passedParams = {}; - extend(params, Swiper.defaults); - extend(params, Swiper.extendedDefaults); - params._emitClasses = true; - params.init = false; - const rest = {}; - const allowedParams = paramsList.map(key => key.replace(/_/, '')); - Object.keys(obj).forEach(key => { - 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') { - events[`${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 - }; -} - -export { getParams }; \ No newline at end of file diff --git a/resources/web/include/swiper/react/init-swiper.js b/resources/web/include/swiper/react/init-swiper.js deleted file mode 100644 index aaf5568971..0000000000 --- a/resources/web/include/swiper/react/init-swiper.js +++ /dev/null @@ -1,36 +0,0 @@ -import Swiper from 'swiper'; -import { needsNavigation, needsPagination, needsScrollbar } from './utils.js'; - -function initSwiper(swiperParams) { - return new Swiper(swiperParams); -} - -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); -} - -export { initSwiper, mountSwiper }; \ No newline at end of file diff --git a/resources/web/include/swiper/react/loop.js b/resources/web/include/swiper/react/loop.js deleted file mode 100644 index 962fe8de99..0000000000 --- a/resources/web/include/swiper/react/loop.js +++ /dev/null @@ -1,78 +0,0 @@ -import React from 'react'; -import Swiper from 'swiper'; - -function calcLoopedSlides(slides, swiperParams) { - let slidesPerViewParams = swiperParams.slidesPerView; - - if (swiperParams.breakpoints) { - const breakpoint = Swiper.prototype.getBreakpoint(swiperParams.breakpoints); - const breakpointOnlyParams = breakpoint in swiperParams.breakpoints ? swiperParams.breakpoints[breakpoint] : undefined; - - if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) { - slidesPerViewParams = breakpointOnlyParams.slidesPerView; - } - } - - let loopedSlides = Math.ceil(parseFloat(swiperParams.loopedSlides || slidesPerViewParams, 10)); - loopedSlides += swiperParams.loopAdditionalSlides; - - if (loopedSlides > slides.length) { - loopedSlides = slides.length; - } - - return loopedSlides; -} - -function renderLoop(swiper, slides, swiperParams) { - const modifiedSlides = slides.map((child, index) => { - return /*#__PURE__*/React.cloneElement(child, { - swiper, - 'data-swiper-slide-index': index - }); - }); - - function duplicateSlide(child, index, position) { - return /*#__PURE__*/React.cloneElement(child, { - key: `${child.key}-duplicate-${index}-${position}`, - className: `${child.props.className || ''} ${swiperParams.slideDuplicateClass}` - }); - } - - if (swiperParams.loopFillGroupWithBlank) { - const blankSlidesNum = swiperParams.slidesPerGroup - modifiedSlides.length % swiperParams.slidesPerGroup; - - if (blankSlidesNum !== swiperParams.slidesPerGroup) { - for (let i = 0; i < blankSlidesNum; i += 1) { - const blankSlide = /*#__PURE__*/React.createElement("div", { - className: `${swiperParams.slideClass} ${swiperParams.slideBlankClass}` - }); - modifiedSlides.push(blankSlide); - } - } - } - - if (swiperParams.slidesPerView === 'auto' && !swiperParams.loopedSlides) { - swiperParams.loopedSlides = modifiedSlides.length; - } - - const loopedSlides = calcLoopedSlides(modifiedSlides, swiperParams); - const prependSlides = []; - const appendSlides = []; - modifiedSlides.forEach((child, index) => { - if (index < loopedSlides) { - appendSlides.push(duplicateSlide(child, index, 'prepend')); - } - - if (index < modifiedSlides.length && index >= modifiedSlides.length - loopedSlides) { - prependSlides.push(duplicateSlide(child, index, 'append')); - } - }); - - if (swiper) { - swiper.loopedSlides = loopedSlides; - } - - return [...prependSlides, ...modifiedSlides, ...appendSlides]; -} - -export { calcLoopedSlides, renderLoop }; \ No newline at end of file diff --git a/resources/web/include/swiper/react/params-list.js b/resources/web/include/swiper/react/params-list.js deleted file mode 100644 index 2d25f8f2d2..0000000000 --- a/resources/web/include/swiper/react/params-list.js +++ /dev/null @@ -1,4 +0,0 @@ -/* underscore in name -> watch for changes */ -const paramsList = ['modules', 'init', '_direction', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_preloadImages', 'updateOnImagesReady', '_loop', '_loopAdditionalSlides', '_loopedSlides', '_loopFillGroupWithBlank', 'loopPreventsSlide', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideBlankClass', 'slideActiveClass', 'slideDuplicateActiveClass', 'slideVisibleClass', 'slideDuplicateClass', 'slideNextClass', 'slideDuplicateNextClass', 'slidePrevClass', 'slideDuplicatePrevClass', 'wrapperClass', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', // modules -'a11y', 'autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'lazy', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom']; -export { paramsList }; \ No newline at end of file diff --git a/resources/web/include/swiper/react/swiper-react.d.ts b/resources/web/include/swiper/react/swiper-react.d.ts deleted file mode 100644 index e8d2e73f61..0000000000 --- a/resources/web/include/swiper/react/swiper-react.d.ts +++ /dev/null @@ -1,467 +0,0 @@ -import * as React from 'react'; - -import { SwiperOptions, Swiper as SwiperClass } from '../types/'; - -interface Swiper extends 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 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 mousewheel scroll - */ - onScroll?: (swiper: SwiperClass, event: WheelEvent) => void;/** - * Event will be fired in the beginning of lazy loading of image - */ - onLazyImageLoad?: (swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement) => void; - /** - * Event will be fired when lazy loading image will be loaded - */ - onLazyImageReady?: (swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement) => void;/** - * Event will be fired on key press - */ - onKeyPress?: (swiper: SwiperClass, keyCode: string) => 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 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 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;/** - * Event will be fired on zoom change - */ - onZoomChange?: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => 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 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 `touchstart` 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 `touchmove` 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 `touchmove` 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 `touchmove` event as an arguments. - */ - onSliderMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired when user release Swiper. Receives `touchend` event as an arguments. - */ - onTouchEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired when user click/tap on Swiper. Receives `touchend` event as an arguments. - */ - onClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired when user click/tap on Swiper. Receives `touchend` 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 `touchend` event as an arguments - */ - onDoubleTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired right after all inner images are loaded. updateOnImagesReady should be also enabled - */ - onImagesReady?: (swiper: SwiperClass) => 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; - isDuplicate: boolean; - isPrev: boolean; - isNext: boolean; -} - -interface SwiperSlide { - /** - * Slide tag - * - * @default 'div' - */ - tag?: string; - - /** - * Enables additional wrapper required for zoom mode - * - * @default false - */ - zoom?: 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 Swiper - extends Omit< - React.HTMLAttributes, - | 'onProgress' - | 'onClick' - | 'onTouchEnd' - | 'onTouchMove' - | 'onTouchStart' - | 'onTransitionEnd' - | 'onKeyPress' - | 'onDoubleClick' - | 'onScroll' - > {} -interface SwiperSlide extends React.HTMLAttributes {} - -declare const Swiper: React.FunctionComponent; -declare const SwiperSlide: React.VoidFunctionComponent; - -export { Swiper, SwiperSlide }; diff --git a/resources/web/include/swiper/react/swiper-react.js b/resources/web/include/swiper/react/swiper-react.js deleted file mode 100644 index 35bd813af6..0000000000 --- a/resources/web/include/swiper/react/swiper-react.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Swiper React 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -import { Swiper } from './swiper.js'; -import { SwiperSlide } from './swiper-slide.js'; -export { Swiper, SwiperSlide }; \ No newline at end of file diff --git a/resources/web/include/swiper/react/swiper-slide.js b/resources/web/include/swiper/react/swiper-slide.js deleted file mode 100644 index 1cbab62040..0000000000 --- a/resources/web/include/swiper/react/swiper-slide.js +++ /dev/null @@ -1,79 +0,0 @@ -function _extends() { _extends = Object.assign || 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); } - -import React, { useRef, useState, forwardRef } from 'react'; -import { uniqueClasses } from './utils.js'; -import { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js'; -const SwiperSlide = /*#__PURE__*/forwardRef(({ - tag: Tag = 'div', - children, - className = '', - swiper, - zoom, - virtualIndex, - ...rest -} = {}, externalRef) => { - const slideElRef = useRef(null); - const [slideClasses, setSlideClasses] = useState('swiper-slide'); - - function updateClasses(_s, el, classNames) { - if (el === slideElRef.current) { - setSlideClasses(classNames); - } - } - - useIsomorphicLayoutEffect(() => { - 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) { - setSlideClasses(swiper.getSlideClasses(slideElRef.current)); - } - }, [swiper]); - let slideData; - - if (typeof children === 'function') { - slideData = { - isActive: slideClasses.indexOf('swiper-slide-active') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-active') >= 0, - isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0, - isDuplicate: slideClasses.indexOf('swiper-slide-duplicate') >= 0, - isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-prev') >= 0, - isNext: slideClasses.indexOf('swiper-slide-next') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-next') >= 0 - }; - } - - const renderChildren = () => { - return typeof children === 'function' ? children(slideData) : children; - }; - - return /*#__PURE__*/React.createElement(Tag, _extends({ - ref: slideElRef, - className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`), - "data-swiper-slide-index": virtualIndex - }, rest), zoom ? /*#__PURE__*/React.createElement("div", { - className: "swiper-zoom-container", - "data-swiper-zoom": typeof zoom === 'number' ? zoom : undefined - }, renderChildren()) : renderChildren()); -}); -SwiperSlide.displayName = 'SwiperSlide'; -export { SwiperSlide }; \ No newline at end of file diff --git a/resources/web/include/swiper/react/swiper.js b/resources/web/include/swiper/react/swiper.js deleted file mode 100644 index 8e709e4899..0000000000 --- a/resources/web/include/swiper/react/swiper.js +++ /dev/null @@ -1,202 +0,0 @@ -function _extends() { _extends = Object.assign || 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); } - -import React, { useRef, useState, useEffect, forwardRef } from 'react'; -import { getParams } from './get-params.js'; -import { initSwiper, mountSwiper } from './init-swiper.js'; -import { needsScrollbar, needsNavigation, needsPagination, uniqueClasses, extend } from './utils.js'; -import { renderLoop, calcLoopedSlides } from './loop.js'; -import { getChangedParams } from './get-changed-params.js'; -import { getChildren } from './get-children.js'; -import { updateSwiper } from './update-swiper.js'; -import { renderVirtual, updateOnVirtualData } from './virtual.js'; -import { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js'; -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); - } - - }); - - if (!swiperElRef.current) { - // init swiper - Object.assign(swiperParams.on, events); - eventsAssigned = true; - swiperRef.current = initSwiper(swiperParams); - - swiperRef.current.loopCreate = () => {}; - - swiperRef.current.loopDestroy = () => {}; - - if (swiperParams.loop) { - swiperRef.current.loopedSlides = calcLoopedSlides(slides, swiperParams); - } - - 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); - } - } // 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; - mountSwiper({ - el: swiperElRef.current, - nextEl: nextElRef.current, - prevEl: prevElRef.current, - paginationEl: paginationElRef.current, - scrollbarEl: scrollbarElRef.current, - swiper: swiperRef.current - }, swiperParams); - if (onSwiper) 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); - 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); - } - - if (!swiperParams.loop || swiperRef.current && swiperRef.current.destroyed) { - return slides.map(child => { - return /*#__PURE__*/React.cloneElement(child, { - swiper: swiperRef.current - }); - }); - } - - return renderLoop(swiperRef.current, slides, swiperParams); - } - - return /*#__PURE__*/React.createElement(Tag, _extends({ - ref: swiperElRef, - className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`) - }, restProps), slots['container-start'], 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" - }), /*#__PURE__*/React.createElement(WrapperTag, { - className: "swiper-wrapper" - }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), slots['container-end']); -}); -Swiper.displayName = 'Swiper'; -export { Swiper }; \ No newline at end of file diff --git a/resources/web/include/swiper/react/update-swiper.js b/resources/web/include/swiper/react/update-swiper.js deleted file mode 100644 index 09633c72a4..0000000000 --- a/resources/web/include/swiper/react/update-swiper.js +++ /dev/null @@ -1,131 +0,0 @@ -import { isObject, extend } from './utils.js'; - -function updateSwiper({ - swiper, - slides, - passedParams, - changedParams, - nextEl, - prevEl, - scrollbarEl, - paginationEl -}) { - const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction'); - const { - params: currentParams, - pagination, - navigation, - scrollbar, - virtual, - thumbs - } = swiper; - let needThumbsInit; - let needControllerInit; - let needPaginationInit; - let needScrollbarInit; - let needNavigationInit; - - if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { - 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') { - currentParams[mod].prevEl = undefined; - currentParams[mod].nextEl = undefined; - swiper[mod].prevEl = undefined; - swiper[mod].nextEl = undefined; - } else { - currentParams[mod].el = undefined; - swiper[mod].el = undefined; - } - }; - - updateParams.forEach(key => { - if (isObject(currentParams[key]) && isObject(passedParams[key])) { - extend(currentParams[key], passedParams[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 (changedParams.includes('children') && virtual && currentParams.virtual.enabled) { - virtual.slides = slides; - virtual.update(true); - } else if (changedParams.includes('children') && swiper.lazy && swiper.params.lazy.enabled) { - swiper.lazy.load(); - } - - if (needThumbsInit) { - const initialized = thumbs.init(); - if (initialized) thumbs.update(true); - } - - if (needControllerInit) { - swiper.controller.control = currentParams.controller.control; - } - - if (needPaginationInit) { - if (paginationEl) currentParams.pagination.el = paginationEl; - pagination.init(); - pagination.render(); - pagination.update(); - } - - if (needScrollbarInit) { - if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; - scrollbar.init(); - scrollbar.updateSize(); - scrollbar.setTranslate(); - } - - if (needNavigationInit) { - 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); - } - - swiper.update(); -} - -export { updateSwiper }; \ No newline at end of file diff --git a/resources/web/include/swiper/react/use-isomorphic-layout-effect.js b/resources/web/include/swiper/react/use-isomorphic-layout-effect.js deleted file mode 100644 index 25d33b156c..0000000000 --- a/resources/web/include/swiper/react/use-isomorphic-layout-effect.js +++ /dev/null @@ -1,9 +0,0 @@ -import { useEffect, useLayoutEffect } from 'react'; - -function useIsomorphicLayoutEffect(callback, deps) { - // eslint-disable-next-line - if (typeof window === 'undefined') return useEffect(callback, deps); - return useLayoutEffect(callback, deps); -} - -export { useIsomorphicLayoutEffect }; \ No newline at end of file diff --git a/resources/web/include/swiper/react/utils.js b/resources/web/include/swiper/react/utils.js deleted file mode 100644 index dfb9b99cc4..0000000000 --- a/resources/web/include/swiper/react/utils.js +++ /dev/null @@ -1,37 +0,0 @@ -function isObject(o) { - return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === '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) { - 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(' '); -} - -export { isObject, extend, needsNavigation, needsPagination, needsScrollbar, uniqueClasses }; \ No newline at end of file diff --git a/resources/web/include/swiper/react/virtual.js b/resources/web/include/swiper/react/virtual.js deleted file mode 100644 index cf12163c7d..0000000000 --- a/resources/web/include/swiper/react/virtual.js +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react'; - -function updateOnVirtualData(swiper) { - if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return; - swiper.updateSlides(); - swiper.updateProgress(); - swiper.updateSlidesClasses(); - - if (swiper.lazy && swiper.params.lazy.enabled) { - swiper.lazy.load(); - } - - if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) { - swiper.parallax.setTranslate(); - } -} - -function renderVirtual(swiper, slides, virtualData) { - if (!virtualData) return null; - const style = swiper.isHorizontal() ? { - [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` - } : { - top: `${virtualData.offset}px` - }; - return slides.filter((child, index) => index >= virtualData.from && index <= virtualData.to).map(child => { - return /*#__PURE__*/React.cloneElement(child, { - swiper, - style - }); - }); -} - -export { renderVirtual, updateOnVirtualData }; \ No newline at end of file diff --git a/resources/web/include/swiper/shared/classes-to-selector.js b/resources/web/include/swiper/shared/classes-to-selector.js deleted file mode 100644 index 7c34df95f1..0000000000 --- a/resources/web/include/swiper/shared/classes-to-selector.js +++ /dev/null @@ -1,4 +0,0 @@ -export default function classesToSelector(classes = '') { - return `.${classes.trim().replace(/([\.:!\/])/g, '\\$1') // eslint-disable-line - .replace(/ /g, '.')}`; -} \ No newline at end of file diff --git a/resources/web/include/swiper/shared/create-element-if-not-defined.js b/resources/web/include/swiper/shared/create-element-if-not-defined.js deleted file mode 100644 index 9fd245026b..0000000000 --- a/resources/web/include/swiper/shared/create-element-if-not-defined.js +++ /dev/null @@ -1,23 +0,0 @@ -import { getDocument } from 'ssr-window'; -export default function createElementIfNotDefined(swiper, originalParams, params, checkProps) { - const document = getDocument(); - - if (swiper.params.createElements) { - Object.keys(checkProps).forEach(key => { - if (!params[key] && params.auto === true) { - let element = swiper.$el.children(`.${checkProps[key]}`)[0]; - - if (!element) { - element = document.createElement('div'); - element.className = checkProps[key]; - swiper.$el.append(element); - } - - params[key] = element; - originalParams[key] = element; - } - }); - } - - return params; -} \ No newline at end of file diff --git a/resources/web/include/swiper/shared/create-shadow.js b/resources/web/include/swiper/shared/create-shadow.js deleted file mode 100644 index 9564898b89..0000000000 --- a/resources/web/include/swiper/shared/create-shadow.js +++ /dev/null @@ -1,13 +0,0 @@ -import $ from './dom.js'; -export default function createShadow(params, $slideEl, side) { - const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`; - const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl; - let $shadowEl = $shadowContainer.children(`.${shadowClass}`); - - if (!$shadowEl.length) { - $shadowEl = $(`
`); - $shadowContainer.append($shadowEl); - } - - return $shadowEl; -} \ No newline at end of file diff --git a/resources/web/include/swiper/shared/dom.js b/resources/web/include/swiper/shared/dom.js deleted file mode 100644 index d66471c767..0000000000 --- a/resources/web/include/swiper/shared/dom.js +++ /dev/null @@ -1,46 +0,0 @@ -import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7'; -const Methods = { - addClass, - removeClass, - hasClass, - toggleClass, - attr, - removeAttr, - transform, - transition, - on, - off, - trigger, - transitionEnd, - outerWidth, - outerHeight, - styles, - offset, - css, - each, - html, - text, - is, - index, - eq, - append, - prepend, - next, - nextAll, - prev, - prevAll, - parent, - parents, - closest, - find, - children, - filter, - remove -}; -Object.keys(Methods).forEach(methodName => { - Object.defineProperty($.fn, methodName, { - value: Methods[methodName], - writable: true - }); -}); -export default $; \ No newline at end of file diff --git a/resources/web/include/swiper/shared/effect-init.js b/resources/web/include/swiper/shared/effect-init.js deleted file mode 100644 index 974d102258..0000000000 --- a/resources/web/include/swiper/shared/effect-init.js +++ /dev/null @@ -1,31 +0,0 @@ -export default function effectInit(params) { - const { - effect, - swiper, - on, - setTranslate, - setTransition, - overwriteParams, - perspective - } = 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', () => { - if (swiper.params.effect !== effect) return; - setTranslate(); - }); - on('setTransition', (_s, duration) => { - if (swiper.params.effect !== effect) return; - setTransition(duration); - }); -} \ No newline at end of file diff --git a/resources/web/include/swiper/shared/effect-target.js b/resources/web/include/swiper/shared/effect-target.js deleted file mode 100644 index 2f9fa04cc3..0000000000 --- a/resources/web/include/swiper/shared/effect-target.js +++ /dev/null @@ -1,10 +0,0 @@ -export default function effectTarget(effectParams, $slideEl) { - if (effectParams.transformEl) { - return $slideEl.find(effectParams.transformEl).css({ - 'backface-visibility': 'hidden', - '-webkit-backface-visibility': 'hidden' - }); - } - - return $slideEl; -} \ No newline at end of file diff --git a/resources/web/include/swiper/shared/effect-virtual-transition-end.js b/resources/web/include/swiper/shared/effect-virtual-transition-end.js deleted file mode 100644 index 1427bb78d9..0000000000 --- a/resources/web/include/swiper/shared/effect-virtual-transition-end.js +++ /dev/null @@ -1,35 +0,0 @@ -export default function effectVirtualTransitionEnd({ - swiper, - duration, - transformEl, - allSlides -}) { - const { - slides, - activeIndex, - $wrapperEl - } = swiper; - - if (swiper.params.virtualTranslate && duration !== 0) { - let eventTriggered = false; - let $transitionEndTarget; - - if (allSlides) { - $transitionEndTarget = transformEl ? slides.find(transformEl) : slides; - } else { - $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex); - } - - $transitionEndTarget.transitionEnd(() => { - if (eventTriggered) return; - if (!swiper || swiper.destroyed) return; - eventTriggered = true; - swiper.animating = false; - const triggerEvents = ['webkitTransitionEnd', 'transitionend']; - - for (let i = 0; i < triggerEvents.length; i += 1) { - $wrapperEl.trigger(triggerEvents[i]); - } - }); - } -} \ No newline at end of file diff --git a/resources/web/include/swiper/shared/get-browser.js b/resources/web/include/swiper/shared/get-browser.js deleted file mode 100644 index 78804c5c58..0000000000 --- a/resources/web/include/swiper/shared/get-browser.js +++ /dev/null @@ -1,26 +0,0 @@ -import { getWindow } from 'ssr-window'; -let browser; - -function calcBrowser() { - const window = getWindow(); - - function isSafari() { - const ua = window.navigator.userAgent.toLowerCase(); - return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; - } - - return { - isSafari: isSafari(), - isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) - }; -} - -function getBrowser() { - if (!browser) { - browser = calcBrowser(); - } - - return browser; -} - -export { getBrowser }; \ No newline at end of file diff --git a/resources/web/include/swiper/shared/get-device.js b/resources/web/include/swiper/shared/get-device.js deleted file mode 100644 index cc8719726d..0000000000 --- a/resources/web/include/swiper/shared/get-device.js +++ /dev/null @@ -1,57 +0,0 @@ -import { getWindow } from 'ssr-window'; -import { getSupport } from './get-support.js'; -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).*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; -} - -export { getDevice }; \ No newline at end of file diff --git a/resources/web/include/swiper/shared/get-support.js b/resources/web/include/swiper/shared/get-support.js deleted file mode 100644 index d26e153404..0000000000 --- a/resources/web/include/swiper/shared/get-support.js +++ /dev/null @@ -1,41 +0,0 @@ -import { getWindow, getDocument } from 'ssr-window'; -let support; - -function calcSupport() { - const window = getWindow(); - const document = getDocument(); - return { - smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style, - touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch), - passiveListener: function checkPassiveListener() { - let supportsPassive = false; - - try { - const opts = Object.defineProperty({}, 'passive', { - // eslint-disable-next-line - get() { - supportsPassive = true; - } - - }); - window.addEventListener('testPassiveListener', null, opts); - } catch (e) {// No support - } - - return supportsPassive; - }(), - gestures: function checkGestures() { - return 'ongesturestart' in window; - }() - }; -} - -function getSupport() { - if (!support) { - support = calcSupport(); - } - - return support; -} - -export { getSupport }; \ No newline at end of file diff --git a/resources/web/include/swiper/shared/utils.js b/resources/web/include/swiper/shared/utils.js deleted file mode 100644 index 9fecbe3943..0000000000 --- a/resources/web/include/swiper/shared/utils.js +++ /dev/null @@ -1,197 +0,0 @@ -import { getWindow } from 'ssr-window'; - -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, null); - - 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]); - const noExtend = ['__proto__', 'constructor', 'prototype']; - - 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 => noExtend.indexOf(key) < 0); - - 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(); -} - -export { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty }; \ No newline at end of file diff --git a/resources/web/include/swiper/svelte/get-changed-params.js b/resources/web/include/swiper/svelte/get-changed-params.js deleted file mode 100644 index a25ac8abb3..0000000000 --- a/resources/web/include/swiper/svelte/get-changed-params.js +++ /dev/null @@ -1,39 +0,0 @@ -import { isObject } from './utils.js'; -import { paramsList } from './params-list.js'; - -function getChangedParams(swiperParams, oldParams) { - const keys = []; - if (!oldParams) return keys; - - const addKey = key => { - if (keys.indexOf(key) < 0) keys.push(key); - }; - - 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; -} - -export { getChangedParams }; \ No newline at end of file diff --git a/resources/web/include/swiper/svelte/get-params.js b/resources/web/include/swiper/svelte/get-params.js deleted file mode 100644 index 00b79b1555..0000000000 --- a/resources/web/include/swiper/svelte/get-params.js +++ /dev/null @@ -1,44 +0,0 @@ -import Swiper from 'swiper'; -import { isObject, extend } from './utils.js'; -import { paramsList } from './params-list.js'; - -function getParams(obj = {}) { - const params = { - on: {} - }; - const passedParams = {}; - extend(params, Swiper.defaults); - extend(params, Swiper.extendedDefaults); - params._emitClasses = true; - params.init = false; - const rest = {}; - const allowedParams = paramsList.map(key => key.replace(/_/, '')); - Object.keys(obj).forEach(key => { - 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') { - 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 - }; -} - -export { getParams }; \ No newline at end of file diff --git a/resources/web/include/swiper/svelte/init-swiper.js b/resources/web/include/swiper/svelte/init-swiper.js deleted file mode 100644 index aaf5568971..0000000000 --- a/resources/web/include/swiper/svelte/init-swiper.js +++ /dev/null @@ -1,36 +0,0 @@ -import Swiper from 'swiper'; -import { needsNavigation, needsPagination, needsScrollbar } from './utils.js'; - -function initSwiper(swiperParams) { - return new Swiper(swiperParams); -} - -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); -} - -export { initSwiper, mountSwiper }; \ No newline at end of file diff --git a/resources/web/include/swiper/svelte/params-list.js b/resources/web/include/swiper/svelte/params-list.js deleted file mode 100644 index 2e0223ccaa..0000000000 --- a/resources/web/include/swiper/svelte/params-list.js +++ /dev/null @@ -1,4 +0,0 @@ -/* underscore in name -> watch for changes */ -const paramsList = ['modules', 'init', '_direction', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_preloadImages', 'updateOnImagesReady', '_loop', '_loopAdditionalSlides', '_loopedSlides', '_loopFillGroupWithBlank', 'loopPreventsSlide', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideBlankClass', 'slideActiveClass', 'slideDuplicateActiveClass', 'slideVisibleClass', 'slideDuplicateClass', 'slideNextClass', 'slideDuplicateNextClass', 'slidePrevClass', 'slideDuplicatePrevClass', 'wrapperClass', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', // modules -'a11y', 'autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'lazy', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', '_virtual', 'zoom']; -export { paramsList }; \ No newline at end of file diff --git a/resources/web/include/swiper/svelte/swiper-slide.svelte b/resources/web/include/swiper/svelte/swiper-slide.svelte deleted file mode 100644 index a07b304a06..0000000000 --- a/resources/web/include/swiper/svelte/swiper-slide.svelte +++ /dev/null @@ -1,95 +0,0 @@ - - -
- {#if zoom} -
- -
- {:else} - - {/if} -
diff --git a/resources/web/include/swiper/svelte/swiper-svelte.d.ts b/resources/web/include/swiper/svelte/swiper-svelte.d.ts deleted file mode 100644 index 88569b8dad..0000000000 --- a/resources/web/include/swiper/svelte/swiper-svelte.d.ts +++ /dev/null @@ -1,431 +0,0 @@ -import { SvelteComponentTyped } from 'svelte'; -import { SwiperOptions, Swiper as SwiperClass } from '../types/'; - -// @ts-ignore -interface SwiperProps extends svelte.JSX.HTMLAttributes {} -interface SwiperProps extends SwiperOptions {} - -// @ts-ignore -interface SwiperSlideProps extends svelte.JSX.HTMLAttributes { - /** - * Enables additional wrapper required for zoom mode - * - * @default false - */ - zoom?: boolean; - - /** - * Slide's index in slides array/collection - * - * @default false - */ - virtualIndex?: number; -} - -declare class Swiper extends SvelteComponentTyped< - SwiperProps, - { - swiper: CustomEvent; - /** - * Event will be fired in when autoplay started - */ - autoplayStart: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired when autoplay stopped - */ - autoplayStop: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired when slide changed with autoplay - */ - autoplay: CustomEvent<[swiper: SwiperClass]>;/** - * Event will be fired on window hash change - */ - hashChange: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired when swiper updates the hash - */ - hashSet: CustomEvent<[swiper: SwiperClass]>;/** - * Event will be fired on mousewheel scroll - */ - scroll: CustomEvent<[swiper: SwiperClass, event: WheelEvent]>;/** - * Event will be fired in the beginning of lazy loading of image - */ - lazyImageLoad: CustomEvent<[swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement]>; - /** - * Event will be fired when lazy loading image will be loaded - */ - lazyImageReady: CustomEvent<[swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement]>;/** - * Event will be fired on key press - */ - keyPress: CustomEvent<[swiper: SwiperClass, keyCode: string]>;/** - * Event will be fired on navigation hide - */ - navigationHide: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired on navigation show - */ - navigationShow: CustomEvent<[swiper: SwiperClass]>;/** - * Event will be fired on draggable scrollbar drag start - */ - scrollbarDragStart: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - - /** - * Event will be fired on draggable scrollbar drag move - */ - scrollbarDragMove: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - - /** - * Event will be fired on draggable scrollbar drag end - */ - scrollbarDragEnd: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>;/** - * Event will be fired after pagination rendered - */ - paginationRender: CustomEvent<[swiper: SwiperClass, paginationEl: HTMLElement]>; - - /** - * Event will be fired when pagination updated - */ - paginationUpdate: CustomEvent<[swiper: SwiperClass, paginationEl: HTMLElement]>; - - /** - * Event will be fired on pagination hide - */ - paginationHide: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired on pagination show - */ - paginationShow: CustomEvent<[swiper: SwiperClass]>;/** - * Event will be fired on zoom change - */ - zoomChange: CustomEvent<[swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement]>; - - /** - * 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: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired right before Swiper destroyed - */ - beforeDestroy: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired when currently active slide is changed - */ - slideChange: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired in the beginning of animation to other slide (next or previous). - */ - slideChangeTransitionStart: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired after animation to other slide (next or previous). - */ - slideChangeTransitionEnd: CustomEvent<[swiper: SwiperClass]>; - - /** - * Same as "slideChangeTransitionStart" but for "forward" direction only - */ - slideNextTransitionStart: CustomEvent<[swiper: SwiperClass]>; - - /** - * Same as "slideChangeTransitionEnd" but for "forward" direction only - */ - slideNextTransitionEnd: CustomEvent<[swiper: SwiperClass]>; - - /** - * Same as "slideChangeTransitionStart" but for "backward" direction only - */ - slidePrevTransitionStart: CustomEvent<[swiper: SwiperClass]>; - - /** - * Same as "slideChangeTransitionEnd" but for "backward" direction only - */ - slidePrevTransitionEnd: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired in the beginning of transition. - */ - transitionStart: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired after transition. - */ - transitionEnd: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired when user touch Swiper. Receives `touchstart` event as an arguments. - */ - touchStart: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - - /** - * Event will be fired when user touch and move finger over Swiper. Receives `touchmove` event as an arguments. - */ - touchMove: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - - /** - * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `touchmove` event as an arguments. - */ - touchMoveOpposite: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - - /** - * Event will be fired when user touch and move finger over Swiper and move it. Receives `touchmove` event as an arguments. - */ - sliderMove: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - - /** - * Event will be fired when user release Swiper. Receives `touchend` event as an arguments. - */ - touchEnd: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - - /** - * Event will be fired when user click/tap on Swiper. Receives `touchend` event as an arguments. - */ - click: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - - /** - * Event will be fired when user click/tap on Swiper. Receives `touchend` event as an arguments. - */ - tap: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - - /** - * Event will be fired when user double tap on Swiper's container. Receives `touchend` event as an arguments - */ - doubleTap: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - - /** - * Event will be fired right after all inner images are loaded. updateOnImagesReady should be also enabled - */ - imagesReady: CustomEvent<[swiper: SwiperClass]>; - - /** - * 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: SwiperClass, progress: number]>; - - /** - * Event will be fired when Swiper reach its beginning (initial position) - */ - reachBeginning: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired when Swiper reach last slide - */ - reachEnd: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired when Swiper goes to beginning or end position - */ - toEdge: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired when Swiper goes from beginning or end position - */ - fromEdge: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments - */ - setTranslate: CustomEvent<[swiper: SwiperClass, translate: number]>; - - /** - * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments - */ - setTransition: CustomEvent<[swiper: SwiperClass, transition: number]>; - - /** - * Event will be fired on window resize right before swiper's onresize manipulation - */ - resize: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired if observer is enabled and it detects DOM mutations - */ - observerUpdate: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired right before "loop fix" - */ - beforeLoopFix: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired after "loop fix" - */ - loopFix: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will be fired on breakpoint change - */ - breakpoint: CustomEvent<[swiper: SwiperClass, breakpointParams: SwiperOptions]>; - - /** - * !INTERNAL: Event will fired right before breakpoint change - */ - _beforeBreakpoint: CustomEvent<[swiper: SwiperClass, breakpointParams: SwiperOptions]>; - - /** - * !INTERNAL: Event will fired after setting CSS classes on swiper container element - */ - _containerClasses: CustomEvent<[swiper: SwiperClass, classNames: string]>; - - /** - * !INTERNAL: Event will fired after setting CSS classes on swiper slide element - */ - _slideClass: CustomEvent<[swiper: SwiperClass, slideEl: HTMLElement, classNames: string]>; - - /** - * !INTERNAL: Event will fired after setting CSS classes on all swiper slides - */ - _slideClasses: CustomEvent<[ - swiper: SwiperClass, - slides: { slideEl: HTMLElement; classNames: string; index: number }[], - ]>; - - /** - * !INTERNAL: Event will fired as soon as swiper instance available (before init) - */ - _swiper: CustomEvent<[swiper: SwiperClass]>; - - /** - * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum - */ - _freeModeNoMomentumRelease: CustomEvent<[swiper: SwiperClass]>; - - /** - * Event will fired on active index change - */ - activeIndexChange: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will fired on snap index change - */ - snapIndexChange: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will fired on real index change - */ - realIndexChange: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will fired right after initialization - */ - afterInit: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will fired right before initialization - */ - beforeInit: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will fired before resize handler - */ - beforeResize: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will fired before slide change transition start - */ - beforeSlideChangeStart: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will fired before transition start - */ - beforeTransitionStart: CustomEvent<[swiper: SwiperClass, speed: number, internal: any]>; // what is internal? - /** - * Event will fired on direction change - */ - changeDirection: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired when user double click/tap on Swiper - */ - doubleClick: CustomEvent<[swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent]>; - /** - * Event will be fired on swiper destroy - */ - destroy: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired on momentum bounce - */ - momentumBounce: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired on orientation change (e.g. landscape -> portrait) - */ - orientationchange: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired in the beginning of animation of resetting slide to current one - */ - slideResetTransitionStart: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired in the end of animation of resetting slide to current one - */ - slideResetTransitionEnd: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired with first touch/drag move - */ - sliderFirstMove: CustomEvent<[swiper: SwiperClass, event: TouchEvent]>; - /** - * Event will be fired when number of slides has changed - */ - slidesLengthChange: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired when slides grid has changed - */ - slidesGridLengthChange: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired when snap grid has changed - */ - snapGridLengthChange: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired after swiper.update() call - */ - update: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired when swiper is locked (when `watchOverflow` enabled) - */ - lock: CustomEvent<[swiper: SwiperClass]>; - /** - * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) - */ - unlock: CustomEvent<[swiper: SwiperClass]>; - - }, - { - default: {}; - 'container-start': {}; - 'wrapper-start': {}; - 'wrapper-end': {}; - 'container-end': {}; - } -> {} - -declare class SwiperSlide extends SvelteComponentTyped< - SwiperSlideProps, - {}, - { - default: {}; - } -> {} - -export { Swiper, SwiperSlide }; diff --git a/resources/web/include/swiper/svelte/swiper-svelte.js b/resources/web/include/swiper/svelte/swiper-svelte.js deleted file mode 100644 index 7b3452dda2..0000000000 --- a/resources/web/include/swiper/svelte/swiper-svelte.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Swiper Svelte 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -import Swiper from './swiper.svelte'; -import SwiperSlide from './swiper-slide.svelte'; -export { Swiper, SwiperSlide }; \ No newline at end of file diff --git a/resources/web/include/swiper/svelte/swiper.svelte b/resources/web/include/swiper/svelte/swiper.svelte deleted file mode 100644 index 504ae51498..0000000000 --- a/resources/web/include/swiper/svelte/swiper.svelte +++ /dev/null @@ -1,178 +0,0 @@ - - -
- - {#if needsNavigation(swiperParams)} -
-
- {/if} - {#if needsScrollbar(swiperParams)} -
- {/if} - {#if needsPagination(swiperParams)} -
- {/if} -
- - - -
- -
diff --git a/resources/web/include/swiper/svelte/update-swiper.js b/resources/web/include/swiper/svelte/update-swiper.js deleted file mode 100644 index 269ae5af63..0000000000 --- a/resources/web/include/swiper/svelte/update-swiper.js +++ /dev/null @@ -1,132 +0,0 @@ -import { isObject, extend } from './utils.js'; - -function updateSwiper({ - swiper, - passedParams, - changedParams, - nextEl, - prevEl, - scrollbarEl, - paginationEl -}) { - const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction'); - const { - params: currentParams, - pagination, - navigation, - scrollbar, - thumbs - } = swiper; - let needThumbsInit; - let needControllerInit; - let needPaginationInit; - let needScrollbarInit; - let needNavigationInit; - - if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { - 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; - } - - if (changedParams.includes('virtual')) { - if (passedParams.virtual && passedParams.virtual.slides && swiper.virtual) { - swiper.virtual.slides = passedParams.virtual.slides; - swiper.virtual.update(); - } - } - - const destroyModule = mod => { - if (!swiper[mod]) return; - swiper[mod].destroy(); - - if (mod === 'navigation') { - currentParams[mod].prevEl = undefined; - currentParams[mod].nextEl = undefined; - swiper[mod].prevEl = undefined; - swiper[mod].nextEl = undefined; - } else { - currentParams[mod].el = undefined; - swiper[mod].el = undefined; - } - }; - - updateParams.forEach(key => { - if (isObject(currentParams[key]) && isObject(passedParams[key])) { - extend(currentParams[key], passedParams[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 (needThumbsInit) { - const initialized = thumbs.init(); - - if (initialized) { - thumbs.update(true); - } - } - - if (needControllerInit) { - swiper.controller.control = currentParams.controller.control; - } - - if (needPaginationInit) { - if (paginationEl) currentParams.pagination.el = paginationEl; - pagination.init(); - pagination.render(); - pagination.update(); - } - - if (needScrollbarInit) { - if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; - scrollbar.init(); - scrollbar.updateSize(); - scrollbar.setTranslate(); - } - - if (needNavigationInit) { - 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); - } - - swiper.update(); -} - -export { updateSwiper }; \ No newline at end of file diff --git a/resources/web/include/swiper/svelte/utils.js b/resources/web/include/swiper/svelte/utils.js deleted file mode 100644 index dfb9b99cc4..0000000000 --- a/resources/web/include/swiper/svelte/utils.js +++ /dev/null @@ -1,37 +0,0 @@ -function isObject(o) { - return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === '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) { - 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(' '); -} - -export { isObject, extend, needsNavigation, needsPagination, needsScrollbar, uniqueClasses }; \ No newline at end of file diff --git a/resources/web/include/swiper/swiper-bundle.css b/resources/web/include/swiper/swiper-bundle.css deleted file mode 100644 index a9b4b22695..0000000000 --- a/resources/web/include/swiper/swiper-bundle.css +++ /dev/null @@ -1,613 +0,0 @@ -/** - * Swiper 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -@font-face { - font-family: 'swiper-icons'; - src: url('data:application/font-woff;charset=utf-8;base64, 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'); - font-weight: 400; - font-style: normal; -} -:root { - --swiper-theme-color: #007aff; -} -.swiper { - margin-left: auto; - margin-right: auto; - position: relative; - overflow: hidden; - list-style: none; - padding: 0; - /* Fix of Webkit flickering */ - z-index: 1; -} -.swiper-vertical > .swiper-wrapper { - flex-direction: column; -} -.swiper-wrapper { - position: relative; - width: 100%; - height: 100%; - z-index: 1; - display: flex; - transition-property: transform; - box-sizing: content-box; -} -.swiper-android .swiper-slide, -.swiper-wrapper { - transform: translate3d(0px, 0, 0); -} -.swiper-pointer-events { - touch-action: pan-y; -} -.swiper-pointer-events.swiper-vertical { - touch-action: pan-x; -} -.swiper-slide { - flex-shrink: 0; - width: 100%; - height: 100%; - position: relative; - transition-property: transform; -} -.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; -} -/* 3D Effects */ -.swiper-3d, -.swiper-3d.swiper-css-mode .swiper-wrapper { - perspective: 1200px; -} -.swiper-3d .swiper-wrapper, -.swiper-3d .swiper-slide, -.swiper-3d .swiper-slide-shadow, -.swiper-3d .swiper-slide-shadow-left, -.swiper-3d .swiper-slide-shadow-right, -.swiper-3d .swiper-slide-shadow-top, -.swiper-3d .swiper-slide-shadow-bottom, -.swiper-3d .swiper-cube-shadow { - transform-style: preserve-3d; -} -.swiper-3d .swiper-slide-shadow, -.swiper-3d .swiper-slide-shadow-left, -.swiper-3d .swiper-slide-shadow-right, -.swiper-3d .swiper-slide-shadow-top, -.swiper-3d .swiper-slide-shadow-bottom { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - pointer-events: none; - z-index: 10; -} -.swiper-3d .swiper-slide-shadow { - background: rgba(0, 0, 0, 0.15); -} -.swiper-3d .swiper-slide-shadow-left { - background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); -} -.swiper-3d .swiper-slide-shadow-right { - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); -} -.swiper-3d .swiper-slide-shadow-top { - background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); -} -.swiper-3d .swiper-slide-shadow-bottom { - background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); -} -/* CSS Mode */ -.swiper-css-mode > .swiper-wrapper { - overflow: auto; - scrollbar-width: none; - /* For Firefox */ - -ms-overflow-style: none; - /* For Internet Explorer and Edge */ -} -.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar { - display: none; -} -.swiper-css-mode > .swiper-wrapper > .swiper-slide { - scroll-snap-align: start start; -} -.swiper-horizontal.swiper-css-mode > .swiper-wrapper { - scroll-snap-type: x mandatory; -} -.swiper-vertical.swiper-css-mode > .swiper-wrapper { - scroll-snap-type: y mandatory; -} -.swiper-centered > .swiper-wrapper::before { - content: ''; - flex-shrink: 0; - order: 9999; -} -.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child { - margin-inline-start: var(--swiper-centered-offset-before); -} -.swiper-centered.swiper-horizontal > .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-centered.swiper-vertical > .swiper-wrapper::before { - width: 100%; - min-width: 1px; - height: var(--swiper-centered-offset-after); -} -.swiper-centered > .swiper-wrapper > .swiper-slide { - scroll-snap-align: center center; -} -.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-color: var(--swiper-theme-color); - */ -} -.swiper-button-prev, -.swiper-button-next { - position: absolute; - top: 50%; - width: calc(var(--swiper-navigation-size) / 44 * 27); - height: var(--swiper-navigation-size); - margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); - 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:after, -.swiper-button-next:after { - font-family: swiper-icons; - font-size: var(--swiper-navigation-size); - text-transform: none !important; - letter-spacing: 0; - text-transform: none; - font-variant: initial; - line-height: 1; -} -.swiper-button-prev, -.swiper-rtl .swiper-button-next { - left: 10px; - right: auto; -} -.swiper-button-prev:after, -.swiper-rtl .swiper-button-next:after { - content: 'prev'; -} -.swiper-button-next, -.swiper-rtl .swiper-button-prev { - right: 10px; - left: auto; -} -.swiper-button-next:after, -.swiper-rtl .swiper-button-prev:after { - content: 'next'; -} -.swiper-button-lock { - display: none; -} -:root { - /* - --swiper-pagination-color: var(--swiper-theme-color); - --swiper-pagination-bullet-size: 8px; - --swiper-pagination-bullet-width: 8px; - --swiper-pagination-bullet-height: 8px; - --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; -} -/* Common Styles */ -.swiper-pagination-fraction, -.swiper-pagination-custom, -.swiper-horizontal > .swiper-pagination-bullets, -.swiper-pagination-bullets.swiper-pagination-horizontal { - bottom: 10px; - 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: 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; - -webkit-appearance: 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: 10px; - 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; -} -/* Progress */ -.swiper-pagination-progressbar { - background: 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: 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: 4px; - height: 100%; - left: 0; - top: 0; -} -.swiper-pagination-lock { - display: none; -} -/* Scrollbar */ -.swiper-scrollbar { - border-radius: 10px; - position: relative; - -ms-touch-action: none; - background: rgba(0, 0, 0, 0.1); -} -.swiper-horizontal > .swiper-scrollbar { - position: absolute; - left: 1%; - bottom: 3px; - z-index: 50; - height: 5px; - width: 98%; -} -.swiper-vertical > .swiper-scrollbar { - position: absolute; - right: 3px; - top: 1%; - z-index: 50; - width: 5px; - height: 98%; -} -.swiper-scrollbar-drag { - height: 100%; - width: 100%; - position: relative; - background: rgba(0, 0, 0, 0.5); - border-radius: 10px; - left: 0; - top: 0; -} -.swiper-scrollbar-cursor-drag { - cursor: move; -} -.swiper-scrollbar-lock { - display: none; -} -.swiper-zoom-container { - width: 100%; - height: 100%; - display: flex; - justify-content: center; - align-items: center; - text-align: center; -} -.swiper-zoom-container > img, -.swiper-zoom-container > svg, -.swiper-zoom-container > canvas { - max-width: 100%; - max-height: 100%; - object-fit: contain; -} -.swiper-slide-zoomed { - cursor: move; -} -/* Preloader */ -:root { - /* - --swiper-preloader-color: var(--swiper-theme-color); - */ -} -.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%; - animation: swiper-preloader-spin 1s infinite linear; - box-sizing: border-box; - border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); - border-radius: 50%; - border-top-color: transparent; -} -.swiper-lazy-preloader-white { - --swiper-preloader-color: #fff; -} -.swiper-lazy-preloader-black { - --swiper-preloader-color: #000; -} -@keyframes swiper-preloader-spin { - 100% { - transform: rotate(360deg); - } -} -/* a11y */ -.swiper .swiper-notification { - position: absolute; - left: 0; - top: 0; - pointer-events: none; - opacity: 0; - z-index: -1000; -} -.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-fade .swiper-slide { - pointer-events: none; - transition-property: opacity; -} -.swiper-fade .swiper-slide .swiper-slide { - pointer-events: none; -} -.swiper-fade .swiper-slide-active, -.swiper-fade .swiper-slide-active .swiper-slide-active { - pointer-events: auto; -} -.swiper-cube { - overflow: visible; -} -.swiper-cube .swiper-slide { - pointer-events: none; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - z-index: 1; - visibility: hidden; - transform-origin: 0 0; - width: 100%; - height: 100%; -} -.swiper-cube .swiper-slide .swiper-slide { - pointer-events: none; -} -.swiper-cube.swiper-rtl .swiper-slide { - transform-origin: 100% 0; -} -.swiper-cube .swiper-slide-active, -.swiper-cube .swiper-slide-active .swiper-slide-active { - pointer-events: auto; -} -.swiper-cube .swiper-slide-active, -.swiper-cube .swiper-slide-next, -.swiper-cube .swiper-slide-prev, -.swiper-cube .swiper-slide-next + .swiper-slide { - pointer-events: auto; - visibility: visible; -} -.swiper-cube .swiper-slide-shadow-top, -.swiper-cube .swiper-slide-shadow-bottom, -.swiper-cube .swiper-slide-shadow-left, -.swiper-cube .swiper-slide-shadow-right { - z-index: 0; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; -} -.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-flip { - overflow: visible; -} -.swiper-flip .swiper-slide { - pointer-events: none; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - z-index: 1; -} -.swiper-flip .swiper-slide .swiper-slide { - pointer-events: none; -} -.swiper-flip .swiper-slide-active, -.swiper-flip .swiper-slide-active .swiper-slide-active { - pointer-events: auto; -} -.swiper-flip .swiper-slide-shadow-top, -.swiper-flip .swiper-slide-shadow-bottom, -.swiper-flip .swiper-slide-shadow-left, -.swiper-flip .swiper-slide-shadow-right { - z-index: 0; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; -} -.swiper-creative .swiper-slide { - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - overflow: hidden; - transition-property: transform, opacity, height; -} -.swiper-cards { - overflow: visible; -} -.swiper-cards .swiper-slide { - transform-origin: center bottom; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - overflow: hidden; -} diff --git a/resources/web/include/swiper/swiper-bundle.esm.browser.js b/resources/web/include/swiper/swiper-bundle.esm.browser.js deleted file mode 100644 index ef767e9ac3..0000000000 --- a/resources/web/include/swiper/swiper-bundle.esm.browser.js +++ /dev/null @@ -1,10060 +0,0 @@ -/** - * Swiper 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -/** - * SSR Window 4.0.1 - * Better handling for window object in SSR environment - * https://github.com/nolimits4web/ssr-window - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: October 27, 2021 - */ - -/* 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 = {}) { - Object.keys(src).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; -} - -/** - * Dom7 4.0.1 - * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API - * https://framework7.io/docs/dom7.html - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: October 27, 2021 - */ -/* eslint-disable no-proto */ - -function makeReactive(obj) { - const proto = obj.__proto__; - Object.defineProperty(obj, '__proto__', { - get() { - return proto; - }, - - set(value) { - proto.__proto__ = value; - } - - }); -} - -class Dom7 extends Array { - constructor(items) { - super(...(items || [])); - makeReactive(this); - } - -} - -function arrayFlat(arr = []) { - const res = []; - arr.forEach(el => { - if (Array.isArray(el)) { - res.push(...arrayFlat(el)); - } else { - res.push(el); - } - }); - return res; -} - -function arrayFilter(arr, callback) { - return Array.prototype.filter.call(arr, callback); -} - -function arrayUnique(arr) { - const uniqueArray = []; - - for (let i = 0; i < arr.length; i += 1) { - if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]); - } - - return uniqueArray; -} - - -function qsa(selector, context) { - if (typeof selector !== 'string') { - return [selector]; - } - - const a = []; - const res = context.querySelectorAll(selector); - - for (let i = 0; i < res.length; i += 1) { - a.push(res[i]); - } - - return a; -} - -function $(selector, context) { - const window = getWindow(); - const document = getDocument(); - let arr = []; - - if (!context && selector instanceof Dom7) { - return selector; - } - - if (!selector) { - return new Dom7(arr); - } - - if (typeof selector === 'string') { - const html = selector.trim(); - - if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { - let toCreate = 'div'; - if (html.indexOf(' c.split(' '))); - this.forEach(el => { - el.classList.add(...classNames); - }); - return this; -} - -function removeClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - this.forEach(el => { - el.classList.remove(...classNames); - }); - return this; -} - -function toggleClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - this.forEach(el => { - classNames.forEach(className => { - el.classList.toggle(className); - }); - }); -} - -function hasClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - return arrayFilter(this, el => { - return classNames.filter(className => el.classList.contains(className)).length > 0; - }).length > 0; -} - -function attr(attrs, value) { - if (arguments.length === 1 && typeof attrs === 'string') { - // Get attr - if (this[0]) return this[0].getAttribute(attrs); - return undefined; - } // Set attrs - - - for (let i = 0; i < this.length; i += 1) { - if (arguments.length === 2) { - // String - this[i].setAttribute(attrs, value); - } else { - // Object - for (const attrName in attrs) { - this[i][attrName] = attrs[attrName]; - this[i].setAttribute(attrName, attrs[attrName]); - } - } - } - - return this; -} - -function removeAttr(attr) { - for (let i = 0; i < this.length; i += 1) { - this[i].removeAttribute(attr); - } - - return this; -} - -function transform(transform) { - for (let i = 0; i < this.length; i += 1) { - this[i].style.transform = transform; - } - - return this; -} - -function transition$1(duration) { - for (let i = 0; i < this.length; i += 1) { - this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration; - } - - return this; -} - -function on(...args) { - let [eventType, targetSelector, listener, capture] = args; - - if (typeof args[1] === 'function') { - [eventType, listener, capture] = args; - targetSelector = undefined; - } - - if (!capture) capture = false; - - function handleLiveEvent(e) { - const target = e.target; - if (!target) return; - const eventData = e.target.dom7EventData || []; - - if (eventData.indexOf(e) < 0) { - eventData.unshift(e); - } - - if ($(target).is(targetSelector)) listener.apply(target, eventData);else { - const parents = $(target).parents(); // eslint-disable-line - - for (let k = 0; k < parents.length; k += 1) { - if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData); - } - } - } - - function handleEvent(e) { - const eventData = e && e.target ? e.target.dom7EventData || [] : []; - - if (eventData.indexOf(e) < 0) { - eventData.unshift(e); - } - - listener.apply(this, eventData); - } - - const events = eventType.split(' '); - let j; - - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (!targetSelector) { - for (j = 0; j < events.length; j += 1) { - const event = events[j]; - if (!el.dom7Listeners) el.dom7Listeners = {}; - if (!el.dom7Listeners[event]) el.dom7Listeners[event] = []; - el.dom7Listeners[event].push({ - listener, - proxyListener: handleEvent - }); - el.addEventListener(event, handleEvent, capture); - } - } else { - // Live events - for (j = 0; j < events.length; j += 1) { - const event = events[j]; - if (!el.dom7LiveListeners) el.dom7LiveListeners = {}; - if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = []; - el.dom7LiveListeners[event].push({ - listener, - proxyListener: handleLiveEvent - }); - el.addEventListener(event, handleLiveEvent, capture); - } - } - } - - return this; -} - -function off(...args) { - let [eventType, targetSelector, listener, capture] = args; - - if (typeof args[1] === 'function') { - [eventType, listener, capture] = args; - targetSelector = undefined; - } - - if (!capture) capture = false; - const events = eventType.split(' '); - - for (let i = 0; i < events.length; i += 1) { - const event = events[i]; - - for (let j = 0; j < this.length; j += 1) { - const el = this[j]; - let handlers; - - if (!targetSelector && el.dom7Listeners) { - handlers = el.dom7Listeners[event]; - } else if (targetSelector && el.dom7LiveListeners) { - handlers = el.dom7LiveListeners[event]; - } - - if (handlers && handlers.length) { - for (let k = handlers.length - 1; k >= 0; k -= 1) { - const handler = handlers[k]; - - if (listener && handler.listener === listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } else if (!listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } - } - } - } - } - - return this; -} - -function trigger(...args) { - const window = getWindow(); - const events = args[0].split(' '); - const eventData = args[1]; - - for (let i = 0; i < events.length; i += 1) { - const event = events[i]; - - for (let j = 0; j < this.length; j += 1) { - const el = this[j]; - - if (window.CustomEvent) { - const evt = new window.CustomEvent(event, { - detail: eventData, - bubbles: true, - cancelable: true - }); - el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0); - el.dispatchEvent(evt); - el.dom7EventData = []; - delete el.dom7EventData; - } - } - } - - return this; -} - -function transitionEnd$1(callback) { - const dom = this; - - function fireCallBack(e) { - if (e.target !== this) return; - callback.call(this, e); - dom.off('transitionend', fireCallBack); - } - - if (callback) { - dom.on('transitionend', fireCallBack); - } - - return this; -} - -function outerWidth(includeMargins) { - if (this.length > 0) { - if (includeMargins) { - const styles = this.styles(); - return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left')); - } - - return this[0].offsetWidth; - } - - return null; -} - -function outerHeight(includeMargins) { - if (this.length > 0) { - if (includeMargins) { - const styles = this.styles(); - return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom')); - } - - return this[0].offsetHeight; - } - - return null; -} - -function offset() { - if (this.length > 0) { - const window = getWindow(); - const document = getDocument(); - const el = this[0]; - 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 - }; - } - - return null; -} - -function styles() { - const window = getWindow(); - if (this[0]) return window.getComputedStyle(this[0], null); - return {}; -} - -function css(props, value) { - const window = getWindow(); - let i; - - if (arguments.length === 1) { - if (typeof props === 'string') { - // .css('width') - if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props); - } else { - // .css({ width: '100px' }) - for (i = 0; i < this.length; i += 1) { - for (const prop in props) { - this[i].style[prop] = props[prop]; - } - } - - return this; - } - } - - if (arguments.length === 2 && typeof props === 'string') { - // .css('width', '100px') - for (i = 0; i < this.length; i += 1) { - this[i].style[props] = value; - } - - return this; - } - - return this; -} - -function each(callback) { - if (!callback) return this; - this.forEach((el, index) => { - callback.apply(el, [el, index]); - }); - return this; -} - -function filter(callback) { - const result = arrayFilter(this, callback); - return $(result); -} - -function html(html) { - if (typeof html === 'undefined') { - return this[0] ? this[0].innerHTML : null; - } - - for (let i = 0; i < this.length; i += 1) { - this[i].innerHTML = html; - } - - return this; -} - -function text(text) { - if (typeof text === 'undefined') { - return this[0] ? this[0].textContent.trim() : null; - } - - for (let i = 0; i < this.length; i += 1) { - this[i].textContent = text; - } - - return this; -} - -function is(selector) { - const window = getWindow(); - const document = getDocument(); - const el = this[0]; - let compareWith; - let i; - if (!el || typeof selector === 'undefined') return false; - - if (typeof selector === 'string') { - if (el.matches) return el.matches(selector); - if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector); - if (el.msMatchesSelector) return el.msMatchesSelector(selector); - compareWith = $(selector); - - for (i = 0; i < compareWith.length; i += 1) { - if (compareWith[i] === el) return true; - } - - return false; - } - - if (selector === document) { - return el === document; - } - - if (selector === window) { - return el === window; - } - - if (selector.nodeType || selector instanceof Dom7) { - compareWith = selector.nodeType ? [selector] : selector; - - for (i = 0; i < compareWith.length; i += 1) { - if (compareWith[i] === el) return true; - } - - return false; - } - - return false; -} - -function index() { - let child = this[0]; - 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 eq(index) { - if (typeof index === 'undefined') return this; - const length = this.length; - - if (index > length - 1) { - return $([]); - } - - if (index < 0) { - const returnIndex = length + index; - if (returnIndex < 0) return $([]); - return $([this[returnIndex]]); - } - - return $([this[index]]); -} - -function append(...els) { - let newChild; - const document = getDocument(); - - for (let k = 0; k < els.length; k += 1) { - newChild = els[k]; - - for (let i = 0; i < this.length; i += 1) { - if (typeof newChild === 'string') { - const tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - - while (tempDiv.firstChild) { - this[i].appendChild(tempDiv.firstChild); - } - } else if (newChild instanceof Dom7) { - for (let j = 0; j < newChild.length; j += 1) { - this[i].appendChild(newChild[j]); - } - } else { - this[i].appendChild(newChild); - } - } - } - - return this; -} - -function prepend(newChild) { - const document = getDocument(); - let i; - let j; - - for (i = 0; i < this.length; i += 1) { - if (typeof newChild === 'string') { - const tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - - for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) { - this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); - } - } else if (newChild instanceof Dom7) { - for (j = 0; j < newChild.length; j += 1) { - this[i].insertBefore(newChild[j], this[i].childNodes[0]); - } - } else { - this[i].insertBefore(newChild, this[i].childNodes[0]); - } - } - - return this; -} - -function next(selector) { - if (this.length > 0) { - if (selector) { - if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { - return $([this[0].nextElementSibling]); - } - - return $([]); - } - - if (this[0].nextElementSibling) return $([this[0].nextElementSibling]); - return $([]); - } - - return $([]); -} - -function nextAll(selector) { - const nextEls = []; - let el = this[0]; - if (!el) return $([]); - - while (el.nextElementSibling) { - const next = el.nextElementSibling; // eslint-disable-line - - if (selector) { - if ($(next).is(selector)) nextEls.push(next); - } else nextEls.push(next); - - el = next; - } - - return $(nextEls); -} - -function prev(selector) { - if (this.length > 0) { - const el = this[0]; - - if (selector) { - if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { - return $([el.previousElementSibling]); - } - - return $([]); - } - - if (el.previousElementSibling) return $([el.previousElementSibling]); - return $([]); - } - - return $([]); -} - -function prevAll(selector) { - const prevEls = []; - let el = this[0]; - if (!el) return $([]); - - while (el.previousElementSibling) { - const prev = el.previousElementSibling; // eslint-disable-line - - if (selector) { - if ($(prev).is(selector)) prevEls.push(prev); - } else prevEls.push(prev); - - el = prev; - } - - return $(prevEls); -} - -function parent(selector) { - const parents = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - if (this[i].parentNode !== null) { - if (selector) { - if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode); - } else { - parents.push(this[i].parentNode); - } - } - } - - return $(parents); -} - -function parents(selector) { - const parents = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - let parent = this[i].parentNode; // eslint-disable-line - - while (parent) { - if (selector) { - if ($(parent).is(selector)) parents.push(parent); - } else { - parents.push(parent); - } - - parent = parent.parentNode; - } - } - - return $(parents); -} - -function closest(selector) { - let closest = this; // eslint-disable-line - - if (typeof selector === 'undefined') { - return $([]); - } - - if (!closest.is(selector)) { - closest = closest.parents(selector).eq(0); - } - - return closest; -} - -function find(selector) { - const foundElements = []; - - for (let i = 0; i < this.length; i += 1) { - const found = this[i].querySelectorAll(selector); - - for (let j = 0; j < found.length; j += 1) { - foundElements.push(found[j]); - } - } - - return $(foundElements); -} - -function children(selector) { - const children = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - const childNodes = this[i].children; - - for (let j = 0; j < childNodes.length; j += 1) { - if (!selector || $(childNodes[j]).is(selector)) { - children.push(childNodes[j]); - } - } - } - - return $(children); -} - -function remove() { - for (let i = 0; i < this.length; i += 1) { - if (this[i].parentNode) this[i].parentNode.removeChild(this[i]); - } - - return this; -} - -const Methods = { - addClass, - removeClass, - hasClass, - toggleClass, - attr, - removeAttr, - transform, - transition: transition$1, - on, - off, - trigger, - transitionEnd: transitionEnd$1, - outerWidth, - outerHeight, - styles, - offset, - css, - each, - html, - text, - is, - index, - eq, - append, - prepend, - next, - nextAll, - prev, - prevAll, - parent, - parents, - closest, - find, - children, - filter, - remove -}; -Object.keys(Methods).forEach(methodName => { - Object.defineProperty($.fn, methodName, { - value: Methods[methodName], - writable: true - }); -}); - -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]); - const noExtend = ['__proto__', 'constructor', 'prototype']; - - 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 => noExtend.indexOf(key) < 0); - - 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(); -} - -let support; - -function calcSupport() { - const window = getWindow(); - const document = getDocument(); - return { - smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style, - touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch), - passiveListener: function checkPassiveListener() { - let supportsPassive = false; - - try { - const opts = Object.defineProperty({}, 'passive', { - // eslint-disable-next-line - get() { - supportsPassive = true; - } - - }); - window.addEventListener('testPassiveListener', null, opts); - } catch (e) {// No support - } - - return supportsPassive; - }(), - gestures: function checkGestures() { - return 'ongesturestart' in window; - }() - }; -} - -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).*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(); - - function isSafari() { - const ua = window.navigator.userAgent.toLowerCase(); - return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; - } - - return { - isSafari: isSafari(), - isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) - }; -} - -function getBrowser() { - if (!browser) { - browser = calcBrowser(); - } - - return browser; -} - -function Resize({ - swiper, - on, - emit -}) { - const window = getWindow(); - let observer = 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 => { - 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 (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 (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: 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 = swiper.$el.parents(); - - for (let i = 0; i < containerParents.length; i += 1) { - attach(containerParents[i]); - } - } // Observe container - - - attach(swiper.$el[0], { - childList: swiper.params.observeSlideChildren - }); // Observe wrapper - - attach(swiper.$wrapperEl[0], { - 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 (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 (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 (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.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) 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) 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[0].clientWidth; - } - - if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { - height = swiper.params.height; - } else { - height = $el[0].clientHeight; - } - - if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { - return; - } // Subtract paddings - - - width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10); - height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('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 getDirectionLabel(property) { - if (swiper.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]; - } - - function getDirectionPropertyValue(node, label) { - return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0); - } - - const params = swiper.params; - const { - $wrapperEl, - size: swiperSize, - rtlTranslate: rtl, - wrongRTL - } = swiper; - const isVirtual = swiper.virtual && params.virtual.enabled; - const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; - const slides = $wrapperEl.children(`.${swiper.params.slideClass}`); - 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; - 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; - } - - swiper.virtualSize = -spaceBetween; // reset margins - - if (rtl) slides.css({ - marginLeft: '', - marginBottom: '', - marginTop: '' - });else slides.css({ - marginRight: '', - marginBottom: '', - marginTop: '' - }); // reset cssMode offsets - - if (params.centeredSlides && params.cssMode) { - setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', ''); - setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', ''); - } - - const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; - - if (gridEnabled) { - swiper.grid.initSlides(slidesLength); - } // 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.eq(i); - - if (gridEnabled) { - swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel); - } - - if (slide.css('display') === 'none') continue; // eslint-disable-line - - if (params.slidesPerView === 'auto') { - if (shouldResetSlideSize) { - slides[i].style[getDirectionLabel('width')] = ``; - } - - const slideStyles = getComputedStyle(slide[0]); - const currentTransform = slide[0].style.transform; - const currentWebKitTransform = slide[0].style.webkitTransform; - - if (currentTransform) { - slide[0].style.transform = 'none'; - } - - if (currentWebKitTransform) { - slide[0].style.webkitTransform = 'none'; - } - - if (params.roundLengths) { - slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(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[0]; - slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); - } - } - - if (currentTransform) { - slide[0].style.transform = currentTransform; - } - - if (currentWebKitTransform) { - slide[0].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 (slides[i]) { - slides[i].style[getDirectionLabel('width')] = `${slideSize}px`; - } - } - - if (slides[i]) { - slides[i].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.css({ - width: `${swiper.virtualSize + params.spaceBetween}px` - }); - } - - if (params.setWrapperSize) { - $wrapperEl.css({ - [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px` - }); - } - - if (gridEnabled) { - swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel); - } // Remove last grid elements depending on width - - - if (!params.centeredSlides) { - const newSlidesGrid = []; - - for (let i = 0; i < snapGrid.length; i += 1) { - let slidesGridItem = snapGrid[i]; - if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); - - if (snapGrid[i] <= swiper.virtualSize - swiperSize) { - newSlidesGrid.push(slidesGridItem); - } - } - - snapGrid = newSlidesGrid; - - if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { - snapGrid.push(swiper.virtualSize - swiperSize); - } - } - - if (snapGrid.length === 0) snapGrid = [0]; - - if (params.spaceBetween !== 0) { - const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight'); - slides.filter((_, slideIndex) => { - if (!params.cssMode) return true; - - if (slideIndex === slides.length - 1) { - return false; - } - - return true; - }).css({ - [key]: `${spaceBetween}px` - }); - } - - if (params.centeredSlides && params.centeredSlidesBounds) { - let allSlidesSize = 0; - slidesSizesGrid.forEach(slideSizeValue => { - allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); - }); - allSlidesSize -= params.spaceBetween; - const maxSnap = allSlidesSize - swiperSize; - 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 + (params.spaceBetween ? params.spaceBetween : 0); - }); - allSlidesSize -= params.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(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); - setCSSProperty(swiper.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(); - } -} - -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.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0]; - } - - return swiper.slides.eq(index)[0]; - }; // Find slides currently in view - - - if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { - if (swiper.params.centeredSlides) { - swiper.visibleSlides.each(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) swiper.$wrapperEl.css('height', `${newHeight}px`); -} - -function updateSlidesOffset() { - const swiper = this; - const slides = swiper.slides; - - for (let i = 0; i < slides.length; i += 1) { - slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; - } -} - -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; // Visible Slides - - slides.removeClass(params.slideVisibleClass); - swiper.visibleSlidesIndexes = []; - swiper.visibleSlides = []; - - 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 + params.spaceBetween); - const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween); - const slideBefore = -(offsetCenter - slideOffset); - const slideAfter = slideBefore + 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); - slides.eq(i).addClass(params.slideVisibleClass); - } - - slide.progress = rtl ? -slideProgress : slideProgress; - slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; - } - - swiper.visibleSlides = $(swiper.visibleSlides); -} - -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 - } = swiper; - const wasBeginning = isBeginning; - const wasEnd = isEnd; - - if (translatesDiff === 0) { - progress = 0; - isBeginning = true; - isEnd = true; - } else { - progress = (translate - swiper.minTranslate()) / translatesDiff; - isBeginning = progress <= 0; - isEnd = progress >= 1; - } - - Object.assign(swiper, { - progress, - 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); -} - -function updateSlidesClasses() { - const swiper = this; - const { - slides, - params, - $wrapperEl, - activeIndex, - realIndex - } = swiper; - const isVirtual = swiper.virtual && params.virtual.enabled; - slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`); - let activeSlide; - - if (isVirtual) { - activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`); - } else { - activeSlide = slides.eq(activeIndex); - } // Active classes - - - activeSlide.addClass(params.slideActiveClass); - - if (params.loop) { - // Duplicate to all looped slides - if (activeSlide.hasClass(params.slideDuplicateClass)) { - $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass); - } else { - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass); - } - } // Next Slide - - - let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass); - - if (params.loop && nextSlide.length === 0) { - nextSlide = slides.eq(0); - nextSlide.addClass(params.slideNextClass); - } // Prev Slide - - - let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass); - - if (params.loop && prevSlide.length === 0) { - prevSlide = slides.eq(-1); - prevSlide.addClass(params.slidePrevClass); - } - - if (params.loop) { - // Duplicate to all looped slides - if (nextSlide.hasClass(params.slideDuplicateClass)) { - $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass); - } else { - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass); - } - - if (prevSlide.hasClass(params.slideDuplicateClass)) { - $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass); - } else { - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass); - } - } - - swiper.emitSlidesClasses(); -} - -function updateActiveIndex(newActiveIndex) { - const swiper = this; - const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; - const { - slidesGrid, - snapGrid, - params, - activeIndex: previousIndex, - realIndex: previousRealIndex, - snapIndex: previousSnapIndex - } = swiper; - let activeIndex = newActiveIndex; - let snapIndex; - - if (typeof activeIndex === 'undefined') { - 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; - } - } - - 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) { - if (snapIndex !== previousSnapIndex) { - swiper.snapIndex = snapIndex; - swiper.emit('snapIndexChange'); - } - - return; - } // Get real index - - - const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10); - Object.assign(swiper, { - snapIndex, - realIndex, - previousIndex, - activeIndex - }); - swiper.emit('activeIndexChange'); - swiper.emit('snapIndexChange'); - - if (previousRealIndex !== realIndex) { - swiper.emit('realIndexChange'); - } - - if (swiper.initialized || swiper.params.runCallbacksOnInit) { - swiper.emit('slideChange'); - } -} - -function updateClickedSlide(e) { - const swiper = this; - const params = swiper.params; - const slide = $(e.target).closest(`.${params.slideClass}`)[0]; - 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).attr('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[0], axis); - if (rtl) currentTranslate = -currentTranslate; - return currentTranslate || 0; -} - -function setTranslate(translate, byController) { - const swiper = this; - const { - rtlTranslate: rtl, - params, - $wrapperEl, - 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); - } - - if (params.cssMode) { - wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; - } else if (!params.virtualTranslate) { - $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`); - } - - swiper.previousTranslate = swiper.translate; - swiper.translate = swiper.isHorizontal() ? x : y; // 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[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); - swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); - swiper.onTranslateToWrapperTransitionEnd = null; - delete swiper.onTranslateToWrapperTransitionEnd; - - if (runCallbacks) { - swiper.emit('transitionEnd'); - } - }; - } - - swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); - swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', 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.transition(duration); - } - - 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 && activeIndex !== previousIndex) { - if (dir === 'reset') { - swiper.emit(`slideResetTransition${step}`); - return; - } - - 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 = this.params.speed, runCallbacks = true, internal, initial) { - if (typeof index !== 'number' && typeof index !== 'string') { - throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`); - } - - if (typeof index === 'string') { - /** - * The `index` argument converted from `string` to `number`. - * @type {number} - */ - const indexAsNumber = parseInt(index, 10); - /** - * Determines whether the `index` argument is a valid `number` - * after being converted from the `string` type. - * @type {boolean} - */ - - const isValidNumber = isFinite(indexAsNumber); - - if (!isValidNumber) { - throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`); - } // Knowing that the converted `index` is a valid number, - // we can update the original argument's value. - - - index = indexAsNumber; - } - - const swiper = this; - let slideIndex = index; - if (slideIndex < 0) slideIndex = 0; - const { - params, - snapGrid, - slidesGrid, - previousIndex, - activeIndex, - rtlTranslate: rtl, - wrapperEl, - enabled - } = swiper; - - if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) { - return false; - } - - 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; - - if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { - swiper.emit('beforeSlideChangeStart'); - } - - const translate = -snapGrid[snapIndex]; // Update progress - - swiper.updateProgress(translate); // 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 && translate < swiper.translate && translate < swiper.minTranslate()) { - return false; - } - - if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { - if ((activeIndex || 0) !== slideIndex) return false; - } - } - - let direction; - if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index - - if (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) { - const isVirtual = swiper.virtual && swiper.params.virtual.enabled; - - if (isVirtual) { - swiper.wrapperEl.style.scrollSnapType = 'none'; - swiper._immediateVirtual = true; - } - - wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; - - if (isVirtual) { - requestAnimationFrame(() => { - swiper.wrapperEl.style.scrollSnapType = ''; - swiper._swiperImmediateVirtual = 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; - } - - if (speed === 0) { - swiper.setTransition(0); - swiper.setTranslate(translate); - swiper.updateActiveIndex(slideIndex); - swiper.updateSlidesClasses(); - swiper.emit('beforeTransitionStart', speed, internal); - swiper.transitionStart(runCallbacks, direction); - swiper.transitionEnd(runCallbacks, direction); - } else { - swiper.setTransition(speed); - swiper.setTranslate(translate); - swiper.updateActiveIndex(slideIndex); - swiper.updateSlidesClasses(); - swiper.emit('beforeTransitionStart', speed, internal); - swiper.transitionStart(runCallbacks, direction); - - 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[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); - swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); - swiper.onSlideToWrapperTransitionEnd = null; - delete swiper.onSlideToWrapperTransitionEnd; - swiper.transitionEnd(runCallbacks, direction); - }; - } - - swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); - swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); - } - } - - return true; -} - -function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - let newIndex = index; - - if (swiper.params.loop) { - newIndex += swiper.loopedSlides; - } - - return swiper.slideTo(newIndex, speed, runCallbacks, internal); -} - -/* eslint no-unused-vars: "off" */ -function slideNext(speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - const { - animating, - enabled, - params - } = swiper; - if (!enabled) return swiper; - 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; - - if (params.loop) { - if (animating && params.loopPreventsSlide) return false; - swiper.loopFix(); // eslint-disable-next-line - - swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; - } - - return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); -} - -/* eslint no-unused-vars: "off" */ -function slidePrev(speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - const { - params, - animating, - snapGrid, - slidesGrid, - rtlTranslate, - enabled - } = swiper; - if (!enabled) return swiper; - - if (params.loop) { - if (animating && params.loopPreventsSlide) return false; - swiper.loopFix(); // eslint-disable-next-line - - swiper._clientLeft = swiper.$wrapperEl[0].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)); - let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; - - if (typeof prevSnap === 'undefined' && params.cssMode) { - let prevSnapIndex; - snapGrid.forEach((snap, snapIndex) => { - if (normalizedTranslate >= snap) { - // prevSnap = snap; - prevSnapIndex = snapIndex; - } - }); - - if (typeof prevSnapIndex !== 'undefined') { - prevSnap = 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); - } - } - - return swiper.slideTo(prevIndex, speed, runCallbacks, internal); -} - -/* eslint no-unused-vars: "off" */ -function slideReset(speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); -} - -/* eslint no-unused-vars: "off" */ -function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) { - const swiper = this; - 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; - const { - params, - $wrapperEl - } = swiper; - const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; - let slideToIndex = swiper.clickedIndex; - let realIndex; - - if (params.loop) { - if (swiper.animating) return; - realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10); - - if (params.centeredSlides) { - if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { - swiper.loopFix(); - slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index(); - nextTick(() => { - swiper.slideTo(slideToIndex); - }); - } else { - swiper.slideTo(slideToIndex); - } - } else if (slideToIndex > swiper.slides.length - slidesPerView) { - swiper.loopFix(); - slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index(); - nextTick(() => { - swiper.slideTo(slideToIndex); - }); - } else { - swiper.slideTo(slideToIndex); - } - } else { - swiper.slideTo(slideToIndex); - } -} - -var slide = { - slideTo, - slideToLoop, - slideNext, - slidePrev, - slideReset, - slideToClosest, - slideToClickedSlide -}; - -function loopCreate() { - const swiper = this; - const document = getDocument(); - const { - params, - $wrapperEl - } = swiper; // Remove duplicated slides - - const $selector = $($wrapperEl.children()[0].parentNode); - $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove(); - let slides = $selector.children(`.${params.slideClass}`); - - if (params.loopFillGroupWithBlank) { - const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup; - - if (blankSlidesNum !== params.slidesPerGroup) { - for (let i = 0; i < blankSlidesNum; i += 1) { - const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`); - $selector.append(blankNode); - } - - slides = $selector.children(`.${params.slideClass}`); - } - } - - if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length; - swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10)); - swiper.loopedSlides += params.loopAdditionalSlides; - - if (swiper.loopedSlides > slides.length) { - swiper.loopedSlides = slides.length; - } - - const prependSlides = []; - const appendSlides = []; - slides.each((el, index) => { - const slide = $(el); - - if (index < swiper.loopedSlides) { - appendSlides.push(el); - } - - if (index < slides.length && index >= slides.length - swiper.loopedSlides) { - prependSlides.push(el); - } - - slide.attr('data-swiper-slide-index', index); - }); - - for (let i = 0; i < appendSlides.length; i += 1) { - $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); - } - - for (let i = prependSlides.length - 1; i >= 0; i -= 1) { - $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); - } -} - -function loopFix() { - const swiper = this; - swiper.emit('beforeLoopFix'); - const { - activeIndex, - slides, - loopedSlides, - allowSlidePrev, - allowSlideNext, - snapGrid, - rtlTranslate: rtl - } = swiper; - let newIndex; - swiper.allowSlidePrev = true; - swiper.allowSlideNext = true; - const snapTranslate = -snapGrid[activeIndex]; - const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding - - if (activeIndex < loopedSlides) { - newIndex = slides.length - loopedSlides * 3 + activeIndex; - newIndex += loopedSlides; - const slideChanged = swiper.slideTo(newIndex, 0, false, true); - - if (slideChanged && diff !== 0) { - swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); - } - } else if (activeIndex >= slides.length - loopedSlides) { - // Fix For Positive Oversliding - newIndex = -slides.length + activeIndex + loopedSlides; - newIndex += loopedSlides; - const slideChanged = swiper.slideTo(newIndex, 0, false, true); - - if (slideChanged && diff !== 0) { - swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); - } - } - - swiper.allowSlidePrev = allowSlidePrev; - swiper.allowSlideNext = allowSlideNext; - swiper.emit('loopFix'); -} - -function loopDestroy() { - const swiper = this; - const { - $wrapperEl, - params, - slides - } = swiper; - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove(); - slides.removeAttr('data-swiper-slide-index'); -} - -var loop = { - loopCreate, - loopFix, - loopDestroy -}; - -function setGrabCursor(moving) { - const swiper = this; - if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; - const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; - el.style.cursor = 'move'; - el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab'; - el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab'; - el.style.cursor = moving ? 'grabbing' : 'grab'; -} - -function unsetGrabCursor() { - const swiper = this; - - if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { - return; - } - - swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; -} - -var grabCursor = { - setGrabCursor, - unsetGrabCursor -}; - -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); - return found || __closestFrom(el.getRootNode().host); - } - - return __closestFrom(base); -} - -function onTouchStart(event) { - const swiper = this; - const document = getDocument(); - const window = getWindow(); - const data = swiper.touchEventsData; - const { - params, - touches, - enabled - } = swiper; - if (!enabled) return; - - if (swiper.animating && params.preventInteractionOnTransition) { - return; - } - - if (!swiper.animating && params.cssMode && params.loop) { - swiper.loopFix(); - } - - let e = event; - if (e.originalEvent) e = e.originalEvent; - let $targetEl = $(e.target); - - if (params.touchEventsTarget === 'wrapper') { - if (!$targetEl.closest(swiper.wrapperEl).length) return; - } - - data.isTouchEvent = e.type === 'touchstart'; - if (!data.isTouchEvent && 'which' in e && e.which === 3) return; - if (!data.isTouchEvent && '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 !== ''; - - if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) { - $targetEl = $(event.path[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, e.target) : $targetEl.closest(noSwipingSelector)[0])) { - swiper.allowClick = true; - return; - } - - if (params.swipeHandler) { - if (!$targetEl.closest(params.swipeHandler)[0]) return; - } - - touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; - touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : 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 - - const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; - const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; - - if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { - if (edgeSwipeDetection === 'prevent') { - event.preventDefault(); - } else { - 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; - - if (e.type !== 'touchstart') { - let preventDefault = true; - if ($targetEl.is(data.focusableElements)) preventDefault = false; - - if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) { - document.activeElement.blur(); - } - - const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; - - if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) { - e.preventDefault(); - } - } - - 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; - let e = event; - if (e.originalEvent) e = e.originalEvent; - - if (!data.isTouched) { - if (data.startMoving && data.isScrolling) { - swiper.emit('touchMoveOpposite', e); - } - - return; - } - - if (data.isTouchEvent && e.type !== 'touchmove') return; - const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]); - const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX; - const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY; - - if (e.preventedByNestedSwiper) { - touches.startX = pageX; - touches.startY = pageY; - return; - } - - if (!swiper.allowTouchMove) { - // isMoved = true; - swiper.allowClick = false; - - if (data.isTouched) { - Object.assign(touches, { - startX: pageX, - startY: pageY, - currentX: pageX, - currentY: pageY - }); - data.touchStartTime = now(); - } - - return; - } - - if (data.isTouchEvent && 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 (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { - return; - } - } - - if (data.isTouchEvent && document.activeElement) { - if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) { - data.isMoved = true; - swiper.allowClick = false; - return; - } - } - - if (data.allowTouchCallbacks) { - swiper.emit('touchMove', e); - } - - if (e.targetTouches && e.targetTouches.length > 1) return; - 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) { - 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(); - } - - if (!data.isMoved) { - if (params.loop && !params.cssMode) { - swiper.loopFix(); - } - - data.startTranslate = swiper.getTranslate(); - swiper.setTransition(0); - - if (swiper.animating) { - swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); - } - - data.allowMomentumBounce = false; // Grab Cursor - - if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { - swiper.setGrabCursor(true); - } - - swiper.emit('sliderFirstMove', e); - } - - swiper.emit('sliderMove', e); - data.isMoved = true; - let diff = swiper.isHorizontal() ? diffX : diffY; - touches.diff = diff; - diff *= params.touchRatio; - if (rtl) diff = -diff; - swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; - data.currentTranslate = diff + data.startTranslate; - let disableParentSwiper = true; - let resistanceRatio = params.resistanceRatio; - - if (params.touchReleaseOnEdges) { - resistanceRatio = 0; - } - - if (diff > 0 && data.currentTranslate > swiper.minTranslate()) { - disableParentSwiper = false; - if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; - } else if (diff < 0 && 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 (swiper.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; - const { - params, - touches, - rtlTranslate: rtl, - slidesGrid, - enabled - } = swiper; - if (!enabled) return; - let e = event; - if (e.originalEvent) e = e.originalEvent; - - 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) { - swiper.updateClickedSlide(e); - 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.currentTranslate === data.startTranslate) { - 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 (swiper.params.freeMode && params.freeMode.enabled) { - swiper.freeMode.onTouchEnd({ - currentPos - }); - return; - } // Find current slide - - - 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 (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { - stopIndex = i; - groupSize = slidesGrid[i + increment] - slidesGrid[i]; - } - } else if (currentPos >= slidesGrid[i]) { - stopIndex = i; - groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; - } - } // 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(stopIndex + increment);else swiper.slideTo(stopIndex); - } - - if (swiper.swipeDirection === 'prev') { - if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);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(stopIndex + increment); - } - - if (swiper.swipeDirection === 'prev') { - swiper.slideTo(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; // Disable locks on resize - - swiper.allowSlideNext = true; - swiper.allowSlidePrev = true; - swiper.updateSize(); - swiper.updateSlides(); - swiper.updateSlidesClasses(); - - if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) { - swiper.slideTo(swiper.slides.length - 1, 0, false, true); - } else { - swiper.slideTo(swiper.activeIndex, 0, false, true); - } - - if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { - swiper.autoplay.run(); - } // 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); -} - -let dummyEventAttached = false; - -function dummyEventListener() {} - -const events = (swiper, method) => { - const document = getDocument(); - const { - params, - touchEvents, - el, - wrapperEl, - device, - support - } = swiper; - const capture = !!params.nested; - const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; - const swiperMethod = method; // Touch Events - - if (!support.touch) { - el[domMethod](touchEvents.start, swiper.onTouchStart, false); - document[domMethod](touchEvents.move, swiper.onTouchMove, capture); - document[domMethod](touchEvents.end, swiper.onTouchEnd, false); - } else { - const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? { - passive: true, - capture: false - } : false; - el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener); - el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? { - passive: false, - capture - } : capture); - el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener); - - if (touchEvents.cancel) { - el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener); - } - } // 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); - } -}; - -function attachEvents() { - const swiper = this; - const document = getDocument(); - const { - params, - support - } = swiper; - swiper.onTouchStart = onTouchStart.bind(swiper); - swiper.onTouchMove = onTouchMove.bind(swiper); - swiper.onTouchEnd = onTouchEnd.bind(swiper); - - if (params.cssMode) { - swiper.onScroll = onScroll.bind(swiper); - } - - swiper.onClick = onClick.bind(swiper); - - if (support.touch && !dummyEventAttached) { - document.addEventListener('touchstart', dummyEventListener); - dummyEventAttached = true; - } - - 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 { - activeIndex, - initialized, - loopedSlides = 0, - params, - $el - } = swiper; - const breakpoints = params.breakpoints; - if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters - - const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); - 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 wasEnabled = params.enabled; - - if (wasMultiRow && !isMultiRow) { - $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`); - swiper.emitContainerClasses(); - } else if (!wasMultiRow && isMultiRow) { - $el.addClass(`${params.containerModifierClass}grid`); - - if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { - $el.addClass(`${params.containerModifierClass}grid-column`); - } - - swiper.emitContainerClasses(); - } - - const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; - const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); - - if (directionChanged && initialized) { - swiper.changeDirection(); - } - - extend(swiper.params, breakpointParams); - const isEnabled = swiper.params.enabled; - 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 (needsReLoop && initialized) { - swiper.loopDestroy(); - swiper.loopCreate(); - swiper.updateSlides(); - swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false); - } - - 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, - support - } = swiper; // prettier-ignore - - const suffixes = prepareClasses(['initialized', params.direction, { - 'pointer-events': !support.touch - }, { - '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 - }], params.containerModifierClass); - classNames.push(...suffixes); - $el.addClass([...classNames].join(' ')); - swiper.emitContainerClasses(); -} - -function removeClasses() { - const swiper = this; - const { - $el, - classNames - } = swiper; - $el.removeClass(classNames.join(' ')); - swiper.emitContainerClasses(); -} - -var classes = { - addClasses, - removeClasses -}; - -function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) { - const window = getWindow(); - let image; - - function onReady() { - if (callback) callback(); - } - - const isPicture = $(imageEl).parent('picture')[0]; - - if (!isPicture && (!imageEl.complete || !checkForComplete)) { - if (src) { - image = new window.Image(); - image.onload = onReady; - image.onerror = onReady; - - if (sizes) { - image.sizes = sizes; - } - - if (srcset) { - image.srcset = srcset; - } - - if (src) { - image.src = src; - } - } else { - onReady(); - } - } else { - // image already loaded... - onReady(); - } -} - -function preloadImages() { - const swiper = this; - swiper.imagesToLoad = swiper.$el.find('img'); - - function onReady() { - if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return; - if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1; - - if (swiper.imagesLoaded === swiper.imagesToLoad.length) { - if (swiper.params.updateOnImagesReady) swiper.update(); - swiper.emit('imagesReady'); - } - } - - for (let i = 0; i < swiper.imagesToLoad.length; i += 1) { - const imageEl = swiper.imagesToLoad[i]; - swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady); - } -} - -var images = { - loadImage, - preloadImages -}; - -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', - touchEventsTarget: 'wrapper', - initialSlide: 0, - speed: 300, - cssMode: false, - updateOnWindowResize: true, - resizeObserver: true, - nested: false, - createElements: false, - 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, - // 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: 0, - 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, - // Images - preloadImages: true, - updateOnImagesReady: true, - // loop - loop: false, - loopAdditionalSlides: 0, - loopedSlides: null, - loopFillGroupWithBlank: false, - loopPreventsSlide: true, - // Swiping/no swiping - allowSlidePrev: true, - allowSlideNext: true, - swipeHandler: null, - // '.swipe-handler', - noSwiping: true, - noSwipingClass: 'swiper-no-swiping', - noSwipingSelector: null, - // Passive Listeners - passiveListeners: true, - // NS - containerModifierClass: 'swiper-', - // NEW - slideClass: 'swiper-slide', - slideBlankClass: 'swiper-slide-invisible-blank', - slideActiveClass: 'swiper-slide-active', - slideDuplicateActiveClass: 'swiper-slide-duplicate-active', - slideVisibleClass: 'swiper-slide-visible', - slideDuplicateClass: 'swiper-slide-duplicate', - slideNextClass: 'swiper-slide-next', - slideDuplicateNextClass: 'swiper-slide-duplicate-next', - slidePrevClass: 'swiper-slide-prev', - slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', - wrapperClass: 'swiper-wrapper', - // 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 (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) { - params[moduleParamName] = { - auto: true - }; - } - - if (!(moduleParamName in params && 'enabled' in moduleParams)) { - extend(allModulesParams, obj); - return; - } - - if (params[moduleParamName] === true) { - params[moduleParamName] = { - enabled: true - }; - } - - 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, - images -}; -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; - - if (params.el && $(params.el).length > 1) { - const swipers = []; - $(params.el).each(containerEl => { - const newParams = extend({}, params, { - el: containerEl - }); - swipers.push(new Swiper(newParams)); - }); - 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)) { - swiper.modules.push(...params.modules); - } - - const allModulesParams = {}; - swiper.modules.forEach(mod => { - mod({ - 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); - } // Save Dom lib - - - swiper.$ = $; // 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, - // Locks - allowSlideNext: swiper.params.allowSlideNext, - allowSlidePrev: swiper.params.allowSlidePrev, - // Touch Events - touchEvents: function touchEvents() { - const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel']; - const desktop = ['pointerdown', 'pointermove', 'pointerup']; - swiper.touchEventsTouch = { - start: touch[0], - move: touch[1], - end: touch[2], - cancel: touch[3] - }; - swiper.touchEventsDesktop = { - start: desktop[0], - move: desktop[1], - end: desktop[2] - }; - return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop; - }(), - 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: now(), - clickTimeout: undefined, - // Velocities - velocities: [], - allowMomentumBounce: undefined, - isTouchEvent: undefined, - startMoving: undefined - }, - // 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 - - - return swiper; - } - - 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; - 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.each(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 (params.centeredSlides) { - let slideSize = slides[activeIndex].swiperSlideSize; - let breakLoop; - - for (let i = activeIndex + 1; i < slides.length; i += 1) { - if (slides[i] && !breakLoop) { - slideSize += 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.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 (swiper.params.freeMode && swiper.params.freeMode.enabled) { - setTranslate(); - - if (swiper.params.autoHeight) { - swiper.updateAutoHeight(); - } - } else { - if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { - translated = swiper.slideTo(swiper.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.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`); - swiper.emitContainerClasses(); - swiper.params.direction = newDirection; - swiper.slides.each(slideEl => { - if (newDirection === 'vertical') { - slideEl.style.width = ''; - } else { - slideEl.style.height = ''; - } - }); - swiper.emit('changeDirection'); - if (needUpdate) swiper.update(); - return swiper; - } - - mount(el) { - const swiper = this; - if (swiper.mounted) return true; // Find el - - const $el = $(el || swiper.params.el); - el = $el[0]; - - if (!el) { - return false; - } - - el.swiper = swiper; - - 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 - - res.children = options => $el.children(options); - - return res; - } - - return $el.children(getWrapperSelector()); - }; // Find Wrapper - - - let $wrapperEl = getWrapper(); - - if ($wrapperEl.length === 0 && swiper.params.createElements) { - const document = getDocument(); - const wrapper = document.createElement('div'); - $wrapperEl = $(wrapper); - wrapper.className = swiper.params.wrapperClass; - $el.append(wrapper); - $el.children(`.${swiper.params.slideClass}`).each(slideEl => { - $wrapperEl.append(slideEl); - }); - } - - Object.assign(swiper, { - $el, - el, - $wrapperEl, - wrapperEl: $wrapperEl[0], - mounted: true, - // RTL - rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl', - rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), - wrongRTL: $wrapperEl.css('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(); // Create loop - - if (swiper.params.loop) { - swiper.loopCreate(); - } // 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(); - } - - if (swiper.params.preloadImages) { - swiper.preloadImages(); - } // Slide To Initial Slide - - - if (swiper.params.loop) { - swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true); - } else { - swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); - } // Attach events - - - swiper.attachEvents(); // Init Flag - - swiper.initialized = true; // 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(); - $el.removeAttr('style'); - $wrapperEl.removeAttr('style'); - - if (slides && slides.length) { - slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index'); - } - } - - swiper.emit('destroy'); // Detach emitter events - - Object.keys(swiper.eventsListeners).forEach(eventName => { - swiper.off(eventName); - }); - - if (deleteInstance !== false) { - swiper.$el[0].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 -}) { - extendParams({ - virtual: { - enabled: false, - slides: [], - cache: true, - renderSlide: null, - renderExternal: null, - renderExternalUpdate: true, - addSlidesBefore: 0, - addSlidesAfter: 0 - } - }); - let cssModeTimeout; - swiper.virtual = { - cache: {}, - from: undefined, - to: undefined, - slides: [], - offset: 0, - slidesGrid: [] - }; - - function renderSlide(slide, index) { - const params = swiper.params.virtual; - - if (params.cache && swiper.virtual.cache[index]) { - return swiper.virtual.cache[index]; - } - - const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`
${slide}
`); - if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index); - if (params.cache) swiper.virtual.cache[index] = $slideEl; - return $slideEl; - } - - function update(force) { - const { - slidesPerView, - slidesPerGroup, - centeredSlides - } = swiper.params; - const { - addSlidesBefore, - addSlidesAfter - } = swiper.params.virtual; - const { - from: previousFrom, - to: previousTo, - slides, - slidesGrid: previousSlidesGrid, - offset: previousOffset - } = swiper.virtual; - - if (!swiper.params.cssMode) { - swiper.updateActiveIndex(); - } - - const activeIndex = swiper.activeIndex || 0; - let offsetProp; - if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; - let slidesAfter; - let slidesBefore; - - if (centeredSlides) { - slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; - slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; - } else { - slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; - slidesBefore = slidesPerGroup + addSlidesBefore; - } - - const from = Math.max((activeIndex || 0) - slidesBefore, 0); - const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1); - const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); - Object.assign(swiper.virtual, { - from, - to, - offset, - slidesGrid: swiper.slidesGrid - }); - - function onRendered() { - swiper.updateSlides(); - swiper.updateProgress(); - swiper.updateSlidesClasses(); - - if (swiper.lazy && swiper.params.lazy.enabled) { - swiper.lazy.load(); - } - } - - if (previousFrom === from && previousTo === to && !force) { - if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { - swiper.slides.css(offsetProp, `${offset}px`); - } - - swiper.updateProgress(); - 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(); - } - - return; - } - - const prependIndexes = []; - const appendIndexes = []; - - if (force) { - swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove(); - } else { - for (let i = previousFrom; i <= previousTo; i += 1) { - if (i < from || i > to) { - swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove(); - } - } - } - - for (let i = 0; i < slides.length; i += 1) { - if (i >= from && i <= to) { - if (typeof previousTo === 'undefined' || force) { - appendIndexes.push(i); - } else { - if (i > previousTo) appendIndexes.push(i); - if (i < previousFrom) prependIndexes.push(i); - } - } - } - - appendIndexes.forEach(index => { - swiper.$wrapperEl.append(renderSlide(slides[index], index)); - }); - prependIndexes.sort((a, b) => b - a).forEach(index => { - swiper.$wrapperEl.prepend(renderSlide(slides[index], index)); - }); - swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}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.attr('data-swiper-slide-index'); - - if (cachedElIndex) { - $cachedEl.attr('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) { - swiper.virtual.slides.splice(slidesIndexes[i], 1); - - if (swiper.params.virtual.cache) { - delete swiper.virtual.cache[slidesIndexes[i]]; - } - - if (slidesIndexes[i] < activeIndex) activeIndex -= 1; - activeIndex = Math.max(activeIndex, 0); - } - } else { - swiper.virtual.slides.splice(slidesIndexes, 1); - - if (swiper.params.virtual.cache) { - delete swiper.virtual.cache[slidesIndexes]; - } - - 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; - swiper.virtual.slides = swiper.params.virtual.slides; - swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); - swiper.params.watchSlidesProgress = true; - swiper.originalParams.watchSlidesProgress = true; - - if (!swiper.params.initialSlide) { - update(); - } - }); - 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 - } - }); - - 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.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 (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) { - return undefined; - } - - const $el = swiper.$el; - const swiperWidth = $el[0].clientWidth; - const swiperHeight = $el[0].clientHeight; - const windowWidth = window.innerWidth; - const windowHeight = window.innerHeight; - const swiperOffset = swiper.$el.offset(); - if (rtl) swiperOffset.left -= swiper.$el[0].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; - } - - 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(); - if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); - } else { - if (isPageUp || isPageDown || isArrowUp || isArrowDown) { - if (e.preventDefault) e.preventDefault();else e.returnValue = false; - } - - if (isPageDown || isArrowDown) swiper.slideNext(); - if (isPageUp || isArrowUp) swiper.slidePrev(); - } - - emit('keyPress', kc); - return undefined; - } - - function enable() { - if (swiper.keyboard.enabled) return; - $(document).on('keydown', handle); - swiper.keyboard.enabled = true; - } - - function disable() { - if (!swiper.keyboard.enabled) return; - $(document).off('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 - } - }); - 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; - const params = swiper.params.mousewheel; - - if (swiper.params.cssMode) { - e.preventDefault(); - } - - let target = swiper.$el; - - if (swiper.params.mousewheel.eventsTarget !== 'container') { - target = $(swiper.params.mousewheel.eventsTarget); - } - - if (!swiper.mouseEntered && !target[0].contains(e.target) && !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; - - if (swiper.params.loop) { - swiper.loopFix(); - } - - 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.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(() => { - 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(() => { - 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.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions - - if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true; - } - } - - if (e.preventDefault) e.preventDefault();else e.returnValue = false; - return false; - } - - function events(method) { - let target = swiper.$el; - - if (swiper.params.mousewheel.eventsTarget !== 'container') { - target = $(swiper.params.mousewheel.eventsTarget); - } - - target[method]('mouseenter', handleMouseEnter); - target[method]('mouseleave', handleMouseLeave); - target[method]('wheel', handle); - } - - function enable() { - if (swiper.params.cssMode) { - swiper.wrapperEl.removeEventListener('wheel', handle); - return true; - } - - if (swiper.mousewheel.enabled) return false; - events('on'); - 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('off'); - 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) { - const document = getDocument(); - - if (swiper.params.createElements) { - Object.keys(checkProps).forEach(key => { - if (!params[key] && params.auto === true) { - let element = swiper.$el.children(`.${checkProps[key]}`)[0]; - - if (!element) { - element = document.createElement('div'); - element.className = checkProps[key]; - swiper.$el.append(element); - } - - params[key] = element; - originalParams[key] = element; - } - }); - } - - return params; -} - -function Navigation({ - swiper, - extendParams, - on, - emit -}) { - extendParams({ - navigation: { - nextEl: null, - prevEl: null, - hideOnClick: false, - disabledClass: 'swiper-button-disabled', - hiddenClass: 'swiper-button-hidden', - lockClass: 'swiper-button-lock' - } - }); - swiper.navigation = { - nextEl: null, - $nextEl: null, - prevEl: null, - $prevEl: null - }; - - function getEl(el) { - let $el; - - if (el) { - $el = $(el); - - if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) { - $el = swiper.$el.find(el); - } - } - - return $el; - } - - function toggleEl($el, disabled) { - const params = swiper.params.navigation; - - if ($el && $el.length > 0) { - $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass); - if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled; - - if (swiper.params.watchOverflow && swiper.enabled) { - $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); - } - } - } - - function update() { - // Update Navigation Buttons - if (swiper.params.loop) return; - const { - $nextEl, - $prevEl - } = swiper.navigation; - toggleEl($prevEl, swiper.isBeginning); - toggleEl($nextEl, swiper.isEnd); - } - - function onPrevClick(e) { - e.preventDefault(); - if (swiper.isBeginning && !swiper.params.loop) return; - swiper.slidePrev(); - } - - function onNextClick(e) { - e.preventDefault(); - if (swiper.isEnd && !swiper.params.loop) return; - swiper.slideNext(); - } - - 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; - const $nextEl = getEl(params.nextEl); - const $prevEl = getEl(params.prevEl); - - if ($nextEl && $nextEl.length > 0) { - $nextEl.on('click', onNextClick); - } - - if ($prevEl && $prevEl.length > 0) { - $prevEl.on('click', onPrevClick); - } - - Object.assign(swiper.navigation, { - $nextEl, - nextEl: $nextEl && $nextEl[0], - $prevEl, - prevEl: $prevEl && $prevEl[0] - }); - - if (!swiper.enabled) { - if ($nextEl) $nextEl.addClass(params.lockClass); - if ($prevEl) $prevEl.addClass(params.lockClass); - } - } - - function destroy() { - const { - $nextEl, - $prevEl - } = swiper.navigation; - - if ($nextEl && $nextEl.length) { - $nextEl.off('click', onNextClick); - $nextEl.removeClass(swiper.params.navigation.disabledClass); - } - - if ($prevEl && $prevEl.length) { - $prevEl.off('click', onPrevClick); - $prevEl.removeClass(swiper.params.navigation.disabledClass); - } - } - - on('init', () => { - init(); - update(); - }); - on('toEdge fromEdge lock unlock', () => { - update(); - }); - on('destroy', () => { - destroy(); - }); - on('enable disable', () => { - const { - $nextEl, - $prevEl - } = swiper.navigation; - - if ($nextEl) { - $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass); - } - - if ($prevEl) { - $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass); - } - }); - on('click', (_s, e) => { - const { - $nextEl, - $prevEl - } = swiper.navigation; - const targetEl = e.target; - - if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) { - if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; - let isHidden; - - if ($nextEl) { - isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass); - } else if ($prevEl) { - isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass); - } - - if (isHidden === true) { - emit('navigationShow'); - } else { - emit('navigationHide'); - } - - if ($nextEl) { - $nextEl.toggleClass(swiper.params.navigation.hiddenClass); - } - - if ($prevEl) { - $prevEl.toggleClass(swiper.params.navigation.hiddenClass); - } - } - }); - Object.assign(swiper.navigation, { - update, - init, - destroy - }); -} - -function classesToSelector(classes = '') { - 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` - } - }); - swiper.pagination = { - el: null, - $el: null, - bullets: [] - }; - let bulletSize; - let dynamicBulletIndex = 0; - - function isPaginationDisabled() { - return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0; - } - - function setSideBullets($bulletEl, position) { - const { - bulletActiveClass - } = swiper.params.pagination; - $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`); - } - - function update() { - // Render || Update Pagination bullets/items - const rtl = swiper.rtl; - const params = swiper.params.pagination; - if (isPaginationDisabled()) return; - const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; - const $el = swiper.pagination.$el; // Current/Total - - let current; - const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; - - if (swiper.params.loop) { - current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); - - if (current > slidesLength - 1 - swiper.loopedSlides * 2) { - current -= slidesLength - swiper.loopedSlides * 2; - } - - if (current > total - 1) current -= total; - if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current; - } else if (typeof swiper.snapIndex !== 'undefined') { - current = swiper.snapIndex; - } else { - 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 = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true); - $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`); - - if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { - dynamicBulletIndex += current - swiper.previousIndex; - - if (dynamicBulletIndex > params.dynamicMainBullets - 1) { - dynamicBulletIndex = params.dynamicMainBullets - 1; - } else if (dynamicBulletIndex < 0) { - dynamicBulletIndex = 0; - } - } - - firstIndex = current - dynamicBulletIndex; - lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); - midIndex = (lastIndex + firstIndex) / 2; - } - - bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' ')); - - if ($el.length > 1) { - bullets.each(bullet => { - const $bullet = $(bullet); - const bulletIndex = $bullet.index(); - - if (bulletIndex === current) { - $bullet.addClass(params.bulletActiveClass); - } - - if (params.dynamicBullets) { - if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { - $bullet.addClass(`${params.bulletActiveClass}-main`); - } - - if (bulletIndex === firstIndex) { - setSideBullets($bullet, 'prev'); - } - - if (bulletIndex === lastIndex) { - setSideBullets($bullet, 'next'); - } - } - }); - } else { - const $bullet = bullets.eq(current); - const bulletIndex = $bullet.index(); - $bullet.addClass(params.bulletActiveClass); - - if (params.dynamicBullets) { - const $firstDisplayedBullet = bullets.eq(firstIndex); - const $lastDisplayedBullet = bullets.eq(lastIndex); - - for (let i = firstIndex; i <= lastIndex; i += 1) { - bullets.eq(i).addClass(`${params.bulletActiveClass}-main`); - } - - if (swiper.params.loop) { - if (bulletIndex >= bullets.length - params.dynamicMainBullets) { - for (let i = params.dynamicMainBullets; i >= 0; i -= 1) { - bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`); - } - - bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`); - } else { - setSideBullets($firstDisplayedBullet, 'prev'); - setSideBullets($lastDisplayedBullet, 'next'); - } - } else { - 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.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`); - } - } - - if (params.type === 'fraction') { - $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1)); - $el.find(classesToSelector(params.totalClass)).text(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; - } - - $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed); - } - - if (params.type === 'custom' && params.renderCustom) { - $el.html(params.renderCustom(swiper, current + 1, total)); - emit('paginationRender', $el[0]); - } else { - emit('paginationUpdate', $el[0]); - } - - if (swiper.params.watchOverflow && swiper.enabled) { - $el[swiper.isLocked ? 'addClass' : 'removeClass'](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.slides.length; - const $el = swiper.pagination.$el; - let paginationHTML = ''; - - if (params.type === 'bullets') { - let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; - - if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) { - numberOfBullets = slidesLength; - } - - for (let i = 0; i < numberOfBullets; i += 1) { - if (params.renderBullet) { - paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); - } else { - paginationHTML += `<${params.bulletElement} class="${params.bulletClass}">`; - } - } - - $el.html(paginationHTML); - swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass)); - } - - if (params.type === 'fraction') { - if (params.renderFraction) { - paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); - } else { - paginationHTML = `` + ' / ' + ``; - } - - $el.html(paginationHTML); - } - - if (params.type === 'progressbar') { - if (params.renderProgressbar) { - paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); - } else { - paginationHTML = ``; - } - - $el.html(paginationHTML); - } - - if (params.type !== 'custom') { - emit('paginationRender', swiper.pagination.$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 = $(params.el); - if ($el.length === 0) return; - - if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) { - $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper - - if ($el.length > 1) { - $el = $el.filter(el => { - if ($(el).parents('.swiper')[0] !== swiper.el) return false; - return true; - }); - } - } - - if (params.type === 'bullets' && params.clickable) { - $el.addClass(params.clickableClass); - } - - $el.addClass(params.modifierClass + params.type); - $el.addClass(params.modifierClass + swiper.params.direction); - - if (params.type === 'bullets' && params.dynamicBullets) { - $el.addClass(`${params.modifierClass}${params.type}-dynamic`); - dynamicBulletIndex = 0; - - if (params.dynamicMainBullets < 1) { - params.dynamicMainBullets = 1; - } - } - - if (params.type === 'progressbar' && params.progressbarOpposite) { - $el.addClass(params.progressbarOppositeClass); - } - - if (params.clickable) { - $el.on('click', classesToSelector(params.bulletClass), function onClick(e) { - e.preventDefault(); - let index = $(this).index() * swiper.params.slidesPerGroup; - if (swiper.params.loop) index += swiper.loopedSlides; - swiper.slideTo(index); - }); - } - - Object.assign(swiper.pagination, { - $el, - el: $el[0] - }); - - if (!swiper.enabled) { - $el.addClass(params.lockClass); - } - } - - function destroy() { - const params = swiper.params.pagination; - if (isPaginationDisabled()) return; - const $el = swiper.pagination.$el; - $el.removeClass(params.hiddenClass); - $el.removeClass(params.modifierClass + params.type); - $el.removeClass(params.modifierClass + swiper.params.direction); - if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass); - - if (params.clickable) { - $el.off('click', classesToSelector(params.bulletClass)); - } - } - - on('init', () => { - init(); - render(); - update(); - }); - on('activeIndexChange', () => { - if (swiper.params.loop) { - update(); - } else if (typeof swiper.snapIndex === 'undefined') { - update(); - } - }); - on('snapIndexChange', () => { - if (!swiper.params.loop) { - update(); - } - }); - on('slidesLengthChange', () => { - if (swiper.params.loop) { - render(); - update(); - } - }); - on('snapGridLengthChange', () => { - if (!swiper.params.loop) { - render(); - update(); - } - }); - on('destroy', () => { - destroy(); - }); - on('enable disable', () => { - const { - $el - } = swiper.pagination; - - if ($el) { - $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass); - } - }); - on('lock unlock', () => { - update(); - }); - on('click', (_s, e) => { - const targetEl = e.target; - const { - $el - } = swiper.pagination; - - if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(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.hasClass(swiper.params.pagination.hiddenClass); - - if (isHidden === true) { - emit('paginationShow'); - } else { - emit('paginationHide'); - } - - $el.toggleClass(swiper.params.pagination.hiddenClass); - } - }); - Object.assign(swiper.pagination, { - 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' - } - }); - swiper.scrollbar = { - el: null, - dragEl: null, - $el: null, - $dragEl: null - }; - - function setTranslate() { - if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; - const { - scrollbar, - rtlTranslate: rtl, - progress - } = swiper; - const { - $dragEl, - $el - } = scrollbar; - const params = swiper.params.scrollbar; - 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.transform(`translate3d(${newPos}px, 0, 0)`); - $dragEl[0].style.width = `${newSize}px`; - } else { - $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`); - $dragEl[0].style.height = `${newSize}px`; - } - - if (params.hide) { - clearTimeout(timeout); - $el[0].style.opacity = 1; - timeout = setTimeout(() => { - $el[0].style.opacity = 0; - $el.transition(400); - }, 1000); - } - } - - function setTransition(duration) { - if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; - swiper.scrollbar.$dragEl.transition(duration); - } - - function updateSize() { - if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; - const { - scrollbar - } = swiper; - const { - $dragEl, - $el - } = scrollbar; - $dragEl[0].style.width = ''; - $dragEl[0].style.height = ''; - trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].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[0].style.width = `${dragSize}px`; - } else { - $dragEl[0].style.height = `${dragSize}px`; - } - - if (divider >= 1) { - $el[0].style.display = 'none'; - } else { - $el[0].style.display = ''; - } - - if (swiper.params.scrollbar.hide) { - $el[0].style.opacity = 0; - } - - if (swiper.params.watchOverflow && swiper.enabled) { - scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass); - } - } - - function getPointerPosition(e) { - if (swiper.isHorizontal()) { - return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX; - } - - return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY; - } - - function setDragPosition(e) { - const { - scrollbar, - rtlTranslate: rtl - } = swiper; - const { - $el - } = scrollbar; - let positionRatio; - positionRatio = (getPointerPosition(e) - $el.offset()[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[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; - e.preventDefault(); - e.stopPropagation(); - $wrapperEl.transition(100); - $dragEl.transition(100); - setDragPosition(e); - clearTimeout(dragTimeout); - $el.transition(0); - - if (params.hide) { - $el.css('opacity', 1); - } - - if (swiper.params.cssMode) { - swiper.$wrapperEl.css('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.preventDefault();else e.returnValue = false; - setDragPosition(e); - $wrapperEl.transition(0); - $el.transition(0); - $dragEl.transition(0); - 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.css('scroll-snap-type', ''); - $wrapperEl.transition(''); - } - - if (params.hide) { - clearTimeout(dragTimeout); - dragTimeout = nextTick(() => { - $el.css('opacity', 0); - $el.transition(400); - }, 1000); - } - - emit('scrollbarDragEnd', e); - - if (params.snapOnRelease) { - swiper.slideToClosest(); - } - } - - function events(method) { - const { - scrollbar, - touchEventsTouch, - touchEventsDesktop, - params, - support - } = swiper; - const $el = scrollbar.$el; - const target = $el[0]; - const activeListener = support.passiveListener && params.passiveListeners ? { - passive: false, - capture: false - } : false; - const passiveListener = support.passiveListener && params.passiveListeners ? { - passive: true, - capture: false - } : false; - if (!target) return; - const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; - - if (!support.touch) { - target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener); - document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener); - document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener); - } else { - target[eventMethod](touchEventsTouch.start, onDragStart, activeListener); - target[eventMethod](touchEventsTouch.move, onDragMove, activeListener); - target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener); - } - } - - function enableDraggable() { - if (!swiper.params.scrollbar.el) return; - events('on'); - } - - function disableDraggable() { - if (!swiper.params.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 = $(params.el); - - if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) { - $el = $swiperEl.find(params.el); - } - - let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`); - - if ($dragEl.length === 0) { - $dragEl = $(`
`); - $el.append($dragEl); - } - - Object.assign(scrollbar, { - $el, - el: $el[0], - $dragEl, - dragEl: $dragEl[0] - }); - - if (params.draggable) { - enableDraggable(); - } - - if ($el) { - $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass); - } - } - - function destroy() { - disableDraggable(); - } - - on('init', () => { - init(); - updateSize(); - setTranslate(); - }); - on('update resize observerUpdate lock unlock', () => { - updateSize(); - }); - on('setTranslate', () => { - setTranslate(); - }); - on('setTransition', (_s, duration) => { - setTransition(duration); - }); - on('enable disable', () => { - const { - $el - } = swiper.scrollbar; - - if ($el) { - $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass); - } - }); - on('destroy', () => { - destroy(); - }); - Object.assign(swiper.scrollbar, { - updateSize, - setTranslate, - init, - destroy - }); -} - -function Parallax({ - swiper, - extendParams, - on -}) { - extendParams({ - parallax: { - enabled: false - } - }); - - const setTransform = (el, progress) => { - const { - rtl - } = swiper; - const $el = $(el); - const rtlFactor = rtl ? -1 : 1; - const p = $el.attr('data-swiper-parallax') || '0'; - let x = $el.attr('data-swiper-parallax-x'); - let y = $el.attr('data-swiper-parallax-y'); - const scale = $el.attr('data-swiper-parallax-scale'); - const opacity = $el.attr('data-swiper-parallax-opacity'); - - 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[0].style.opacity = currentOpacity; - } - - if (typeof scale === 'undefined' || scale === null) { - $el.transform(`translate3d(${x}, ${y}, 0px)`); - } else { - const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); - $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`); - } - }; - - const setTranslate = () => { - const { - $el, - slides, - progress, - snapGrid - } = swiper; - $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => { - setTransform(el, progress); - }); - slides.each((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).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => { - setTransform(el, slideProgress); - }); - }); - }; - - const setTransition = (duration = swiper.params.speed) => { - const { - $el - } = swiper; - $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => { - const $parallaxEl = $(parallaxEl); - let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration; - if (duration === 0) parallaxDuration = 0; - $parallaxEl.transition(parallaxDuration); - }); - }; - - 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, - maxRatio: 3, - minRatio: 1, - toggle: true, - containerClass: 'swiper-zoom-container', - zoomedSlideClass: 'swiper-slide-zoomed' - } - }); - swiper.zoom = { - enabled: false - }; - let currentScale = 1; - let isScaling = false; - let gesturesEnabled; - let fakeGestureTouched; - let fakeGestureMoved; - const gesture = { - $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 ? gesture.$imageEl[0] : undefined; - const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined; - emit('zoomChange', value, imageEl, slideEl); - } - - scale = value; - } - - }); - - function getDistanceBetweenTouches(e) { - if (e.targetTouches.length < 2) return 1; - const x1 = e.targetTouches[0].pageX; - const y1 = e.targetTouches[0].pageY; - const x2 = e.targetTouches[1].pageX; - const y2 = e.targetTouches[1].pageY; - const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); - return distance; - } // Events - - - function onGestureStart(e) { - const support = swiper.support; - const params = swiper.params.zoom; - fakeGestureTouched = false; - fakeGestureMoved = false; - - if (!support.gestures) { - if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) { - return; - } - - fakeGestureTouched = true; - gesture.scaleStart = getDistanceBetweenTouches(e); - } - - if (!gesture.$slideEl || !gesture.$slideEl.length) { - gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`); - if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); - gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target'); - gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); - gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; - - if (gesture.$imageWrapEl.length === 0) { - gesture.$imageEl = undefined; - return; - } - } - - if (gesture.$imageEl) { - gesture.$imageEl.transition(0); - } - - isScaling = true; - } - - function onGestureChange(e) { - const support = swiper.support; - const params = swiper.params.zoom; - const zoom = swiper.zoom; - - if (!support.gestures) { - if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) { - return; - } - - fakeGestureMoved = true; - gesture.scaleMove = getDistanceBetweenTouches(e); - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0) { - if (e.type === 'gesturechange') onGestureStart(e); - return; - } - - if (support.gestures) { - zoom.scale = e.scale * currentScale; - } else { - 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.transform(`translate3d(0,0,0) scale(${zoom.scale})`); - } - - function onGestureEnd(e) { - const device = swiper.device; - const support = swiper.support; - const params = swiper.params.zoom; - const zoom = swiper.zoom; - - if (!support.gestures) { - if (!fakeGestureTouched || !fakeGestureMoved) { - return; - } - - if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) { - return; - } - - fakeGestureTouched = false; - fakeGestureMoved = false; - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; - zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); - gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`); - currentScale = zoom.scale; - isScaling = false; - if (zoom.scale === 1) gesture.$slideEl = undefined; - } - - function onTouchStart(e) { - const device = swiper.device; - if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; - if (image.isTouched) return; - if (device.android && e.cancelable) e.preventDefault(); - image.isTouched = true; - image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; - image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; - } - - function onTouchMove(e) { - const zoom = swiper.zoom; - if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; - swiper.allowClick = false; - if (!image.isTouched || !gesture.$slideEl) return; - - if (!image.isMoved) { - image.width = gesture.$imageEl[0].offsetWidth; - image.height = gesture.$imageEl[0].offsetHeight; - image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0; - image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0; - gesture.slideWidth = gesture.$slideEl[0].offsetWidth; - gesture.slideHeight = gesture.$slideEl[0].offsetHeight; - gesture.$imageWrapEl.transition(0); - } // Define if we need image drag - - - const scaledWidth = image.width * zoom.scale; - const scaledHeight = image.height * zoom.scale; - if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; - 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 = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - - 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; - 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; - return; - } - } - - if (e.cancelable) { - e.preventDefault(); - } - - e.stopPropagation(); - image.isMoved = true; - image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX; - image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY; - - 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.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); - } - - function onTouchEnd() { - const zoom = swiper.zoom; - if (!gesture.$imageEl || gesture.$imageEl.length === 0) 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.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); - } - - function onTransitionEnd() { - const zoom = swiper.zoom; - - if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) { - if (gesture.$imageEl) { - gesture.$imageEl.transform('translate3d(0,0,0) scale(1)'); - } - - if (gesture.$imageWrapEl) { - gesture.$imageWrapEl.transform('translate3d(0,0,0)'); - } - - zoom.scale = 1; - currentScale = 1; - gesture.$slideEl = undefined; - gesture.$imageEl = undefined; - gesture.$imageWrapEl = undefined; - } - } - - 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}`); - } - - if (!gesture.$slideEl) { - if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { - gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); - } else { - gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); - } - } - - gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target'); - gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return; - - if (swiper.params.cssMode) { - swiper.wrapperEl.style.overflow = 'hidden'; - swiper.wrapperEl.style.touchAction = 'none'; - } - - gesture.$slideEl.addClass(`${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.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX; - touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY; - } else { - touchX = image.touchesStart.x; - touchY = image.touchesStart.y; - } - - zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; - currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; - - if (e) { - slideWidth = gesture.$slideEl[0].offsetWidth; - slideHeight = gesture.$slideEl[0].offsetHeight; - offsetX = gesture.$slideEl.offset().left + window.scrollX; - offsetY = gesture.$slideEl.offset().top + window.scrollY; - diffX = offsetX + slideWidth / 2 - touchX; - diffY = offsetY + slideHeight / 2 - touchY; - imageWidth = gesture.$imageEl[0].offsetWidth; - imageHeight = gesture.$imageEl[0].offsetHeight; - 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; - 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; - } - - gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`); - gesture.$imageEl.transition(300).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 = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); - } else { - gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); - } - - gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target'); - gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return; - - if (swiper.params.cssMode) { - swiper.wrapperEl.style.overflow = ''; - swiper.wrapperEl.style.touchAction = ''; - } - - zoom.scale = 1; - currentScale = 1; - gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); - gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); - gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`); - gesture.$slideEl = undefined; - } // 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 support = swiper.support; - const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? { - passive: true, - capture: false - } : false; - const activeListenerWithCapture = support.passiveListener ? { - passive: false, - capture: true - } : true; - return { - passiveListener, - activeListenerWithCapture - }; - } - - function getSlideSelector() { - return `.${swiper.params.slideClass}`; - } - - function toggleGestures(method) { - const { - passiveListener - } = getListeners(); - const slideSelector = getSlideSelector(); - swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener); - swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener); - swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener); - } - - function enableGestures() { - if (gesturesEnabled) return; - gesturesEnabled = true; - toggleGestures('on'); - } - - function disableGestures() { - if (!gesturesEnabled) return; - gesturesEnabled = false; - toggleGestures('off'); - } // Attach/Detach Events - - - function enable() { - const zoom = swiper.zoom; - if (zoom.enabled) return; - zoom.enabled = true; - const support = swiper.support; - const { - passiveListener, - activeListenerWithCapture - } = getListeners(); - const slideSelector = getSlideSelector(); // Scale image - - if (support.gestures) { - swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener); - swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener); - } else if (swiper.touchEvents.start === 'touchstart') { - swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener); - swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture); - swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener); - - if (swiper.touchEvents.cancel) { - swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener); - } - } // Move image - - - swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture); - } - - function disable() { - const zoom = swiper.zoom; - if (!zoom.enabled) return; - const support = swiper.support; - zoom.enabled = false; - const { - passiveListener, - activeListenerWithCapture - } = getListeners(); - const slideSelector = getSlideSelector(); // Scale image - - if (support.gestures) { - swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener); - swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener); - } else if (swiper.touchEvents.start === 'touchstart') { - swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener); - swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture); - swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener); - - if (swiper.touchEvents.cancel) { - swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener); - } - } // Move image - - - swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, 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 - }); -} - -function Lazy({ - swiper, - extendParams, - on, - emit -}) { - extendParams({ - lazy: { - checkInView: false, - enabled: false, - loadPrevNext: false, - loadPrevNextAmount: 1, - loadOnTransitionStart: false, - scrollingElement: '', - elementClass: 'swiper-lazy', - loadingClass: 'swiper-lazy-loading', - loadedClass: 'swiper-lazy-loaded', - preloaderClass: 'swiper-lazy-preloader' - } - }); - swiper.lazy = {}; - let scrollHandlerAttached = false; - let initialImageLoaded = false; - - function loadInSlide(index, loadInDuplicate = true) { - const params = swiper.params.lazy; - if (typeof index === 'undefined') return; - if (swiper.slides.length === 0) return; - const isVirtual = swiper.virtual && swiper.params.virtual.enabled; - const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`) : swiper.slides.eq(index); - const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`); - - if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) { - $images.push($slideEl[0]); - } - - if ($images.length === 0) return; - $images.each(imageEl => { - const $imageEl = $(imageEl); - $imageEl.addClass(params.loadingClass); - const background = $imageEl.attr('data-background'); - const src = $imageEl.attr('data-src'); - const srcset = $imageEl.attr('data-srcset'); - const sizes = $imageEl.attr('data-sizes'); - const $pictureEl = $imageEl.parent('picture'); - swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => { - if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return; - - if (background) { - $imageEl.css('background-image', `url("${background}")`); - $imageEl.removeAttr('data-background'); - } else { - if (srcset) { - $imageEl.attr('srcset', srcset); - $imageEl.removeAttr('data-srcset'); - } - - if (sizes) { - $imageEl.attr('sizes', sizes); - $imageEl.removeAttr('data-sizes'); - } - - if ($pictureEl.length) { - $pictureEl.children('source').each(sourceEl => { - const $source = $(sourceEl); - - if ($source.attr('data-srcset')) { - $source.attr('srcset', $source.attr('data-srcset')); - $source.removeAttr('data-srcset'); - } - }); - } - - if (src) { - $imageEl.attr('src', src); - $imageEl.removeAttr('data-src'); - } - } - - $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); - $slideEl.find(`.${params.preloaderClass}`).remove(); - - if (swiper.params.loop && loadInDuplicate) { - const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index'); - - if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) { - const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`); - loadInSlide(originalSlide.index(), false); - } else { - const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`); - loadInSlide(duplicatedSlide.index(), false); - } - } - - emit('lazyImageReady', $slideEl[0], $imageEl[0]); - - if (swiper.params.autoHeight) { - swiper.updateAutoHeight(); - } - }); - emit('lazyImageLoad', $slideEl[0], $imageEl[0]); - }); - } - - function load() { - const { - $wrapperEl, - params: swiperParams, - slides, - activeIndex - } = swiper; - const isVirtual = swiper.virtual && swiperParams.virtual.enabled; - const params = swiperParams.lazy; - let slidesPerView = swiperParams.slidesPerView; - - if (slidesPerView === 'auto') { - slidesPerView = 0; - } - - function slideExist(index) { - if (isVirtual) { - if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) { - return true; - } - } else if (slides[index]) return true; - - return false; - } - - function slideIndex(slideEl) { - if (isVirtual) { - return $(slideEl).attr('data-swiper-slide-index'); - } - - return $(slideEl).index(); - } - - if (!initialImageLoaded) initialImageLoaded = true; - - if (swiper.params.watchSlidesProgress) { - $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => { - const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index(); - loadInSlide(index); - }); - } else if (slidesPerView > 1) { - for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) { - if (slideExist(i)) loadInSlide(i); - } - } else { - loadInSlide(activeIndex); - } - - if (params.loadPrevNext) { - if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) { - const amount = params.loadPrevNextAmount; - const spv = slidesPerView; - const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); - const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides - - for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) { - if (slideExist(i)) loadInSlide(i); - } // Prev Slides - - - for (let i = minIndex; i < activeIndex; i += 1) { - if (slideExist(i)) loadInSlide(i); - } - } else { - const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`); - if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide)); - const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`); - if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide)); - } - } - } - - function checkInViewOnLoad() { - const window = getWindow(); - if (!swiper || swiper.destroyed) return; - const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window); - const isWindow = $scrollElement[0] === window; - const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth; - const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight; - const swiperOffset = swiper.$el.offset(); - const { - rtlTranslate: rtl - } = swiper; - let inView = false; - if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft; - const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]]; - - for (let i = 0; i < swiperCoord.length; i += 1) { - const point = swiperCoord[i]; - - if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) { - if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line - - inView = true; - } - } - - const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? { - passive: true, - capture: false - } : false; - - if (inView) { - load(); - $scrollElement.off('scroll', checkInViewOnLoad, passiveListener); - } else if (!scrollHandlerAttached) { - scrollHandlerAttached = true; - $scrollElement.on('scroll', checkInViewOnLoad, passiveListener); - } - } - - on('beforeInit', () => { - if (swiper.params.lazy.enabled && swiper.params.preloadImages) { - swiper.params.preloadImages = false; - } - }); - on('init', () => { - if (swiper.params.lazy.enabled) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - }); - on('scroll', () => { - if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) { - load(); - } - }); - on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => { - if (swiper.params.lazy.enabled) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - }); - on('transitionStart', () => { - if (swiper.params.lazy.enabled) { - if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - } - }); - on('transitionEnd', () => { - if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - }); - on('slideChange', () => { - const { - lazy, - cssMode, - watchSlidesProgress, - touchReleaseOnEdges, - resistanceRatio - } = swiper.params; - - if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) { - load(); - } - }); - Object.assign(swiper.lazy, { - load, - loadInSlide - }); -} - -/* 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; - } // xxx: for now i will just save one spline function to to - - - function getInterpolateFunction(c) { - if (!swiper.controller.spline) { - 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) { - // 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()); - 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) { - c.setTransition(duration, swiper); - - if (duration !== 0) { - c.transitionStart(); - - if (c.params.autoHeight) { - nextTick(() => { - c.updateAutoHeight(); - }); - } - - c.$wrapperEl.transitionEnd(() => { - if (!controlled) return; - - if (c.params.loop && swiper.params.controller.by === 'slide') { - c.loopFix(); - } - - 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', () => { - 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) return; - swiper.controller.setTranslate(translate, byController); - }); - on('setTransition', (_s, duration, byController) => { - if (!swiper.controller.control) 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, - itemRoleDescriptionMessage: null, - slideRole: 'group' - } - }); - let liveRegion = null; - - function notify(message) { - const notification = liveRegion; - if (notification.length === 0) return; - notification.html(''); - notification.html(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.attr('tabIndex', '0'); - } - - function makeElNotFocusable($el) { - $el.attr('tabIndex', '-1'); - } - - function addElRole($el, role) { - $el.attr('role', role); - } - - function addElRoleDescription($el, description) { - $el.attr('aria-roledescription', description); - } - - function addElControls($el, controls) { - $el.attr('aria-controls', controls); - } - - function addElLabel($el, label) { - $el.attr('aria-label', label); - } - - function addElId($el, id) { - $el.attr('id', id); - } - - function addElLive($el, live) { - $el.attr('aria-live', live); - } - - function disableEl($el) { - $el.attr('aria-disabled', true); - } - - function enableEl($el) { - $el.attr('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.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) { - if (!(swiper.isEnd && !swiper.params.loop)) { - swiper.slideNext(); - } - - if (swiper.isEnd) { - notify(params.lastSlideMessage); - } else { - notify(params.nextSlideMessage); - } - } - - if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) { - if (!(swiper.isBeginning && !swiper.params.loop)) { - swiper.slidePrev(); - } - - if (swiper.isBeginning) { - notify(params.firstSlideMessage); - } else { - notify(params.prevSlideMessage); - } - } - - if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) { - $targetEl[0].click(); - } - } - - function updateNavigation() { - if (swiper.params.loop || !swiper.navigation) return; - const { - $nextEl, - $prevEl - } = swiper.navigation; - - if ($prevEl && $prevEl.length > 0) { - if (swiper.isBeginning) { - disableEl($prevEl); - makeElNotFocusable($prevEl); - } else { - enableEl($prevEl); - makeElFocusable($prevEl); - } - } - - if ($nextEl && $nextEl.length > 0) { - if (swiper.isEnd) { - disableEl($nextEl); - makeElNotFocusable($nextEl); - } else { - enableEl($nextEl); - makeElFocusable($nextEl); - } - } - } - - function hasPagination() { - return swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length; - } - - function updatePagination() { - const params = swiper.params.a11y; - - if (hasPagination()) { - swiper.pagination.bullets.each(bulletEl => { - const $bulletEl = $(bulletEl); - makeElFocusable($bulletEl); - - if (!swiper.params.pagination.renderBullet) { - addElRole($bulletEl, 'button'); - addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1)); - } - }); - } - } - - const initNavEl = ($el, wrapperId, message) => { - makeElFocusable($el); - - if ($el[0].tagName !== 'BUTTON') { - addElRole($el, 'button'); - $el.on('keydown', onEnterOrSpaceKey); - } - - addElLabel($el, message); - addElControls($el, wrapperId); - }; - - function 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); - } // Wrapper - - - const $wrapperEl = swiper.$wrapperEl; - const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`; - const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; - addElId($wrapperEl, wrapperId); - addElLive($wrapperEl, live); // Slide - - if (params.itemRoleDescriptionMessage) { - addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage); - } - - addElRole($(swiper.slides), params.slideRole); - const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length; - swiper.slides.each((slideEl, index) => { - const $slideEl = $(slideEl); - const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index; - const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); - addElLabel($slideEl, ariaLabelMessage); - }); // Navigation - - let $nextEl; - let $prevEl; - - if (swiper.navigation && swiper.navigation.$nextEl) { - $nextEl = swiper.navigation.$nextEl; - } - - if (swiper.navigation && swiper.navigation.$prevEl) { - $prevEl = swiper.navigation.$prevEl; - } - - if ($nextEl && $nextEl.length) { - initNavEl($nextEl, wrapperId, params.nextSlideMessage); - } - - if ($prevEl && $prevEl.length) { - initNavEl($prevEl, wrapperId, params.prevSlideMessage); - } // Pagination - - - if (hasPagination()) { - swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey); - } - } - - function destroy() { - if (liveRegion && liveRegion.length > 0) liveRegion.remove(); - let $nextEl; - let $prevEl; - - if (swiper.navigation && swiper.navigation.$nextEl) { - $nextEl = swiper.navigation.$nextEl; - } - - if (swiper.navigation && swiper.navigation.$prevEl) { - $prevEl = swiper.navigation.$prevEl; - } - - if ($nextEl) { - $nextEl.off('keydown', onEnterOrSpaceKey); - } - - if ($prevEl) { - $prevEl.off('keydown', onEnterOrSpaceKey); - } // Pagination - - - if (hasPagination()) { - swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey); - } - } - - on('beforeInit', () => { - liveRegion = $(``); - }); - on('afterInit', () => { - if (!swiper.params.a11y.enabled) return; - init(); - updateNavigation(); - }); - on('toEdge', () => { - if (!swiper.params.a11y.enabled) return; - updateNavigation(); - }); - on('fromEdge', () => { - 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' - } - }); - 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.slides.eq(index); - let value = slugify(slide.attr('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}/${value}`; - } else if (!location.pathname.includes(key)) { - value = `${key}/${value}`; - } - - 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.eq(i); - const slideHistory = slugify(slide.attr('data-history')); - - if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) { - const index = slide.index(); - swiper.slideTo(index, speed, runCallbacks); - } - } - } else { - swiper.slideTo(0, speed, runCallbacks); - } - }; - - const setHistoryPopState = () => { - paths = getPathValues(swiper.params.url); - scrollToSlide(swiper.params.speed, swiper.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) 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 - } - }); - - const onHashChange = () => { - emit('hashChange'); - const newHash = document.location.hash.replace('#', ''); - const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash'); - - if (newHash !== activeSlideHash) { - const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index(); - if (typeof newIndex === 'undefined') return; - swiper.slideTo(newIndex); - } - }; - - const setHash = () => { - if (!initialized || !swiper.params.hashNavigation.enabled) return; - - if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { - window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''); - emit('hashSet'); - } else { - const slide = swiper.slides.eq(swiper.activeIndex); - const hash = slide.attr('data-hash') || slide.attr('data-history'); - document.location.hash = hash || ''; - 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; - - for (let i = 0, length = swiper.slides.length; i < length; i += 1) { - const slide = swiper.slides.eq(i); - const slideHash = slide.attr('data-hash') || slide.attr('data-history'); - - if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) { - const index = slide.index(); - swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true); - } - } - } - - if (swiper.params.hashNavigation.watchState) { - $(window).on('hashchange', onHashChange); - } - }; - - const destroy = () => { - if (swiper.params.hashNavigation.watchState) { - $(window).off('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" */ -function Autoplay({ - swiper, - extendParams, - on, - emit -}) { - let timeout; - swiper.autoplay = { - running: false, - paused: false - }; - extendParams({ - autoplay: { - enabled: false, - delay: 3000, - waitForTransition: true, - disableOnInteraction: true, - stopOnLastSlide: false, - reverseDirection: false, - pauseOnMouseEnter: false - } - }); - - function run() { - const $activeSlideEl = swiper.slides.eq(swiper.activeIndex); - let delay = swiper.params.autoplay.delay; - - if ($activeSlideEl.attr('data-swiper-autoplay')) { - delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay; - } - - clearTimeout(timeout); - timeout = nextTick(() => { - let autoplayResult; - - if (swiper.params.autoplay.reverseDirection) { - if (swiper.params.loop) { - swiper.loopFix(); - autoplayResult = swiper.slidePrev(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.isBeginning) { - autoplayResult = swiper.slidePrev(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.params.autoplay.stopOnLastSlide) { - autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); - emit('autoplay'); - } else { - stop(); - } - } else if (swiper.params.loop) { - swiper.loopFix(); - autoplayResult = swiper.slideNext(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.isEnd) { - autoplayResult = swiper.slideNext(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.params.autoplay.stopOnLastSlide) { - autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true); - emit('autoplay'); - } else { - stop(); - } - - if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) { - run(); - } - }, delay); - } - - function start() { - if (typeof timeout !== 'undefined') return false; - if (swiper.autoplay.running) return false; - swiper.autoplay.running = true; - emit('autoplayStart'); - run(); - return true; - } - - function stop() { - if (!swiper.autoplay.running) return false; - if (typeof timeout === 'undefined') return false; - - if (timeout) { - clearTimeout(timeout); - timeout = undefined; - } - - swiper.autoplay.running = false; - emit('autoplayStop'); - return true; - } - - function pause(speed) { - if (!swiper.autoplay.running) return; - if (swiper.autoplay.paused) return; - if (timeout) clearTimeout(timeout); - swiper.autoplay.paused = true; - - if (speed === 0 || !swiper.params.autoplay.waitForTransition) { - swiper.autoplay.paused = false; - run(); - } else { - ['transitionend', 'webkitTransitionEnd'].forEach(event => { - swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd); - }); - } - } - - function onVisibilityChange() { - const document = getDocument(); - - if (document.visibilityState === 'hidden' && swiper.autoplay.running) { - pause(); - } - - if (document.visibilityState === 'visible' && swiper.autoplay.paused) { - run(); - swiper.autoplay.paused = false; - } - } - - function onTransitionEnd(e) { - if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return; - if (e.target !== swiper.$wrapperEl[0]) return; - ['transitionend', 'webkitTransitionEnd'].forEach(event => { - swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd); - }); - swiper.autoplay.paused = false; - - if (!swiper.autoplay.running) { - stop(); - } else { - run(); - } - } - - function onMouseEnter() { - if (swiper.params.autoplay.disableOnInteraction) { - stop(); - } else { - pause(); - } - - ['transitionend', 'webkitTransitionEnd'].forEach(event => { - swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd); - }); - } - - function onMouseLeave() { - if (swiper.params.autoplay.disableOnInteraction) { - return; - } - - swiper.autoplay.paused = false; - run(); - } - - function attachMouseEvents() { - if (swiper.params.autoplay.pauseOnMouseEnter) { - swiper.$el.on('mouseenter', onMouseEnter); - swiper.$el.on('mouseleave', onMouseLeave); - } - } - - function detachMouseEvents() { - swiper.$el.off('mouseenter', onMouseEnter); - swiper.$el.off('mouseleave', onMouseLeave); - } - - on('init', () => { - if (swiper.params.autoplay.enabled) { - start(); - const document = getDocument(); - document.addEventListener('visibilitychange', onVisibilityChange); - attachMouseEvents(); - } - }); - on('beforeTransitionStart', (_s, speed, internal) => { - if (swiper.autoplay.running) { - if (internal || !swiper.params.autoplay.disableOnInteraction) { - swiper.autoplay.pause(speed); - } else { - stop(); - } - } - }); - on('sliderFirstMove', () => { - if (swiper.autoplay.running) { - if (swiper.params.autoplay.disableOnInteraction) { - stop(); - } else { - pause(); - } - } - }); - on('touchEnd', () => { - if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) { - run(); - } - }); - on('destroy', () => { - detachMouseEvents(); - - if (swiper.autoplay.running) { - stop(); - } - - const document = getDocument(); - document.removeEventListener('visibilitychange', onVisibilityChange); - }); - Object.assign(swiper.autoplay, { - pause, - run, - start, - stop - }); -} - -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 onThumbClick() { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) return; - const clickedIndex = thumbsSwiper.clickedIndex; - const clickedSlide = thumbsSwiper.clickedSlide; - if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return; - if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; - let slideToIndex; - - if (thumbsSwiper.params.loop) { - slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10); - } else { - slideToIndex = clickedIndex; - } - - if (swiper.params.loop) { - let currentIndex = swiper.activeIndex; - - if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) { - swiper.loopFix(); // eslint-disable-next-line - - swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; - currentIndex = swiper.activeIndex; - } - - const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); - const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); - if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex; - } - - 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) { - 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 - }); - } 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.addClass(swiper.params.thumbs.thumbsContainerClass); - swiper.thumbs.swiper.on('tap', onThumbClick); - return true; - } - - function update(initial) { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) 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) { - let currentThumbsIndex = thumbsSwiper.activeIndex; - let newThumbsIndex; - let direction; - - if (thumbsSwiper.params.loop) { - if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) { - thumbsSwiper.loopFix(); // eslint-disable-next-line - - thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft; - currentThumbsIndex = thumbsSwiper.activeIndex; - } // Find actual thumbs index to slide to - - - const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index(); - const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index(); - - if (typeof prevThumbsIndex === 'undefined') { - newThumbsIndex = nextThumbsIndex; - } else if (typeof nextThumbsIndex === 'undefined') { - newThumbsIndex = prevThumbsIndex; - } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) { - newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex; - } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { - newThumbsIndex = nextThumbsIndex; - } else { - newThumbsIndex = prevThumbsIndex; - } - - 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, initial ? 0 : undefined); - } - } // 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.removeClass(thumbActiveClass); - - if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { - for (let i = 0; i < thumbsToActivate; i += 1) { - thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass); - } - } else { - for (let i = 0; i < thumbsToActivate; i += 1) { - thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass); - } - } - } - - on('beforeInit', () => { - const { - thumbs - } = swiper.params; - if (!thumbs || !thumbs.swiper) return; - init(); - update(true); - }); - on('slideChange update resize observerUpdate', () => { - if (!swiper.thumbs.swiper) return; - update(); - }); - on('setTransition', (_s, duration) => { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) return; - thumbsSwiper.setTransition(duration); - }); - on('beforeDestroy', () => { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) return; - - if (swiperCreated && thumbsSwiper) { - 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 onTouchMove() { - 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 - }) { - 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; - $wrapperEl.transitionEnd(() => { - if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; - emit('momentumBounce'); - swiper.setTransition(params.speed); - setTimeout(() => { - swiper.setTranslate(afterBouncePosition); - $wrapperEl.transitionEnd(() => { - 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; - $wrapperEl.transitionEnd(() => { - 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) { - swiper.updateProgress(); - swiper.updateActiveIndex(); - swiper.updateSlidesClasses(); - } - } - - Object.assign(swiper, { - freeMode: { - onTouchMove, - onTouchEnd - } - }); -} - -function Grid({ - swiper, - extendParams -}) { - extendParams({ - grid: { - rows: 1, - fill: 'column' - } - }); - let slidesNumberEvenToRows; - let slidesPerRow; - let numFullColumns; - - const initSlides = slidesLength => { - const { - slidesPerView - } = swiper.params; - const { - rows, - fill - } = swiper.params.grid; - slidesPerRow = slidesNumberEvenToRows / rows; - 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); - } - }; - - const updateSlide = (i, slide, slidesLength, getDirectionLabel) => { - const { - slidesPerGroup, - spaceBetween - } = swiper.params; - const { - rows, - fill - } = swiper.params.grid; // 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.css({ - '-webkit-order': newSlideOrderIndex, - 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.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : ''); - }; - - const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => { - const { - spaceBetween, - centeredSlides, - roundLengths - } = swiper.params; - const { - rows - } = swiper.params.grid; - swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; - swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; - swiper.$wrapperEl.css({ - [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px` - }); - - if (centeredSlides) { - snapGrid.splice(0, snapGrid.length); - 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.push(...newSlidesGrid); - } - }; - - swiper.grid = { - initSlides, - updateSlide, - updateWrapperSize - }; -} - -function appendSlide(slides) { - const swiper = this; - const { - $wrapperEl, - params - } = swiper; - - if (params.loop) { - swiper.loopDestroy(); - } - - if (typeof slides === 'object' && 'length' in slides) { - for (let i = 0; i < slides.length; i += 1) { - if (slides[i]) $wrapperEl.append(slides[i]); - } - } else { - $wrapperEl.append(slides); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - swiper.update(); - } -} - -function prependSlide(slides) { - const swiper = this; - const { - params, - $wrapperEl, - activeIndex - } = swiper; - - if (params.loop) { - swiper.loopDestroy(); - } - - let newActiveIndex = activeIndex + 1; - - if (typeof slides === 'object' && 'length' in slides) { - for (let i = 0; i < slides.length; i += 1) { - if (slides[i]) $wrapperEl.prepend(slides[i]); - } - - newActiveIndex = activeIndex + slides.length; - } else { - $wrapperEl.prepend(slides); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - swiper.update(); - } - - swiper.slideTo(newActiveIndex, 0, false); -} - -function addSlide(index, slides) { - const swiper = this; - const { - $wrapperEl, - params, - activeIndex - } = swiper; - let activeIndexBuffer = activeIndex; - - if (params.loop) { - activeIndexBuffer -= swiper.loopedSlides; - swiper.loopDestroy(); - swiper.slides = $wrapperEl.children(`.${params.slideClass}`); - } - - 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.eq(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]) $wrapperEl.append(slides[i]); - } - - newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; - } else { - $wrapperEl.append(slides); - } - - for (let i = 0; i < slidesBuffer.length; i += 1) { - $wrapperEl.append(slidesBuffer[i]); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - 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, - $wrapperEl, - activeIndex - } = swiper; - let activeIndexBuffer = activeIndex; - - if (params.loop) { - activeIndexBuffer -= swiper.loopedSlides; - swiper.loopDestroy(); - swiper.slides = $wrapperEl.children(`.${params.slideClass}`); - } - - 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.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex -= 1; - } - - newActiveIndex = Math.max(newActiveIndex, 0); - } else { - indexToRemove = slidesIndexes; - if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex -= 1; - newActiveIndex = Math.max(newActiveIndex, 0); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - 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 - } = 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', () => { - if (swiper.params.effect !== effect) return; - setTranslate(); - }); - on('setTransition', (_s, duration) => { - if (swiper.params.effect !== effect) return; - setTransition(duration); - }); -} - -function effectTarget(effectParams, $slideEl) { - if (effectParams.transformEl) { - return $slideEl.find(effectParams.transformEl).css({ - 'backface-visibility': 'hidden', - '-webkit-backface-visibility': 'hidden' - }); - } - - return $slideEl; -} - -function effectVirtualTransitionEnd({ - swiper, - duration, - transformEl, - allSlides -}) { - const { - slides, - activeIndex, - $wrapperEl - } = swiper; - - if (swiper.params.virtualTranslate && duration !== 0) { - let eventTriggered = false; - let $transitionEndTarget; - - if (allSlides) { - $transitionEndTarget = transformEl ? slides.find(transformEl) : slides; - } else { - $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex); - } - - $transitionEndTarget.transitionEnd(() => { - if (eventTriggered) return; - if (!swiper || swiper.destroyed) return; - eventTriggered = true; - swiper.animating = false; - const triggerEvents = ['webkitTransitionEnd', 'transitionend']; - - for (let i = 0; i < triggerEvents.length; i += 1) { - $wrapperEl.trigger(triggerEvents[i]); - } - }); - } -} - -function EffectFade({ - swiper, - extendParams, - on -}) { - extendParams({ - fadeEffect: { - crossFade: false, - transformEl: null - } - }); - - const setTranslate = () => { - const { - slides - } = swiper; - const params = swiper.params.fadeEffect; - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = swiper.slides.eq(i); - const offset = $slideEl[0].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[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0); - const $targetEl = effectTarget(params, $slideEl); - $targetEl.css({ - opacity: slideOpacity - }).transform(`translate3d(${tx}px, ${ty}px, 0px)`); - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.fadeEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl, - 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 setTranslate = () => { - const { - $el, - $wrapperEl, - slides, - width: swiperWidth, - height: swiperHeight, - rtlTranslate: rtl, - size: swiperSize, - browser - } = 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 = $wrapperEl.find('.swiper-cube-shadow'); - - if ($cubeShadowEl.length === 0) { - $cubeShadowEl = $('
'); - $wrapperEl.append($cubeShadowEl); - } - - $cubeShadowEl.css({ - height: `${swiperWidth}px` - }); - } else { - $cubeShadowEl = $el.find('.swiper-cube-shadow'); - - if ($cubeShadowEl.length === 0) { - $cubeShadowEl = $('
'); - $el.append($cubeShadowEl); - } - } - } - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - let slideIndex = i; - - if (isVirtual) { - slideIndex = parseInt($slideEl.attr('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[0].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(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${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.transform(transform); - - if (params.slideShadows) { - // Set shadows - let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); - let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); - - if (shadowBefore.length === 0) { - shadowBefore = $(`
`); - $slideEl.append(shadowBefore); - } - - if (shadowAfter.length === 0) { - shadowAfter = $(`
`); - $slideEl.append(shadowAfter); - } - - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - } - - $wrapperEl.css({ - '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`, - 'transform-origin': `50% 50% -${swiperSize / 2}px` - }); - - if (params.shadow) { - if (isHorizontal) { - $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) 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.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`); - } - } - - const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0; - $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`); - }; - - const setTransition = duration => { - const { - $el, - slides - } = swiper; - slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - - if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { - $el.find('.swiper-cube-shadow').transition(duration); - } - }; - - effectInit({ - effect: 'cube', - swiper, - on, - setTranslate, - setTransition, - perspective: () => true, - overwriteParams: () => ({ - slidesPerView: 1, - slidesPerGroup: 1, - watchSlidesProgress: true, - resistanceRatio: 0, - spaceBetween: 0, - centeredSlides: false, - virtualTranslate: true - }) - }); -} - -function createShadow(params, $slideEl, side) { - const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`; - const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl; - let $shadowEl = $shadowContainer.children(`.${shadowClass}`); - - if (!$shadowEl.length) { - $shadowEl = $(`
`); - $shadowContainer.append($shadowEl); - } - - return $shadowEl; -} - -function EffectFlip({ - swiper, - extendParams, - on -}) { - extendParams({ - flipEffect: { - slideShadows: true, - limitRotation: true, - transformEl: null - } - }); - - const setTranslate = () => { - const { - slides, - rtlTranslate: rtl - } = swiper; - const params = swiper.params.flipEffect; - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - let progress = $slideEl[0].progress; - - if (swiper.params.flipEffect.limitRotation) { - progress = Math.max(Math.min($slideEl[0].progress, 1), -1); - } - - const offset = $slideEl[0].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[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length; - - if (params.slideShadows) { - // Set shadows - let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); - let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); - - if (shadowBefore.length === 0) { - shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top'); - } - - if (shadowAfter.length === 0) { - shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); - } - - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - - const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(transform); - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.flipEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl - }); - }; - - effectInit({ - effect: 'flip', - swiper, - on, - setTranslate, - setTransition, - 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, - transformEl: null - } - }); - - 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; // Each slide offset from center - - for (let i = 0, length = slides.length; i < length; i += 1) { - const $slideEl = slides.eq(i); - const slideSize = slidesSizesGrid[i]; - const slideOffset = $slideEl[0].swiperSlideOffset; - const offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * 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(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`; - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(slideTransform); - $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; - - if (params.slideShadows) { - // Set shadows - let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); - let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); - - if ($shadowBeforeEl.length === 0) { - $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top'); - } - - if ($shadowAfterEl.length === 0) { - $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom'); - } - - if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; - if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; - } - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.coverflowEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - }; - - effectInit({ - effect: 'coverflow', - swiper, - on, - setTranslate, - setTransition, - perspective: () => true, - overwriteParams: () => ({ - watchSlidesProgress: true - }) - }); -} - -function EffectCreative({ - swiper, - extendParams, - on -}) { - extendParams({ - creativeEffect: { - transformEl: null, - 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; - - if (isCenteredSlides) { - const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; - $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`); - } - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - const slideProgress = $slideEl[0].progress; - const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress); - let originalProgress = progress; - - if (!isCenteredSlides) { - originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress); - } - - const offset = $slideEl[0].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) => { - r[index] = data.rotate[index] * Math.abs(progress * multiplier); - }); - $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; - const translateString = t.join(', '); - const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${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.children('.swiper-slide-shadow'); - - if ($shadowEl.length === 0 && data.shadow) { - $shadowEl = createShadow(params, $slideEl); - } - - if ($shadowEl.length) { - const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; - $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); - } - } - - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(transform).css({ - opacity: opacityString - }); - - if (data.origin) { - $targetEl.css('transform-origin', data.origin); - } - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.creativeEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl, - 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, - transformEl: null - } - }); - - const setTranslate = () => { - const { - slides, - activeIndex - } = swiper; - const params = swiper.params.cardsEffect; - const { - startTranslate, - isTouched - } = swiper.touchEventsData; - const currentTranslate = swiper.translate; - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - const slideProgress = $slideEl[0].progress; - const progress = Math.min(Math.max(slideProgress, -4), 4); - let offset = $slideEl[0].swiperSlideOffset; - - if (swiper.params.centeredSlides && !swiper.params.cssMode) { - swiper.$wrapperEl.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 = -2 * progress; - let tXAdd = 8 - Math.abs(progress) * 0.75; - const isSwipeToNext = (i === activeIndex || i === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; - const isSwipeToPrev = (i === activeIndex || i === 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 = `${-25 * subProgress * Math.abs(progress)}%`; - } - - if (progress < 0) { - // next - tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`; - } else if (progress > 0) { - // prev - tX = `calc(${tX}px + (-${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}`; - const transform = ` - translate3d(${tX}, ${tY}, ${tZ}px) - rotateZ(${rotate}deg) - scale(${scaleString}) - `; - - if (params.slideShadows) { - // Set shadows - let $shadowEl = $slideEl.find('.swiper-slide-shadow'); - - if ($shadowEl.length === 0) { - $shadowEl = createShadow(params, $slideEl); - } - - if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); - } - - $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(transform); - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.cardsEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl - }); - }; - - effectInit({ - effect: 'cards', - swiper, - on, - setTranslate, - setTransition, - perspective: () => true, - overwriteParams: () => ({ - watchSlidesProgress: true, - virtualTranslate: !swiper.params.cssMode - }) - }); -} - -// Swiper Class -const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, 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.esm.browser.js.map diff --git a/resources/web/include/swiper/swiper-bundle.esm.browser.js.map b/resources/web/include/swiper/swiper-bundle.esm.browser.js.map deleted file mode 100644 index 3874fe90e6..0000000000 --- a/resources/web/include/swiper/swiper-bundle.esm.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"swiper-bundle.esm.browser.js.map","sources":["../node_modules/ssr-window/ssr-window.esm.js","../node_modules/dom7/dom7.esm.js","../src/shared/dom.js","../src/shared/utils.js","../src/shared/get-support.js","../src/shared/get-device.js","../src/shared/get-browser.js","../src/core/modules/resize/resize.js","../src/core/modules/observer/observer.js","../src/core/events-emitter.js","../src/core/update/updateSize.js","../src/core/update/updateSlides.js","../src/core/update/updateAutoHeight.js","../src/core/update/updateSlidesOffset.js","../src/core/update/updateSlidesProgress.js","../src/core/update/updateProgress.js","../src/core/update/updateSlidesClasses.js","../src/core/update/updateActiveIndex.js","../src/core/update/updateClickedSlide.js","../src/core/update/index.js","../src/core/translate/getTranslate.js","../src/core/translate/setTranslate.js","../src/core/translate/minTranslate.js","../src/core/translate/maxTranslate.js","../src/core/translate/translateTo.js","../src/core/translate/index.js","../src/core/transition/setTransition.js","../src/core/transition/transitionEmit.js","../src/core/transition/transitionStart.js","../src/core/transition/transitionEnd.js","../src/core/transition/index.js","../src/core/slide/slideTo.js","../src/core/slide/slideToLoop.js","../src/core/slide/slideNext.js","../src/core/slide/slidePrev.js","../src/core/slide/slideReset.js","../src/core/slide/slideToClosest.js","../src/core/slide/slideToClickedSlide.js","../src/core/slide/index.js","../src/core/loop/loopCreate.js","../src/core/loop/loopFix.js","../src/core/loop/loopDestroy.js","../src/core/loop/index.js","../src/core/grab-cursor/setGrabCursor.js","../src/core/grab-cursor/unsetGrabCursor.js","../src/core/grab-cursor/index.js","../src/core/events/onTouchStart.js","../src/core/events/onTouchMove.js","../src/core/events/onTouchEnd.js","../src/core/events/onResize.js","../src/core/events/onClick.js","../src/core/events/onScroll.js","../src/core/events/index.js","../src/core/breakpoints/setBreakpoint.js","../src/core/breakpoints/getBreakpoint.js","../src/core/breakpoints/index.js","../src/core/classes/addClasses.js","../src/core/classes/removeClasses.js","../src/core/classes/index.js","../src/core/images/loadImage.js","../src/core/images/preloadImages.js","../src/core/images/index.js","../src/core/check-overflow/index.js","../src/core/defaults.js","../src/core/moduleExtendParams.js","../src/core/core.js","../src/modules/virtual/virtual.js","../src/modules/keyboard/keyboard.js","../src/modules/mousewheel/mousewheel.js","../src/shared/create-element-if-not-defined.js","../src/modules/navigation/navigation.js","../src/shared/classes-to-selector.js","../src/modules/pagination/pagination.js","../src/modules/scrollbar/scrollbar.js","../src/modules/parallax/parallax.js","../src/modules/zoom/zoom.js","../src/modules/lazy/lazy.js","../src/modules/controller/controller.js","../src/modules/a11y/a11y.js","../src/modules/history/history.js","../src/modules/hash-navigation/hash-navigation.js","../src/modules/autoplay/autoplay.js","../src/modules/thumbs/thumbs.js","../src/modules/free-mode/free-mode.js","../src/modules/grid/grid.js","../src/modules/manipulation/methods/appendSlide.js","../src/modules/manipulation/methods/prependSlide.js","../src/modules/manipulation/methods/addSlide.js","../src/modules/manipulation/methods/removeSlide.js","../src/modules/manipulation/methods/removeAllSlides.js","../src/modules/manipulation/manipulation.js","../src/shared/effect-init.js","../src/shared/effect-target.js","../src/shared/effect-virtual-transition-end.js","../src/modules/effect-fade/effect-fade.js","../src/modules/effect-cube/effect-cube.js","../src/shared/create-shadow.js","../src/modules/effect-flip/effect-flip.js","../src/modules/effect-coverflow/effect-coverflow.js","../src/modules/effect-creative/effect-creative.js","../src/modules/effect-cards/effect-cards.js","../src/swiper.js"],"sourcesContent":["/**\n * SSR Window 4.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.1\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n super(...(items || []));\n makeReactive(this);\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import {\n $,\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n} from 'dom7';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n Object.defineProperty($.fn, methodName, { value: Methods[methodName], writable: true });\n});\n\nexport default $;\n","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform\n .split(', ')\n .map((a) => a.replace(',', '.'))\n .join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix =\n curStyle.MozTransform ||\n curStyle.OTransform ||\n curStyle.MsTransform ||\n curStyle.msTransform ||\n curStyle.transform ||\n curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return (\n typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n );\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter((key) => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({ swiper, targetPosition, side }) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return (dir === 'next' && current >= target) || (dir === 'prev' && current <= target);\n };\n\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\n\nexport {\n animateCSSModeScroll,\n deleteProps,\n nextTick,\n now,\n getTranslate,\n isObject,\n extend,\n getComputedStyle,\n setCSSProperty,\n};\n","import { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n\n touch: !!(\n 'ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)\n ),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n })(),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n })(),\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nexport { getSupport };\n","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\n\nlet deviceCached;\n\nfunction calcDevice({ userAgent } = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nexport { getDevice };\n","import { getWindow } from 'ssr-window';\n\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nexport { getBrowser };\n","import { getWindow } from 'ssr-window';\n\nexport default function Resize({ swiper, on, emit }) {\n const window = getWindow();\n let observer = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver((entries) => {\n const { width, height } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({ contentBoxSize, contentRect, target }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect\n ? contentRect.width\n : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect\n ? contentRect.height\n : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function Observer({ swiper, extendParams, on, emit }) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren,\n });\n\n // Observe wrapper\n attach(swiper.$wrapperEl[0], { attributes: false });\n };\n const destroy = () => {\n observers.forEach((observer) => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n });\n on('init', init);\n on('destroy', destroy);\n}\n","/* eslint-disable no-underscore-dangle */\n\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (\n eventHandler === handler ||\n (eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler)\n ) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n\n eventsArray.forEach((event) => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach((eventHandler) => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n },\n};\n","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width =\n width -\n parseInt($el.css('padding-left') || 0, 10) -\n parseInt($el.css('padding-right') || 0, 10);\n height =\n height -\n parseInt($el.css('padding-top') || 0, 10) -\n parseInt($el.css('padding-bottom') || 0, 10);\n\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { setCSSProperty } from '../../shared/utils.js';\n\nexport default function updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom',\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n\n const { $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginBottom: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '', marginTop: '' });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n\n const shouldResetSlideSize =\n params.slidesPerView === 'auto' &&\n params.breakpoints &&\n Object.keys(params.breakpoints).filter((key) => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const { clientWidth, offsetWidth } = slide[0];\n slideSize =\n width +\n paddingLeft +\n paddingRight +\n marginLeft +\n marginRight +\n (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0)\n slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (\n (index - Math.min(swiper.params.slidesPerGroupSkip, index)) %\n swiper.params.slidesPerGroup ===\n 0\n )\n snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`,\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n\n if (\n Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) >\n 1\n ) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides\n .filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n })\n .css({ [key]: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(\n swiper.wrapperEl,\n '--swiper-centered-offset-after',\n `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`,\n );\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map((v) => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map((v) => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n}\n","export default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = (index) => {\n if (isVirtual) {\n return swiper.slides.filter(\n (el) => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index,\n )[0];\n }\n return swiper.slides.eq(index)[0];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal()\n ? slides[i].offsetLeft\n : slides[i].offsetTop;\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateSlidesProgress(translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl, snapGrid } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress =\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress =\n (offsetCenter -\n snapGrid[0] +\n (params.centeredSlides ? swiper.minTranslate() : 0) -\n slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible =\n (slideBefore >= 0 && slideBefore < swiper.size - 1) ||\n (slideAfter > 1 && slideAfter <= swiper.size) ||\n (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","export default function updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && swiper.translate * multiplier) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || (params.centeredSlides && params.autoHeight))\n swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function updateSlidesClasses() {\n const swiper = this;\n\n const { slides, params, $wrapperEl, activeIndex, realIndex } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(\n `${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`,\n );\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\n `.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`,\n );\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide\n .nextAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide\n .prevAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n translate >= slidesGrid[i] &&\n translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2\n ) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(\n swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex,\n 10,\n );\n\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (\n params.slideToClickedSlide &&\n swiper.clickedIndex !== undefined &&\n swiper.clickedIndex !== swiper.activeIndex\n ) {\n swiper.slideToClickedSlide();\n }\n}\n","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","import { getTranslate } from '../../shared/utils.js';\n\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const { params, rtlTranslate: rtl, translate, $wrapperEl } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function setTranslate(translate, byController) {\n const swiper = this;\n const { rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function minTranslate() {\n return -this.snapGrid[0];\n}\n","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function translateTo(\n translate = 0,\n speed = this.params.speed,\n runCallbacks = true,\n translateBounds = true,\n internal,\n) {\n const swiper = this;\n\n const { params, wrapperEl } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: -newTranslate, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","export default function transitionEmit({ swiper, runCallbacks, direction, step }) {\n const { activeIndex, previousIndex } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'Start' });\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'End' });\n}\n","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function slideTo(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n initial,\n) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(\n `The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`,\n );\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\n `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`,\n );\n }\n\n // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled,\n } = swiper;\n\n if (\n (swiper.animating && params.preventInteractionOnTransition) ||\n (!enabled && !internal && !initial)\n ) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2\n ) {\n slideIndex = i;\n } else if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext\n ) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (\n !swiper.allowSlideNext &&\n translate < swiper.translate &&\n translate < swiper.minTranslate()\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n translate > swiper.translate &&\n translate > swiper.maxTranslate()\n ) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: t, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","export default function slideToLoop(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { animating, enabled, params } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating, snapGrid, slidesGrid, rtlTranslate, enabled } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (\n params.slidesPerView === 'auto' &&\n params.slidesPerGroup === 1 &&\n params.slidesPerGroupAuto\n ) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n threshold = 0.5,\n) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function slideToClickedSlide() {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView =\n params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n slideToIndex < swiper.loopedSlides - slidesPerView / 2 ||\n slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n const $selector = $($wrapperEl.children()[0].parentNode);\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(\n `${params.slideClass} ${params.slideBlankClass}`,\n );\n $selector.append(blankNode);\n }\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function loopFix() {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function loopDestroy() {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`,\n )\n .remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","export default function setGrabCursor(moving) {\n const swiper = this;\n if (\n swiper.support.touch ||\n !swiper.params.simulateTouch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n )\n return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","export default function unsetGrabCursor() {\n const swiper = this;\n if (\n swiper.support.touch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n ) {\n return;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}\n","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n\n const data = swiper.touchEventsData;\n const { params, touches, enabled } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector\n ? params.noSwipingSelector\n : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (\n params.noSwiping &&\n (isTargetShadow\n ? closestElement(noSwipingSelector, e.target)\n : $targetEl.closest(noSwipingSelector)[0])\n ) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection &&\n (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)\n ) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n if (\n document.activeElement &&\n $(document.activeElement).is(data.focusableElements) &&\n document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault =\n preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (\n (params.touchStartForcePreventDefault || shouldPreventDefault) &&\n !$targetEl[0].isContentEditable\n ) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch =\n e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) ||\n (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) ||\n (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold)\n return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (\n (swiper.isHorizontal() && touches.currentY === touches.startY) ||\n (swiper.isVertical() && touches.currentX === touches.startX)\n ) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal()\n ? touchAngle > params.touchAngle\n : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.minTranslate() -\n 1 +\n (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.maxTranslate() +\n 1 -\n (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n swiper.swipeDirection === 'next' &&\n data.currentTranslate < data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (\n !swiper.allowSlidePrev &&\n swiper.swipeDirection === 'prev' &&\n data.currentTranslate > data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal()\n ? touches.currentX - touches.startX\n : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (\n (params.freeMode && params.freeMode.enabled && swiper.freeMode) ||\n params.watchSlidesProgress\n ) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import { now, nextTick } from '../../shared/utils.js';\n\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const { params, touches, rtlTranslate: rtl, slidesGrid, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (\n params.grabCursor &&\n data.isMoved &&\n data.isTouched &&\n (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)\n ) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (\n !data.isTouched ||\n !data.isMoved ||\n !swiper.swipeDirection ||\n touches.diff === 0 ||\n data.currentTranslate === data.startTranslate\n ) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({ currentPos });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (\n let i = 0;\n i < slidesGrid.length;\n i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup\n ) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget =\n swiper.navigation &&\n (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n","export default function onResize() {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if (\n (params.slidesPerView === 'auto' || params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.isBeginning &&\n !swiper.params.centeredSlides\n ) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","export default function onScroll() {\n const swiper = this;\n const { wrapperEl, rtlTranslate, enabled } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { getDocument } from 'ssr-window';\n\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const { params, touchEvents, el, wrapperEl, device, support } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener =\n touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](\n touchEvents.move,\n swiper.onTouchMove,\n support.passiveListener ? { passive: false, capture } : capture,\n );\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](\n device.ios || device.android\n ? 'resize orientationchange observerUpdate'\n : 'resize observerUpdate',\n onResize,\n true,\n );\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const { params, support } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const { activeIndex, initialized, loopedSlides = 0, params, $el } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(\n `${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`,\n );\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n if (\n (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column') ||\n (!breakpointParams.grid.fill && params.grid.fill === 'column')\n ) {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n const directionChanged =\n breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop =\n params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n\n const isEnabled = swiper.params.enabled;\n\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || (base === 'container' && !containerEl)) return undefined;\n let breakpoint = false;\n\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\n\nexport default { setBreakpoint, getBreakpoint };\n","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach((item) => {\n if (typeof item === 'object') {\n Object.keys(item).forEach((classNames) => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const { classNames, params, rtl, $el, device, support } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses([\n 'initialized',\n params.direction,\n { 'pointer-events': !support.touch },\n { 'free-mode': swiper.params.freeMode && params.freeMode.enabled },\n { 'autoheight': params.autoHeight },\n { 'rtl': rtl },\n { 'grid': params.grid && params.grid.rows > 1 },\n { 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' },\n { 'android': device.android },\n { 'ios': device.ios },\n { 'css-mode': params.cssMode },\n { 'centered': params.cssMode && params.centeredSlides },\n ], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}\n","export default function removeClasses() {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}\n","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\n\nexport default { addClasses, removeClasses };\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n function onReady() {\n if (callback) callback();\n }\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady,\n );\n }\n}\n","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","function checkOverflow() {\n const swiper = this;\n const { isLocked: wasLocked, params } = swiper;\n const { slidesOffsetBefore } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge =\n swiper.slidesGrid[lastSlideIndex] +\n swiper.slidesSizesGrid[lastSlideIndex] +\n slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n\n // Overrides\n width: null,\n height: null,\n\n //\n preventInteractionOnTransition: false,\n\n // ssr\n userAgent: null,\n url: null,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n\n // Internals\n _emitClasses: false,\n};\n","import { extend } from '../shared/utils.js';\n\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (\n ['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 &&\n params[moduleParamName] === true\n ) {\n params[moduleParamName] = { auto: true };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n extend(allModulesParams, obj);\n };\n}\n","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\n\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\n\nimport eventsEmitter from './events-emitter.js';\n\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\n\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\n\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n if (\n args.length === 1 &&\n args[0].constructor &&\n Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object'\n ) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each((containerEl) => {\n const newParams = extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({ userAgent: params.userAgent });\n swiper.browser = getBrowser();\n\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n\n swiper.modules.forEach((mod) => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper),\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach((eventName) => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Save Dom lib\n swiper.$ = $;\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return swiper.support.touch || !swiper.params.simulateTouch\n ? swiper.touchEventsTouch\n : swiper.touchEventsDesktop;\n })(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n });\n\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter((className) => {\n return (\n className.indexOf('swiper') === 0 ||\n className.indexOf(swiper.params.containerModifierClass) === 0\n );\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n\n return slideEl.className\n .split(' ')\n .filter((className) => {\n return (\n className.indexOf('swiper-slide') === 0 ||\n className.indexOf(swiper.params.slideClass) === 0\n );\n })\n .join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each((slideEl) => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({ slideEl, classNames });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const { params, slides, slidesGrid, slidesSizesGrid, size: swiperSize, activeIndex } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact\n ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize\n : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(\n Math.max(translateValue, swiper.maxTranslate()),\n swiper.minTranslate(),\n );\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if (\n (swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.params.centeredSlides\n ) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (\n newDirection === currentDirection ||\n (newDirection !== 'horizontal' && newDirection !== 'vertical')\n ) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector()));\n // Children needs to return slot items\n res.children = (options) => $el.children(options);\n return res;\n }\n return $el.children(getWrapperSelector());\n };\n // Find Wrapper\n let $wrapperEl = getWrapper();\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each((slideEl) => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate:\n swiper.params.direction === 'horizontal' &&\n (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n });\n\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(\n swiper.params.initialSlide + swiper.loopedSlides,\n 0,\n swiper.params.runCallbacksOnInit,\n false,\n true,\n );\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const { params, $el, $wrapperEl, slides } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass(\n [\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '),\n )\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach((m) => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\n\nObject.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\n\nSwiper.use([Resize, Observer]);\n\nexport default Swiper;\n","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\n\nexport default function Virtual({ swiper, extendParams, on }) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n });\n\n let cssModeTimeout;\n\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: [],\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(\n `
${slide}
`,\n );\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset,\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n })(),\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl\n .find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`)\n .remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes\n .sort((a, b) => b - a)\n .forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr(\n 'data-swiper-slide-index',\n parseInt(cachedElIndex, 10) + numberOfNewSlides,\n );\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Keyboard({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false,\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true,\n },\n });\n\n function handle(event) {\n if (!swiper.enabled) return;\n\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n ((swiper.isHorizontal() && isArrowRight) ||\n (swiper.isVertical() && isArrowDown) ||\n isPageDown)\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n ((swiper.isHorizontal() && isArrowLeft) || (swiper.isVertical() && isArrowUp) || isPageUp)\n ) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (\n document.activeElement &&\n document.activeElement.nodeName &&\n (document.activeElement.nodeName.toLowerCase() === 'input' ||\n document.activeElement.nodeName.toLowerCase() === 'textarea')\n ) {\n return undefined;\n }\n if (\n swiper.params.keyboard.onlyInViewport &&\n (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)\n ) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (\n swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 &&\n swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0\n ) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiperWidth, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiperHeight],\n [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl))\n swiper.slideNext();\n if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl))\n swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n\n Object.assign(swiper.keyboard, {\n enable,\n disable,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\n\nexport default function Mousewheel({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n },\n });\n\n swiper.mousewheel = {\n enabled: false,\n };\n\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (\n swiper.params.mousewheel.thresholdDelta &&\n newEvent.delta < swiper.params.mousewheel.thresholdDelta\n ) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (\n swiper.params.mousewheel.thresholdTime &&\n now() - lastScrollTime < swiper.params.mousewheel.thresholdTime\n ) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges)\n return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n else return true;\n } else {\n delta =\n Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop\n ? true\n : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (\n newEvent.direction !== prevEvent.direction ||\n newEvent.delta > prevEvent.delta ||\n newEvent.time > prevEvent.time + 150\n ) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n };\n const ignoreWheelEvents =\n lastEventBeforeSnap &&\n newEvent.time < lastEventBeforeSnap.time + 500 &&\n newEvent.delta <= lastEventBeforeSnap.delta &&\n newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (\n prevEvent &&\n (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)\n ) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (\n recentWheelEvents.length >= 15 &&\n newEvent.time - firstEvent.time < 500 &&\n firstEvent.delta - newEvent.delta >= 1 &&\n newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction)\n swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n\n Object.assign(swiper.mousewheel, {\n enable,\n disable,\n });\n}\n","import { getDocument } from 'ssr-window';\n\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach((key) => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Navigation({ swiper, extendParams, on, emit }) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n });\n\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null,\n };\n\n function getEl(el) {\n let $el;\n if (el) {\n $el = $(el);\n if (\n swiper.params.uniqueNavElements &&\n typeof el === 'string' &&\n $el.length > 1 &&\n swiper.$el.find(el).length === 1\n ) {\n $el = swiper.$el.find(el);\n }\n }\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n toggleEl($prevEl, swiper.isBeginning);\n toggleEl($nextEl, swiper.isEnd);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n }\n function init() {\n const params = swiper.params.navigation;\n\n swiper.params.navigation = createElementIfNotDefined(\n swiper,\n swiper.originalParams.navigation,\n swiper.params.navigation,\n {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev',\n },\n );\n if (!(params.nextEl || params.prevEl)) return;\n\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n function destroy() {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n init();\n update();\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const { $nextEl, $prevEl } = swiper.navigation;\n const targetEl = e.target;\n if (\n swiper.params.navigation.hideOnClick &&\n !$(targetEl).is($prevEl) &&\n !$(targetEl).is($nextEl)\n ) {\n if (\n swiper.pagination &&\n swiper.params.pagination &&\n swiper.params.pagination.clickable &&\n (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))\n )\n return;\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n Object.assign(swiper.navigation, {\n update,\n init,\n destroy,\n });\n}\n","export default function classesToSelector(classes = '') {\n return `.${classes\n .trim()\n .replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Pagination({ swiper, extendParams, on, emit }) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n },\n });\n\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: [],\n };\n\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return (\n !swiper.params.pagination.el ||\n !swiper.pagination.el ||\n !swiper.pagination.$el ||\n swiper.pagination.$el.length === 0\n );\n }\n\n function setSideBullets($bulletEl, position) {\n const { bulletActiveClass } = swiper.params.pagination;\n $bulletEl[position]()\n .addClass(`${bulletActiveClass}-${position}`)\n [position]()\n .addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil(\n (swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup,\n );\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (\n params.type === 'bullets' &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length > 0\n ) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(\n swiper.isHorizontal() ? 'width' : 'height',\n `${bulletSize * (params.dynamicMainBullets + 4)}px`,\n );\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - swiper.previousIndex;\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(\n ['', '-next', '-next-next', '-prev', '-prev-prev', '-main']\n .map((suffix) => `${params.bulletActiveClass}${suffix}`)\n .join(' '),\n );\n if ($el.length > 1) {\n bullets.each((bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets\n .eq(bullets.length - params.dynamicMainBullets - 1)\n .addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset =\n (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el\n .find(classesToSelector(params.currentClass))\n .text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el\n .find(classesToSelector(params.progressbarFillClass))\n .transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`)\n .transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.loop &&\n numberOfBullets > slidesLength\n ) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML =\n `` +\n ' / ' +\n ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(\n swiper,\n swiper.originalParams.pagination,\n swiper.params.pagination,\n { el: 'swiper-pagination' },\n );\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el);\n // check if it belongs to another nested Swiper\n if ($el.length > 1) {\n $el = $el.filter((el) => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(params.modifierClass + swiper.params.direction);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0],\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(params.modifierClass + swiper.params.direction);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass)\n swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n init();\n render();\n update();\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $el } = swiper.pagination;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const { $el } = swiper.pagination;\n if (\n swiper.params.pagination.el &&\n swiper.params.pagination.hideOnClick &&\n $el.length > 0 &&\n !$(targetEl).hasClass(swiper.params.pagination.bulletClass)\n ) {\n if (\n swiper.navigation &&\n ((swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) ||\n (swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl))\n )\n return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n Object.assign(swiper.pagination, {\n render,\n update,\n init,\n destroy,\n });\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Scrollbar({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n });\n\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null,\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const { $dragEl, $el } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n divider =\n swiper.size /\n (swiper.virtualSize +\n swiper.params.slidesOffsetBefore -\n (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](\n swiper.params.scrollbar.lockClass,\n );\n }\n }\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientX\n : e.clientX;\n }\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientY\n : e.clientY;\n }\n function setDragPosition(e) {\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const { $el } = scrollbar;\n\n let positionRatio;\n positionRatio =\n (getPointerPosition(e) -\n $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] -\n (dragStartPos !== null ? dragStartPos : dragSize / 2)) /\n (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position =\n swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n isTouched = true;\n dragStartPos =\n e.target === $dragEl[0] || e.target === $dragEl\n ? getPointerPosition(e) -\n e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top']\n : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n\n clearTimeout(dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const { scrollbar, touchEventsTouch, touchEventsDesktop, params, support } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener =\n support.passiveListener && params.passiveListeners\n ? { passive: false, capture: false }\n : false;\n const passiveListener =\n support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('off');\n }\n function init() {\n const { scrollbar, $el: $swiperEl } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(\n swiper,\n swiper.originalParams.scrollbar,\n swiper.params.scrollbar,\n { el: 'swiper-scrollbar' },\n );\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n\n let $el = $(params.el);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.el === 'string' &&\n $el.length > 1 &&\n $swiperEl.find(params.el).length === 1\n ) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n function destroy() {\n disableDraggable();\n }\n\n on('init', () => {\n init();\n updateSize();\n setTranslate();\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const { $el } = swiper.scrollbar;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n Object.assign(swiper.scrollbar, {\n updateSize,\n setTranslate,\n init,\n destroy,\n });\n}\n","import $ from '../../shared/dom.js';\n\nexport default function Parallax({ swiper, extendParams, on }) {\n extendParams({\n parallax: {\n enabled: false,\n },\n });\n\n const setTransform = (el, progress) => {\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n };\n\n const setTranslate = () => {\n const { $el, slides, progress, snapGrid } = swiper;\n $el\n .children(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl)\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = (duration = swiper.params.speed) => {\n const { $el } = swiper;\n $el\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration =\n parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n };\n\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\n\nexport default function Zoom({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n });\n\n swiper.zoom = {\n enabled: false,\n };\n\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n };\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n\n // Events\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n if (\n e.type !== 'touchend' ||\n (e.type === 'touchend' && e.changedTouches.length < 2 && !device.android)\n ) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl\n .transition(swiper.params.speed)\n .transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (\n swiper.isHorizontal() &&\n ((Math.floor(image.minX) === Math.floor(image.startX) &&\n image.touchesCurrent.x < image.touchesStart.x) ||\n (Math.floor(image.maxX) === Math.floor(image.startX) &&\n image.touchesCurrent.x > image.touchesStart.x))\n ) {\n image.isTouched = false;\n return;\n }\n if (\n !swiper.isHorizontal() &&\n ((Math.floor(image.minY) === Math.floor(image.startY) &&\n image.touchesCurrent.y < image.touchesStart.y) ||\n (Math.floor(image.maxY) === Math.floor(image.startY) &&\n image.touchesCurrent.y > image.touchesStart.y))\n ) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x =\n (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y =\n (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0)\n momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0)\n momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl\n .transition(momentumDuration)\n .transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl\n .transition(300)\n .transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n const activeListenerWithCapture = support.passiveListener\n ? { passive: false, capture: true }\n : true;\n return { passiveListener, activeListenerWithCapture };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const { passiveListener } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (\n !swiper.animating &&\n swiper.params.zoom.enabled &&\n swiper.zoom.enabled &&\n swiper.params.zoom.toggle\n ) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle,\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Lazy({ swiper, extendParams, on, emit }) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n });\n\n swiper.lazy = {};\n\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(\n `.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`,\n )\n : swiper.slides.eq(index);\n\n const $images = $slideEl.find(\n `.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`,\n );\n if (\n $slideEl.hasClass(params.elementClass) &&\n !$slideEl.hasClass(params.loadedClass) &&\n !$slideEl.hasClass(params.loadingClass)\n ) {\n $images.push($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (\n typeof swiper === 'undefined' ||\n swiper === null ||\n !swiper ||\n (swiper && !swiper.params) ||\n swiper.destroyed\n )\n return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if ($pictureEl.length) {\n $pictureEl.children('source').each((sourceEl) => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(\n `[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`,\n );\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(\n `.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`,\n );\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const { $wrapperEl, params: swiperParams, slides, activeIndex } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if (\n $wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n .length\n ) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement\n ? $(swiper.params.lazy.scrollingElement)\n : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const { rtlTranslate: rtl } = swiper;\n\n let inView = false;\n\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 &&\n point[0] <= scrollElementWidth &&\n point[1] >= 0 &&\n point[1] <= scrollElementHeight\n ) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n swiper.support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.freeMode.sticky\n ) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (\n swiper.params.lazy.loadOnTransitionStart ||\n (!swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded)\n ) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const { lazy, cssMode, watchSlidesProgress, touchReleaseOnEdges, resistanceRatio } =\n swiper.params;\n if (\n lazy.enabled &&\n (cssMode || (watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0)))\n ) {\n load();\n }\n });\n\n Object.assign(swiper.lazy, {\n load,\n loadInSlide,\n });\n}\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Controller({ swiper, extendParams, on }) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n });\n\n swiper.controller = {\n control: undefined,\n };\n\n function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = (maxIndex + minIndex) >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n })();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (\n ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]\n );\n };\n return this;\n }\n // xxx: for now i will just save one spline function to to\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier =\n (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition,\n });\n}\n","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\n\nexport default function A11y({ swiper, extendParams, on }) {\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n },\n });\n\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n function addElId($el, id) {\n $el.attr('id', id);\n }\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (\n swiper.pagination &&\n $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))\n ) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return (\n swiper.pagination &&\n swiper.params.pagination.clickable &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length\n );\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (hasPagination()) {\n swiper.pagination.bullets.each((bulletEl) => {\n const $bulletEl = $(bulletEl);\n makeElFocusable($bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel(\n $bulletEl,\n params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1),\n );\n }\n });\n }\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n function init() {\n const params = swiper.params.a11y;\n\n swiper.$el.append(liveRegion);\n\n // Container\n const $containerEl = swiper.$el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n }\n\n // Wrapper\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live);\n\n // Slide\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n addElRole($(swiper.slides), params.slideRole);\n\n const slidesLength = swiper.params.loop\n ? swiper.slides.filter((el) => !el.classList.contains(swiper.params.slideDuplicateClass))\n .length\n : swiper.slides.length;\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop\n ? parseInt($slideEl.attr('data-swiper-slide-index'), 10)\n : index;\n const ariaLabelMessage = params.slideLabelMessage\n .replace(/\\{\\{index\\}\\}/, slideIndex + 1)\n .replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n });\n\n // Navigation\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n }\n\n // Pagination\n if (hasPagination()) {\n swiper.pagination.$el.on(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n }\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n }\n\n // Pagination\n if (hasPagination()) {\n swiper.pagination.$el.off(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n }\n\n on('beforeInit', () => {\n liveRegion = $(\n ``,\n );\n });\n\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n updateNavigation();\n });\n on('toEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('fromEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function History({ swiper, extendParams, on }) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n },\n });\n\n let initialized = false;\n let paths = {};\n\n const slugify = (text) => {\n return text\n .toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n };\n\n const getPathValues = (urlOverride) => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname\n .slice(1)\n .split('/')\n .filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, swiper.paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function HashNavigation({ swiper, extendParams, emit, on }) {\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl\n .children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`)\n .index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n if (\n swiper.params.hashNavigation.replaceState &&\n window.history &&\n window.history.replaceState\n ) {\n window.history.replaceState(\n null,\n null,\n `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '',\n );\n emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (\n !swiper.params.hashNavigation.enabled ||\n (swiper.params.history && swiper.params.history.enabled)\n )\n return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n","/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Autoplay({ swiper, extendParams, on, emit }) {\n let timeout;\n\n swiper.autoplay = {\n running: false,\n paused: false,\n };\n\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false,\n },\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(\n swiper.slides.length - 1,\n swiper.params.speed,\n true,\n true,\n );\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) run();\n else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n function onVisibilityChange() {\n const document = getDocument();\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n swiper.autoplay.paused = false;\n run();\n }\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (\n swiper.params.cssMode &&\n swiper.autoplay.paused &&\n !swiper.params.autoplay.disableOnInteraction\n ) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop,\n });\n}\n","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Thumb({ swiper, extendParams, on }) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs',\n },\n });\n\n let initialized = false;\n let swiperCreated = false;\n\n swiper.thumbs = {\n swiper: null,\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass))\n return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides\n .eq(currentIndex)\n .prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n const nextIndex = swiper.slides\n .eq(currentIndex)\n .nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const { thumbs: thumbsParams } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView =\n thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (\n thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .hasClass(thumbsSwiper.params.slideDuplicateClass)\n ) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex =\n thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (\n thumbsSwiper.visibleSlidesIndexes &&\n thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0\n ) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (\n newThumbsIndex > currentThumbsIndex &&\n thumbsSwiper.params.slidesPerGroup === 1\n ) {\n // newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (\n thumbsSwiper.params.loop ||\n (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)\n ) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl\n .children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`)\n .addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n }\n\n on('beforeInit', () => {\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n if (!swiper.thumbs.swiper) return;\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n });\n\n Object.assign(swiper.thumbs, {\n init,\n update,\n });\n}\n","import { now } from '../../shared/utils.js';\n\nexport default function freeMode({ swiper, extendParams, emit, once }) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02,\n },\n });\n\n function onTouchMove() {\n const { touchEventsData: data, touches } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now(),\n });\n }\n\n function onTouchEnd({ currentPos }) {\n const { params, $wrapperEl, rtlTranslate: rtl, snapGrid, touchEventsData: data } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (\n Math.abs(snapGrid[nextSlide] - newPosition) <\n Math.abs(snapGrid[nextSlide - 1] - newPosition) ||\n swiper.swipeDirection === 'next'\n ) {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchMove,\n onTouchEnd,\n },\n });\n}\n","export default function Grid({ swiper, extendParams }) {\n extendParams({\n grid: {\n rows: 1,\n fill: 'column',\n },\n });\n\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n\n const initSlides = (slidesLength) => {\n const { slidesPerView } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const { slidesPerGroup, spaceBetween } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup =\n groupIndex === 0\n ? slidesPerGroup\n : Math.min(\n Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows),\n slidesPerGroup,\n );\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n\n newSlideOrderIndex = column + (row * slidesNumberEvenToRows) / rows;\n slide.css({\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || (column === numFullColumns && row === rows - 1)) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.css(\n getDirectionLabel('margin-top'),\n row !== 0 ? spaceBetween && `${spaceBetween}px` : '',\n );\n };\n\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const { spaceBetween, centeredSlides, roundLengths } = swiper.params;\n const { rows } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.$wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`,\n });\n if (centeredSlides) {\n snapGrid.splice(0, snapGrid.length);\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.push(...newSlidesGrid);\n }\n };\n\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize,\n };\n}\n","export default function appendSlide(slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n}\n","export default function prependSlide(slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","export default function addSlide(index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex =\n activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeAllSlides() {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\n\nexport default function Manipulation({ swiper }) {\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper),\n });\n}\n","export default function effectInit(params) {\n const { effect, swiper, on, setTranslate, setTransition, overwriteParams, perspective } = params;\n\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n}\n","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden',\n });\n }\n return $slideEl;\n}\n","export default function effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides }) {\n const { slides, activeIndex, $wrapperEl } = swiper;\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl\n ? slides.eq(activeIndex).find(transformEl)\n : slides.eq(activeIndex);\n }\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}\n","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFade({ swiper, extendParams, on }) {\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\n\nexport default function EffectCube({ swiper, extendParams, on }) {\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n });\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${\n isHorizontal ? slideAngle : 0\n }deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(\n `
`,\n );\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(\n `
`,\n );\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(\n `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${\n -swiperWidth / 2\n }px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`,\n );\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier =\n 1.5 -\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2 +\n Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(\n `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${\n -swiperHeight / 2 / scale2\n }px) rotateX(-90deg)`,\n );\n }\n }\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(\n `translate3d(0px,0,${zFactor}px) rotateX(${\n swiper.isHorizontal() ? 0 : wrapperRotate\n }deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`,\n );\n };\n const setTransition = (duration) => {\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n }),\n });\n}\n","import $ from './dom.js';\n\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`
`);\n $shadowContainer.append($shadowEl);\n }\n return $shadowEl;\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFlip({ swiper, extendParams, on }) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides, rtlTranslate: rtl } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\n\nexport default function EffectCoverflow({ swiper, extendParams, on }) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { width: swiperWidth, height: swiperHeight, slides, slidesSizesGrid } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier =\n ((center - slideOffset - slideSize / 2) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = (parseFloat(params.stretch) / 100) * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if ($shadowBeforeEl.length)\n $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length)\n $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCreative({ swiper, extendParams, on }) {\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n },\n });\n\n const getTranslateValue = (value) => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const { slides, $wrapperEl, slidesSizesGrid } = swiper;\n const params = swiper.params.creativeEffect;\n const { progressMultiplier: multiplier } = params;\n\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(\n Math.max($slideEl[0].progress, -params.limitProgress),\n params.limitProgress,\n );\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(\n Math.max($slideEl[0].originalProgress, -params.limitProgress),\n params.limitProgress,\n );\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1,\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(\n progress * multiplier,\n )}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString =\n originalProgress < 0\n ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})`\n : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString =\n originalProgress < 0\n ? 1 + (1 - data.opacity) * originalProgress * multiplier\n : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if ((custom && data.shadow) || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress\n ? progress * (1 / params.limitProgress)\n : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({ opacity: opacityString });\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCards({ swiper, extendParams, on }) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides, activeIndex } = swiper;\n const params = swiper.params.cardsEffect;\n const { startTranslate, isTouched } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -2 * progress;\n\n let tXAdd = 8 - Math.abs(progress) * 0.75;\n\n const isSwipeToNext =\n (i === activeIndex || i === activeIndex - 1) &&\n progress > 0 &&\n progress < 1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate < startTranslate;\n const isSwipeToPrev =\n (i === activeIndex || i === activeIndex + 1) &&\n progress < 0 &&\n progress > -1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString =\n progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${rotate}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length)\n $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","// Swiper Class\nimport Swiper from './core/core.js';\n\n//IMPORT_MODULES\n\nconst modules = [\n //INSTALL_MODULES\n];\n\nSwiper.use(modules);\n\n//EXPORT\n"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","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","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","makeReactive","proto","__proto__","defineProperty","get","set","value","Dom7","Array","items","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","arrayUnique","uniqueArray","i","indexOf","qsa","selector","context","a","$","html","trim","toCreate","tempParent","innerHTML","nodeType","fn","addClass","classes","classNames","map","c","split","classList","add","removeClass","remove","toggleClass","className","toggle","hasClass","contains","attr","attrs","arguments","getAttribute","undefined","attrName","removeAttr","removeAttribute","transform","transition","duration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","events","j","event","dom7Listeners","proxyListener","dom7LiveListeners","off","handlers","handler","splice","dom7proxy","trigger","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","index","result","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","Methods","methodName","writable","deleteProps","object","nextTick","delay","now","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","o","slice","isNode","node","HTMLElement","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","startTime","time","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","calcSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","checkPassiveListener","supportsPassive","opts","gestures","checkGestures","getSupport","deviceCached","calcDevice","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","iPadScreens","os","getDevice","overrides","browser","calcBrowser","isSafari","toLowerCase","isWebView","test","getBrowser","Resize","emit","observer","resizeHandler","destroyed","initialized","createObserver","ResizeObserver","entries","newWidth","newHeight","contentBoxSize","contentRect","inlineSize","blockSize","observe","removeObserver","unobserve","orientationChangeHandler","resizeObserver","Observer","extendParams","observers","attach","options","ObserverFunc","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","init","observeParents","containerParents","$el","observeSlideChildren","$wrapperEl","destroy","disconnect","priority","self","method","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","eventsArray","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","Number","isNaN","assign","size","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","marginRight","centeredSlides","cssMode","gridEnabled","grid","rows","initSlides","slideSize","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","updateAutoHeight","activeSlides","setTransition","getSlideByIndex","visibleSlides","ceil","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","activeSlide","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","getSwiperTranslate","virtualTranslate","currentTranslate","setTranslate","byController","x","y","z","previousTranslate","newProgress","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","transitionStart","slideTo","initial","Error","indexAsNumber","isValidNumber","isFinite","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","snapTranslate","diff","slideChanged","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","closestElement","base","__closestFrom","assignedSlot","getRootNode","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","isTouchEvent","type","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","onTouchEnd","touchEndTime","timeDiff","lastClickTime","currentPos","stopIndex","groupSize","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","isNavButtonTarget","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","start","move","end","passiveListeners","passive","cancel","updateOnWindowResize","attachEvents","bind","detachEvents","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointOnlyParams","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","containerModifierClass","emitContainerClasses","fill","directionChanged","needsReLoop","changeDirection","isEnabled","disable","enable","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","prepareClasses","prefix","resultClasses","item","addClasses","suffixes","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","isPicture","complete","onload","onerror","preloadImages","imagesToLoad","imagesLoaded","updateOnImagesReady","update","currentSrc","wasLocked","lastSlideIndex","lastSlideRightEdge","createElements","url","uniqueNavElements","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","images","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","swiperParams","defaults","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","slideInView","translateValue","translated","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","getWrapper","wrapper","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","Virtual","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","cssModeTimeout","from","$slideEl","force","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","getSlides","slidesToRender","prependIndexes","appendIndexes","appendSlide","prependSlide","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","removeSlide","slidesIndexes","removeAllSlides","Keyboard","keyboard","onlyInViewport","pageUpDown","handle","kc","keyCode","charCode","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","Mousewheel","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","timeout","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","releaseScroll","rtlFactor","positions","sign","shift","prevEvent","ignoreWheelEvents","position","sticky","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","createElementIfNotDefined","checkProps","element","Navigation","hideOnClick","disabledClass","hiddenClass","lockClass","$nextEl","$prevEl","getEl","toggleEl","disabled","tagName","onPrevClick","onNextClick","_s","targetEl","pagination","clickable","isHidden","classesToSelector","Pagination","pfx","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","bullets","bulletSize","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","lastIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","Scrollbar","dragTimeout","dragStartPos","dragSize","trackSize","divider","scrollbar","hide","draggable","snapOnRelease","dragClass","dragEl","$dragEl","newSize","newPos","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","activeListener","eventMethod","enableDraggable","disableDraggable","$swiperEl","Parallax","parallax","setTransform","p","currentOpacity","currentScale","parallaxEl","$parallaxEl","parallaxDuration","_swiper","Zoom","zoom","maxRatio","containerClass","zoomedSlideClass","isScaling","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","gesture","slideWidth","slideHeight","$imageEl","$imageWrapEl","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","distance","onGestureStart","scaleStart","onGestureChange","scaleMove","onGestureEnd","scaledWidth","scaledHeight","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTransitionEnd","zoomIn","touchAction","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","in","out","Lazy","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$images","background","$pictureEl","sourceEl","$source","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","amount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","Controller","controller","control","inverse","by","LinearSpline","binarySearch","guess","array","i1","i3","interpolate","getInterpolateFunction","spline","_t","controlled","controlledTranslate","setControlledTranslate","setControlledTransition","removeSpline","A11y","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","liveRegion","notify","message","notification","getRandomNumber","randomChar","round","random","repeat","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElControls","controls","addElLabel","addElId","addElLive","live","disableEl","enableEl","onEnterOrSpaceKey","click","updateNavigation","hasPagination","updatePagination","bulletEl","initNavEl","wrapperId","$containerEl","ariaLabelMessage","History","root","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","includes","currentState","state","scrollToSlide","slideHistory","setHistoryPopState","hashNavigation","HashNavigation","watchState","onHashChange","newHash","activeSlideHash","setHash","slideHash","Autoplay","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","$activeSlideEl","autoplayResult","pause","onVisibilityChange","visibilityState","onMouseEnter","onMouseLeave","attachMouseEvents","detachMouseEvents","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","useOffset","currentThumbsIndex","newThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","momentumDistance","newPosition","doBounce","afterBouncePosition","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","order","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","indexToRemove","Manipulation","effectInit","overwriteParams","perspective","overwriteParamsResult","effectTarget","effectParams","transformEl","effectVirtualTransitionEnd","allSlides","eventTriggered","$transitionEndTarget","triggerEvents","EffectFade","fadeEffect","crossFade","tx","ty","slideOpacity","$transitionElements","EffectCube","cubeEffect","slideShadows","shadow","shadowOffset","shadowScale","wrapperRotate","$cubeShadowEl","slideAngle","tz","shadowBefore","shadowAfter","shadowAngle","sin","scale1","scale2","zFactor","createShadow","shadowClass","$shadowContainer","$shadowEl","EffectFlip","flipEffect","limitRotation","rotate","rotateY","rotateX","zIndex","EffectCoverflow","coverflowEffect","stretch","depth","modifier","center","offsetMultiplier","translateZ","slideTransform","$shadowBeforeEl","$shadowAfterEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","EffectCards","cardsEffect","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY"],"mappings":"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"} \ No newline at end of file diff --git a/resources/web/include/swiper/swiper-bundle.esm.browser.min.js b/resources/web/include/swiper/swiper-bundle.esm.browser.min.js deleted file mode 100644 index c9f16ce111..0000000000 --- a/resources/web/include/swiper/swiper-bundle.esm.browser.min.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Swiper 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -function isObject$1(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function extend$1(e={},t={}){Object.keys(t).forEach((s=>{void 0===e[s]?e[s]=t[s]:isObject$1(t[s])&&isObject$1(e[s])&&Object.keys(t[s]).length>0&&extend$1(e[s],t[s])}))}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$1(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$1(e,ssrWindow),e}function makeReactive(e){const t=e.__proto__;Object.defineProperty(e,"__proto__",{get:()=>t,set(e){t.__proto__=e}})}class Dom7 extends Array{constructor(e){super(...e||[]),makeReactive(this)}}function arrayFlat(e=[]){const t=[];return e.forEach((e=>{Array.isArray(e)?t.push(...arrayFlat(e)):t.push(e)})),t}function arrayFilter(e,t){return Array.prototype.filter.call(e,t)}function arrayUnique(e){const t=[];for(let s=0;s=0&&s.indexOf(">")>=0){let e="div";0===s.indexOf("e.split(" "))));return this.forEach((e=>{e.classList.add(...t)})),this}function removeClass(...e){const t=arrayFlat(e.map((e=>e.split(" "))));return this.forEach((e=>{e.classList.remove(...t)})),this}function toggleClass(...e){const t=arrayFlat(e.map((e=>e.split(" "))));this.forEach((e=>{t.forEach((t=>{e.classList.toggle(t)}))}))}function hasClass(...e){const t=arrayFlat(e.map((e=>e.split(" "))));return arrayFilter(this,(e=>t.filter((t=>e.classList.contains(t))).length>0)).length>0}function attr(e,t){if(1===arguments.length&&"string"==typeof e)return this[0]?this[0].getAttribute(e):void 0;for(let s=0;s=0;e-=1){const s=n[e];a&&s.listener===a||a&&s.listener&&s.listener.dom7proxy&&s.listener.dom7proxy===a?(r.removeEventListener(t,s.proxyListener,i),n.splice(e,1)):a||(r.removeEventListener(t,s.proxyListener,i),n.splice(e,1))}}}return this}function trigger(...e){const t=getWindow(),s=e[0].split(" "),a=e[1];for(let i=0;it>0)),i.dispatchEvent(s),i.dom7EventData=[],delete i.dom7EventData}}}return this}function transitionEnd$1(e){const t=this;return e&&t.on("transitionend",(function s(a){a.target===this&&(e.call(this,a),t.off("transitionend",s))})),this}function outerWidth(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetWidth+parseFloat(e.getPropertyValue("margin-right"))+parseFloat(e.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null}function outerHeight(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetHeight+parseFloat(e.getPropertyValue("margin-top"))+parseFloat(e.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null}function offset(){if(this.length>0){const e=getWindow(),t=getDocument(),s=this[0],a=s.getBoundingClientRect(),i=t.body,r=s.clientTop||i.clientTop||0,n=s.clientLeft||i.clientLeft||0,l=s===e?e.scrollY:s.scrollTop,o=s===e?e.scrollX:s.scrollLeft;return{top:a.top+l-r,left:a.left+o-n}}return null}function styles(){const e=getWindow();return this[0]?e.getComputedStyle(this[0],null):{}}function css(e,t){const s=getWindow();let a;if(1===arguments.length){if("string"!=typeof e){for(a=0;a{e.apply(t,[t,s])})),this):this}function filter(e){return $(arrayFilter(this,e))}function html(e){if(void 0===e)return this[0]?this[0].innerHTML:null;for(let t=0;tt-1)return $([]);if(e<0){const s=t+e;return $(s<0?[]:[this[s]])}return $([this[e]])}function append(...e){let t;const s=getDocument();for(let a=0;a=0;a-=1)this[s].insertBefore(i.childNodes[a],this[s].childNodes[0])}else if(e instanceof Dom7)for(a=0;a0?e?this[0].nextElementSibling&&$(this[0].nextElementSibling).is(e)?$([this[0].nextElementSibling]):$([]):this[0].nextElementSibling?$([this[0].nextElementSibling]):$([]):$([])}function nextAll(e){const t=[];let s=this[0];if(!s)return $([]);for(;s.nextElementSibling;){const a=s.nextElementSibling;e?$(a).is(e)&&t.push(a):t.push(a),s=a}return $(t)}function prev(e){if(this.length>0){const t=this[0];return e?t.previousElementSibling&&$(t.previousElementSibling).is(e)?$([t.previousElementSibling]):$([]):t.previousElementSibling?$([t.previousElementSibling]):$([])}return $([])}function prevAll(e){const t=[];let s=this[0];if(!s)return $([]);for(;s.previousElementSibling;){const a=s.previousElementSibling;e?$(a).is(e)&&t.push(a):t.push(a),s=a}return $(t)}function parent(e){const t=[];for(let s=0;s{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$1(e){const t=getWindow();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}function getTranslate(e,t="x"){const s=getWindow();let a,i,r;const n=getComputedStyle$1(e);return s.WebKitCSSMatrix?(i=n.transform||n.webkitTransform,i.split(",").length>6&&(i=i.split(", ").map((e=>e.replace(",","."))).join(", ")),r=new s.WebKitCSSMatrix("none"===i?"":i)):(r=n.MozTransform||n.OTransform||n.MsTransform||n.msTransform||n.transform||n.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),a=r.toString().split(",")),"x"===t&&(i=s.WebKitCSSMatrix?r.m41:16===a.length?parseFloat(a[12]):parseFloat(a[4])),"y"===t&&(i=s.WebKitCSSMatrix?r.m42:16===a.length?parseFloat(a[13]):parseFloat(a[5])),i||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]),s=["__proto__","constructor","prototype"];for(let a=1;as.indexOf(e)<0));for(let s=0,a=e.length;si?"next":"prev",d=(e,t)=>"next"===o&&e>=t||"prev"===o&&e<=t,c=()=>{r=(new Date).getTime(),null===n&&(n=r);const o=Math.max(Math.min((r-n)/l,1),0),p=.5-Math.cos(o*Math.PI)/2;let u=i+p*(t-i);if(d(u,t)&&(u=t),e.wrapperEl.scrollTo({[s]:u}),d(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(c)};c()}let support,deviceCached,browser;function calcSupport(){const e=getWindow(),t=getDocument();return{smoothScroll:t.documentElement&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch),passiveListener:function(){let t=!1;try{const s=Object.defineProperty({},"passive",{get(){t=!0}});e.addEventListener("testPassiveListener",null,s)}catch(e){}return t}(),gestures:"ongesturestart"in e}}function getSupport(){return support||(support=calcSupport()),support}function calcDevice({userAgent:e}={}){const t=getSupport(),s=getWindow(),a=s.navigator.platform,i=e||s.navigator.userAgent,r={ios:!1,android:!1},n=s.screen.width,l=s.screen.height,o=i.match(/(Android);?[\s\/]+([\d.]+)?/);let d=i.match(/(iPad).*OS\s([\d_]+)/);const c=i.match(/(iPod)(.*OS\s([\d_]+))?/),p=!d&&i.match(/(iPhone\sOS|iOS)\s([\d_]+)/),u="Win32"===a;let h="MacIntel"===a;return!d&&h&&t.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${n}x${l}`)>=0&&(d=i.match(/(Version)\/([\d.]+)/),d||(d=[0,1,"13_0_0"]),h=!1),o&&!u&&(r.os="android",r.android=!0),(d||p||c)&&(r.os="ios",r.ios=!0),r}function getDevice(e={}){return deviceCached||(deviceCached=calcDevice(e)),deviceCached}function calcBrowser(){const e=getWindow();return{isSafari:function(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}(),isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}function getBrowser(){return browser||(browser=calcBrowser()),browser}function Resize({swiper:e,on:t,emit:s}){const a=getWindow();let i=null;const r=()=>{e&&!e.destroyed&&e.initialized&&(s("beforeResize"),s("resize"))},n=()=>{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=>{const{width:s,height:a}=e;let i=s,n=a;t.forEach((({contentBoxSize:t,contentRect:s,target:a})=>{a&&a!==e.el||(i=s?s.width:(t[0]||t).inlineSize,n=s?s.height:(t[0]||t).blockSize)})),i===s&&n===a||r()})),i.observe(e.el)):(a.addEventListener("resize",r),a.addEventListener("orientationchange",n))})),t("destroy",(()=>{i&&i.unobserve&&e.el&&(i.unobserve(e.el),i=null),a.removeEventListener("resize",r),a.removeEventListener("orientationchange",n)}))}function Observer({swiper:e,extendParams:t,on:s,emit:a}){const i=[],r=getWindow(),n=(e,t={})=>{const s=new(r.MutationObserver||r.WebkitMutationObserver)((e=>{if(1===e.length)return void a("observerUpdate",e[0]);const t=function(){a("observerUpdate",e[0])};r.requestAnimationFrame?r.requestAnimationFrame(t):r.setTimeout(t,0)}));s.observe(e,{attributes:void 0===t.attributes||t.attributes,childList:void 0===t.childList||t.childList,characterData:void 0===t.characterData||t.characterData}),i.push(s)};t({observer:!1,observeParents:!1,observeSlideChildren:!1}),s("init",(()=>{if(e.params.observer){if(e.params.observeParents){const t=e.$el.parents();for(let e=0;e{i.forEach((e=>{e.disconnect()})),i.splice(0,i.length)}))}Object.keys(Methods).forEach((e=>{Object.defineProperty($.fn,e,{value:Methods[e],writable:!0})}));var eventsEmitter={on(e,t,s){const a=this;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("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("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.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?(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)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}};function updateSize(){const e=this;let t,s;const a=e.$el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:a[0].clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:a[0].clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(a.css("padding-left")||0,10)-parseInt(a.css("padding-right")||0,10),s=s-parseInt(a.css("padding-top")||0,10)-parseInt(a.css("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){return e.isHorizontal()?t:{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"}[t]}function s(e,s){return parseFloat(e.getPropertyValue(t(s))||0)}const a=e.params,{$wrapperEl:i,size:r,rtlTranslate:n,wrongRTL:l}=e,o=e.virtual&&a.virtual.enabled,d=o?e.virtual.slides.length:e.slides.length,c=i.children(`.${e.params.slideClass}`),p=o?e.virtual.slides.length:c.length;let u=[];const h=[],m=[];let f=a.slidesOffsetBefore;"function"==typeof f&&(f=a.slidesOffsetBefore.call(e));let g=a.slidesOffsetAfter;"function"==typeof g&&(g=a.slidesOffsetAfter.call(e));const v=e.snapGrid.length,w=e.slidesGrid.length;let b=a.spaceBetween,x=-f,y=0,E=0;if(void 0===r)return;"string"==typeof b&&b.indexOf("%")>=0&&(b=parseFloat(b.replace("%",""))/100*r),e.virtualSize=-b,n?c.css({marginLeft:"",marginBottom:"",marginTop:""}):c.css({marginRight:"",marginBottom:"",marginTop:""}),a.centeredSlides&&a.cssMode&&(setCSSProperty(e.wrapperEl,"--swiper-centered-offset-before",""),setCSSProperty(e.wrapperEl,"--swiper-centered-offset-after",""));const $=a.grid&&a.grid.rows>1&&e.grid;let T;$&&e.grid.initSlides(p);const S="auto"===a.slidesPerView&&a.breakpoints&&Object.keys(a.breakpoints).filter((e=>void 0!==a.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&u.push(e.virtualSize-r)}if(0===u.length&&(u=[0]),0!==a.spaceBetween){const s=e.isHorizontal()&&n?"marginLeft":t("marginRight");c.filter(((e,t)=>!a.cssMode||t!==c.length-1)).css({[s]:`${b}px`})}if(a.centeredSlides&&a.centeredSlidesBounds){let e=0;m.forEach((t=>{e+=t+(a.spaceBetween?a.spaceBetween:0)})),e-=a.spaceBetween;const t=e-r;u=u.map((e=>e<0?-f:e>t?t+g:e))}if(a.centerInsufficientSlides){let e=0;if(m.forEach((t=>{e+=t+(a.spaceBetween?a.spaceBetween:0)})),e-=a.spaceBetween,e{u[s]=e-t})),h.forEach(((e,s)=>{h[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:u,slidesGrid:h,slidesSizesGrid:m}),a.centeredSlides&&a.cssMode&&!a.centeredSlidesBounds){setCSSProperty(e.wrapperEl,"--swiper-centered-offset-before",-u[0]+"px"),setCSSProperty(e.wrapperEl,"--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))}p!==d&&e.emit("slidesLengthChange"),u.length!==v&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==w&&e.emit("slidesGridLengthChange"),a.watchSlidesProgress&&e.updateSlidesOffset()}function updateAutoHeight(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.filter((t=>parseInt(t.getAttribute("data-swiper-slide-index"),10)===e))[0]:t.slides.eq(e)[0];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)t.visibleSlides.each((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&&t.$wrapperEl.css("height",`${r}px`)}function updateSlidesOffset(){const e=this,t=e.slides;for(let s=0;s=0&&p1&&u<=t.size||p<=0&&u>=t.size)&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e),a.eq(e).addClass(s.slideVisibleClass)),l.progress=i?-d:d,l.originalProgress=i?-c:c}t.visibleSlides=$(t.visibleSlides)}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,a=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:r,isEnd:n}=t;const l=r,o=n;0===a?(i=0,r=!0,n=!0):(i=(e-t.minTranslate())/a,r=i<=0,n=i>=1),Object.assign(t,{progress:i,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!l&&t.emit("reachBeginning toEdge"),n&&!o&&t.emit("reachEnd toEdge"),(l&&!r||o&&!n)&&t.emit("fromEdge"),t.emit("progress",i)}function updateSlidesClasses(){const e=this,{slides:t,params:s,$wrapperEl:a,activeIndex:i,realIndex:r}=e,n=e.virtual&&s.virtual.enabled;let l;t.removeClass(`${s.slideActiveClass} ${s.slideNextClass} ${s.slidePrevClass} ${s.slideDuplicateActiveClass} ${s.slideDuplicateNextClass} ${s.slideDuplicatePrevClass}`),l=n?e.$wrapperEl.find(`.${s.slideClass}[data-swiper-slide-index="${i}"]`):t.eq(i),l.addClass(s.slideActiveClass),s.loop&&(l.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${r}"]`).addClass(s.slideDuplicateActiveClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${r}"]`).addClass(s.slideDuplicateActiveClass));let o=l.nextAll(`.${s.slideClass}`).eq(0).addClass(s.slideNextClass);s.loop&&0===o.length&&(o=t.eq(0),o.addClass(s.slideNextClass));let d=l.prevAll(`.${s.slideClass}`).eq(0).addClass(s.slidePrevClass);s.loop&&0===d.length&&(d=t.eq(-1),d.addClass(s.slidePrevClass)),s.loop&&(o.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass),d.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass)),e.emitSlidesClasses()}function updateActiveIndex(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{slidesGrid:a,snapGrid:i,params:r,activeIndex:n,realIndex:l,snapIndex:o}=t;let d,c=e;if(void 0===c){for(let e=0;e=a[e]&&s=a[e]&&s=a[e]&&(c=e);r.normalizeSlideIndex&&(c<0||void 0===c)&&(c=0)}if(i.indexOf(s)>=0)d=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,c);d=e+Math.floor((c-e)/r.slidesPerGroup)}if(d>=i.length&&(d=i.length-1),c===n)return void(d!==o&&(t.snapIndex=d,t.emit("snapIndexChange")));const p=parseInt(t.slides.eq(c).attr("data-swiper-slide-index")||c,10);Object.assign(t,{snapIndex:d,realIndex:p,previousIndex:n,activeIndex:c}),t.emit("activeIndexChange"),t.emit("snapIndexChange"),l!==p&&t.emit("realIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&t.emit("slideChange")}function updateClickedSlide(e){const t=this,s=t.params,a=$(e.target).closest(`.${s.slideClass}`)[0];let i,r=!1;if(a)for(let e=0;eo?o:a&&er?"next":i=o.length&&(g=o.length-1),(p||l.initialSlide||0)===(c||0)&&s&&r.emit("beforeSlideChangeStart");const v=-o[g];if(r.updateProgress(v),l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&vr.translate&&v>r.maxTranslate()&&(p||0)!==n)return!1}let w;if(w=n>p?"next":n{r.wrapperEl.style.scrollSnapType="",r._swiperImmediateVirtual=!1}))}else{if(!r.support.smoothScroll)return animateCSSModeScroll({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return 0===t?(r.setTransition(0),r.setTranslate(v),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,w),r.transitionEnd(s,w)):(r.setTransition(t),r.setTranslate(v),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,w),r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.$wrapperEl[0].removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].removeEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,w))}),r.$wrapperEl[0].addEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].addEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd))),!0}function slideToLoop(e=0,t=this.params.speed,s=!0,a){const i=this;let r=e;return i.params.loop&&(r+=i.loopedSlides),i.slideTo(r,t,s,a)}function slideNext(e=this.params.speed,t=!0,s){const a=this,{animating:i,enabled:r,params:n}=a;if(!r)return a;let l=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndexc(e)));let h=n[u.indexOf(p)-1];if(void 0===h&&i.cssMode){let e;n.forEach(((t,s)=>{p>=t&&(e=s)})),void 0!==e&&(h=n[e>0?e-1:e])}let m=0;return void 0!==h&&(m=l.indexOf(h),m<0&&(m=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(m=m-a.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),a.slideTo(m,e,t,s)}function slideReset(e=this.params.speed,t=!0,s){return this.slideTo(this.activeIndex,e,t,s)}function slideToClosest(e=this.params.speed,t=!0,s,a=.5){const i=this;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)}function slideToClickedSlide(){const e=this,{params:t,$wrapperEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.clickedIndex;if(t.loop){if(e.animating)return;i=parseInt($(e.clickedSlide).attr("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+a/2?(e.loopFix(),r=s.children(`.${t.slideClass}[data-swiper-slide-index="${i}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),nextTick((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-a?(e.loopFix(),r=s.children(`.${t.slideClass}[data-swiper-slide-index="${i}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),nextTick((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}var slide={slideTo:slideTo,slideToLoop:slideToLoop,slideNext:slideNext,slidePrev:slidePrev,slideReset:slideReset,slideToClosest:slideToClosest,slideToClickedSlide:slideToClickedSlide};function loopCreate(){const e=this,t=getDocument(),{params:s,$wrapperEl:a}=e,i=$(a.children()[0].parentNode);i.children(`.${s.slideClass}.${s.slideDuplicateClass}`).remove();let r=i.children(`.${s.slideClass}`);if(s.loopFillGroupWithBlank){const e=s.slidesPerGroup-r.length%s.slidesPerGroup;if(e!==s.slidesPerGroup){for(let a=0;ar.length&&(e.loopedSlides=r.length);const n=[],l=[];r.each(((t,s)=>{const a=$(t);s=r.length-e.loopedSlides&&n.push(t),a.attr("data-swiper-slide-index",s)}));for(let e=0;e=0;e-=1)i.prepend($(n[e].cloneNode(!0)).addClass(s.slideDuplicateClass))}function loopFix(){const e=this;e.emit("beforeLoopFix");const{activeIndex:t,slides:s,loopedSlides:a,allowSlidePrev:i,allowSlideNext:r,snapGrid:n,rtlTranslate:l}=e;let o;e.allowSlidePrev=!0,e.allowSlideNext=!0;const d=-n[t]-e.getTranslate();if(t=s.length-a){o=-s.length+t+a,o+=a;e.slideTo(o,0,!1,!0)&&0!==d&&e.setTranslate((l?-e.translate:e.translate)-d)}e.allowSlidePrev=i,e.allowSlideNext=r,e.emit("loopFix")}function loopDestroy(){const{$wrapperEl:e,params:t,slides:s}=this;e.children(`.${t.slideClass}.${t.slideDuplicateClass},.${t.slideClass}.${t.slideBlankClass}`).remove(),s.removeAttr("data-swiper-slide-index")}var loop={loopCreate:loopCreate,loopFix:loopFix,loopDestroy:loopDestroy};function setGrabCursor(e){const t=this;if(t.support.touch||!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;s.style.cursor="move",s.style.cursor=e?"-webkit-grabbing":"-webkit-grab",s.style.cursor=e?"-moz-grabbin":"-moz-grab",s.style.cursor=e?"grabbing":"grab"}function unsetGrabCursor(){const e=this;e.support.touch||e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="")}var grabCursor={setGrabCursor:setGrabCursor,unsetGrabCursor:unsetGrabCursor};function closestElement(e,t=this){return function t(s){return s&&s!==getDocument()&&s!==getWindow()?(s.assignedSlot&&(s=s.assignedSlot),s.closest(e)||t(s.getRootNode().host)):null}(t)}function onTouchStart(e){const t=this,s=getDocument(),a=getWindow(),i=t.touchEventsData,{params:r,touches:n,enabled:l}=t;if(!l)return;if(t.animating&&r.preventInteractionOnTransition)return;!t.animating&&r.cssMode&&r.loop&&t.loopFix();let o=e;o.originalEvent&&(o=o.originalEvent);let d=$(o.target);if("wrapper"===r.touchEventsTarget&&!d.closest(t.wrapperEl).length)return;if(i.isTouchEvent="touchstart"===o.type,!i.isTouchEvent&&"which"in o&&3===o.which)return;if(!i.isTouchEvent&&"button"in o&&o.button>0)return;if(i.isTouched&&i.isMoved)return;!!r.noSwipingClass&&""!==r.noSwipingClass&&o.target&&o.target.shadowRoot&&e.path&&e.path[0]&&(d=$(e.path[0]));const c=r.noSwipingSelector?r.noSwipingSelector:`.${r.noSwipingClass}`,p=!(!o.target||!o.target.shadowRoot);if(r.noSwiping&&(p?closestElement(c,o.target):d.closest(c)[0]))return void(t.allowClick=!0);if(r.swipeHandler&&!d.closest(r.swipeHandler)[0])return;n.currentX="touchstart"===o.type?o.targetTouches[0].pageX:o.pageX,n.currentY="touchstart"===o.type?o.targetTouches[0].pageY:o.pageY;const u=n.currentX,h=n.currentY,m=r.edgeSwipeDetection||r.iOSEdgeSwipeDetection,f=r.edgeSwipeThreshold||r.iOSEdgeSwipeThreshold;if(m&&(u<=f||u>=a.innerWidth-f)){if("prevent"!==m)return;e.preventDefault()}if(Object.assign(i,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),n.startX=u,n.startY=h,i.touchStartTime=now(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,r.threshold>0&&(i.allowThresholdMove=!1),"touchstart"!==o.type){let e=!0;d.is(i.focusableElements)&&(e=!1),s.activeElement&&$(s.activeElement).is(i.focusableElements)&&s.activeElement!==d[0]&&s.activeElement.blur();const a=e&&t.allowTouchMove&&r.touchStartPreventDefault;!r.touchStartForcePreventDefault&&!a||d[0].isContentEditable||o.preventDefault()}t.emit("touchStart",o)}function onTouchMove(e){const t=getDocument(),s=this,a=s.touchEventsData,{params:i,touches:r,rtlTranslate:n,enabled:l}=s;if(!l)return;let o=e;if(o.originalEvent&&(o=o.originalEvent),!a.isTouched)return void(a.startMoving&&a.isScrolling&&s.emit("touchMoveOpposite",o));if(a.isTouchEvent&&"touchmove"!==o.type)return;const d="touchmove"===o.type&&o.targetTouches&&(o.targetTouches[0]||o.changedTouches[0]),c="touchmove"===o.type?d.pageX:o.pageX,p="touchmove"===o.type?d.pageY:o.pageY;if(o.preventedByNestedSwiper)return r.startX=c,void(r.startY=p);if(!s.allowTouchMove)return s.allowClick=!1,void(a.isTouched&&(Object.assign(r,{startX:c,startY:p,currentX:c,currentY:p}),a.touchStartTime=now()));if(a.isTouchEvent&&i.touchReleaseOnEdges&&!i.loop)if(s.isVertical()){if(pr.startY&&s.translate>=s.minTranslate())return a.isTouched=!1,void(a.isMoved=!1)}else if(cr.startX&&s.translate>=s.minTranslate())return;if(a.isTouchEvent&&t.activeElement&&o.target===t.activeElement&&$(o.target).is(a.focusableElements))return a.isMoved=!0,void(s.allowClick=!1);if(a.allowTouchCallbacks&&s.emit("touchMove",o),o.targetTouches&&o.targetTouches.length>1)return;r.currentX=c,r.currentY=p;const u=r.currentX-r.startX,h=r.currentY-r.startY;if(s.params.threshold&&Math.sqrt(u**2+h**2)=25&&(e=180*Math.atan2(Math.abs(h),Math.abs(u))/Math.PI,a.isScrolling=s.isHorizontal()?e>i.touchAngle:90-e>i.touchAngle)}if(a.isScrolling&&s.emit("touchMoveOpposite",o),void 0===a.startMoving&&(r.currentX===r.startX&&r.currentY===r.startY||(a.startMoving=!0)),a.isScrolling)return void(a.isTouched=!1);if(!a.startMoving)return;s.allowClick=!1,!i.cssMode&&o.cancelable&&o.preventDefault(),i.touchMoveStopPropagation&&!i.nested&&o.stopPropagation(),a.isMoved||(i.loop&&!i.cssMode&&s.loopFix(),a.startTranslate=s.getTranslate(),s.setTransition(0),s.animating&&s.$wrapperEl.trigger("webkitTransitionEnd transitionend"),a.allowMomentumBounce=!1,!i.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",o)),s.emit("sliderMove",o),a.isMoved=!0;let m=s.isHorizontal()?u:h;r.diff=m,m*=i.touchRatio,n&&(m=-m),s.swipeDirection=m>0?"prev":"next",a.currentTranslate=m+a.startTranslate;let f=!0,g=i.resistanceRatio;if(i.touchReleaseOnEdges&&(g=0),m>0&&a.currentTranslate>s.minTranslate()?(f=!1,i.resistance&&(a.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+a.startTranslate+m)**g)):m<0&&a.currentTranslatea.startTranslate&&(a.currentTranslate=a.startTranslate),s.allowSlidePrev||s.allowSlideNext||(a.currentTranslate=a.startTranslate),i.threshold>0){if(!(Math.abs(m)>i.threshold||a.allowThresholdMove))return void(a.currentTranslate=a.startTranslate);if(!a.allowThresholdMove)return a.allowThresholdMove=!0,r.startX=r.currentX,r.startY=r.currentY,a.currentTranslate=a.startTranslate,void(r.diff=s.isHorizontal()?r.currentX-r.startX:r.currentY-r.startY)}i.followFinger&&!i.cssMode&&((i.freeMode&&i.freeMode.enabled&&s.freeMode||i.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),s.params.freeMode&&i.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(a.currentTranslate),s.setTranslate(a.currentTranslate))}function onTouchEnd(e){const t=this,s=t.touchEventsData,{params:a,touches:i,rtlTranslate:r,slidesGrid:n,enabled:l}=t;if(!l)return;let o=e;if(o.originalEvent&&(o=o.originalEvent),s.allowTouchCallbacks&&t.emit("touchEnd",o),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 d=now(),c=d-s.touchStartTime;if(t.allowClick&&(t.updateClickedSlide(o),t.emit("tap click",o),c<300&&d-s.lastClickTime<300&&t.emit("doubleTap doubleClick",o)),s.lastClickTime=now(),nextTick((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===i.diff||s.currentTranslate===s.startTranslate)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let p;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,p=a.followFinger?r?t.translate:-t.translate:-s.currentTranslate,a.cssMode)return;if(t.params.freeMode&&a.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:p});let u=0,h=t.slidesSizesGrid[0];for(let e=0;e=n[e]&&p=n[e]&&(u=e,h=n[n.length-1]-n[n.length-2])}const m=(p-n[u])/h,f=ua.longSwipesMs){if(!a.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(m>=a.longSwipesRatio?t.slideTo(u+f):t.slideTo(u)),"prev"===t.swipeDirection&&(m>1-a.longSwipesRatio?t.slideTo(u+f):t.slideTo(u))}else{if(!a.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(o.target===t.navigation.nextEl||o.target===t.navigation.prevEl)?o.target===t.navigation.nextEl?t.slideTo(u+f):t.slideTo(u):("next"===t.swipeDirection&&t.slideTo(u+f),"prev"===t.swipeDirection&&t.slideTo(u))}}function onResize(){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;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses(),("auto"===t.slidesPerView||t.slidesPerView>1)&&e.isEnd&&!e.isBeginning&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.run(),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==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: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)}let dummyEventAttached=!1;function dummyEventListener(){}const events=(e,t)=>{const s=getDocument(),{params:a,touchEvents:i,el:r,wrapperEl:n,device:l,support:o}=e,d=!!a.nested,c="on"===t?"addEventListener":"removeEventListener",p=t;if(o.touch){const t=!("touchstart"!==i.start||!o.passiveListener||!a.passiveListeners)&&{passive:!0,capture:!1};r[c](i.start,e.onTouchStart,t),r[c](i.move,e.onTouchMove,o.passiveListener?{passive:!1,capture:d}:d),r[c](i.end,e.onTouchEnd,t),i.cancel&&r[c](i.cancel,e.onTouchEnd,t)}else r[c](i.start,e.onTouchStart,!1),s[c](i.move,e.onTouchMove,d),s[c](i.end,e.onTouchEnd,!1);(a.preventClicks||a.preventClicksPropagation)&&r[c]("click",e.onClick,!0),a.cssMode&&n[c]("scroll",e.onScroll),a.updateOnWindowResize?e[p](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",onResize,!0):e[p]("observerUpdate",onResize,!0)};function attachEvents(){const e=this,t=getDocument(),{params:s,support:a}=e;e.onTouchStart=onTouchStart.bind(e),e.onTouchMove=onTouchMove.bind(e),e.onTouchEnd=onTouchEnd.bind(e),s.cssMode&&(e.onScroll=onScroll.bind(e)),e.onClick=onClick.bind(e),a.touch&&!dummyEventAttached&&(t.addEventListener("touchstart",dummyEventListener),dummyEventAttached=!0),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,{activeIndex:t,initialized:s,loopedSlides:a=0,params:i,$el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const l=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!l||e.currentBreakpoint===l)return;const o=(l in n?n[l]:void 0)||e.originalParams,d=isGridEnabled(e,i),c=isGridEnabled(e,o),p=i.enabled;d&&!c?(r.removeClass(`${i.containerModifierClass}grid ${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!d&&c&&(r.addClass(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.addClass(`${i.containerModifierClass}grid-column`),e.emitContainerClasses());const u=o.direction&&o.direction!==i.direction,h=i.loop&&(o.slidesPerView!==i.slidesPerView||u);u&&s&&e.changeDirection(),extend(e.params,o);const m=e.params.enabled;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!m?e.disable():!p&&m&&e.enable(),e.currentBreakpoint=l,e.emit("_beforeBreakpoint",o),h&&s&&(e.loopDestroy(),e.loopCreate(),e.updateSlides(),e.slideTo(t-a+e.loopedSlides,0,!1)),e.emit("breakpoint",o)}function getBreakpoint(e,t="window",s){if(!e||"container"===t&&!s)return;let a=!1;const i=getWindow(),r="window"===t?i.innerHeight:s.clientHeight,n=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:r*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((a=>{e[a]&&s.push(t+a)})):"string"==typeof e&&s.push(t+e)})),s}function addClasses(){const e=this,{classNames:t,params:s,rtl:a,$el:i,device:r,support:n}=e,l=prepareClasses(["initialized",s.direction,{"pointer-events":!n.touch},{"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}],s.containerModifierClass);t.push(...l),i.addClass([...t].join(" ")),e.emitContainerClasses()}function removeClasses(){const{$el:e,classNames:t}=this;e.removeClass(t.join(" ")),this.emitContainerClasses()}var classes={addClasses:addClasses,removeClasses:removeClasses};function loadImage(e,t,s,a,i,r){const n=getWindow();let l;function o(){r&&r()}$(e).parent("picture")[0]||e.complete&&i?o():t?(l=new n.Image,l.onload=o,l.onerror=o,a&&(l.sizes=a),s&&(l.srcset=s),t&&(l.src=t)):o()}function preloadImages(){const e=this;function t(){null!=e&&e&&!e.destroyed&&(void 0!==e.imagesLoaded&&(e.imagesLoaded+=1),e.imagesLoaded===e.imagesToLoad.length&&(e.params.updateOnImagesReady&&e.update(),e.emit("imagesReady")))}e.imagesToLoad=e.$el.find("img");for(let s=0;ss}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",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,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,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:0,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,loopFillGroupWithBlank:!1,loopPreventsSlide:!0,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-invisible-blank",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",runCallbacksOnInit:!0,_emitClasses:!1};function moduleExtendParams(e,t){return function(s={}){const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(["navigation","pagination","scrollbar"].indexOf(a)>=0&&!0===e[a]&&(e[a]={auto:!0}),a in e&&"enabled"in i?(!0===e[a]&&(e[a]={enabled:!0}),"object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={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,images:images},extendedDefaults={};class Swiper{constructor(...e){let t,s;if(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),s.el&&$(s.el).length>1){const e=[];return $(s.el).each((t=>{const a=extend({},s,{el:t});e.push(new Swiper(a))})),e}const a=this;a.__swiper__=!0,a.support=getSupport(),a.device=getDevice({userAgent:s.userAgent}),a.browser=getBrowser(),a.eventsListeners={},a.eventsAnyListeners=[],a.modules=[...a.__modules__],s.modules&&Array.isArray(s.modules)&&a.modules.push(...s.modules);const i={};a.modules.forEach((e=>{e({swiper:a,extendParams:moduleExtendParams(s,i),on:a.on.bind(a),once:a.once.bind(a),off:a.off.bind(a),emit:a.emit.bind(a)})}));const r=extend({},defaults,i);return a.params=extend({},r,extendedDefaults,s),a.originalParams=extend({},a.params),a.passedParams=extend({},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),a.$=$,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,allowSlideNext:a.params.allowSlideNext,allowSlidePrev:a.params.allowSlidePrev,touchEvents:function(){const e=["touchstart","touchmove","touchend","touchcancel"],t=["pointerdown","pointermove","pointerup"];return a.touchEventsTouch={start:e[0],move:e[1],end:e[2],cancel:e[3]},a.touchEventsDesktop={start:t[0],move:t[1],end:t[2]},a.support.touch||!a.params.simulateTouch?a.touchEventsTouch:a.touchEventsDesktop}(),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:now(),clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,isTouchEvent:void 0,startMoving:void 0},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}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 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.each((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(s.centeredSlides){let e,t=a[l].swiperSlideSize;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]1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):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.removeClass(`${s.params.containerModifierClass}${a}`).addClass(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.each((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}mount(e){const t=this;if(t.mounted)return!0;const s=$(e||t.params.el);if(!(e=s[0]))return!1;e.swiper=t;const a=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let i=(()=>{if(e&&e.shadowRoot&&e.shadowRoot.querySelector){const t=$(e.shadowRoot.querySelector(a()));return t.children=e=>s.children(e),t}return s.children(a())})();if(0===i.length&&t.params.createElements){const e=getDocument().createElement("div");i=$(e),e.className=t.params.wrapperClass,s.append(e),s.children(`.${t.params.slideClass}`).each((e=>{i.append(e)}))}return Object.assign(t,{$el:s,el:e,$wrapperEl:i,wrapperEl:i[0],mounted:!0,rtl:"rtl"===e.dir.toLowerCase()||"rtl"===s.css("direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===e.dir.toLowerCase()||"rtl"===s.css("direction")),wrongRTL:"-webkit-box"===i.css("display")}),!0}init(e){const t=this;if(t.initialized)return t;return!1===t.mount(e)||(t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.params.loop&&t.loopCreate(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.preloadImages&&t.preloadImages(),t.params.loop?t.slideTo(t.params.initialSlide+t.loopedSlides,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.attachEvents(),t.initialized=!0,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.removeAttr("style"),r.removeAttr("style"),n&&n.length&&n.removeClass([a.slideVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.$el[0].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)}}function Virtual({swiper:e,extendParams:t,on:s}){let a;function i(t,s){const a=e.params.virtual;if(a.cache&&e.virtual.cache[s])return e.virtual.cache[s];const i=a.renderSlide?$(a.renderSlide.call(e,t,s)):$(`
${t}
`);return i.attr("data-swiper-slide-index")||i.attr("data-swiper-slide-index",s),a.cache&&(e.virtual.cache[s]=i),i}function r(t){const{slidesPerView:s,slidesPerGroup:a,centeredSlides:r}=e.params,{addSlidesBefore:n,addSlidesAfter:l}=e.params.virtual,{from:o,to:d,slides:c,slidesGrid:p,offset:u}=e.virtual;e.params.cssMode||e.updateActiveIndex();const h=e.activeIndex||0;let m,f,g;m=e.rtlTranslate?"right":e.isHorizontal()?"left":"top",r?(f=Math.floor(s/2)+a+l,g=Math.floor(s/2)+a+n):(f=s+(a-1)+l,g=a+n);const v=Math.max((h||0)-g,0),w=Math.min((h||0)+f,c.length-1),b=(e.slidesGrid[v]||0)-(e.slidesGrid[0]||0);function x(){e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),e.lazy&&e.params.lazy.enabled&&e.lazy.load()}if(Object.assign(e.virtual,{from:v,to:w,offset:b,slidesGrid:e.slidesGrid}),o===v&&d===w&&!t)return e.slidesGrid!==p&&b!==u&&e.slides.css(m,`${b}px`),void e.updateProgress();if(e.params.virtual.renderExternal)return e.params.virtual.renderExternal.call(e,{offset:b,from:v,to:w,slides:function(){const e=[];for(let t=v;t<=w;t+=1)e.push(c[t]);return e}()}),void(e.params.virtual.renderExternalUpdate&&x());const y=[],E=[];if(t)e.$wrapperEl.find(`.${e.params.slideClass}`).remove();else for(let t=o;t<=d;t+=1)(tw)&&e.$wrapperEl.find(`.${e.params.slideClass}[data-swiper-slide-index="${t}"]`).remove();for(let e=0;e=v&&e<=w&&(void 0===d||t?E.push(e):(e>d&&E.push(e),e{e.$wrapperEl.append(i(c[t],t))})),y.sort(((e,t)=>t-e)).forEach((t=>{e.$wrapperEl.prepend(i(c[t],t))})),e.$wrapperEl.children(".swiper-slide").css(m,`${b}px`),x()}t({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}}),e.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]},s("beforeInit",(()=>{e.params.virtual.enabled&&(e.virtual.slides=e.params.virtual.slides,e.classNames.push(`${e.params.containerModifierClass}virtual`),e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0,e.params.initialSlide||r())})),s("setTranslate",(()=>{e.params.virtual.enabled&&(e.params.cssMode&&!e._immediateVirtual?(clearTimeout(a),a=setTimeout((()=>{r()}),100)):r())})),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 a=t[e],r=a.attr("data-swiper-slide-index");r&&a.attr("data-swiper-slide-index",parseInt(r,10)+i),s[parseInt(e,10)+i]=a})),e.virtual.cache=s}r(!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.virtual.slides.splice(t[a],1),e.params.virtual.cache&&delete e.virtual.cache[t[a]],t[a]0&&0===e.$el.parents(`.${e.params.slideActiveClass}`).length)return;const a=e.$el,i=a[0].clientWidth,n=a[0].clientHeight,l=r.innerWidth,o=r.innerHeight,d=e.$el.offset();s&&(d.left-=e.$el[0].scrollLeft);const c=[[d.left,d.top],[d.left+i,d.top],[d.left,d.top+n],[d.left+i,d.top+n]];for(let e=0;e=0&&s[0]<=l&&s[1]>=0&&s[1]<=o){if(0===s[0]&&0===s[1])continue;t=!0}}if(!t)return}e.isHorizontal()?((d||c||p||u)&&(n.preventDefault?n.preventDefault():n.returnValue=!1),((c||u)&&!s||(d||p)&&s)&&e.slideNext(),((d||p)&&!s||(c||u)&&s)&&e.slidePrev()):((d||c||h||m)&&(n.preventDefault?n.preventDefault():n.returnValue=!1),(c||m)&&e.slideNext(),(d||h)&&e.slidePrev()),a("keyPress",l)}}function l(){e.keyboard.enabled||($(i).on("keydown",n),e.keyboard.enabled=!0)}function o(){e.keyboard.enabled&&($(i).off("keydown",n),e.keyboard.enabled=!1)}e.keyboard={enabled:!1},t({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),s("init",(()=>{e.params.keyboard.enabled&&l()})),s("destroy",(()=>{e.keyboard.enabled&&o()})),Object.assign(e.keyboard,{enable:l,disable:o})}function Mousewheel({swiper:e,extendParams:t,on:s,emit:a}){const i=getWindow();let r;t({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null}}),e.mousewheel={enabled:!1};let n,l=now();const o=[];function d(){e.enabled&&(e.mouseEntered=!0)}function c(){e.enabled&&(e.mouseEntered=!1)}function p(t){return!(e.params.mousewheel.thresholdDelta&&t.delta=6&&now()-l<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)),l=(new i.Date).getTime(),!1)))}function u(t){let s=t,i=!0;if(!e.enabled)return;const l=e.params.mousewheel;e.params.cssMode&&s.preventDefault();let d=e.$el;if("container"!==e.params.mousewheel.eventsTarget&&(d=$(e.params.mousewheel.eventsTarget)),!e.mouseEntered&&!d[0].contains(s.target)&&!l.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let c=0;const u=e.rtlTranslate?-1:1,h=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(l.forceToAxis)if(e.isHorizontal()){if(!(Math.abs(h.pixelX)>Math.abs(h.pixelY)))return!0;c=-h.pixelX*u}else{if(!(Math.abs(h.pixelY)>Math.abs(h.pixelX)))return!0;c=-h.pixelY}else c=Math.abs(h.pixelX)>Math.abs(h.pixelY)?-h.pixelX*u:-h.pixelY;if(0===c)return!0;l.invert&&(c=-c);let m=e.getTranslate()+c*l.sensitivity;if(m>=e.minTranslate()&&(m=e.minTranslate()),m<=e.maxTranslate()&&(m=e.maxTranslate()),i=!!e.params.loop||!(m===e.minTranslate()||m===e.maxTranslate()),i&&e.params.nested&&s.stopPropagation(),e.params.freeMode&&e.params.freeMode.enabled){const t={time:now(),delta:Math.abs(c),direction:Math.sign(c)},i=n&&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(),(!p&&e.isBeginning||!u&&e.isEnd)&&e.updateSlidesClasses(),e.params.freeMode.sticky){clearTimeout(r),r=void 0,o.length>=15&&o.shift();const s=o.length?o[o.length-1]:void 0,a=o[0];if(o.push(t),s&&(t.delta>s.delta||t.direction!==s.direction))o.splice(0);else if(o.length>=15&&t.time-a.time<500&&a.delta-t.delta>=1&&t.delta<=6){const s=c>0?.8:.2;n=t,o.splice(0),r=nextTick((()=>{e.slideToClosest(e.params.speed,!0,void 0,s)}),0)}r||(r=nextTick((()=>{n=t,o.splice(0),e.slideToClosest(e.params.speed,!0,void 0,.5)}),500))}if(i||a("scroll",s),e.params.autoplay&&e.params.autoplayDisableOnInteraction&&e.autoplay.stop(),d===e.minTranslate()||d===e.maxTranslate())return!0}}else{const s={time:now(),delta:Math.abs(c),direction:Math.sign(c),raw:t};o.length>=2&&o.shift();const a=o.length?o[o.length-1]:void 0;if(o.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&p(s):p(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 h(t){let s=e.$el;"container"!==e.params.mousewheel.eventsTarget&&(s=$(e.params.mousewheel.eventsTarget)),s[t]("mouseenter",d),s[t]("mouseleave",c),s[t]("wheel",u)}function m(){return e.params.cssMode?(e.wrapperEl.removeEventListener("wheel",u),!0):!e.mousewheel.enabled&&(h("on"),e.mousewheel.enabled=!0,!0)}function f(){return e.params.cssMode?(e.wrapperEl.addEventListener(event,u),!0):!!e.mousewheel.enabled&&(h("off"),e.mousewheel.enabled=!1,!0)}s("init",(()=>{!e.params.mousewheel.enabled&&e.params.cssMode&&f(),e.params.mousewheel.enabled&&m()})),s("destroy",(()=>{e.params.cssMode&&m(),e.mousewheel.enabled&&f()})),Object.assign(e.mousewheel,{enable:m,disable:f})}function createElementIfNotDefined(e,t,s,a){const i=getDocument();return e.params.createElements&&Object.keys(a).forEach((r=>{if(!s[r]&&!0===s.auto){let n=e.$el.children(`.${a[r]}`)[0];n||(n=i.createElement("div"),n.className=a[r],e.$el.append(n)),s[r]=n,t[r]=n}})),s}function Navigation({swiper:e,extendParams:t,on:s,emit:a}){function i(t){let s;return t&&(s=$(t),e.params.uniqueNavElements&&"string"==typeof t&&s.length>1&&1===e.$el.find(t).length&&(s=e.$el.find(t))),s}function r(t,s){const a=e.params.navigation;t&&t.length>0&&(t[s?"addClass":"removeClass"](a.disabledClass),t[0]&&"BUTTON"===t[0].tagName&&(t[0].disabled=s),e.params.watchOverflow&&e.enabled&&t[e.isLocked?"addClass":"removeClass"](a.lockClass))}function n(){if(e.params.loop)return;const{$nextEl:t,$prevEl:s}=e.navigation;r(s,e.isBeginning),r(t,e.isEnd)}function l(t){t.preventDefault(),e.isBeginning&&!e.params.loop||e.slidePrev()}function o(t){t.preventDefault(),e.isEnd&&!e.params.loop||e.slideNext()}function d(){const t=e.params.navigation;if(e.params.navigation=createElementIfNotDefined(e,e.originalParams.navigation,e.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!t.nextEl&&!t.prevEl)return;const s=i(t.nextEl),a=i(t.prevEl);s&&s.length>0&&s.on("click",o),a&&a.length>0&&a.on("click",l),Object.assign(e.navigation,{$nextEl:s,nextEl:s&&s[0],$prevEl:a,prevEl:a&&a[0]}),e.enabled||(s&&s.addClass(t.lockClass),a&&a.addClass(t.lockClass))}function c(){const{$nextEl:t,$prevEl:s}=e.navigation;t&&t.length&&(t.off("click",o),t.removeClass(e.params.navigation.disabledClass)),s&&s.length&&(s.off("click",l),s.removeClass(e.params.navigation.disabledClass))}t({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock"}}),e.navigation={nextEl:null,$nextEl:null,prevEl:null,$prevEl:null},s("init",(()=>{d(),n()})),s("toEdge fromEdge lock unlock",(()=>{n()})),s("destroy",(()=>{c()})),s("enable disable",(()=>{const{$nextEl:t,$prevEl:s}=e.navigation;t&&t[e.enabled?"removeClass":"addClass"](e.params.navigation.lockClass),s&&s[e.enabled?"removeClass":"addClass"](e.params.navigation.lockClass)})),s("click",((t,s)=>{const{$nextEl:i,$prevEl:r}=e.navigation,n=s.target;if(e.params.navigation.hideOnClick&&!$(n).is(r)&&!$(n).is(i)){if(e.pagination&&e.params.pagination&&e.params.pagination.clickable&&(e.pagination.el===n||e.pagination.el.contains(n)))return;let t;i?t=i.hasClass(e.params.navigation.hiddenClass):r&&(t=r.hasClass(e.params.navigation.hiddenClass)),a(!0===t?"navigationShow":"navigationHide"),i&&i.toggleClass(e.params.navigation.hiddenClass),r&&r.toggleClass(e.params.navigation.hiddenClass)}})),Object.assign(e.navigation,{update:n,init:d,destroy:c})}function classesToSelector(e=""){return`.${e.trim().replace(/([\.:!\/])/g,"\\$1").replace(/ /g,".")}`}function Pagination({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`}}),e.pagination={el:null,$el:null,bullets:[]};let n=0;function l(){return!e.params.pagination.el||!e.pagination.el||!e.pagination.$el||0===e.pagination.$el.length}function o(t,s){const{bulletActiveClass:a}=e.params.pagination;t[s]().addClass(`${a}-${s}`)[s]().addClass(`${a}-${s}-${s}`)}function d(){const t=e.rtl,s=e.params.pagination;if(l())return;const i=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,d=e.pagination.$el;let c;const p=e.params.loop?Math.ceil((i-2*e.loopedSlides)/e.params.slidesPerGroup):e.snapGrid.length;if(e.params.loop?(c=Math.ceil((e.activeIndex-e.loopedSlides)/e.params.slidesPerGroup),c>i-1-2*e.loopedSlides&&(c-=i-2*e.loopedSlides),c>p-1&&(c-=p),c<0&&"bullets"!==e.params.paginationType&&(c=p+c)):c=void 0!==e.snapIndex?e.snapIndex:e.activeIndex||0,"bullets"===s.type&&e.pagination.bullets&&e.pagination.bullets.length>0){const a=e.pagination.bullets;let i,l,p;if(s.dynamicBullets&&(r=a.eq(0)[e.isHorizontal()?"outerWidth":"outerHeight"](!0),d.css(e.isHorizontal()?"width":"height",r*(s.dynamicMainBullets+4)+"px"),s.dynamicMainBullets>1&&void 0!==e.previousIndex&&(n+=c-e.previousIndex,n>s.dynamicMainBullets-1?n=s.dynamicMainBullets-1:n<0&&(n=0)),i=c-n,l=i+(Math.min(a.length,s.dynamicMainBullets)-1),p=(l+i)/2),a.removeClass(["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`)).join(" ")),d.length>1)a.each((e=>{const t=$(e),a=t.index();a===c&&t.addClass(s.bulletActiveClass),s.dynamicBullets&&(a>=i&&a<=l&&t.addClass(`${s.bulletActiveClass}-main`),a===i&&o(t,"prev"),a===l&&o(t,"next"))}));else{const t=a.eq(c),r=t.index();if(t.addClass(s.bulletActiveClass),s.dynamicBullets){const t=a.eq(i),n=a.eq(l);for(let e=i;e<=l;e+=1)a.eq(e).addClass(`${s.bulletActiveClass}-main`);if(e.params.loop)if(r>=a.length-s.dynamicMainBullets){for(let e=s.dynamicMainBullets;e>=0;e-=1)a.eq(a.length-e).addClass(`${s.bulletActiveClass}-main`);a.eq(a.length-s.dynamicMainBullets-1).addClass(`${s.bulletActiveClass}-prev`)}else o(t,"prev"),o(n,"next");else o(t,"prev"),o(n,"next")}}if(s.dynamicBullets){const i=Math.min(a.length,s.dynamicMainBullets+4),n=(r*i-r)/2-p*r,l=t?"right":"left";a.css(e.isHorizontal()?l:"top",`${n}px`)}}if("fraction"===s.type&&(d.find(classesToSelector(s.currentClass)).text(s.formatFractionCurrent(c+1)),d.find(classesToSelector(s.totalClass)).text(s.formatFractionTotal(p))),"progressbar"===s.type){let t;t=s.progressbarOpposite?e.isHorizontal()?"vertical":"horizontal":e.isHorizontal()?"horizontal":"vertical";const a=(c+1)/p;let i=1,r=1;"horizontal"===t?i=a:r=a,d.find(classesToSelector(s.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${i}) scaleY(${r})`).transition(e.params.speed)}"custom"===s.type&&s.renderCustom?(d.html(s.renderCustom(e,c+1,p)),a("paginationRender",d[0])):a("paginationUpdate",d[0]),e.params.watchOverflow&&e.enabled&&d[e.isLocked?"addClass":"removeClass"](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.slides.length,i=e.pagination.$el;let r="";if("bullets"===t.type){let a=e.params.loop?Math.ceil((s-2*e.loopedSlides)/e.params.slidesPerGroup):e.snapGrid.length;e.params.freeMode&&e.params.freeMode.enabled&&!e.params.loop&&a>s&&(a=s);for(let s=0;s`;i.html(r),e.pagination.bullets=i.find(classesToSelector(t.bulletClass))}"fraction"===t.type&&(r=t.renderFraction?t.renderFraction.call(e,t.currentClass,t.totalClass):` / `,i.html(r)),"progressbar"===t.type&&(r=t.renderProgressbar?t.renderProgressbar.call(e,t.progressbarFillClass):``,i.html(r)),"custom"!==t.type&&a("paginationRender",e.pagination.$el[0])}function p(){e.params.pagination=createElementIfNotDefined(e,e.originalParams.pagination,e.params.pagination,{el:"swiper-pagination"});const t=e.params.pagination;if(!t.el)return;let s=$(t.el);0!==s.length&&(e.params.uniqueNavElements&&"string"==typeof t.el&&s.length>1&&(s=e.$el.find(t.el),s.length>1&&(s=s.filter((t=>$(t).parents(".swiper")[0]===e.el)))),"bullets"===t.type&&t.clickable&&s.addClass(t.clickableClass),s.addClass(t.modifierClass+t.type),s.addClass(t.modifierClass+e.params.direction),"bullets"===t.type&&t.dynamicBullets&&(s.addClass(`${t.modifierClass}${t.type}-dynamic`),n=0,t.dynamicMainBullets<1&&(t.dynamicMainBullets=1)),"progressbar"===t.type&&t.progressbarOpposite&&s.addClass(t.progressbarOppositeClass),t.clickable&&s.on("click",classesToSelector(t.bulletClass),(function(t){t.preventDefault();let s=$(this).index()*e.params.slidesPerGroup;e.params.loop&&(s+=e.loopedSlides),e.slideTo(s)})),Object.assign(e.pagination,{$el:s,el:s[0]}),e.enabled||s.addClass(t.lockClass))}function u(){const t=e.params.pagination;if(l())return;const s=e.pagination.$el;s.removeClass(t.hiddenClass),s.removeClass(t.modifierClass+t.type),s.removeClass(t.modifierClass+e.params.direction),e.pagination.bullets&&e.pagination.bullets.removeClass&&e.pagination.bullets.removeClass(t.bulletActiveClass),t.clickable&&s.off("click",classesToSelector(t.bulletClass))}s("init",(()=>{p(),c(),d()})),s("activeIndexChange",(()=>{(e.params.loop||void 0===e.snapIndex)&&d()})),s("snapIndexChange",(()=>{e.params.loop||d()})),s("slidesLengthChange",(()=>{e.params.loop&&(c(),d())})),s("snapGridLengthChange",(()=>{e.params.loop||(c(),d())})),s("destroy",(()=>{u()})),s("enable disable",(()=>{const{$el:t}=e.pagination;t&&t[e.enabled?"removeClass":"addClass"](e.params.pagination.lockClass)})),s("lock unlock",(()=>{d()})),s("click",((t,s)=>{const i=s.target,{$el:r}=e.pagination;if(e.params.pagination.el&&e.params.pagination.hideOnClick&&r.length>0&&!$(i).hasClass(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.hasClass(e.params.pagination.hiddenClass);a(!0===t?"paginationShow":"paginationHide"),r.toggleClass(e.params.pagination.hiddenClass)}})),Object.assign(e.pagination,{render:c,update:d,init:p,destroy:u})}function Scrollbar({swiper:e,extendParams:t,on:s,emit:a}){const i=getDocument();let r,n,l,o,d=!1,c=null,p=null;function u(){if(!e.params.scrollbar.el||!e.scrollbar.el)return;const{scrollbar:t,rtlTranslate:s,progress:a}=e,{$dragEl:i,$el:r}=t,o=e.params.scrollbar;let d=n,p=(l-n)*a;s?(p=-p,p>0?(d=n-p,p=0):-p+n>l&&(d=l+p)):p<0?(d=n+p,p=0):p+n>l&&(d=l-p),e.isHorizontal()?(i.transform(`translate3d(${p}px, 0, 0)`),i[0].style.width=`${d}px`):(i.transform(`translate3d(0px, ${p}px, 0)`),i[0].style.height=`${d}px`),o.hide&&(clearTimeout(c),r[0].style.opacity=1,c=setTimeout((()=>{r[0].style.opacity=0,r.transition(400)}),1e3))}function h(){if(!e.params.scrollbar.el||!e.scrollbar.el)return;const{scrollbar:t}=e,{$dragEl:s,$el:a}=t;s[0].style.width="",s[0].style.height="",l=e.isHorizontal()?a[0].offsetWidth:a[0].offsetHeight,o=e.size/(e.virtualSize+e.params.slidesOffsetBefore-(e.params.centeredSlides?e.snapGrid[0]:0)),n="auto"===e.params.scrollbar.dragSize?l*o:parseInt(e.params.scrollbar.dragSize,10),e.isHorizontal()?s[0].style.width=`${n}px`:s[0].style.height=`${n}px`,a[0].style.display=o>=1?"none":"",e.params.scrollbar.hide&&(a[0].style.opacity=0),e.params.watchOverflow&&e.enabled&&t.$el[e.isLocked?"addClass":"removeClass"](e.params.scrollbar.lockClass)}function m(t){return e.isHorizontal()?"touchstart"===t.type||"touchmove"===t.type?t.targetTouches[0].clientX:t.clientX:"touchstart"===t.type||"touchmove"===t.type?t.targetTouches[0].clientY:t.clientY}function f(t){const{scrollbar:s,rtlTranslate:a}=e,{$el:i}=s;let o;o=(m(t)-i.offset()[e.isHorizontal()?"left":"top"]-(null!==r?r:n/2))/(l-n),o=Math.max(Math.min(o,1),0),a&&(o=1-o);const d=e.minTranslate()+(e.maxTranslate()-e.minTranslate())*o;e.updateProgress(d),e.setTranslate(d),e.updateActiveIndex(),e.updateSlidesClasses()}function g(t){const s=e.params.scrollbar,{scrollbar:i,$wrapperEl:n}=e,{$el:l,$dragEl:o}=i;d=!0,r=t.target===o[0]||t.target===o?m(t)-t.target.getBoundingClientRect()[e.isHorizontal()?"left":"top"]:null,t.preventDefault(),t.stopPropagation(),n.transition(100),o.transition(100),f(t),clearTimeout(p),l.transition(0),s.hide&&l.css("opacity",1),e.params.cssMode&&e.$wrapperEl.css("scroll-snap-type","none"),a("scrollbarDragStart",t)}function v(t){const{scrollbar:s,$wrapperEl:i}=e,{$el:r,$dragEl:n}=s;d&&(t.preventDefault?t.preventDefault():t.returnValue=!1,f(t),i.transition(0),r.transition(0),n.transition(0),a("scrollbarDragMove",t))}function w(t){const s=e.params.scrollbar,{scrollbar:i,$wrapperEl:r}=e,{$el:n}=i;d&&(d=!1,e.params.cssMode&&(e.$wrapperEl.css("scroll-snap-type",""),r.transition("")),s.hide&&(clearTimeout(p),p=nextTick((()=>{n.css("opacity",0),n.transition(400)}),1e3)),a("scrollbarDragEnd",t),s.snapOnRelease&&e.slideToClosest())}function b(t){const{scrollbar:s,touchEventsTouch:a,touchEventsDesktop:r,params:n,support:l}=e,o=s.$el[0],d=!(!l.passiveListener||!n.passiveListeners)&&{passive:!1,capture:!1},c=!(!l.passiveListener||!n.passiveListeners)&&{passive:!0,capture:!1};if(!o)return;const p="on"===t?"addEventListener":"removeEventListener";l.touch?(o[p](a.start,g,d),o[p](a.move,v,d),o[p](a.end,w,c)):(o[p](r.start,g,d),i[p](r.move,v,d),i[p](r.end,w,c))}function x(){const{scrollbar:t,$el:s}=e;e.params.scrollbar=createElementIfNotDefined(e,e.originalParams.scrollbar,e.params.scrollbar,{el:"swiper-scrollbar"});const a=e.params.scrollbar;if(!a.el)return;let i=$(a.el);e.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.find(a.el).length&&(i=s.find(a.el));let r=i.find(`.${e.params.scrollbar.dragClass}`);0===r.length&&(r=$(`
`),i.append(r)),Object.assign(t,{$el:i,el:i[0],$dragEl:r,dragEl:r[0]}),a.draggable&&e.params.scrollbar.el&&b("on"),i&&i[e.enabled?"removeClass":"addClass"](e.params.scrollbar.lockClass)}function y(){e.params.scrollbar.el&&b("off")}t({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag"}}),e.scrollbar={el:null,dragEl:null,$el:null,$dragEl:null},s("init",(()=>{x(),h(),u()})),s("update resize observerUpdate lock unlock",(()=>{h()})),s("setTranslate",(()=>{u()})),s("setTransition",((t,s)=>{!function(t){e.params.scrollbar.el&&e.scrollbar.el&&e.scrollbar.$dragEl.transition(t)}(s)})),s("enable disable",(()=>{const{$el:t}=e.scrollbar;t&&t[e.enabled?"removeClass":"addClass"](e.params.scrollbar.lockClass)})),s("destroy",(()=>{y()})),Object.assign(e.scrollbar,{updateSize:h,setTranslate:u,init:x,destroy:y})}function Parallax({swiper:e,extendParams:t,on:s}){t({parallax:{enabled:!1}});const a=(t,s)=>{const{rtl:a}=e,i=$(t),r=a?-1:1,n=i.attr("data-swiper-parallax")||"0";let l=i.attr("data-swiper-parallax-x"),o=i.attr("data-swiper-parallax-y");const d=i.attr("data-swiper-parallax-scale"),c=i.attr("data-swiper-parallax-opacity");if(l||o?(l=l||"0",o=o||"0"):e.isHorizontal()?(l=n,o="0"):(o=n,l="0"),l=l.indexOf("%")>=0?parseInt(l,10)*s*r+"%":l*s*r+"px",o=o.indexOf("%")>=0?parseInt(o,10)*s+"%":o*s+"px",null!=c){const e=c-(c-1)*(1-Math.abs(s));i[0].style.opacity=e}if(null==d)i.transform(`translate3d(${l}, ${o}, 0px)`);else{const e=d-(d-1)*(1-Math.abs(s));i.transform(`translate3d(${l}, ${o}, 0px) scale(${e})`)}},i=()=>{const{$el:t,slides:s,progress:i,snapGrid:r}=e;t.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{a(e,i)})),s.each(((t,s)=>{let n=t.progress;e.params.slidesPerGroup>1&&"auto"!==e.params.slidesPerView&&(n+=Math.ceil(s/2)-i*(r.length-1)),n=Math.min(Math.max(n,-1),1),$(t).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{a(e,n)}))}))};s("beforeInit",(()=>{e.params.parallax.enabled&&(e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0)})),s("init",(()=>{e.params.parallax.enabled&&i()})),s("setTranslate",(()=>{e.params.parallax.enabled&&i()})),s("setTransition",((t,s)=>{e.params.parallax.enabled&&((t=e.params.speed)=>{const{$el:s}=e;s.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{const s=$(e);let a=parseInt(s.attr("data-swiper-parallax-duration"),10)||t;0===t&&(a=0),s.transition(a)}))})(s)}))}function Zoom({swiper:e,extendParams:t,on:s,emit:a}){const i=getWindow();t({zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),e.zoom={enabled:!1};let r,n,l,o=1,d=!1;const c={$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:{}},u={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let h=1;function m(e){if(e.targetTouches.length<2)return 1;const t=e.targetTouches[0].pageX,s=e.targetTouches[0].pageY,a=e.targetTouches[1].pageX,i=e.targetTouches[1].pageY;return Math.sqrt((a-t)**2+(i-s)**2)}function f(t){const s=e.support,a=e.params.zoom;if(n=!1,l=!1,!s.gestures){if("touchstart"!==t.type||"touchstart"===t.type&&t.targetTouches.length<2)return;n=!0,c.scaleStart=m(t)}c.$slideEl&&c.$slideEl.length||(c.$slideEl=$(t.target).closest(`.${e.params.slideClass}`),0===c.$slideEl.length&&(c.$slideEl=e.slides.eq(e.activeIndex)),c.$imageEl=c.$slideEl.find(`.${a.containerClass}`).eq(0).find("img, svg, canvas, picture, .swiper-zoom-target"),c.$imageWrapEl=c.$imageEl.parent(`.${a.containerClass}`),c.maxRatio=c.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,0!==c.$imageWrapEl.length)?(c.$imageEl&&c.$imageEl.transition(0),d=!0):c.$imageEl=void 0}function g(t){const s=e.support,a=e.params.zoom,i=e.zoom;if(!s.gestures){if("touchmove"!==t.type||"touchmove"===t.type&&t.targetTouches.length<2)return;l=!0,c.scaleMove=m(t)}c.$imageEl&&0!==c.$imageEl.length?(s.gestures?i.scale=t.scale*o:i.scale=c.scaleMove/c.scaleStart*o,i.scale>c.maxRatio&&(i.scale=c.maxRatio-1+(i.scale-c.maxRatio+1)**.5),i.scalep.touchesStart.x))return void(p.isTouched=!1);if(!e.isHorizontal()&&(Math.floor(p.minY)===Math.floor(p.startY)&&p.touchesCurrent.yp.touchesStart.y))return void(p.isTouched=!1)}t.cancelable&&t.preventDefault(),t.stopPropagation(),p.isMoved=!0,p.currentX=p.touchesCurrent.x-p.touchesStart.x+p.startX,p.currentY=p.touchesCurrent.y-p.touchesStart.y+p.startY,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),u.prevPositionX||(u.prevPositionX=p.touchesCurrent.x),u.prevPositionY||(u.prevPositionY=p.touchesCurrent.y),u.prevTime||(u.prevTime=Date.now()),u.x=(p.touchesCurrent.x-u.prevPositionX)/(Date.now()-u.prevTime)/2,u.y=(p.touchesCurrent.y-u.prevPositionY)/(Date.now()-u.prevTime)/2,Math.abs(p.touchesCurrent.x-u.prevPositionX)<2&&(u.x=0),Math.abs(p.touchesCurrent.y-u.prevPositionY)<2&&(u.y=0),u.prevPositionX=p.touchesCurrent.x,u.prevPositionY=p.touchesCurrent.y,u.prevTime=Date.now(),c.$imageWrapEl.transform(`translate3d(${p.currentX}px, ${p.currentY}px,0)`)}}function b(){const t=e.zoom;c.$slideEl&&e.previousIndex!==e.activeIndex&&(c.$imageEl&&c.$imageEl.transform("translate3d(0,0,0) scale(1)"),c.$imageWrapEl&&c.$imageWrapEl.transform("translate3d(0,0,0)"),t.scale=1,o=1,c.$slideEl=void 0,c.$imageEl=void 0,c.$imageWrapEl=void 0)}function x(t){const s=e.zoom,a=e.params.zoom;if(c.$slideEl||(t&&t.target&&(c.$slideEl=$(t.target).closest(`.${e.params.slideClass}`)),c.$slideEl||(e.params.virtual&&e.params.virtual.enabled&&e.virtual?c.$slideEl=e.$wrapperEl.children(`.${e.params.slideActiveClass}`):c.$slideEl=e.slides.eq(e.activeIndex)),c.$imageEl=c.$slideEl.find(`.${a.containerClass}`).eq(0).find("img, svg, canvas, picture, .swiper-zoom-target"),c.$imageWrapEl=c.$imageEl.parent(`.${a.containerClass}`)),!c.$imageEl||0===c.$imageEl.length||!c.$imageWrapEl||0===c.$imageWrapEl.length)return;let r,n,l,d,u,h,m,f,g,v,w,b,x,y,E,T,S,C;e.params.cssMode&&(e.wrapperEl.style.overflow="hidden",e.wrapperEl.style.touchAction="none"),c.$slideEl.addClass(`${a.zoomedSlideClass}`),void 0===p.touchesStart.x&&t?(r="touchend"===t.type?t.changedTouches[0].pageX:t.pageX,n="touchend"===t.type?t.changedTouches[0].pageY:t.pageY):(r=p.touchesStart.x,n=p.touchesStart.y),s.scale=c.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,o=c.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,t?(S=c.$slideEl[0].offsetWidth,C=c.$slideEl[0].offsetHeight,l=c.$slideEl.offset().left+i.scrollX,d=c.$slideEl.offset().top+i.scrollY,u=l+S/2-r,h=d+C/2-n,g=c.$imageEl[0].offsetWidth,v=c.$imageEl[0].offsetHeight,w=g*s.scale,b=v*s.scale,x=Math.min(S/2-w/2,0),y=Math.min(C/2-b/2,0),E=-x,T=-y,m=u*s.scale,f=h*s.scale,mE&&(m=E),fT&&(f=T)):(m=0,f=0),c.$imageWrapEl.transition(300).transform(`translate3d(${m}px, ${f}px,0)`),c.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${s.scale})`)}function y(){const t=e.zoom,s=e.params.zoom;c.$slideEl||(e.params.virtual&&e.params.virtual.enabled&&e.virtual?c.$slideEl=e.$wrapperEl.children(`.${e.params.slideActiveClass}`):c.$slideEl=e.slides.eq(e.activeIndex),c.$imageEl=c.$slideEl.find(`.${s.containerClass}`).eq(0).find("img, svg, canvas, picture, .swiper-zoom-target"),c.$imageWrapEl=c.$imageEl.parent(`.${s.containerClass}`)),c.$imageEl&&0!==c.$imageEl.length&&c.$imageWrapEl&&0!==c.$imageWrapEl.length&&(e.params.cssMode&&(e.wrapperEl.style.overflow="",e.wrapperEl.style.touchAction=""),t.scale=1,o=1,c.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"),c.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"),c.$slideEl.removeClass(`${s.zoomedSlideClass}`),c.$slideEl=void 0)}function E(t){const s=e.zoom;s.scale&&1!==s.scale?y():x(t)}function T(){const t=e.support;return{passiveListener:!("touchstart"!==e.touchEvents.start||!t.passiveListener||!e.params.passiveListeners)&&{passive:!0,capture:!1},activeListenerWithCapture:!t.passiveListener||{passive:!1,capture:!0}}}function S(){return`.${e.params.slideClass}`}function C(t){const{passiveListener:s}=T(),a=S();e.$wrapperEl[t]("gesturestart",a,f,s),e.$wrapperEl[t]("gesturechange",a,g,s),e.$wrapperEl[t]("gestureend",a,v,s)}function M(){r||(r=!0,C("on"))}function P(){r&&(r=!1,C("off"))}function k(){const t=e.zoom;if(t.enabled)return;t.enabled=!0;const s=e.support,{passiveListener:a,activeListenerWithCapture:i}=T(),r=S();s.gestures?(e.$wrapperEl.on(e.touchEvents.start,M,a),e.$wrapperEl.on(e.touchEvents.end,P,a)):"touchstart"===e.touchEvents.start&&(e.$wrapperEl.on(e.touchEvents.start,r,f,a),e.$wrapperEl.on(e.touchEvents.move,r,g,i),e.$wrapperEl.on(e.touchEvents.end,r,v,a),e.touchEvents.cancel&&e.$wrapperEl.on(e.touchEvents.cancel,r,v,a)),e.$wrapperEl.on(e.touchEvents.move,`.${e.params.zoom.containerClass}`,w,i)}function z(){const t=e.zoom;if(!t.enabled)return;const s=e.support;t.enabled=!1;const{passiveListener:a,activeListenerWithCapture:i}=T(),r=S();s.gestures?(e.$wrapperEl.off(e.touchEvents.start,M,a),e.$wrapperEl.off(e.touchEvents.end,P,a)):"touchstart"===e.touchEvents.start&&(e.$wrapperEl.off(e.touchEvents.start,r,f,a),e.$wrapperEl.off(e.touchEvents.move,r,g,i),e.$wrapperEl.off(e.touchEvents.end,r,v,a),e.touchEvents.cancel&&e.$wrapperEl.off(e.touchEvents.cancel,r,v,a)),e.$wrapperEl.off(e.touchEvents.move,`.${e.params.zoom.containerClass}`,w,i)}Object.defineProperty(e.zoom,"scale",{get:()=>h,set(e){if(h!==e){const t=c.$imageEl?c.$imageEl[0]:void 0,s=c.$slideEl?c.$slideEl[0]:void 0;a("zoomChange",e,t,s)}h=e}}),s("init",(()=>{e.params.zoom.enabled&&k()})),s("destroy",(()=>{z()})),s("touchStart",((t,s)=>{e.zoom.enabled&&function(t){const s=e.device;c.$imageEl&&0!==c.$imageEl.length&&(p.isTouched||(s.android&&t.cancelable&&t.preventDefault(),p.isTouched=!0,p.touchesStart.x="touchstart"===t.type?t.targetTouches[0].pageX:t.pageX,p.touchesStart.y="touchstart"===t.type?t.targetTouches[0].pageY:t.pageY))}(s)})),s("touchEnd",((t,s)=>{e.zoom.enabled&&function(){const t=e.zoom;if(!c.$imageEl||0===c.$imageEl.length)return;if(!p.isTouched||!p.isMoved)return p.isTouched=!1,void(p.isMoved=!1);p.isTouched=!1,p.isMoved=!1;let s=300,a=300;const i=u.x*s,r=p.currentX+i,n=u.y*a,l=p.currentY+n;0!==u.x&&(s=Math.abs((r-p.currentX)/u.x)),0!==u.y&&(a=Math.abs((l-p.currentY)/u.y));const o=Math.max(s,a);p.currentX=r,p.currentY=l;const d=p.width*t.scale,h=p.height*t.scale;p.minX=Math.min(c.slideWidth/2-d/2,0),p.maxX=-p.minX,p.minY=Math.min(c.slideHeight/2-h/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),c.$imageWrapEl.transition(o).transform(`translate3d(${p.currentX}px, ${p.currentY}px,0)`)}()})),s("doubleTap",((t,s)=>{!e.animating&&e.params.zoom.enabled&&e.zoom.enabled&&e.params.zoom.toggle&&E(s)})),s("transitionEnd",(()=>{e.zoom.enabled&&e.params.zoom.enabled&&b()})),s("slideChange",(()=>{e.zoom.enabled&&e.params.zoom.enabled&&e.params.cssMode&&b()})),Object.assign(e.zoom,{enable:k,disable:z,in:x,out:y,toggle:E})}function Lazy({swiper:e,extendParams:t,on:s,emit:a}){t({lazy:{checkInView:!1,enabled:!1,loadPrevNext:!1,loadPrevNextAmount:1,loadOnTransitionStart:!1,scrollingElement:"",elementClass:"swiper-lazy",loadingClass:"swiper-lazy-loading",loadedClass:"swiper-lazy-loaded",preloaderClass:"swiper-lazy-preloader"}}),e.lazy={};let i=!1,r=!1;function n(t,s=!0){const i=e.params.lazy;if(void 0===t)return;if(0===e.slides.length)return;const r=e.virtual&&e.params.virtual.enabled?e.$wrapperEl.children(`.${e.params.slideClass}[data-swiper-slide-index="${t}"]`):e.slides.eq(t),l=r.find(`.${i.elementClass}:not(.${i.loadedClass}):not(.${i.loadingClass})`);!r.hasClass(i.elementClass)||r.hasClass(i.loadedClass)||r.hasClass(i.loadingClass)||l.push(r[0]),0!==l.length&&l.each((t=>{const l=$(t);l.addClass(i.loadingClass);const o=l.attr("data-background"),d=l.attr("data-src"),c=l.attr("data-srcset"),p=l.attr("data-sizes"),u=l.parent("picture");e.loadImage(l[0],d||o,c,p,!1,(()=>{if(null!=e&&e&&(!e||e.params)&&!e.destroyed){if(o?(l.css("background-image",`url("${o}")`),l.removeAttr("data-background")):(c&&(l.attr("srcset",c),l.removeAttr("data-srcset")),p&&(l.attr("sizes",p),l.removeAttr("data-sizes")),u.length&&u.children("source").each((e=>{const t=$(e);t.attr("data-srcset")&&(t.attr("srcset",t.attr("data-srcset")),t.removeAttr("data-srcset"))})),d&&(l.attr("src",d),l.removeAttr("data-src"))),l.addClass(i.loadedClass).removeClass(i.loadingClass),r.find(`.${i.preloaderClass}`).remove(),e.params.loop&&s){const t=r.attr("data-swiper-slide-index");if(r.hasClass(e.params.slideDuplicateClass)){n(e.$wrapperEl.children(`[data-swiper-slide-index="${t}"]:not(.${e.params.slideDuplicateClass})`).index(),!1)}else{n(e.$wrapperEl.children(`.${e.params.slideDuplicateClass}[data-swiper-slide-index="${t}"]`).index(),!1)}}a("lazyImageReady",r[0],l[0]),e.params.autoHeight&&e.updateAutoHeight()}})),a("lazyImageLoad",r[0],l[0])}))}function l(){const{$wrapperEl:t,params:s,slides:a,activeIndex:i}=e,l=e.virtual&&s.virtual.enabled,o=s.lazy;let d=s.slidesPerView;function c(e){if(l){if(t.children(`.${s.slideClass}[data-swiper-slide-index="${e}"]`).length)return!0}else if(a[e])return!0;return!1}function p(e){return l?$(e).attr("data-swiper-slide-index"):$(e).index()}if("auto"===d&&(d=0),r||(r=!0),e.params.watchSlidesProgress)t.children(`.${s.slideVisibleClass}`).each((e=>{n(l?$(e).attr("data-swiper-slide-index"):$(e).index())}));else if(d>1)for(let e=i;e1||o.loadPrevNextAmount&&o.loadPrevNextAmount>1){const e=o.loadPrevNextAmount,t=d,s=Math.min(i+t+Math.max(e,t),a.length),r=Math.max(i-Math.max(t,e),0);for(let e=i+d;e0&&n(p(e));const a=t.children(`.${s.slidePrevClass}`);a.length>0&&n(p(a))}}function o(){const t=getWindow();if(!e||e.destroyed)return;const s=e.params.lazy.scrollingElement?$(e.params.lazy.scrollingElement):$(t),a=s[0]===t,r=a?t.innerWidth:s[0].offsetWidth,n=a?t.innerHeight:s[0].offsetHeight,d=e.$el.offset(),{rtlTranslate:c}=e;let p=!1;c&&(d.left-=e.$el[0].scrollLeft);const u=[[d.left,d.top],[d.left+e.width,d.top],[d.left,d.top+e.height],[d.left+e.width,d.top+e.height]];for(let e=0;e=0&&t[0]<=r&&t[1]>=0&&t[1]<=n){if(0===t[0]&&0===t[1])continue;p=!0}}const h=!("touchstart"!==e.touchEvents.start||!e.support.passiveListener||!e.params.passiveListeners)&&{passive:!0,capture:!1};p?(l(),s.off("scroll",o,h)):i||(i=!0,s.on("scroll",o,h))}s("beforeInit",(()=>{e.params.lazy.enabled&&e.params.preloadImages&&(e.params.preloadImages=!1)})),s("init",(()=>{e.params.lazy.enabled&&(e.params.lazy.checkInView?o():l())})),s("scroll",(()=>{e.params.freeMode&&e.params.freeMode.enabled&&!e.params.freeMode.sticky&&l()})),s("scrollbarDragMove resize _freeModeNoMomentumRelease",(()=>{e.params.lazy.enabled&&(e.params.lazy.checkInView?o():l())})),s("transitionStart",(()=>{e.params.lazy.enabled&&(e.params.lazy.loadOnTransitionStart||!e.params.lazy.loadOnTransitionStart&&!r)&&(e.params.lazy.checkInView?o():l())})),s("transitionEnd",(()=>{e.params.lazy.enabled&&!e.params.lazy.loadOnTransitionStart&&(e.params.lazy.checkInView?o():l())})),s("slideChange",(()=>{const{lazy:t,cssMode:s,watchSlidesProgress:a,touchReleaseOnEdges:i,resistanceRatio:r}=e.params;t.enabled&&(s||a&&(i||0===r))&&l()})),Object.assign(e.lazy,{load:l,loadInSlide:n})}function Controller({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",(()=>{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.setTranslate(s,a)})),s("setTransition",((t,s,a)=>{e.controller.control&&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){const s=e.rtlTranslate?-e.translate:e.translate;"slide"===e.params.controller.by&&(!function(t){e.controller.spline||(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()),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.$wrapperEl.transitionEnd((()=>{i&&(s.params.loop&&"slide"===e.params.controller.by&&s.loopFix(),s.transitionEnd())})))}if(Array.isArray(i))for(r=0;r0&&(e.isBeginning?(c(s),n(s)):(p(s),r(s))),t&&t.length>0&&(e.isEnd?(c(t),n(t)):(p(t),r(t)))}function m(){return e.pagination&&e.params.pagination.clickable&&e.pagination.bullets&&e.pagination.bullets.length}const f=(e,t,s)=>{r(e),"BUTTON"!==e[0].tagName&&(l(e,"button"),e.on("keydown",u)),d(e,s),function(e,t){e.attr("aria-controls",t)}(e,t)};function g(){const t=e.params.a11y;e.$el.append(a);const s=e.$el;t.containerRoleDescriptionMessage&&o(s,t.containerRoleDescriptionMessage),t.containerMessage&&d(s,t.containerMessage);const i=e.$wrapperEl,r=i.attr("id")||`swiper-wrapper-${function(e=16){return"x".repeat(e).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}(16)}`,n=e.params.autoplay&&e.params.autoplay.enabled?"off":"polite";var c;c=r,i.attr("id",c),function(e,t){e.attr("aria-live",t)}(i,n),t.itemRoleDescriptionMessage&&o($(e.slides),t.itemRoleDescriptionMessage),l($(e.slides),t.slideRole);const p=e.params.loop?e.slides.filter((t=>!t.classList.contains(e.params.slideDuplicateClass))).length:e.slides.length;let h,g;e.slides.each(((s,a)=>{const i=$(s),r=e.params.loop?parseInt(i.attr("data-swiper-slide-index"),10):a;d(i,t.slideLabelMessage.replace(/\{\{index\}\}/,r+1).replace(/\{\{slidesLength\}\}/,p))})),e.navigation&&e.navigation.$nextEl&&(h=e.navigation.$nextEl),e.navigation&&e.navigation.$prevEl&&(g=e.navigation.$prevEl),h&&h.length&&f(h,r,t.nextSlideMessage),g&&g.length&&f(g,r,t.prevSlideMessage),m()&&e.pagination.$el.on("keydown",classesToSelector(e.params.pagination.bulletClass),u)}s("beforeInit",(()=>{a=$(``)})),s("afterInit",(()=>{e.params.a11y.enabled&&(g(),h())})),s("toEdge",(()=>{e.params.a11y.enabled&&h()})),s("fromEdge",(()=>{e.params.a11y.enabled&&h()})),s("paginationUpdate",(()=>{e.params.a11y.enabled&&function(){const t=e.params.a11y;m()&&e.pagination.bullets.each((s=>{const a=$(s);r(a),e.params.pagination.renderBullet||(l(a,"button"),d(a,t.paginationBulletMessage.replace(/\{\{index\}\}/,a.index()+1)))}))}()})),s("destroy",(()=>{e.params.a11y.enabled&&function(){let t,s;a&&a.length>0&&a.remove(),e.navigation&&e.navigation.$nextEl&&(t=e.navigation.$nextEl),e.navigation&&e.navigation.$prevEl&&(s=e.navigation.$prevEl),t&&t.off("keydown",u),s&&s.off("keydown",u),m()&&e.pagination.$el.off("keydown",classesToSelector(e.params.pagination.bulletClass),u)}()}))}function History({swiper:e,extendParams:t,on:s}){t({history:{enabled:!1,root:"",replaceState:!1,key:"slides"}});let a=!1,i={};const r=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),n=e=>{const t=getWindow();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]}},l=(t,s)=>{const i=getWindow();if(!a||!e.params.history.enabled)return;let n;n=e.params.url?new URL(e.params.url):i.location;const l=e.slides.eq(s);let o=r(l.attr("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)),o=`${s}/${t}/${o}`}else n.pathname.includes(t)||(o=`${t}/${o}`);const d=i.history.state;d&&d.value===o||(e.params.history.replaceState?i.history.replaceState({value:o},null,o):i.history.pushState({value:o},null,o))},o=(t,s,a)=>{if(s)for(let i=0,n=e.slides.length;i{i=n(e.params.url),o(e.params.speed,e.paths.value,!1)};s("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);a=!0,i=n(e.params.url),(i.key||i.value)&&(o(0,i.value,e.params.runCallbacksOnInit),e.params.history.replaceState||t.addEventListener("popstate",d))}})()})),s("destroy",(()=>{e.params.history.enabled&&(()=>{const t=getWindow();e.params.history.replaceState||t.removeEventListener("popstate",d)})()})),s("transitionEnd _freeModeNoMomentumRelease",(()=>{a&&l(e.params.history.key,e.activeIndex)})),s("slideChange",(()=>{a&&e.params.cssMode&&l(e.params.history.key,e.activeIndex)}))}function HashNavigation({swiper:e,extendParams:t,emit:s,on:a}){let i=!1;const r=getDocument(),n=getWindow();t({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1}});const l=()=>{s("hashChange");const t=r.location.hash.replace("#","");if(t!==e.slides.eq(e.activeIndex).attr("data-hash")){const s=e.$wrapperEl.children(`.${e.params.slideClass}[data-hash="${t}"]`).index();if(void 0===s)return;e.slideTo(s)}},o=()=>{if(i&&e.params.hashNavigation.enabled)if(e.params.hashNavigation.replaceState&&n.history&&n.history.replaceState)n.history.replaceState(null,null,`#${e.slides.eq(e.activeIndex).attr("data-hash")}`||""),s("hashSet");else{const t=e.slides.eq(e.activeIndex),a=t.attr("data-hash")||t.attr("data-history");r.location.hash=a||"",s("hashSet")}};a("init",(()=>{e.params.hashNavigation.enabled&&(()=>{if(!e.params.hashNavigation.enabled||e.params.history&&e.params.history.enabled)return;i=!0;const t=r.location.hash.replace("#","");if(t){const s=0;for(let a=0,i=e.slides.length;a{e.params.hashNavigation.enabled&&e.params.hashNavigation.watchState&&$(n).off("hashchange",l)})),a("transitionEnd _freeModeNoMomentumRelease",(()=>{i&&o()})),a("slideChange",(()=>{i&&e.params.cssMode&&o()}))}function Autoplay({swiper:e,extendParams:t,on:s,emit:a}){let i;function r(){const t=e.slides.eq(e.activeIndex);let s=e.params.autoplay.delay;t.attr("data-swiper-autoplay")&&(s=t.attr("data-swiper-autoplay")||e.params.autoplay.delay),clearTimeout(i),i=nextTick((()=>{let t;e.params.autoplay.reverseDirection?e.params.loop?(e.loopFix(),t=e.slidePrev(e.params.speed,!0,!0),a("autoplay")):e.isBeginning?e.params.autoplay.stopOnLastSlide?l():(t=e.slideTo(e.slides.length-1,e.params.speed,!0,!0),a("autoplay")):(t=e.slidePrev(e.params.speed,!0,!0),a("autoplay")):e.params.loop?(e.loopFix(),t=e.slideNext(e.params.speed,!0,!0),a("autoplay")):e.isEnd?e.params.autoplay.stopOnLastSlide?l():(t=e.slideTo(0,e.params.speed,!0,!0),a("autoplay")):(t=e.slideNext(e.params.speed,!0,!0),a("autoplay")),(e.params.cssMode&&e.autoplay.running||!1===t)&&r()}),s)}function n(){return void 0===i&&(!e.autoplay.running&&(e.autoplay.running=!0,a("autoplayStart"),r(),!0))}function l(){return!!e.autoplay.running&&(void 0!==i&&(i&&(clearTimeout(i),i=void 0),e.autoplay.running=!1,a("autoplayStop"),!0))}function o(t){e.autoplay.running&&(e.autoplay.paused||(i&&clearTimeout(i),e.autoplay.paused=!0,0!==t&&e.params.autoplay.waitForTransition?["transitionend","webkitTransitionEnd"].forEach((t=>{e.$wrapperEl[0].addEventListener(t,c)})):(e.autoplay.paused=!1,r())))}function d(){const t=getDocument();"hidden"===t.visibilityState&&e.autoplay.running&&o(),"visible"===t.visibilityState&&e.autoplay.paused&&(r(),e.autoplay.paused=!1)}function c(t){e&&!e.destroyed&&e.$wrapperEl&&t.target===e.$wrapperEl[0]&&(["transitionend","webkitTransitionEnd"].forEach((t=>{e.$wrapperEl[0].removeEventListener(t,c)})),e.autoplay.paused=!1,e.autoplay.running?r():l())}function p(){e.params.autoplay.disableOnInteraction?l():o(),["transitionend","webkitTransitionEnd"].forEach((t=>{e.$wrapperEl[0].removeEventListener(t,c)}))}function u(){e.params.autoplay.disableOnInteraction||(e.autoplay.paused=!1,r())}e.autoplay={running:!1,paused:!1},t({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}}),s("init",(()=>{if(e.params.autoplay.enabled){n();getDocument().addEventListener("visibilitychange",d),e.params.autoplay.pauseOnMouseEnter&&(e.$el.on("mouseenter",p),e.$el.on("mouseleave",u))}})),s("beforeTransitionStart",((t,s,a)=>{e.autoplay.running&&(a||!e.params.autoplay.disableOnInteraction?e.autoplay.pause(s):l())})),s("sliderFirstMove",(()=>{e.autoplay.running&&(e.params.autoplay.disableOnInteraction?l():o())})),s("touchEnd",(()=>{e.params.cssMode&&e.autoplay.paused&&!e.params.autoplay.disableOnInteraction&&r()})),s("destroy",(()=>{e.$el.off("mouseenter",p),e.$el.off("mouseleave",u),e.autoplay.running&&l();getDocument().removeEventListener("visibilitychange",d)})),Object.assign(e.autoplay,{pause:o,run:r,start:n,stop:l})}function Thumb({swiper:e,extendParams:t,on:s}){t({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let a=!1,i=!1;function r(){const t=e.thumbs.swiper;if(!t)return;const s=t.clickedIndex,a=t.clickedSlide;if(a&&$(a).hasClass(e.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;if(i=t.params.loop?parseInt($(t.clickedSlide).attr("data-swiper-slide-index"),10):s,e.params.loop){let t=e.activeIndex;e.slides.eq(t).hasClass(e.params.slideDuplicateClass)&&(e.loopFix(),e._clientLeft=e.$wrapperEl[0].clientLeft,t=e.activeIndex);const s=e.slides.eq(t).prevAll(`[data-swiper-slide-index="${i}"]`).eq(0).index(),a=e.slides.eq(t).nextAll(`[data-swiper-slide-index="${i}"]`).eq(0).index();i=void 0===s?a:void 0===a?s:a-t1?a:o:a-oe.previousIndex?"next":"prev"}else n=e.realIndex,l=n>e.previousIndex?"next":"prev";r&&(n+="next"===l?i:-1*i),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(n)<0&&(s.params.centeredSlides?n=n>o?n-Math.floor(a/2)+1:n+Math.floor(a/2)-1:n>o&&s.params.slidesPerGroup,s.slideTo(n,t?0:void 0))}let n=1;const l=e.params.thumbs.slideThumbActiveClass;if(e.params.slidesPerView>1&&!e.params.centeredSlides&&(n=e.params.slidesPerView),e.params.thumbs.multipleActiveThumbs||(n=1),n=Math.floor(n),s.slides.removeClass(l),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let t=0;t{const{thumbs:t}=e.params;t&&t.swiper&&(n(),l(!0))})),s("slideChange update resize observerUpdate",(()=>{e.thumbs.swiper&&l()})),s("setTransition",((t,s)=>{const a=e.thumbs.swiper;a&&a.setTransition(s)})),s("beforeDestroy",(()=>{const t=e.thumbs.swiper;t&&i&&t&&t.destroy()})),Object.assign(e.thumbs,{init:n,update:l})}function freeMode({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:{onTouchMove:function(){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:now()})},onTouchEnd:function({currentPos:t}){const{params:i,$wrapperEl:r,rtlTranslate:n,snapGrid:l,touchEventsData:o}=e,d=now()-o.touchStartTime;if(t<-e.minTranslate())e.slideTo(e.activeIndex);else if(t>-e.maxTranslate())e.slides.length1){const t=o.velocities.pop(),s=o.velocities.pop(),a=t.position-s.position,r=t.time-s.time;e.velocity=a/r,e.velocity/=2,Math.abs(e.velocity)150||now()-t.time>300)&&(e.velocity=0)}else e.velocity=0;e.velocity*=i.freeMode.momentumVelocityRatio,o.velocities.length=0;let t=1e3*i.freeMode.momentumRatio;const d=e.velocity*t;let c=e.translate+d;n&&(c=-c);let p,u=!1;const h=20*Math.abs(e.velocity)*i.freeMode.momentumBounceRatio;let m;if(ce.minTranslate())i.freeMode.momentumBounce?(c-e.minTranslate()>h&&(c=e.minTranslate()+h),p=e.minTranslate(),u=!0,o.allowMomentumBounce=!0):c=e.minTranslate(),i.loop&&i.centeredSlides&&(m=!0);else if(i.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),i.freeMode.sticky){const s=Math.abs((n?-c:c)-e.translate),a=e.slidesSizesGrid[e.activeIndex];t=s{e&&!e.destroyed&&o.allowMomentumBounce&&(s("momentumBounce"),e.setTransition(i.speed),setTimeout((()=>{e.setTranslate(p),r.transitionEnd((()=>{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,r.transitionEnd((()=>{e&&!e.destroyed&&e.transitionEnd()})))):e.updateProgress(c),e.updateActiveIndex(),e.updateSlidesClasses()}else{if(i.freeMode.sticky)return void e.slideToClosest();i.freeMode&&s("_freeModeNoMomentumRelease")}(!i.freeMode.momentum||d>=i.longSwipesMs)&&(e.updateProgress(),e.updateActiveIndex(),e.updateSlidesClasses())}}}})}function Grid({swiper:e,extendParams:t}){let s,a,i;t({grid:{rows:1,fill:"column"}});e.grid={initSlides:t=>{const{slidesPerView:r}=e.params,{rows:n,fill:l}=e.params.grid;a=s/n,i=Math.floor(t/n),s=Math.floor(t/n)===t/n?t:Math.ceil(t/n)*n,"auto"!==r&&"row"===l&&(s=Math.max(s,r*n))},updateSlide:(t,r,n,l)=>{const{slidesPerGroup:o,spaceBetween:d}=e.params,{rows:c,fill:p}=e.params.grid;let u,h,m;if("row"===p&&o>1){const e=Math.floor(t/(o*c)),a=t-c*o*e,i=0===e?o:Math.min(Math.ceil((n-e*c*o)/c),o);m=Math.floor(a/i),h=a-m*i+e*o,u=h+m*s/c,r.css({"-webkit-order":u,order:u})}else"column"===p?(h=Math.floor(t/c),m=t-h*c,(h>i||h===i&&m===c-1)&&(m+=1,m>=c&&(m=0,h+=1))):(m=Math.floor(t/a),h=t-m*a);r.css(l("margin-top"),0!==m?d&&`${d}px`:"")},updateWrapperSize:(t,a,i)=>{const{spaceBetween:r,centeredSlides:n,roundLengths:l}=e.params,{rows:o}=e.params.grid;if(e.virtualSize=(t+r)*s,e.virtualSize=Math.ceil(e.virtualSize/o)-r,e.$wrapperEl.css({[i("width")]:`${e.virtualSize+r}px`}),n){a.splice(0,a.length);const t=[];for(let s=0;s=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.eq(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)})),a("setTranslate",(()=>{s.params.effect===t&&i()})),a("setTransition",((e,a)=>{s.params.effect===t&&r(a)}))}function effectTarget(e,t){return e.transformEl?t.find(e.transformEl).css({"backface-visibility":"hidden","-webkit-backface-visibility":"hidden"}):t}function effectVirtualTransitionEnd({swiper:e,duration:t,transformEl:s,allSlides:a}){const{slides:i,activeIndex:r,$wrapperEl:n}=e;if(e.params.virtualTranslate&&0!==t){let t,l=!1;t=a?s?i.find(s):i:s?i.eq(r).find(s):i.eq(r),t.transitionEnd((()=>{if(l)return;if(!e||e.destroyed)return;l=!0,e.animating=!1;const t=["webkitTransitionEnd","transitionend"];for(let e=0;e{const{slides:t}=e,s=e.params.fadeEffect;for(let a=0;a{const{transformEl:s}=e.params.fadeEffect;(s?e.slides.find(s):e.slides).transition(t),effectVirtualTransitionEnd({swiper:e,duration:t,transformEl:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!e.params.cssMode})})}function EffectCube({swiper:e,extendParams:t,on:s}){t({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});effectInit({effect:"cube",swiper:e,on:s,setTranslate:()=>{const{$el:t,$wrapperEl:s,slides:a,width:i,height:r,rtlTranslate:n,size:l,browser:o}=e,d=e.params.cubeEffect,c=e.isHorizontal(),p=e.virtual&&e.params.virtual.enabled;let u,h=0;d.shadow&&(c?(u=s.find(".swiper-cube-shadow"),0===u.length&&(u=$('
'),s.append(u)),u.css({height:`${i}px`})):(u=t.find(".swiper-cube-shadow"),0===u.length&&(u=$('
'),t.append(u))));for(let e=0;e-1&&(h=90*s+90*o,n&&(h=90*-s-90*o)),t.transform(g),d.slideShadows){let e=c?t.find(".swiper-slide-shadow-left"):t.find(".swiper-slide-shadow-top"),s=c?t.find(".swiper-slide-shadow-right"):t.find(".swiper-slide-shadow-bottom");0===e.length&&(e=$(`
`),t.append(e)),0===s.length&&(s=$(`
`),t.append(s)),e.length&&(e[0].style.opacity=Math.max(-o,0)),s.length&&(s[0].style.opacity=Math.max(o,0))}}if(s.css({"-webkit-transform-origin":`50% 50% -${l/2}px`,"transform-origin":`50% 50% -${l/2}px`}),d.shadow)if(c)u.transform(`translate3d(0px, ${i/2+d.shadowOffset}px, ${-i/2}px) rotateX(90deg) rotateZ(0deg) scale(${d.shadowScale})`);else{const e=Math.abs(h)-90*Math.floor(Math.abs(h)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=d.shadowScale,a=d.shadowScale/t,i=d.shadowOffset;u.transform(`scale3d(${s}, 1, ${a}) translate3d(0px, ${r/2+i}px, ${-r/2/a}px) rotateX(-90deg)`)}const m=o.isSafari||o.isWebView?-l/2:0;s.transform(`translate3d(0px,0,${m}px) rotateX(${e.isHorizontal()?0:h}deg) rotateY(${e.isHorizontal()?-h:0}deg)`)},setTransition:t=>{const{$el:s,slides:a}=e;a.transition(t).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(t),e.params.cubeEffect.shadow&&!e.isHorizontal()&&s.find(".swiper-cube-shadow").transition(t)},perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})}function createShadow(e,t,s){const a="swiper-slide-shadow"+(s?`-${s}`:""),i=e.transformEl?t.find(e.transformEl):t;let r=i.children(`.${a}`);return r.length||(r=$(`
`),i.append(r)),r}function EffectFlip({swiper:e,extendParams:t,on:s}){t({flipEffect:{slideShadows:!0,limitRotation:!0,transformEl:null}});effectInit({effect:"flip",swiper:e,on:s,setTranslate:()=>{const{slides:t,rtlTranslate:s}=e,a=e.params.flipEffect;for(let i=0;i{const{transformEl:s}=e.params.flipEffect;(s?e.slides.find(s):e.slides).transition(t).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(t),effectVirtualTransitionEnd({swiper:e,duration:t,transformEl:s})},perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!e.params.cssMode})})}function EffectCoverflow({swiper:e,extendParams:t,on:s}){t({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0,transformEl:null}});effectInit({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;for(let e=0,t=a.length;e0?l:0),s.length&&(s[0].style.opacity=-l>0?-l:0)}}},setTransition:t=>{const{transformEl:s}=e.params.coverflowEffect;(s?e.slides.find(s):e.slides).transition(t).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(t)},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})}function EffectCreative({swiper:e,extendParams:t,on:s}){t({creativeEffect:{transformEl:null,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`;effectInit({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;if(l){const t=i[0]/2-e.params.slidesOffsetBefore||0;s.transform(`translateX(calc(50% - ${t}px))`)}for(let s=0;s0&&(f=r.prev,m=!0),u.forEach(((e,t)=>{u[t]=`calc(${e}px + (${a(f.translate[t])} * ${Math.abs(d*n)}))`})),h.forEach(((e,t)=>{h[t]=f.rotate[t]*Math.abs(d*n)})),i[0].style.zIndex=-Math.abs(Math.round(o))+t.length;const g=u.join(", "),v=`rotateX(${h[0]}deg) rotateY(${h[1]}deg) rotateZ(${h[2]}deg)`,w=c<0?`scale(${1+(1-f.scale)*c*n})`:`scale(${1-(1-f.scale)*c*n})`,b=c<0?1+(1-f.opacity)*c*n:1-(1-f.opacity)*c*n,x=`translate3d(${g}) ${v} ${w}`;if(m&&f.shadow||!m){let e=i.children(".swiper-slide-shadow");if(0===e.length&&f.shadow&&(e=createShadow(r,i)),e.length){const t=r.shadowPerProgress?d*(1/r.limitProgress):d;e[0].style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const y=effectTarget(r,i);y.transform(x).css({opacity:b}),f.origin&&y.css("transform-origin",f.origin)}},setTransition:t=>{const{transformEl:s}=e.params.creativeEffect;(s?e.slides.find(s):e.slides).transition(t).find(".swiper-slide-shadow").transition(t),effectVirtualTransitionEnd({swiper:e,duration:t,transformEl:s,allSlides:!0})},perspective:()=>e.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!e.params.cssMode})})}function EffectCards({swiper:e,extendParams:t,on:s}){t({cardsEffect:{slideShadows:!0,transformEl:null}});effectInit({effect:"cards",swiper:e,on:s,setTranslate:()=>{const{slides:t,activeIndex:s}=e,a=e.params.cardsEffect,{startTranslate:i,isTouched:r}=e.touchEventsData,n=e.translate;for(let l=0;l0&&c<1&&(r||e.params.cssMode)&&n-1&&(r||e.params.cssMode)&&n>i;if(w||b){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;g+=-28*c*e,f+=-.5*e,v+=96*e,h=-25*e*Math.abs(c)+"%"}if(u=c<0?`calc(${u}px + (${v*Math.abs(c)}%))`:c>0?`calc(${u}px + (-${v*Math.abs(c)}%))`:`${u}px`,!e.isHorizontal()){const e=h;h=u,u=e}const x=`\n translate3d(${u}, ${h}, ${m}px)\n rotateZ(${g}deg)\n scale(${c<0?""+(1+(1-f)*c):""+(1-(1-f)*c)})\n `;if(a.slideShadows){let e=o.find(".swiper-slide-shadow");0===e.length&&(e=createShadow(a,o)),e.length&&(e[0].style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}o[0].style.zIndex=-Math.abs(Math.round(d))+t.length;effectTarget(a,o).transform(x)}},setTransition:t=>{const{transformEl:s}=e.params.cardsEffect;(s?e.slides.find(s):e.slides).transition(t).find(".swiper-slide-shadow").transition(t),effectVirtualTransitionEnd({swiper:e,duration:t,transformEl:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!e.params.cssMode})})}Object.keys(prototypes).forEach((e=>{Object.keys(prototypes[e]).forEach((t=>{Swiper.prototype[t]=prototypes[e][t]}))})),Swiper.use([Resize,Observer]);const modules=[Virtual,Keyboard,Mousewheel,Navigation,Pagination,Scrollbar,Parallax,Zoom,Lazy,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.esm.browser.min.js.map \ No newline at end of file diff --git a/resources/web/include/swiper/swiper-bundle.esm.browser.min.js.map b/resources/web/include/swiper/swiper-bundle.esm.browser.min.js.map deleted file mode 100644 index 1e2ec716bf..0000000000 --- a/resources/web/include/swiper/swiper-bundle.esm.browser.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../node_modules/ssr-window/ssr-window.esm.js","../node_modules/dom7/dom7.esm.js","../src/shared/dom.js","../src/shared/utils.js","../src/shared/get-support.js","../src/shared/get-device.js","../src/shared/get-browser.js","../src/core/modules/resize/resize.js","../src/core/modules/observer/observer.js","../src/core/events-emitter.js","../src/core/update/updateSize.js","../src/core/update/updateSlides.js","../src/core/update/updateAutoHeight.js","../src/core/update/updateSlidesOffset.js","../src/core/update/updateSlidesProgress.js","../src/core/update/updateProgress.js","../src/core/update/updateSlidesClasses.js","../src/core/update/updateActiveIndex.js","../src/core/update/updateClickedSlide.js","../src/core/update/index.js","../src/core/translate/getTranslate.js","../src/core/translate/setTranslate.js","../src/core/translate/minTranslate.js","../src/core/translate/maxTranslate.js","../src/core/translate/translateTo.js","../src/core/translate/index.js","../src/core/transition/setTransition.js","../src/core/transition/transitionEmit.js","../src/core/transition/transitionStart.js","../src/core/transition/transitionEnd.js","../src/core/transition/index.js","../src/core/slide/slideTo.js","../src/core/slide/slideToLoop.js","../src/core/slide/slideNext.js","../src/core/slide/slidePrev.js","../src/core/slide/slideReset.js","../src/core/slide/slideToClosest.js","../src/core/slide/slideToClickedSlide.js","../src/core/slide/index.js","../src/core/loop/loopCreate.js","../src/core/loop/loopFix.js","../src/core/loop/loopDestroy.js","../src/core/loop/index.js","../src/core/grab-cursor/setGrabCursor.js","../src/core/grab-cursor/unsetGrabCursor.js","../src/core/grab-cursor/index.js","../src/core/events/onTouchStart.js","../src/core/events/onTouchMove.js","../src/core/events/onTouchEnd.js","../src/core/events/onResize.js","../src/core/events/onClick.js","../src/core/events/onScroll.js","../src/core/events/index.js","../src/core/breakpoints/setBreakpoint.js","../src/core/breakpoints/getBreakpoint.js","../src/core/breakpoints/index.js","../src/core/classes/addClasses.js","../src/core/classes/removeClasses.js","../src/core/classes/index.js","../src/core/images/loadImage.js","../src/core/images/preloadImages.js","../src/core/images/index.js","../src/core/check-overflow/index.js","../src/core/defaults.js","../src/core/moduleExtendParams.js","../src/core/core.js","../src/modules/virtual/virtual.js","../src/modules/keyboard/keyboard.js","../src/modules/mousewheel/mousewheel.js","../src/shared/create-element-if-not-defined.js","../src/modules/navigation/navigation.js","../src/shared/classes-to-selector.js","../src/modules/pagination/pagination.js","../src/modules/scrollbar/scrollbar.js","../src/modules/parallax/parallax.js","../src/modules/zoom/zoom.js","../src/modules/lazy/lazy.js","../src/modules/controller/controller.js","../src/modules/a11y/a11y.js","../src/modules/history/history.js","../src/modules/hash-navigation/hash-navigation.js","../src/modules/autoplay/autoplay.js","../src/modules/thumbs/thumbs.js","../src/modules/free-mode/free-mode.js","../src/modules/grid/grid.js","../src/modules/manipulation/methods/appendSlide.js","../src/modules/manipulation/methods/prependSlide.js","../src/modules/manipulation/methods/addSlide.js","../src/modules/manipulation/methods/removeSlide.js","../src/modules/manipulation/methods/removeAllSlides.js","../src/modules/manipulation/manipulation.js","../src/shared/effect-init.js","../src/shared/effect-target.js","../src/shared/effect-virtual-transition-end.js","../src/modules/effect-fade/effect-fade.js","../src/modules/effect-cube/effect-cube.js","../src/shared/create-shadow.js","../src/modules/effect-flip/effect-flip.js","../src/modules/effect-coverflow/effect-coverflow.js","../src/modules/effect-creative/effect-creative.js","../src/modules/effect-cards/effect-cards.js","../src/swiper.js"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","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","makeReactive","proto","__proto__","defineProperty","get","set","value","Dom7","Array","items","super","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","arrayUnique","uniqueArray","i","indexOf","qsa","selector","context","a","$","html","trim","toCreate","tempParent","innerHTML","nodeType","addClass","classes","classNames","map","c","split","classList","add","removeClass","remove","toggleClass","className","toggle","hasClass","contains","attr","attrs","arguments","getAttribute","attrName","removeAttr","removeAttribute","transform","transition","duration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","j","event","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","splice","trigger","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","index","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","fn","Methods","deleteProps","object","nextTick","delay","now","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","o","slice","isNode","node","HTMLElement","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","time","startTime","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","deviceCached","browser","calcSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","supportsPassive","opts","gestures","getSupport","calcDevice","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","getDevice","overrides","calcBrowser","isSafari","toLowerCase","isWebView","test","getBrowser","Resize","emit","observer","resizeHandler","destroyed","initialized","orientationChangeHandler","resizeObserver","ResizeObserver","entries","newWidth","newHeight","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","Observer","extendParams","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","$el","$wrapperEl","disconnect","methodName","writable","eventsEmitter","priority","self","method","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","Number","isNaN","assign","size","updateSlides","getDirectionLabel","property","marginRight","getDirectionPropertyValue","label","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","updateAutoHeight","activeSlides","setTransition","getSlideByIndex","visibleSlides","ceil","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","update","getSwiperTranslate","virtualTranslate","currentTranslate","setTranslate","byController","x","y","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","transitionStart","slideTo","initial","Error","indexAsNumber","isFinite","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","grabCursor","closestElement","base","__closestFrom","assignedSlot","getRootNode","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","isTouchEvent","type","which","button","isTouched","isMoved","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","onTouchEnd","touchEndTime","timeDiff","lastClickTime","currentPos","stopIndex","groupSize","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","start","passiveListeners","passive","move","end","cancel","updateOnWindowResize","attachEvents","bind","detachEvents","events$1","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","containerModifierClass","emitContainerClasses","fill","directionChanged","needsReLoop","changeDirection","isEnabled","disable","enable","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","prepareClasses","prefix","resultClasses","item","addClasses","suffixes","autoheight","centered","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","preloadImages","imagesLoaded","imagesToLoad","updateOnImagesReady","currentSrc","images","wasLocked","lastSlideIndex","lastSlideRightEdge","checkOverflow$1","defaults","init","createElements","url","uniqueNavElements","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","swiperParams","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","getWrapper","wrapper","destroy","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","m","Virtual","cssModeTimeout","renderSlide","cache","$slideEl","force","addSlidesBefore","addSlidesAfter","from","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","renderExternalUpdate","prependIndexes","appendIndexes","appendSlide","prependSlide","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","removeSlide","slidesIndexes","removeAllSlides","Keyboard","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","Mousewheel","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","shift","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","createElementIfNotDefined","checkProps","element","Navigation","getEl","toggleEl","disabled","disabledClass","tagName","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","_s","targetEl","pagination","clickable","isHidden","classesToSelector","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","lastIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","Scrollbar","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","$dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","eventMethod","$swiperEl","dragClass","dragEl","draggable","Parallax","parallax","setTransform","p","currentOpacity","currentScale","_swiper","parallaxEl","$parallaxEl","parallaxDuration","Zoom","zoom","maxRatio","containerClass","zoomedSlideClass","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","isScaling","gesture","slideWidth","slideHeight","$imageEl","$imageWrapEl","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","scaleStart","onGestureChange","scaleMove","onGestureEnd","scaledWidth","scaledHeight","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","touchAction","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","Lazy","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$images","background","$pictureEl","sourceEl","$source","slideOriginalIndex","slideExist","amount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","Controller","LinearSpline","binarySearch","guess","array","i1","i3","interpolate","removeSpline","controller","control","spline","inverse","by","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","setControlledTransition","A11y","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","liveRegion","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","updateNavigation","hasPagination","initNavEl","wrapperId","controls","addElControls","$containerEl","repeat","round","random","getRandomNumber","live","addElLive","bulletEl","updatePagination","History","root","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","includes","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","HashNavigation","watchState","onHashChange","newHash","setHash","Autoplay","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","order","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","indexToRemove","Manipulation","effectInit","overwriteParams","perspective","overwriteParamsResult","effectTarget","effectParams","transformEl","effectVirtualTransitionEnd","allSlides","$transitionEndTarget","eventTriggered","triggerEvents","EffectFade","fadeEffect","crossFade","tx","ty","slideOpacity","EffectCube","cubeEffect","slideShadows","shadow","shadowOffset","shadowScale","$cubeShadowEl","wrapperRotate","slideAngle","tz","shadowBefore","shadowAfter","shadowAngle","sin","scale1","scale2","zFactor","createShadow","shadowClass","$shadowContainer","$shadowEl","EffectFlip","flipEffect","limitRotation","rotateY","rotateX","zIndex","EffectCoverflow","coverflowEffect","rotate","stretch","depth","modifier","center","offsetMultiplier","translateZ","slideTransform","$shadowBeforeEl","$shadowAfterEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","EffectCards","cardsEffect","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","prototypeGroup","protoMethod"],"mappings":"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","file":"swiper-bundle.esm.browser.min.js","sourcesContent":["/**\n * SSR Window 4.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.1\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n super(...(items || []));\n makeReactive(this);\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import {\n $,\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n} from 'dom7';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n Object.defineProperty($.fn, methodName, { value: Methods[methodName], writable: true });\n});\n\nexport default $;\n","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform\n .split(', ')\n .map((a) => a.replace(',', '.'))\n .join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix =\n curStyle.MozTransform ||\n curStyle.OTransform ||\n curStyle.MsTransform ||\n curStyle.msTransform ||\n curStyle.transform ||\n curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return (\n typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n );\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter((key) => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({ swiper, targetPosition, side }) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return (dir === 'next' && current >= target) || (dir === 'prev' && current <= target);\n };\n\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\n\nexport {\n animateCSSModeScroll,\n deleteProps,\n nextTick,\n now,\n getTranslate,\n isObject,\n extend,\n getComputedStyle,\n setCSSProperty,\n};\n","import { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n\n touch: !!(\n 'ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)\n ),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n })(),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n })(),\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nexport { getSupport };\n","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\n\nlet deviceCached;\n\nfunction calcDevice({ userAgent } = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nexport { getDevice };\n","import { getWindow } from 'ssr-window';\n\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nexport { getBrowser };\n","import { getWindow } from 'ssr-window';\n\nexport default function Resize({ swiper, on, emit }) {\n const window = getWindow();\n let observer = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver((entries) => {\n const { width, height } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({ contentBoxSize, contentRect, target }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect\n ? contentRect.width\n : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect\n ? contentRect.height\n : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function Observer({ swiper, extendParams, on, emit }) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren,\n });\n\n // Observe wrapper\n attach(swiper.$wrapperEl[0], { attributes: false });\n };\n const destroy = () => {\n observers.forEach((observer) => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n });\n on('init', init);\n on('destroy', destroy);\n}\n","/* eslint-disable no-underscore-dangle */\n\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (\n eventHandler === handler ||\n (eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler)\n ) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n\n eventsArray.forEach((event) => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach((eventHandler) => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n },\n};\n","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width =\n width -\n parseInt($el.css('padding-left') || 0, 10) -\n parseInt($el.css('padding-right') || 0, 10);\n height =\n height -\n parseInt($el.css('padding-top') || 0, 10) -\n parseInt($el.css('padding-bottom') || 0, 10);\n\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { setCSSProperty } from '../../shared/utils.js';\n\nexport default function updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom',\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n\n const { $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginBottom: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '', marginTop: '' });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n\n const shouldResetSlideSize =\n params.slidesPerView === 'auto' &&\n params.breakpoints &&\n Object.keys(params.breakpoints).filter((key) => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const { clientWidth, offsetWidth } = slide[0];\n slideSize =\n width +\n paddingLeft +\n paddingRight +\n marginLeft +\n marginRight +\n (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0)\n slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (\n (index - Math.min(swiper.params.slidesPerGroupSkip, index)) %\n swiper.params.slidesPerGroup ===\n 0\n )\n snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`,\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n\n if (\n Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) >\n 1\n ) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides\n .filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n })\n .css({ [key]: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(\n swiper.wrapperEl,\n '--swiper-centered-offset-after',\n `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`,\n );\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map((v) => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map((v) => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n}\n","export default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = (index) => {\n if (isVirtual) {\n return swiper.slides.filter(\n (el) => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index,\n )[0];\n }\n return swiper.slides.eq(index)[0];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal()\n ? slides[i].offsetLeft\n : slides[i].offsetTop;\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateSlidesProgress(translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl, snapGrid } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress =\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress =\n (offsetCenter -\n snapGrid[0] +\n (params.centeredSlides ? swiper.minTranslate() : 0) -\n slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible =\n (slideBefore >= 0 && slideBefore < swiper.size - 1) ||\n (slideAfter > 1 && slideAfter <= swiper.size) ||\n (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","export default function updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && swiper.translate * multiplier) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || (params.centeredSlides && params.autoHeight))\n swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function updateSlidesClasses() {\n const swiper = this;\n\n const { slides, params, $wrapperEl, activeIndex, realIndex } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(\n `${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`,\n );\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\n `.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`,\n );\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide\n .nextAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide\n .prevAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n translate >= slidesGrid[i] &&\n translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2\n ) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(\n swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex,\n 10,\n );\n\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (\n params.slideToClickedSlide &&\n swiper.clickedIndex !== undefined &&\n swiper.clickedIndex !== swiper.activeIndex\n ) {\n swiper.slideToClickedSlide();\n }\n}\n","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","import { getTranslate } from '../../shared/utils.js';\n\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const { params, rtlTranslate: rtl, translate, $wrapperEl } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function setTranslate(translate, byController) {\n const swiper = this;\n const { rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function minTranslate() {\n return -this.snapGrid[0];\n}\n","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function translateTo(\n translate = 0,\n speed = this.params.speed,\n runCallbacks = true,\n translateBounds = true,\n internal,\n) {\n const swiper = this;\n\n const { params, wrapperEl } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: -newTranslate, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","export default function transitionEmit({ swiper, runCallbacks, direction, step }) {\n const { activeIndex, previousIndex } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'Start' });\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'End' });\n}\n","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function slideTo(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n initial,\n) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(\n `The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`,\n );\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\n `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`,\n );\n }\n\n // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled,\n } = swiper;\n\n if (\n (swiper.animating && params.preventInteractionOnTransition) ||\n (!enabled && !internal && !initial)\n ) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2\n ) {\n slideIndex = i;\n } else if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext\n ) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (\n !swiper.allowSlideNext &&\n translate < swiper.translate &&\n translate < swiper.minTranslate()\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n translate > swiper.translate &&\n translate > swiper.maxTranslate()\n ) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: t, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","export default function slideToLoop(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { animating, enabled, params } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating, snapGrid, slidesGrid, rtlTranslate, enabled } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (\n params.slidesPerView === 'auto' &&\n params.slidesPerGroup === 1 &&\n params.slidesPerGroupAuto\n ) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n threshold = 0.5,\n) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function slideToClickedSlide() {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView =\n params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n slideToIndex < swiper.loopedSlides - slidesPerView / 2 ||\n slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n const $selector = $($wrapperEl.children()[0].parentNode);\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(\n `${params.slideClass} ${params.slideBlankClass}`,\n );\n $selector.append(blankNode);\n }\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function loopFix() {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function loopDestroy() {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`,\n )\n .remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","export default function setGrabCursor(moving) {\n const swiper = this;\n if (\n swiper.support.touch ||\n !swiper.params.simulateTouch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n )\n return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","export default function unsetGrabCursor() {\n const swiper = this;\n if (\n swiper.support.touch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n ) {\n return;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}\n","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n\n const data = swiper.touchEventsData;\n const { params, touches, enabled } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector\n ? params.noSwipingSelector\n : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (\n params.noSwiping &&\n (isTargetShadow\n ? closestElement(noSwipingSelector, e.target)\n : $targetEl.closest(noSwipingSelector)[0])\n ) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection &&\n (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)\n ) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n if (\n document.activeElement &&\n $(document.activeElement).is(data.focusableElements) &&\n document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault =\n preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (\n (params.touchStartForcePreventDefault || shouldPreventDefault) &&\n !$targetEl[0].isContentEditable\n ) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch =\n e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) ||\n (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) ||\n (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold)\n return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (\n (swiper.isHorizontal() && touches.currentY === touches.startY) ||\n (swiper.isVertical() && touches.currentX === touches.startX)\n ) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal()\n ? touchAngle > params.touchAngle\n : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.minTranslate() -\n 1 +\n (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.maxTranslate() +\n 1 -\n (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n swiper.swipeDirection === 'next' &&\n data.currentTranslate < data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (\n !swiper.allowSlidePrev &&\n swiper.swipeDirection === 'prev' &&\n data.currentTranslate > data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal()\n ? touches.currentX - touches.startX\n : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (\n (params.freeMode && params.freeMode.enabled && swiper.freeMode) ||\n params.watchSlidesProgress\n ) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import { now, nextTick } from '../../shared/utils.js';\n\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const { params, touches, rtlTranslate: rtl, slidesGrid, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (\n params.grabCursor &&\n data.isMoved &&\n data.isTouched &&\n (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)\n ) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (\n !data.isTouched ||\n !data.isMoved ||\n !swiper.swipeDirection ||\n touches.diff === 0 ||\n data.currentTranslate === data.startTranslate\n ) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({ currentPos });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (\n let i = 0;\n i < slidesGrid.length;\n i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup\n ) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget =\n swiper.navigation &&\n (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n","export default function onResize() {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if (\n (params.slidesPerView === 'auto' || params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.isBeginning &&\n !swiper.params.centeredSlides\n ) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","export default function onScroll() {\n const swiper = this;\n const { wrapperEl, rtlTranslate, enabled } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { getDocument } from 'ssr-window';\n\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const { params, touchEvents, el, wrapperEl, device, support } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener =\n touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](\n touchEvents.move,\n swiper.onTouchMove,\n support.passiveListener ? { passive: false, capture } : capture,\n );\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](\n device.ios || device.android\n ? 'resize orientationchange observerUpdate'\n : 'resize observerUpdate',\n onResize,\n true,\n );\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const { params, support } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const { activeIndex, initialized, loopedSlides = 0, params, $el } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(\n `${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`,\n );\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n if (\n (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column') ||\n (!breakpointParams.grid.fill && params.grid.fill === 'column')\n ) {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n const directionChanged =\n breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop =\n params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n\n const isEnabled = swiper.params.enabled;\n\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || (base === 'container' && !containerEl)) return undefined;\n let breakpoint = false;\n\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\n\nexport default { setBreakpoint, getBreakpoint };\n","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach((item) => {\n if (typeof item === 'object') {\n Object.keys(item).forEach((classNames) => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const { classNames, params, rtl, $el, device, support } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses([\n 'initialized',\n params.direction,\n { 'pointer-events': !support.touch },\n { 'free-mode': swiper.params.freeMode && params.freeMode.enabled },\n { 'autoheight': params.autoHeight },\n { 'rtl': rtl },\n { 'grid': params.grid && params.grid.rows > 1 },\n { 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' },\n { 'android': device.android },\n { 'ios': device.ios },\n { 'css-mode': params.cssMode },\n { 'centered': params.cssMode && params.centeredSlides },\n ], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}\n","export default function removeClasses() {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}\n","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\n\nexport default { addClasses, removeClasses };\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n function onReady() {\n if (callback) callback();\n }\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady,\n );\n }\n}\n","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","function checkOverflow() {\n const swiper = this;\n const { isLocked: wasLocked, params } = swiper;\n const { slidesOffsetBefore } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge =\n swiper.slidesGrid[lastSlideIndex] +\n swiper.slidesSizesGrid[lastSlideIndex] +\n slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n\n // Overrides\n width: null,\n height: null,\n\n //\n preventInteractionOnTransition: false,\n\n // ssr\n userAgent: null,\n url: null,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n\n // Internals\n _emitClasses: false,\n};\n","import { extend } from '../shared/utils.js';\n\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (\n ['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 &&\n params[moduleParamName] === true\n ) {\n params[moduleParamName] = { auto: true };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n extend(allModulesParams, obj);\n };\n}\n","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\n\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\n\nimport eventsEmitter from './events-emitter.js';\n\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\n\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\n\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n if (\n args.length === 1 &&\n args[0].constructor &&\n Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object'\n ) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each((containerEl) => {\n const newParams = extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({ userAgent: params.userAgent });\n swiper.browser = getBrowser();\n\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n\n swiper.modules.forEach((mod) => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper),\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach((eventName) => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Save Dom lib\n swiper.$ = $;\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return swiper.support.touch || !swiper.params.simulateTouch\n ? swiper.touchEventsTouch\n : swiper.touchEventsDesktop;\n })(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n });\n\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter((className) => {\n return (\n className.indexOf('swiper') === 0 ||\n className.indexOf(swiper.params.containerModifierClass) === 0\n );\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n\n return slideEl.className\n .split(' ')\n .filter((className) => {\n return (\n className.indexOf('swiper-slide') === 0 ||\n className.indexOf(swiper.params.slideClass) === 0\n );\n })\n .join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each((slideEl) => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({ slideEl, classNames });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const { params, slides, slidesGrid, slidesSizesGrid, size: swiperSize, activeIndex } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact\n ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize\n : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(\n Math.max(translateValue, swiper.maxTranslate()),\n swiper.minTranslate(),\n );\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if (\n (swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.params.centeredSlides\n ) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (\n newDirection === currentDirection ||\n (newDirection !== 'horizontal' && newDirection !== 'vertical')\n ) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector()));\n // Children needs to return slot items\n res.children = (options) => $el.children(options);\n return res;\n }\n return $el.children(getWrapperSelector());\n };\n // Find Wrapper\n let $wrapperEl = getWrapper();\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each((slideEl) => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate:\n swiper.params.direction === 'horizontal' &&\n (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n });\n\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(\n swiper.params.initialSlide + swiper.loopedSlides,\n 0,\n swiper.params.runCallbacksOnInit,\n false,\n true,\n );\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const { params, $el, $wrapperEl, slides } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass(\n [\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '),\n )\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach((m) => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\n\nObject.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\n\nSwiper.use([Resize, Observer]);\n\nexport default Swiper;\n","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\n\nexport default function Virtual({ swiper, extendParams, on }) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n });\n\n let cssModeTimeout;\n\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: [],\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(\n `
${slide}
`,\n );\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset,\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n })(),\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl\n .find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`)\n .remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes\n .sort((a, b) => b - a)\n .forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr(\n 'data-swiper-slide-index',\n parseInt(cachedElIndex, 10) + numberOfNewSlides,\n );\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Keyboard({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false,\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true,\n },\n });\n\n function handle(event) {\n if (!swiper.enabled) return;\n\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n ((swiper.isHorizontal() && isArrowRight) ||\n (swiper.isVertical() && isArrowDown) ||\n isPageDown)\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n ((swiper.isHorizontal() && isArrowLeft) || (swiper.isVertical() && isArrowUp) || isPageUp)\n ) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (\n document.activeElement &&\n document.activeElement.nodeName &&\n (document.activeElement.nodeName.toLowerCase() === 'input' ||\n document.activeElement.nodeName.toLowerCase() === 'textarea')\n ) {\n return undefined;\n }\n if (\n swiper.params.keyboard.onlyInViewport &&\n (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)\n ) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (\n swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 &&\n swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0\n ) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiperWidth, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiperHeight],\n [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl))\n swiper.slideNext();\n if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl))\n swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n\n Object.assign(swiper.keyboard, {\n enable,\n disable,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\n\nexport default function Mousewheel({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n },\n });\n\n swiper.mousewheel = {\n enabled: false,\n };\n\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (\n swiper.params.mousewheel.thresholdDelta &&\n newEvent.delta < swiper.params.mousewheel.thresholdDelta\n ) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (\n swiper.params.mousewheel.thresholdTime &&\n now() - lastScrollTime < swiper.params.mousewheel.thresholdTime\n ) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges)\n return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n else return true;\n } else {\n delta =\n Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop\n ? true\n : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (\n newEvent.direction !== prevEvent.direction ||\n newEvent.delta > prevEvent.delta ||\n newEvent.time > prevEvent.time + 150\n ) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n };\n const ignoreWheelEvents =\n lastEventBeforeSnap &&\n newEvent.time < lastEventBeforeSnap.time + 500 &&\n newEvent.delta <= lastEventBeforeSnap.delta &&\n newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (\n prevEvent &&\n (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)\n ) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (\n recentWheelEvents.length >= 15 &&\n newEvent.time - firstEvent.time < 500 &&\n firstEvent.delta - newEvent.delta >= 1 &&\n newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction)\n swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n\n Object.assign(swiper.mousewheel, {\n enable,\n disable,\n });\n}\n","import { getDocument } from 'ssr-window';\n\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach((key) => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Navigation({ swiper, extendParams, on, emit }) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n });\n\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null,\n };\n\n function getEl(el) {\n let $el;\n if (el) {\n $el = $(el);\n if (\n swiper.params.uniqueNavElements &&\n typeof el === 'string' &&\n $el.length > 1 &&\n swiper.$el.find(el).length === 1\n ) {\n $el = swiper.$el.find(el);\n }\n }\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n toggleEl($prevEl, swiper.isBeginning);\n toggleEl($nextEl, swiper.isEnd);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n }\n function init() {\n const params = swiper.params.navigation;\n\n swiper.params.navigation = createElementIfNotDefined(\n swiper,\n swiper.originalParams.navigation,\n swiper.params.navigation,\n {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev',\n },\n );\n if (!(params.nextEl || params.prevEl)) return;\n\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n function destroy() {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n init();\n update();\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const { $nextEl, $prevEl } = swiper.navigation;\n const targetEl = e.target;\n if (\n swiper.params.navigation.hideOnClick &&\n !$(targetEl).is($prevEl) &&\n !$(targetEl).is($nextEl)\n ) {\n if (\n swiper.pagination &&\n swiper.params.pagination &&\n swiper.params.pagination.clickable &&\n (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))\n )\n return;\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n Object.assign(swiper.navigation, {\n update,\n init,\n destroy,\n });\n}\n","export default function classesToSelector(classes = '') {\n return `.${classes\n .trim()\n .replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Pagination({ swiper, extendParams, on, emit }) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n },\n });\n\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: [],\n };\n\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return (\n !swiper.params.pagination.el ||\n !swiper.pagination.el ||\n !swiper.pagination.$el ||\n swiper.pagination.$el.length === 0\n );\n }\n\n function setSideBullets($bulletEl, position) {\n const { bulletActiveClass } = swiper.params.pagination;\n $bulletEl[position]()\n .addClass(`${bulletActiveClass}-${position}`)\n [position]()\n .addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil(\n (swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup,\n );\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (\n params.type === 'bullets' &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length > 0\n ) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(\n swiper.isHorizontal() ? 'width' : 'height',\n `${bulletSize * (params.dynamicMainBullets + 4)}px`,\n );\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - swiper.previousIndex;\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(\n ['', '-next', '-next-next', '-prev', '-prev-prev', '-main']\n .map((suffix) => `${params.bulletActiveClass}${suffix}`)\n .join(' '),\n );\n if ($el.length > 1) {\n bullets.each((bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets\n .eq(bullets.length - params.dynamicMainBullets - 1)\n .addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset =\n (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el\n .find(classesToSelector(params.currentClass))\n .text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el\n .find(classesToSelector(params.progressbarFillClass))\n .transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`)\n .transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.loop &&\n numberOfBullets > slidesLength\n ) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML =\n `` +\n ' / ' +\n ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(\n swiper,\n swiper.originalParams.pagination,\n swiper.params.pagination,\n { el: 'swiper-pagination' },\n );\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el);\n // check if it belongs to another nested Swiper\n if ($el.length > 1) {\n $el = $el.filter((el) => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(params.modifierClass + swiper.params.direction);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0],\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(params.modifierClass + swiper.params.direction);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass)\n swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n init();\n render();\n update();\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $el } = swiper.pagination;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const { $el } = swiper.pagination;\n if (\n swiper.params.pagination.el &&\n swiper.params.pagination.hideOnClick &&\n $el.length > 0 &&\n !$(targetEl).hasClass(swiper.params.pagination.bulletClass)\n ) {\n if (\n swiper.navigation &&\n ((swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) ||\n (swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl))\n )\n return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n Object.assign(swiper.pagination, {\n render,\n update,\n init,\n destroy,\n });\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Scrollbar({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n });\n\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null,\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const { $dragEl, $el } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n divider =\n swiper.size /\n (swiper.virtualSize +\n swiper.params.slidesOffsetBefore -\n (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](\n swiper.params.scrollbar.lockClass,\n );\n }\n }\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientX\n : e.clientX;\n }\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientY\n : e.clientY;\n }\n function setDragPosition(e) {\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const { $el } = scrollbar;\n\n let positionRatio;\n positionRatio =\n (getPointerPosition(e) -\n $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] -\n (dragStartPos !== null ? dragStartPos : dragSize / 2)) /\n (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position =\n swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n isTouched = true;\n dragStartPos =\n e.target === $dragEl[0] || e.target === $dragEl\n ? getPointerPosition(e) -\n e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top']\n : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n\n clearTimeout(dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const { scrollbar, touchEventsTouch, touchEventsDesktop, params, support } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener =\n support.passiveListener && params.passiveListeners\n ? { passive: false, capture: false }\n : false;\n const passiveListener =\n support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('off');\n }\n function init() {\n const { scrollbar, $el: $swiperEl } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(\n swiper,\n swiper.originalParams.scrollbar,\n swiper.params.scrollbar,\n { el: 'swiper-scrollbar' },\n );\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n\n let $el = $(params.el);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.el === 'string' &&\n $el.length > 1 &&\n $swiperEl.find(params.el).length === 1\n ) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n function destroy() {\n disableDraggable();\n }\n\n on('init', () => {\n init();\n updateSize();\n setTranslate();\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const { $el } = swiper.scrollbar;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n Object.assign(swiper.scrollbar, {\n updateSize,\n setTranslate,\n init,\n destroy,\n });\n}\n","import $ from '../../shared/dom.js';\n\nexport default function Parallax({ swiper, extendParams, on }) {\n extendParams({\n parallax: {\n enabled: false,\n },\n });\n\n const setTransform = (el, progress) => {\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n };\n\n const setTranslate = () => {\n const { $el, slides, progress, snapGrid } = swiper;\n $el\n .children(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl)\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = (duration = swiper.params.speed) => {\n const { $el } = swiper;\n $el\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration =\n parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n };\n\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\n\nexport default function Zoom({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n });\n\n swiper.zoom = {\n enabled: false,\n };\n\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n };\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n\n // Events\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n if (\n e.type !== 'touchend' ||\n (e.type === 'touchend' && e.changedTouches.length < 2 && !device.android)\n ) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl\n .transition(swiper.params.speed)\n .transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (\n swiper.isHorizontal() &&\n ((Math.floor(image.minX) === Math.floor(image.startX) &&\n image.touchesCurrent.x < image.touchesStart.x) ||\n (Math.floor(image.maxX) === Math.floor(image.startX) &&\n image.touchesCurrent.x > image.touchesStart.x))\n ) {\n image.isTouched = false;\n return;\n }\n if (\n !swiper.isHorizontal() &&\n ((Math.floor(image.minY) === Math.floor(image.startY) &&\n image.touchesCurrent.y < image.touchesStart.y) ||\n (Math.floor(image.maxY) === Math.floor(image.startY) &&\n image.touchesCurrent.y > image.touchesStart.y))\n ) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x =\n (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y =\n (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0)\n momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0)\n momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl\n .transition(momentumDuration)\n .transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl\n .transition(300)\n .transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n const activeListenerWithCapture = support.passiveListener\n ? { passive: false, capture: true }\n : true;\n return { passiveListener, activeListenerWithCapture };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const { passiveListener } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (\n !swiper.animating &&\n swiper.params.zoom.enabled &&\n swiper.zoom.enabled &&\n swiper.params.zoom.toggle\n ) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle,\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Lazy({ swiper, extendParams, on, emit }) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n });\n\n swiper.lazy = {};\n\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(\n `.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`,\n )\n : swiper.slides.eq(index);\n\n const $images = $slideEl.find(\n `.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`,\n );\n if (\n $slideEl.hasClass(params.elementClass) &&\n !$slideEl.hasClass(params.loadedClass) &&\n !$slideEl.hasClass(params.loadingClass)\n ) {\n $images.push($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (\n typeof swiper === 'undefined' ||\n swiper === null ||\n !swiper ||\n (swiper && !swiper.params) ||\n swiper.destroyed\n )\n return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if ($pictureEl.length) {\n $pictureEl.children('source').each((sourceEl) => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(\n `[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`,\n );\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(\n `.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`,\n );\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const { $wrapperEl, params: swiperParams, slides, activeIndex } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if (\n $wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n .length\n ) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement\n ? $(swiper.params.lazy.scrollingElement)\n : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const { rtlTranslate: rtl } = swiper;\n\n let inView = false;\n\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 &&\n point[0] <= scrollElementWidth &&\n point[1] >= 0 &&\n point[1] <= scrollElementHeight\n ) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n swiper.support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.freeMode.sticky\n ) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (\n swiper.params.lazy.loadOnTransitionStart ||\n (!swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded)\n ) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const { lazy, cssMode, watchSlidesProgress, touchReleaseOnEdges, resistanceRatio } =\n swiper.params;\n if (\n lazy.enabled &&\n (cssMode || (watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0)))\n ) {\n load();\n }\n });\n\n Object.assign(swiper.lazy, {\n load,\n loadInSlide,\n });\n}\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Controller({ swiper, extendParams, on }) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n });\n\n swiper.controller = {\n control: undefined,\n };\n\n function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = (maxIndex + minIndex) >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n })();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (\n ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]\n );\n };\n return this;\n }\n // xxx: for now i will just save one spline function to to\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier =\n (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition,\n });\n}\n","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\n\nexport default function A11y({ swiper, extendParams, on }) {\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n },\n });\n\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n function addElId($el, id) {\n $el.attr('id', id);\n }\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (\n swiper.pagination &&\n $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))\n ) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return (\n swiper.pagination &&\n swiper.params.pagination.clickable &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length\n );\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (hasPagination()) {\n swiper.pagination.bullets.each((bulletEl) => {\n const $bulletEl = $(bulletEl);\n makeElFocusable($bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel(\n $bulletEl,\n params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1),\n );\n }\n });\n }\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n function init() {\n const params = swiper.params.a11y;\n\n swiper.$el.append(liveRegion);\n\n // Container\n const $containerEl = swiper.$el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n }\n\n // Wrapper\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live);\n\n // Slide\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n addElRole($(swiper.slides), params.slideRole);\n\n const slidesLength = swiper.params.loop\n ? swiper.slides.filter((el) => !el.classList.contains(swiper.params.slideDuplicateClass))\n .length\n : swiper.slides.length;\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop\n ? parseInt($slideEl.attr('data-swiper-slide-index'), 10)\n : index;\n const ariaLabelMessage = params.slideLabelMessage\n .replace(/\\{\\{index\\}\\}/, slideIndex + 1)\n .replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n });\n\n // Navigation\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n }\n\n // Pagination\n if (hasPagination()) {\n swiper.pagination.$el.on(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n }\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n }\n\n // Pagination\n if (hasPagination()) {\n swiper.pagination.$el.off(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n }\n\n on('beforeInit', () => {\n liveRegion = $(\n ``,\n );\n });\n\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n updateNavigation();\n });\n on('toEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('fromEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function History({ swiper, extendParams, on }) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n },\n });\n\n let initialized = false;\n let paths = {};\n\n const slugify = (text) => {\n return text\n .toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n };\n\n const getPathValues = (urlOverride) => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname\n .slice(1)\n .split('/')\n .filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, swiper.paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function HashNavigation({ swiper, extendParams, emit, on }) {\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl\n .children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`)\n .index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n if (\n swiper.params.hashNavigation.replaceState &&\n window.history &&\n window.history.replaceState\n ) {\n window.history.replaceState(\n null,\n null,\n `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '',\n );\n emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (\n !swiper.params.hashNavigation.enabled ||\n (swiper.params.history && swiper.params.history.enabled)\n )\n return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n","/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Autoplay({ swiper, extendParams, on, emit }) {\n let timeout;\n\n swiper.autoplay = {\n running: false,\n paused: false,\n };\n\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false,\n },\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(\n swiper.slides.length - 1,\n swiper.params.speed,\n true,\n true,\n );\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) run();\n else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n function onVisibilityChange() {\n const document = getDocument();\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n swiper.autoplay.paused = false;\n run();\n }\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (\n swiper.params.cssMode &&\n swiper.autoplay.paused &&\n !swiper.params.autoplay.disableOnInteraction\n ) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop,\n });\n}\n","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Thumb({ swiper, extendParams, on }) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs',\n },\n });\n\n let initialized = false;\n let swiperCreated = false;\n\n swiper.thumbs = {\n swiper: null,\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass))\n return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides\n .eq(currentIndex)\n .prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n const nextIndex = swiper.slides\n .eq(currentIndex)\n .nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const { thumbs: thumbsParams } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView =\n thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (\n thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .hasClass(thumbsSwiper.params.slideDuplicateClass)\n ) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex =\n thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (\n thumbsSwiper.visibleSlidesIndexes &&\n thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0\n ) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (\n newThumbsIndex > currentThumbsIndex &&\n thumbsSwiper.params.slidesPerGroup === 1\n ) {\n // newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (\n thumbsSwiper.params.loop ||\n (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)\n ) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl\n .children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`)\n .addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n }\n\n on('beforeInit', () => {\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n if (!swiper.thumbs.swiper) return;\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n });\n\n Object.assign(swiper.thumbs, {\n init,\n update,\n });\n}\n","import { now } from '../../shared/utils.js';\n\nexport default function freeMode({ swiper, extendParams, emit, once }) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02,\n },\n });\n\n function onTouchMove() {\n const { touchEventsData: data, touches } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now(),\n });\n }\n\n function onTouchEnd({ currentPos }) {\n const { params, $wrapperEl, rtlTranslate: rtl, snapGrid, touchEventsData: data } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (\n Math.abs(snapGrid[nextSlide] - newPosition) <\n Math.abs(snapGrid[nextSlide - 1] - newPosition) ||\n swiper.swipeDirection === 'next'\n ) {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchMove,\n onTouchEnd,\n },\n });\n}\n","export default function Grid({ swiper, extendParams }) {\n extendParams({\n grid: {\n rows: 1,\n fill: 'column',\n },\n });\n\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n\n const initSlides = (slidesLength) => {\n const { slidesPerView } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const { slidesPerGroup, spaceBetween } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup =\n groupIndex === 0\n ? slidesPerGroup\n : Math.min(\n Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows),\n slidesPerGroup,\n );\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n\n newSlideOrderIndex = column + (row * slidesNumberEvenToRows) / rows;\n slide.css({\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || (column === numFullColumns && row === rows - 1)) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.css(\n getDirectionLabel('margin-top'),\n row !== 0 ? spaceBetween && `${spaceBetween}px` : '',\n );\n };\n\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const { spaceBetween, centeredSlides, roundLengths } = swiper.params;\n const { rows } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.$wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`,\n });\n if (centeredSlides) {\n snapGrid.splice(0, snapGrid.length);\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.push(...newSlidesGrid);\n }\n };\n\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize,\n };\n}\n","export default function appendSlide(slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n}\n","export default function prependSlide(slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","export default function addSlide(index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex =\n activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeAllSlides() {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\n\nexport default function Manipulation({ swiper }) {\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper),\n });\n}\n","export default function effectInit(params) {\n const { effect, swiper, on, setTranslate, setTransition, overwriteParams, perspective } = params;\n\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n}\n","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden',\n });\n }\n return $slideEl;\n}\n","export default function effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides }) {\n const { slides, activeIndex, $wrapperEl } = swiper;\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl\n ? slides.eq(activeIndex).find(transformEl)\n : slides.eq(activeIndex);\n }\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}\n","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFade({ swiper, extendParams, on }) {\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\n\nexport default function EffectCube({ swiper, extendParams, on }) {\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n });\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${\n isHorizontal ? slideAngle : 0\n }deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(\n `
`,\n );\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(\n `
`,\n );\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(\n `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${\n -swiperWidth / 2\n }px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`,\n );\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier =\n 1.5 -\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2 +\n Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(\n `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${\n -swiperHeight / 2 / scale2\n }px) rotateX(-90deg)`,\n );\n }\n }\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(\n `translate3d(0px,0,${zFactor}px) rotateX(${\n swiper.isHorizontal() ? 0 : wrapperRotate\n }deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`,\n );\n };\n const setTransition = (duration) => {\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n }),\n });\n}\n","import $ from './dom.js';\n\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`
`);\n $shadowContainer.append($shadowEl);\n }\n return $shadowEl;\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFlip({ swiper, extendParams, on }) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides, rtlTranslate: rtl } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\n\nexport default function EffectCoverflow({ swiper, extendParams, on }) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { width: swiperWidth, height: swiperHeight, slides, slidesSizesGrid } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier =\n ((center - slideOffset - slideSize / 2) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = (parseFloat(params.stretch) / 100) * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if ($shadowBeforeEl.length)\n $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length)\n $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCreative({ swiper, extendParams, on }) {\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n },\n });\n\n const getTranslateValue = (value) => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const { slides, $wrapperEl, slidesSizesGrid } = swiper;\n const params = swiper.params.creativeEffect;\n const { progressMultiplier: multiplier } = params;\n\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(\n Math.max($slideEl[0].progress, -params.limitProgress),\n params.limitProgress,\n );\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(\n Math.max($slideEl[0].originalProgress, -params.limitProgress),\n params.limitProgress,\n );\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1,\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(\n progress * multiplier,\n )}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString =\n originalProgress < 0\n ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})`\n : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString =\n originalProgress < 0\n ? 1 + (1 - data.opacity) * originalProgress * multiplier\n : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if ((custom && data.shadow) || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress\n ? progress * (1 / params.limitProgress)\n : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({ opacity: opacityString });\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCards({ swiper, extendParams, on }) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides, activeIndex } = swiper;\n const params = swiper.params.cardsEffect;\n const { startTranslate, isTouched } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -2 * progress;\n\n let tXAdd = 8 - Math.abs(progress) * 0.75;\n\n const isSwipeToNext =\n (i === activeIndex || i === activeIndex - 1) &&\n progress > 0 &&\n progress < 1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate < startTranslate;\n const isSwipeToPrev =\n (i === activeIndex || i === activeIndex + 1) &&\n progress < 0 &&\n progress > -1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString =\n progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${rotate}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length)\n $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","// Swiper Class\nimport Swiper from './core/core.js';\n\n//IMPORT_MODULES\n\nconst modules = [\n //INSTALL_MODULES\n];\n\nSwiper.use(modules);\n\n//EXPORT\n"]} \ No newline at end of file diff --git a/resources/web/include/swiper/swiper-bundle.esm.js b/resources/web/include/swiper/swiper-bundle.esm.js deleted file mode 100644 index 53bcad1751..0000000000 --- a/resources/web/include/swiper/swiper-bundle.esm.js +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Swiper 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -import Swiper from './core/core.js'; -export { default as Swiper, default } from './core/core.js'; -import Virtual from './modules/virtual/virtual.js'; -import Keyboard from './modules/keyboard/keyboard.js'; -import Mousewheel from './modules/mousewheel/mousewheel.js'; -import Navigation from './modules/navigation/navigation.js'; -import Pagination from './modules/pagination/pagination.js'; -import Scrollbar from './modules/scrollbar/scrollbar.js'; -import Parallax from './modules/parallax/parallax.js'; -import Zoom from './modules/zoom/zoom.js'; -import Lazy from './modules/lazy/lazy.js'; -import Controller from './modules/controller/controller.js'; -import A11y from './modules/a11y/a11y.js'; -import History from './modules/history/history.js'; -import HashNavigation from './modules/hash-navigation/hash-navigation.js'; -import Autoplay from './modules/autoplay/autoplay.js'; -import Thumbs from './modules/thumbs/thumbs.js'; -import FreeMode from './modules/free-mode/free-mode.js'; -import Grid from './modules/grid/grid.js'; -import Manipulation from './modules/manipulation/manipulation.js'; -import EffectFade from './modules/effect-fade/effect-fade.js'; -import EffectCube from './modules/effect-cube/effect-cube.js'; -import EffectFlip from './modules/effect-flip/effect-flip.js'; -import EffectCoverflow from './modules/effect-coverflow/effect-coverflow.js'; -import EffectCreative from './modules/effect-creative/effect-creative.js'; -import EffectCards from './modules/effect-cards/effect-cards.js'; - -// Swiper Class -const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, Controller, A11y, History, HashNavigation, Autoplay, Thumbs, FreeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; -Swiper.use(modules); diff --git a/resources/web/include/swiper/swiper-bundle.js b/resources/web/include/swiper/swiper-bundle.js deleted file mode 100644 index c7c191e3ef..0000000000 --- a/resources/web/include/swiper/swiper-bundle.js +++ /dev/null @@ -1,10068 +0,0 @@ -/** - * Swiper 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Swiper = factory()); -}(this, (function () { 'use strict'; - - /** - * SSR Window 4.0.1 - * Better handling for window object in SSR environment - * https://github.com/nolimits4web/ssr-window - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: October 27, 2021 - */ - - /* 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 = {}) { - Object.keys(src).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; - } - - /** - * Dom7 4.0.1 - * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API - * https://framework7.io/docs/dom7.html - * - * Copyright 2021, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: October 27, 2021 - */ - /* eslint-disable no-proto */ - - function makeReactive(obj) { - const proto = obj.__proto__; - Object.defineProperty(obj, '__proto__', { - get() { - return proto; - }, - - set(value) { - proto.__proto__ = value; - } - - }); - } - - class Dom7 extends Array { - constructor(items) { - super(...(items || [])); - makeReactive(this); - } - - } - - function arrayFlat(arr = []) { - const res = []; - arr.forEach(el => { - if (Array.isArray(el)) { - res.push(...arrayFlat(el)); - } else { - res.push(el); - } - }); - return res; - } - - function arrayFilter(arr, callback) { - return Array.prototype.filter.call(arr, callback); - } - - function arrayUnique(arr) { - const uniqueArray = []; - - for (let i = 0; i < arr.length; i += 1) { - if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]); - } - - return uniqueArray; - } - - - function qsa(selector, context) { - if (typeof selector !== 'string') { - return [selector]; - } - - const a = []; - const res = context.querySelectorAll(selector); - - for (let i = 0; i < res.length; i += 1) { - a.push(res[i]); - } - - return a; - } - - function $(selector, context) { - const window = getWindow(); - const document = getDocument(); - let arr = []; - - if (!context && selector instanceof Dom7) { - return selector; - } - - if (!selector) { - return new Dom7(arr); - } - - if (typeof selector === 'string') { - const html = selector.trim(); - - if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { - let toCreate = 'div'; - if (html.indexOf(' c.split(' '))); - this.forEach(el => { - el.classList.add(...classNames); - }); - return this; - } - - function removeClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - this.forEach(el => { - el.classList.remove(...classNames); - }); - return this; - } - - function toggleClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - this.forEach(el => { - classNames.forEach(className => { - el.classList.toggle(className); - }); - }); - } - - function hasClass(...classes) { - const classNames = arrayFlat(classes.map(c => c.split(' '))); - return arrayFilter(this, el => { - return classNames.filter(className => el.classList.contains(className)).length > 0; - }).length > 0; - } - - function attr(attrs, value) { - if (arguments.length === 1 && typeof attrs === 'string') { - // Get attr - if (this[0]) return this[0].getAttribute(attrs); - return undefined; - } // Set attrs - - - for (let i = 0; i < this.length; i += 1) { - if (arguments.length === 2) { - // String - this[i].setAttribute(attrs, value); - } else { - // Object - for (const attrName in attrs) { - this[i][attrName] = attrs[attrName]; - this[i].setAttribute(attrName, attrs[attrName]); - } - } - } - - return this; - } - - function removeAttr(attr) { - for (let i = 0; i < this.length; i += 1) { - this[i].removeAttribute(attr); - } - - return this; - } - - function transform(transform) { - for (let i = 0; i < this.length; i += 1) { - this[i].style.transform = transform; - } - - return this; - } - - function transition$1(duration) { - for (let i = 0; i < this.length; i += 1) { - this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration; - } - - return this; - } - - function on(...args) { - let [eventType, targetSelector, listener, capture] = args; - - if (typeof args[1] === 'function') { - [eventType, listener, capture] = args; - targetSelector = undefined; - } - - if (!capture) capture = false; - - function handleLiveEvent(e) { - const target = e.target; - if (!target) return; - const eventData = e.target.dom7EventData || []; - - if (eventData.indexOf(e) < 0) { - eventData.unshift(e); - } - - if ($(target).is(targetSelector)) listener.apply(target, eventData);else { - const parents = $(target).parents(); // eslint-disable-line - - for (let k = 0; k < parents.length; k += 1) { - if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData); - } - } - } - - function handleEvent(e) { - const eventData = e && e.target ? e.target.dom7EventData || [] : []; - - if (eventData.indexOf(e) < 0) { - eventData.unshift(e); - } - - listener.apply(this, eventData); - } - - const events = eventType.split(' '); - let j; - - for (let i = 0; i < this.length; i += 1) { - const el = this[i]; - - if (!targetSelector) { - for (j = 0; j < events.length; j += 1) { - const event = events[j]; - if (!el.dom7Listeners) el.dom7Listeners = {}; - if (!el.dom7Listeners[event]) el.dom7Listeners[event] = []; - el.dom7Listeners[event].push({ - listener, - proxyListener: handleEvent - }); - el.addEventListener(event, handleEvent, capture); - } - } else { - // Live events - for (j = 0; j < events.length; j += 1) { - const event = events[j]; - if (!el.dom7LiveListeners) el.dom7LiveListeners = {}; - if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = []; - el.dom7LiveListeners[event].push({ - listener, - proxyListener: handleLiveEvent - }); - el.addEventListener(event, handleLiveEvent, capture); - } - } - } - - return this; - } - - function off(...args) { - let [eventType, targetSelector, listener, capture] = args; - - if (typeof args[1] === 'function') { - [eventType, listener, capture] = args; - targetSelector = undefined; - } - - if (!capture) capture = false; - const events = eventType.split(' '); - - for (let i = 0; i < events.length; i += 1) { - const event = events[i]; - - for (let j = 0; j < this.length; j += 1) { - const el = this[j]; - let handlers; - - if (!targetSelector && el.dom7Listeners) { - handlers = el.dom7Listeners[event]; - } else if (targetSelector && el.dom7LiveListeners) { - handlers = el.dom7LiveListeners[event]; - } - - if (handlers && handlers.length) { - for (let k = handlers.length - 1; k >= 0; k -= 1) { - const handler = handlers[k]; - - if (listener && handler.listener === listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } else if (!listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } - } - } - } - } - - return this; - } - - function trigger(...args) { - const window = getWindow(); - const events = args[0].split(' '); - const eventData = args[1]; - - for (let i = 0; i < events.length; i += 1) { - const event = events[i]; - - for (let j = 0; j < this.length; j += 1) { - const el = this[j]; - - if (window.CustomEvent) { - const evt = new window.CustomEvent(event, { - detail: eventData, - bubbles: true, - cancelable: true - }); - el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0); - el.dispatchEvent(evt); - el.dom7EventData = []; - delete el.dom7EventData; - } - } - } - - return this; - } - - function transitionEnd$1(callback) { - const dom = this; - - function fireCallBack(e) { - if (e.target !== this) return; - callback.call(this, e); - dom.off('transitionend', fireCallBack); - } - - if (callback) { - dom.on('transitionend', fireCallBack); - } - - return this; - } - - function outerWidth(includeMargins) { - if (this.length > 0) { - if (includeMargins) { - const styles = this.styles(); - return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left')); - } - - return this[0].offsetWidth; - } - - return null; - } - - function outerHeight(includeMargins) { - if (this.length > 0) { - if (includeMargins) { - const styles = this.styles(); - return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom')); - } - - return this[0].offsetHeight; - } - - return null; - } - - function offset() { - if (this.length > 0) { - const window = getWindow(); - const document = getDocument(); - const el = this[0]; - 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 - }; - } - - return null; - } - - function styles() { - const window = getWindow(); - if (this[0]) return window.getComputedStyle(this[0], null); - return {}; - } - - function css(props, value) { - const window = getWindow(); - let i; - - if (arguments.length === 1) { - if (typeof props === 'string') { - // .css('width') - if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props); - } else { - // .css({ width: '100px' }) - for (i = 0; i < this.length; i += 1) { - for (const prop in props) { - this[i].style[prop] = props[prop]; - } - } - - return this; - } - } - - if (arguments.length === 2 && typeof props === 'string') { - // .css('width', '100px') - for (i = 0; i < this.length; i += 1) { - this[i].style[props] = value; - } - - return this; - } - - return this; - } - - function each(callback) { - if (!callback) return this; - this.forEach((el, index) => { - callback.apply(el, [el, index]); - }); - return this; - } - - function filter(callback) { - const result = arrayFilter(this, callback); - return $(result); - } - - function html(html) { - if (typeof html === 'undefined') { - return this[0] ? this[0].innerHTML : null; - } - - for (let i = 0; i < this.length; i += 1) { - this[i].innerHTML = html; - } - - return this; - } - - function text(text) { - if (typeof text === 'undefined') { - return this[0] ? this[0].textContent.trim() : null; - } - - for (let i = 0; i < this.length; i += 1) { - this[i].textContent = text; - } - - return this; - } - - function is(selector) { - const window = getWindow(); - const document = getDocument(); - const el = this[0]; - let compareWith; - let i; - if (!el || typeof selector === 'undefined') return false; - - if (typeof selector === 'string') { - if (el.matches) return el.matches(selector); - if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector); - if (el.msMatchesSelector) return el.msMatchesSelector(selector); - compareWith = $(selector); - - for (i = 0; i < compareWith.length; i += 1) { - if (compareWith[i] === el) return true; - } - - return false; - } - - if (selector === document) { - return el === document; - } - - if (selector === window) { - return el === window; - } - - if (selector.nodeType || selector instanceof Dom7) { - compareWith = selector.nodeType ? [selector] : selector; - - for (i = 0; i < compareWith.length; i += 1) { - if (compareWith[i] === el) return true; - } - - return false; - } - - return false; - } - - function index() { - let child = this[0]; - 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 eq(index) { - if (typeof index === 'undefined') return this; - const length = this.length; - - if (index > length - 1) { - return $([]); - } - - if (index < 0) { - const returnIndex = length + index; - if (returnIndex < 0) return $([]); - return $([this[returnIndex]]); - } - - return $([this[index]]); - } - - function append(...els) { - let newChild; - const document = getDocument(); - - for (let k = 0; k < els.length; k += 1) { - newChild = els[k]; - - for (let i = 0; i < this.length; i += 1) { - if (typeof newChild === 'string') { - const tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - - while (tempDiv.firstChild) { - this[i].appendChild(tempDiv.firstChild); - } - } else if (newChild instanceof Dom7) { - for (let j = 0; j < newChild.length; j += 1) { - this[i].appendChild(newChild[j]); - } - } else { - this[i].appendChild(newChild); - } - } - } - - return this; - } - - function prepend(newChild) { - const document = getDocument(); - let i; - let j; - - for (i = 0; i < this.length; i += 1) { - if (typeof newChild === 'string') { - const tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - - for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) { - this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); - } - } else if (newChild instanceof Dom7) { - for (j = 0; j < newChild.length; j += 1) { - this[i].insertBefore(newChild[j], this[i].childNodes[0]); - } - } else { - this[i].insertBefore(newChild, this[i].childNodes[0]); - } - } - - return this; - } - - function next(selector) { - if (this.length > 0) { - if (selector) { - if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { - return $([this[0].nextElementSibling]); - } - - return $([]); - } - - if (this[0].nextElementSibling) return $([this[0].nextElementSibling]); - return $([]); - } - - return $([]); - } - - function nextAll(selector) { - const nextEls = []; - let el = this[0]; - if (!el) return $([]); - - while (el.nextElementSibling) { - const next = el.nextElementSibling; // eslint-disable-line - - if (selector) { - if ($(next).is(selector)) nextEls.push(next); - } else nextEls.push(next); - - el = next; - } - - return $(nextEls); - } - - function prev(selector) { - if (this.length > 0) { - const el = this[0]; - - if (selector) { - if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { - return $([el.previousElementSibling]); - } - - return $([]); - } - - if (el.previousElementSibling) return $([el.previousElementSibling]); - return $([]); - } - - return $([]); - } - - function prevAll(selector) { - const prevEls = []; - let el = this[0]; - if (!el) return $([]); - - while (el.previousElementSibling) { - const prev = el.previousElementSibling; // eslint-disable-line - - if (selector) { - if ($(prev).is(selector)) prevEls.push(prev); - } else prevEls.push(prev); - - el = prev; - } - - return $(prevEls); - } - - function parent(selector) { - const parents = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - if (this[i].parentNode !== null) { - if (selector) { - if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode); - } else { - parents.push(this[i].parentNode); - } - } - } - - return $(parents); - } - - function parents(selector) { - const parents = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - let parent = this[i].parentNode; // eslint-disable-line - - while (parent) { - if (selector) { - if ($(parent).is(selector)) parents.push(parent); - } else { - parents.push(parent); - } - - parent = parent.parentNode; - } - } - - return $(parents); - } - - function closest(selector) { - let closest = this; // eslint-disable-line - - if (typeof selector === 'undefined') { - return $([]); - } - - if (!closest.is(selector)) { - closest = closest.parents(selector).eq(0); - } - - return closest; - } - - function find(selector) { - const foundElements = []; - - for (let i = 0; i < this.length; i += 1) { - const found = this[i].querySelectorAll(selector); - - for (let j = 0; j < found.length; j += 1) { - foundElements.push(found[j]); - } - } - - return $(foundElements); - } - - function children(selector) { - const children = []; // eslint-disable-line - - for (let i = 0; i < this.length; i += 1) { - const childNodes = this[i].children; - - for (let j = 0; j < childNodes.length; j += 1) { - if (!selector || $(childNodes[j]).is(selector)) { - children.push(childNodes[j]); - } - } - } - - return $(children); - } - - function remove() { - for (let i = 0; i < this.length; i += 1) { - if (this[i].parentNode) this[i].parentNode.removeChild(this[i]); - } - - return this; - } - - const Methods = { - addClass, - removeClass, - hasClass, - toggleClass, - attr, - removeAttr, - transform, - transition: transition$1, - on, - off, - trigger, - transitionEnd: transitionEnd$1, - outerWidth, - outerHeight, - styles, - offset, - css, - each, - html, - text, - is, - index, - eq, - append, - prepend, - next, - nextAll, - prev, - prevAll, - parent, - parents, - closest, - find, - children, - filter, - remove - }; - Object.keys(Methods).forEach(methodName => { - Object.defineProperty($.fn, methodName, { - value: Methods[methodName], - writable: true - }); - }); - - 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]); - const noExtend = ['__proto__', 'constructor', 'prototype']; - - 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 => noExtend.indexOf(key) < 0); - - 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(); - } - - let support; - - function calcSupport() { - const window = getWindow(); - const document = getDocument(); - return { - smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style, - touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch), - passiveListener: function checkPassiveListener() { - let supportsPassive = false; - - try { - const opts = Object.defineProperty({}, 'passive', { - // eslint-disable-next-line - get() { - supportsPassive = true; - } - - }); - window.addEventListener('testPassiveListener', null, opts); - } catch (e) {// No support - } - - return supportsPassive; - }(), - gestures: function checkGestures() { - return 'ongesturestart' in window; - }() - }; - } - - 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).*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(); - - function isSafari() { - const ua = window.navigator.userAgent.toLowerCase(); - return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; - } - - return { - isSafari: isSafari(), - isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) - }; - } - - function getBrowser() { - if (!browser) { - browser = calcBrowser(); - } - - return browser; - } - - function Resize({ - swiper, - on, - emit - }) { - const window = getWindow(); - let observer = 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 => { - 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 (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 (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: 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 = swiper.$el.parents(); - - for (let i = 0; i < containerParents.length; i += 1) { - attach(containerParents[i]); - } - } // Observe container - - - attach(swiper.$el[0], { - childList: swiper.params.observeSlideChildren - }); // Observe wrapper - - attach(swiper.$wrapperEl[0], { - 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 (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 (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 (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.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) 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) 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[0].clientWidth; - } - - if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { - height = swiper.params.height; - } else { - height = $el[0].clientHeight; - } - - if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { - return; - } // Subtract paddings - - - width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10); - height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('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 getDirectionLabel(property) { - if (swiper.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]; - } - - function getDirectionPropertyValue(node, label) { - return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0); - } - - const params = swiper.params; - const { - $wrapperEl, - size: swiperSize, - rtlTranslate: rtl, - wrongRTL - } = swiper; - const isVirtual = swiper.virtual && params.virtual.enabled; - const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; - const slides = $wrapperEl.children(`.${swiper.params.slideClass}`); - 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; - 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; - } - - swiper.virtualSize = -spaceBetween; // reset margins - - if (rtl) slides.css({ - marginLeft: '', - marginBottom: '', - marginTop: '' - });else slides.css({ - marginRight: '', - marginBottom: '', - marginTop: '' - }); // reset cssMode offsets - - if (params.centeredSlides && params.cssMode) { - setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', ''); - setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', ''); - } - - const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; - - if (gridEnabled) { - swiper.grid.initSlides(slidesLength); - } // 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.eq(i); - - if (gridEnabled) { - swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel); - } - - if (slide.css('display') === 'none') continue; // eslint-disable-line - - if (params.slidesPerView === 'auto') { - if (shouldResetSlideSize) { - slides[i].style[getDirectionLabel('width')] = ``; - } - - const slideStyles = getComputedStyle(slide[0]); - const currentTransform = slide[0].style.transform; - const currentWebKitTransform = slide[0].style.webkitTransform; - - if (currentTransform) { - slide[0].style.transform = 'none'; - } - - if (currentWebKitTransform) { - slide[0].style.webkitTransform = 'none'; - } - - if (params.roundLengths) { - slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(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[0]; - slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); - } - } - - if (currentTransform) { - slide[0].style.transform = currentTransform; - } - - if (currentWebKitTransform) { - slide[0].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 (slides[i]) { - slides[i].style[getDirectionLabel('width')] = `${slideSize}px`; - } - } - - if (slides[i]) { - slides[i].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.css({ - width: `${swiper.virtualSize + params.spaceBetween}px` - }); - } - - if (params.setWrapperSize) { - $wrapperEl.css({ - [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px` - }); - } - - if (gridEnabled) { - swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel); - } // Remove last grid elements depending on width - - - if (!params.centeredSlides) { - const newSlidesGrid = []; - - for (let i = 0; i < snapGrid.length; i += 1) { - let slidesGridItem = snapGrid[i]; - if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); - - if (snapGrid[i] <= swiper.virtualSize - swiperSize) { - newSlidesGrid.push(slidesGridItem); - } - } - - snapGrid = newSlidesGrid; - - if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { - snapGrid.push(swiper.virtualSize - swiperSize); - } - } - - if (snapGrid.length === 0) snapGrid = [0]; - - if (params.spaceBetween !== 0) { - const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight'); - slides.filter((_, slideIndex) => { - if (!params.cssMode) return true; - - if (slideIndex === slides.length - 1) { - return false; - } - - return true; - }).css({ - [key]: `${spaceBetween}px` - }); - } - - if (params.centeredSlides && params.centeredSlidesBounds) { - let allSlidesSize = 0; - slidesSizesGrid.forEach(slideSizeValue => { - allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); - }); - allSlidesSize -= params.spaceBetween; - const maxSnap = allSlidesSize - swiperSize; - 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 + (params.spaceBetween ? params.spaceBetween : 0); - }); - allSlidesSize -= params.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(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); - setCSSProperty(swiper.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(); - } - } - - 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.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0]; - } - - return swiper.slides.eq(index)[0]; - }; // Find slides currently in view - - - if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { - if (swiper.params.centeredSlides) { - swiper.visibleSlides.each(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) swiper.$wrapperEl.css('height', `${newHeight}px`); - } - - function updateSlidesOffset() { - const swiper = this; - const slides = swiper.slides; - - for (let i = 0; i < slides.length; i += 1) { - slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; - } - } - - 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; // Visible Slides - - slides.removeClass(params.slideVisibleClass); - swiper.visibleSlidesIndexes = []; - swiper.visibleSlides = []; - - 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 + params.spaceBetween); - const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween); - const slideBefore = -(offsetCenter - slideOffset); - const slideAfter = slideBefore + 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); - slides.eq(i).addClass(params.slideVisibleClass); - } - - slide.progress = rtl ? -slideProgress : slideProgress; - slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; - } - - swiper.visibleSlides = $(swiper.visibleSlides); - } - - 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 - } = swiper; - const wasBeginning = isBeginning; - const wasEnd = isEnd; - - if (translatesDiff === 0) { - progress = 0; - isBeginning = true; - isEnd = true; - } else { - progress = (translate - swiper.minTranslate()) / translatesDiff; - isBeginning = progress <= 0; - isEnd = progress >= 1; - } - - Object.assign(swiper, { - progress, - 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); - } - - function updateSlidesClasses() { - const swiper = this; - const { - slides, - params, - $wrapperEl, - activeIndex, - realIndex - } = swiper; - const isVirtual = swiper.virtual && params.virtual.enabled; - slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`); - let activeSlide; - - if (isVirtual) { - activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`); - } else { - activeSlide = slides.eq(activeIndex); - } // Active classes - - - activeSlide.addClass(params.slideActiveClass); - - if (params.loop) { - // Duplicate to all looped slides - if (activeSlide.hasClass(params.slideDuplicateClass)) { - $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass); - } else { - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass); - } - } // Next Slide - - - let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass); - - if (params.loop && nextSlide.length === 0) { - nextSlide = slides.eq(0); - nextSlide.addClass(params.slideNextClass); - } // Prev Slide - - - let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass); - - if (params.loop && prevSlide.length === 0) { - prevSlide = slides.eq(-1); - prevSlide.addClass(params.slidePrevClass); - } - - if (params.loop) { - // Duplicate to all looped slides - if (nextSlide.hasClass(params.slideDuplicateClass)) { - $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass); - } else { - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass); - } - - if (prevSlide.hasClass(params.slideDuplicateClass)) { - $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass); - } else { - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass); - } - } - - swiper.emitSlidesClasses(); - } - - function updateActiveIndex(newActiveIndex) { - const swiper = this; - const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; - const { - slidesGrid, - snapGrid, - params, - activeIndex: previousIndex, - realIndex: previousRealIndex, - snapIndex: previousSnapIndex - } = swiper; - let activeIndex = newActiveIndex; - let snapIndex; - - if (typeof activeIndex === 'undefined') { - 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; - } - } - - 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) { - if (snapIndex !== previousSnapIndex) { - swiper.snapIndex = snapIndex; - swiper.emit('snapIndexChange'); - } - - return; - } // Get real index - - - const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10); - Object.assign(swiper, { - snapIndex, - realIndex, - previousIndex, - activeIndex - }); - swiper.emit('activeIndexChange'); - swiper.emit('snapIndexChange'); - - if (previousRealIndex !== realIndex) { - swiper.emit('realIndexChange'); - } - - if (swiper.initialized || swiper.params.runCallbacksOnInit) { - swiper.emit('slideChange'); - } - } - - function updateClickedSlide(e) { - const swiper = this; - const params = swiper.params; - const slide = $(e.target).closest(`.${params.slideClass}`)[0]; - 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).attr('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[0], axis); - if (rtl) currentTranslate = -currentTranslate; - return currentTranslate || 0; - } - - function setTranslate(translate, byController) { - const swiper = this; - const { - rtlTranslate: rtl, - params, - $wrapperEl, - 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); - } - - if (params.cssMode) { - wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; - } else if (!params.virtualTranslate) { - $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`); - } - - swiper.previousTranslate = swiper.translate; - swiper.translate = swiper.isHorizontal() ? x : y; // 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[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); - swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); - swiper.onTranslateToWrapperTransitionEnd = null; - delete swiper.onTranslateToWrapperTransitionEnd; - - if (runCallbacks) { - swiper.emit('transitionEnd'); - } - }; - } - - swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); - swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', 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.transition(duration); - } - - 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 && activeIndex !== previousIndex) { - if (dir === 'reset') { - swiper.emit(`slideResetTransition${step}`); - return; - } - - 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 = this.params.speed, runCallbacks = true, internal, initial) { - if (typeof index !== 'number' && typeof index !== 'string') { - throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`); - } - - if (typeof index === 'string') { - /** - * The `index` argument converted from `string` to `number`. - * @type {number} - */ - const indexAsNumber = parseInt(index, 10); - /** - * Determines whether the `index` argument is a valid `number` - * after being converted from the `string` type. - * @type {boolean} - */ - - const isValidNumber = isFinite(indexAsNumber); - - if (!isValidNumber) { - throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`); - } // Knowing that the converted `index` is a valid number, - // we can update the original argument's value. - - - index = indexAsNumber; - } - - const swiper = this; - let slideIndex = index; - if (slideIndex < 0) slideIndex = 0; - const { - params, - snapGrid, - slidesGrid, - previousIndex, - activeIndex, - rtlTranslate: rtl, - wrapperEl, - enabled - } = swiper; - - if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) { - return false; - } - - 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; - - if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { - swiper.emit('beforeSlideChangeStart'); - } - - const translate = -snapGrid[snapIndex]; // Update progress - - swiper.updateProgress(translate); // 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 && translate < swiper.translate && translate < swiper.minTranslate()) { - return false; - } - - if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { - if ((activeIndex || 0) !== slideIndex) return false; - } - } - - let direction; - if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index - - if (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) { - const isVirtual = swiper.virtual && swiper.params.virtual.enabled; - - if (isVirtual) { - swiper.wrapperEl.style.scrollSnapType = 'none'; - swiper._immediateVirtual = true; - } - - wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; - - if (isVirtual) { - requestAnimationFrame(() => { - swiper.wrapperEl.style.scrollSnapType = ''; - swiper._swiperImmediateVirtual = 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; - } - - if (speed === 0) { - swiper.setTransition(0); - swiper.setTranslate(translate); - swiper.updateActiveIndex(slideIndex); - swiper.updateSlidesClasses(); - swiper.emit('beforeTransitionStart', speed, internal); - swiper.transitionStart(runCallbacks, direction); - swiper.transitionEnd(runCallbacks, direction); - } else { - swiper.setTransition(speed); - swiper.setTranslate(translate); - swiper.updateActiveIndex(slideIndex); - swiper.updateSlidesClasses(); - swiper.emit('beforeTransitionStart', speed, internal); - swiper.transitionStart(runCallbacks, direction); - - 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[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); - swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); - swiper.onSlideToWrapperTransitionEnd = null; - delete swiper.onSlideToWrapperTransitionEnd; - swiper.transitionEnd(runCallbacks, direction); - }; - } - - swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); - swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); - } - } - - return true; - } - - function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - let newIndex = index; - - if (swiper.params.loop) { - newIndex += swiper.loopedSlides; - } - - return swiper.slideTo(newIndex, speed, runCallbacks, internal); - } - - /* eslint no-unused-vars: "off" */ - function slideNext(speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - const { - animating, - enabled, - params - } = swiper; - if (!enabled) return swiper; - 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; - - if (params.loop) { - if (animating && params.loopPreventsSlide) return false; - swiper.loopFix(); // eslint-disable-next-line - - swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; - } - - return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); - } - - /* eslint no-unused-vars: "off" */ - function slidePrev(speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - const { - params, - animating, - snapGrid, - slidesGrid, - rtlTranslate, - enabled - } = swiper; - if (!enabled) return swiper; - - if (params.loop) { - if (animating && params.loopPreventsSlide) return false; - swiper.loopFix(); // eslint-disable-next-line - - swiper._clientLeft = swiper.$wrapperEl[0].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)); - let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; - - if (typeof prevSnap === 'undefined' && params.cssMode) { - let prevSnapIndex; - snapGrid.forEach((snap, snapIndex) => { - if (normalizedTranslate >= snap) { - // prevSnap = snap; - prevSnapIndex = snapIndex; - } - }); - - if (typeof prevSnapIndex !== 'undefined') { - prevSnap = 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); - } - } - - return swiper.slideTo(prevIndex, speed, runCallbacks, internal); - } - - /* eslint no-unused-vars: "off" */ - function slideReset(speed = this.params.speed, runCallbacks = true, internal) { - const swiper = this; - return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); - } - - /* eslint no-unused-vars: "off" */ - function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) { - const swiper = this; - 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; - const { - params, - $wrapperEl - } = swiper; - const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; - let slideToIndex = swiper.clickedIndex; - let realIndex; - - if (params.loop) { - if (swiper.animating) return; - realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10); - - if (params.centeredSlides) { - if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { - swiper.loopFix(); - slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index(); - nextTick(() => { - swiper.slideTo(slideToIndex); - }); - } else { - swiper.slideTo(slideToIndex); - } - } else if (slideToIndex > swiper.slides.length - slidesPerView) { - swiper.loopFix(); - slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index(); - nextTick(() => { - swiper.slideTo(slideToIndex); - }); - } else { - swiper.slideTo(slideToIndex); - } - } else { - swiper.slideTo(slideToIndex); - } - } - - var slide = { - slideTo, - slideToLoop, - slideNext, - slidePrev, - slideReset, - slideToClosest, - slideToClickedSlide - }; - - function loopCreate() { - const swiper = this; - const document = getDocument(); - const { - params, - $wrapperEl - } = swiper; // Remove duplicated slides - - const $selector = $($wrapperEl.children()[0].parentNode); - $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove(); - let slides = $selector.children(`.${params.slideClass}`); - - if (params.loopFillGroupWithBlank) { - const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup; - - if (blankSlidesNum !== params.slidesPerGroup) { - for (let i = 0; i < blankSlidesNum; i += 1) { - const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`); - $selector.append(blankNode); - } - - slides = $selector.children(`.${params.slideClass}`); - } - } - - if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length; - swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10)); - swiper.loopedSlides += params.loopAdditionalSlides; - - if (swiper.loopedSlides > slides.length) { - swiper.loopedSlides = slides.length; - } - - const prependSlides = []; - const appendSlides = []; - slides.each((el, index) => { - const slide = $(el); - - if (index < swiper.loopedSlides) { - appendSlides.push(el); - } - - if (index < slides.length && index >= slides.length - swiper.loopedSlides) { - prependSlides.push(el); - } - - slide.attr('data-swiper-slide-index', index); - }); - - for (let i = 0; i < appendSlides.length; i += 1) { - $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); - } - - for (let i = prependSlides.length - 1; i >= 0; i -= 1) { - $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); - } - } - - function loopFix() { - const swiper = this; - swiper.emit('beforeLoopFix'); - const { - activeIndex, - slides, - loopedSlides, - allowSlidePrev, - allowSlideNext, - snapGrid, - rtlTranslate: rtl - } = swiper; - let newIndex; - swiper.allowSlidePrev = true; - swiper.allowSlideNext = true; - const snapTranslate = -snapGrid[activeIndex]; - const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding - - if (activeIndex < loopedSlides) { - newIndex = slides.length - loopedSlides * 3 + activeIndex; - newIndex += loopedSlides; - const slideChanged = swiper.slideTo(newIndex, 0, false, true); - - if (slideChanged && diff !== 0) { - swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); - } - } else if (activeIndex >= slides.length - loopedSlides) { - // Fix For Positive Oversliding - newIndex = -slides.length + activeIndex + loopedSlides; - newIndex += loopedSlides; - const slideChanged = swiper.slideTo(newIndex, 0, false, true); - - if (slideChanged && diff !== 0) { - swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); - } - } - - swiper.allowSlidePrev = allowSlidePrev; - swiper.allowSlideNext = allowSlideNext; - swiper.emit('loopFix'); - } - - function loopDestroy() { - const swiper = this; - const { - $wrapperEl, - params, - slides - } = swiper; - $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove(); - slides.removeAttr('data-swiper-slide-index'); - } - - var loop = { - loopCreate, - loopFix, - loopDestroy - }; - - function setGrabCursor(moving) { - const swiper = this; - if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; - const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; - el.style.cursor = 'move'; - el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab'; - el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab'; - el.style.cursor = moving ? 'grabbing' : 'grab'; - } - - function unsetGrabCursor() { - const swiper = this; - - if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { - return; - } - - swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; - } - - var grabCursor = { - setGrabCursor, - unsetGrabCursor - }; - - 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); - return found || __closestFrom(el.getRootNode().host); - } - - return __closestFrom(base); - } - - function onTouchStart(event) { - const swiper = this; - const document = getDocument(); - const window = getWindow(); - const data = swiper.touchEventsData; - const { - params, - touches, - enabled - } = swiper; - if (!enabled) return; - - if (swiper.animating && params.preventInteractionOnTransition) { - return; - } - - if (!swiper.animating && params.cssMode && params.loop) { - swiper.loopFix(); - } - - let e = event; - if (e.originalEvent) e = e.originalEvent; - let $targetEl = $(e.target); - - if (params.touchEventsTarget === 'wrapper') { - if (!$targetEl.closest(swiper.wrapperEl).length) return; - } - - data.isTouchEvent = e.type === 'touchstart'; - if (!data.isTouchEvent && 'which' in e && e.which === 3) return; - if (!data.isTouchEvent && '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 !== ''; - - if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) { - $targetEl = $(event.path[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, e.target) : $targetEl.closest(noSwipingSelector)[0])) { - swiper.allowClick = true; - return; - } - - if (params.swipeHandler) { - if (!$targetEl.closest(params.swipeHandler)[0]) return; - } - - touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; - touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : 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 - - const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; - const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; - - if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { - if (edgeSwipeDetection === 'prevent') { - event.preventDefault(); - } else { - 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; - - if (e.type !== 'touchstart') { - let preventDefault = true; - if ($targetEl.is(data.focusableElements)) preventDefault = false; - - if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) { - document.activeElement.blur(); - } - - const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; - - if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) { - e.preventDefault(); - } - } - - 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; - let e = event; - if (e.originalEvent) e = e.originalEvent; - - if (!data.isTouched) { - if (data.startMoving && data.isScrolling) { - swiper.emit('touchMoveOpposite', e); - } - - return; - } - - if (data.isTouchEvent && e.type !== 'touchmove') return; - const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]); - const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX; - const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY; - - if (e.preventedByNestedSwiper) { - touches.startX = pageX; - touches.startY = pageY; - return; - } - - if (!swiper.allowTouchMove) { - // isMoved = true; - swiper.allowClick = false; - - if (data.isTouched) { - Object.assign(touches, { - startX: pageX, - startY: pageY, - currentX: pageX, - currentY: pageY - }); - data.touchStartTime = now(); - } - - return; - } - - if (data.isTouchEvent && 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 (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { - return; - } - } - - if (data.isTouchEvent && document.activeElement) { - if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) { - data.isMoved = true; - swiper.allowClick = false; - return; - } - } - - if (data.allowTouchCallbacks) { - swiper.emit('touchMove', e); - } - - if (e.targetTouches && e.targetTouches.length > 1) return; - 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) { - 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(); - } - - if (!data.isMoved) { - if (params.loop && !params.cssMode) { - swiper.loopFix(); - } - - data.startTranslate = swiper.getTranslate(); - swiper.setTransition(0); - - if (swiper.animating) { - swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); - } - - data.allowMomentumBounce = false; // Grab Cursor - - if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { - swiper.setGrabCursor(true); - } - - swiper.emit('sliderFirstMove', e); - } - - swiper.emit('sliderMove', e); - data.isMoved = true; - let diff = swiper.isHorizontal() ? diffX : diffY; - touches.diff = diff; - diff *= params.touchRatio; - if (rtl) diff = -diff; - swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; - data.currentTranslate = diff + data.startTranslate; - let disableParentSwiper = true; - let resistanceRatio = params.resistanceRatio; - - if (params.touchReleaseOnEdges) { - resistanceRatio = 0; - } - - if (diff > 0 && data.currentTranslate > swiper.minTranslate()) { - disableParentSwiper = false; - if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; - } else if (diff < 0 && 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 (swiper.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; - const { - params, - touches, - rtlTranslate: rtl, - slidesGrid, - enabled - } = swiper; - if (!enabled) return; - let e = event; - if (e.originalEvent) e = e.originalEvent; - - 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) { - swiper.updateClickedSlide(e); - 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.currentTranslate === data.startTranslate) { - 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 (swiper.params.freeMode && params.freeMode.enabled) { - swiper.freeMode.onTouchEnd({ - currentPos - }); - return; - } // Find current slide - - - 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 (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { - stopIndex = i; - groupSize = slidesGrid[i + increment] - slidesGrid[i]; - } - } else if (currentPos >= slidesGrid[i]) { - stopIndex = i; - groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; - } - } // 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(stopIndex + increment);else swiper.slideTo(stopIndex); - } - - if (swiper.swipeDirection === 'prev') { - if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);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(stopIndex + increment); - } - - if (swiper.swipeDirection === 'prev') { - swiper.slideTo(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; // Disable locks on resize - - swiper.allowSlideNext = true; - swiper.allowSlidePrev = true; - swiper.updateSize(); - swiper.updateSlides(); - swiper.updateSlidesClasses(); - - if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) { - swiper.slideTo(swiper.slides.length - 1, 0, false, true); - } else { - swiper.slideTo(swiper.activeIndex, 0, false, true); - } - - if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { - swiper.autoplay.run(); - } // 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); - } - - let dummyEventAttached = false; - - function dummyEventListener() {} - - const events = (swiper, method) => { - const document = getDocument(); - const { - params, - touchEvents, - el, - wrapperEl, - device, - support - } = swiper; - const capture = !!params.nested; - const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; - const swiperMethod = method; // Touch Events - - if (!support.touch) { - el[domMethod](touchEvents.start, swiper.onTouchStart, false); - document[domMethod](touchEvents.move, swiper.onTouchMove, capture); - document[domMethod](touchEvents.end, swiper.onTouchEnd, false); - } else { - const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? { - passive: true, - capture: false - } : false; - el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener); - el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? { - passive: false, - capture - } : capture); - el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener); - - if (touchEvents.cancel) { - el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener); - } - } // 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); - } - }; - - function attachEvents() { - const swiper = this; - const document = getDocument(); - const { - params, - support - } = swiper; - swiper.onTouchStart = onTouchStart.bind(swiper); - swiper.onTouchMove = onTouchMove.bind(swiper); - swiper.onTouchEnd = onTouchEnd.bind(swiper); - - if (params.cssMode) { - swiper.onScroll = onScroll.bind(swiper); - } - - swiper.onClick = onClick.bind(swiper); - - if (support.touch && !dummyEventAttached) { - document.addEventListener('touchstart', dummyEventListener); - dummyEventAttached = true; - } - - 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 { - activeIndex, - initialized, - loopedSlides = 0, - params, - $el - } = swiper; - const breakpoints = params.breakpoints; - if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters - - const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); - 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 wasEnabled = params.enabled; - - if (wasMultiRow && !isMultiRow) { - $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`); - swiper.emitContainerClasses(); - } else if (!wasMultiRow && isMultiRow) { - $el.addClass(`${params.containerModifierClass}grid`); - - if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { - $el.addClass(`${params.containerModifierClass}grid-column`); - } - - swiper.emitContainerClasses(); - } - - const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; - const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); - - if (directionChanged && initialized) { - swiper.changeDirection(); - } - - extend(swiper.params, breakpointParams); - const isEnabled = swiper.params.enabled; - 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 (needsReLoop && initialized) { - swiper.loopDestroy(); - swiper.loopCreate(); - swiper.updateSlides(); - swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false); - } - - 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, - support - } = swiper; // prettier-ignore - - const suffixes = prepareClasses(['initialized', params.direction, { - 'pointer-events': !support.touch - }, { - '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 - }], params.containerModifierClass); - classNames.push(...suffixes); - $el.addClass([...classNames].join(' ')); - swiper.emitContainerClasses(); - } - - function removeClasses() { - const swiper = this; - const { - $el, - classNames - } = swiper; - $el.removeClass(classNames.join(' ')); - swiper.emitContainerClasses(); - } - - var classes = { - addClasses, - removeClasses - }; - - function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) { - const window = getWindow(); - let image; - - function onReady() { - if (callback) callback(); - } - - const isPicture = $(imageEl).parent('picture')[0]; - - if (!isPicture && (!imageEl.complete || !checkForComplete)) { - if (src) { - image = new window.Image(); - image.onload = onReady; - image.onerror = onReady; - - if (sizes) { - image.sizes = sizes; - } - - if (srcset) { - image.srcset = srcset; - } - - if (src) { - image.src = src; - } - } else { - onReady(); - } - } else { - // image already loaded... - onReady(); - } - } - - function preloadImages() { - const swiper = this; - swiper.imagesToLoad = swiper.$el.find('img'); - - function onReady() { - if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return; - if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1; - - if (swiper.imagesLoaded === swiper.imagesToLoad.length) { - if (swiper.params.updateOnImagesReady) swiper.update(); - swiper.emit('imagesReady'); - } - } - - for (let i = 0; i < swiper.imagesToLoad.length; i += 1) { - const imageEl = swiper.imagesToLoad[i]; - swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady); - } - } - - var images = { - loadImage, - preloadImages - }; - - 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', - touchEventsTarget: 'wrapper', - initialSlide: 0, - speed: 300, - cssMode: false, - updateOnWindowResize: true, - resizeObserver: true, - nested: false, - createElements: false, - 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, - // 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: 0, - 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, - // Images - preloadImages: true, - updateOnImagesReady: true, - // loop - loop: false, - loopAdditionalSlides: 0, - loopedSlides: null, - loopFillGroupWithBlank: false, - loopPreventsSlide: true, - // Swiping/no swiping - allowSlidePrev: true, - allowSlideNext: true, - swipeHandler: null, - // '.swipe-handler', - noSwiping: true, - noSwipingClass: 'swiper-no-swiping', - noSwipingSelector: null, - // Passive Listeners - passiveListeners: true, - // NS - containerModifierClass: 'swiper-', - // NEW - slideClass: 'swiper-slide', - slideBlankClass: 'swiper-slide-invisible-blank', - slideActiveClass: 'swiper-slide-active', - slideDuplicateActiveClass: 'swiper-slide-duplicate-active', - slideVisibleClass: 'swiper-slide-visible', - slideDuplicateClass: 'swiper-slide-duplicate', - slideNextClass: 'swiper-slide-next', - slideDuplicateNextClass: 'swiper-slide-duplicate-next', - slidePrevClass: 'swiper-slide-prev', - slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', - wrapperClass: 'swiper-wrapper', - // 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 (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) { - params[moduleParamName] = { - auto: true - }; - } - - if (!(moduleParamName in params && 'enabled' in moduleParams)) { - extend(allModulesParams, obj); - return; - } - - if (params[moduleParamName] === true) { - params[moduleParamName] = { - enabled: true - }; - } - - 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, - images - }; - 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; - - if (params.el && $(params.el).length > 1) { - const swipers = []; - $(params.el).each(containerEl => { - const newParams = extend({}, params, { - el: containerEl - }); - swipers.push(new Swiper(newParams)); - }); - 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)) { - swiper.modules.push(...params.modules); - } - - const allModulesParams = {}; - swiper.modules.forEach(mod => { - mod({ - 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); - } // Save Dom lib - - - swiper.$ = $; // 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, - // Locks - allowSlideNext: swiper.params.allowSlideNext, - allowSlidePrev: swiper.params.allowSlidePrev, - // Touch Events - touchEvents: function touchEvents() { - const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel']; - const desktop = ['pointerdown', 'pointermove', 'pointerup']; - swiper.touchEventsTouch = { - start: touch[0], - move: touch[1], - end: touch[2], - cancel: touch[3] - }; - swiper.touchEventsDesktop = { - start: desktop[0], - move: desktop[1], - end: desktop[2] - }; - return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop; - }(), - 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: now(), - clickTimeout: undefined, - // Velocities - velocities: [], - allowMomentumBounce: undefined, - isTouchEvent: undefined, - startMoving: undefined - }, - // 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 - - - return swiper; - } - - 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; - 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.each(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 (params.centeredSlides) { - let slideSize = slides[activeIndex].swiperSlideSize; - let breakLoop; - - for (let i = activeIndex + 1; i < slides.length; i += 1) { - if (slides[i] && !breakLoop) { - slideSize += 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.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 (swiper.params.freeMode && swiper.params.freeMode.enabled) { - setTranslate(); - - if (swiper.params.autoHeight) { - swiper.updateAutoHeight(); - } - } else { - if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { - translated = swiper.slideTo(swiper.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.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`); - swiper.emitContainerClasses(); - swiper.params.direction = newDirection; - swiper.slides.each(slideEl => { - if (newDirection === 'vertical') { - slideEl.style.width = ''; - } else { - slideEl.style.height = ''; - } - }); - swiper.emit('changeDirection'); - if (needUpdate) swiper.update(); - return swiper; - } - - mount(el) { - const swiper = this; - if (swiper.mounted) return true; // Find el - - const $el = $(el || swiper.params.el); - el = $el[0]; - - if (!el) { - return false; - } - - el.swiper = swiper; - - 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 - - res.children = options => $el.children(options); - - return res; - } - - return $el.children(getWrapperSelector()); - }; // Find Wrapper - - - let $wrapperEl = getWrapper(); - - if ($wrapperEl.length === 0 && swiper.params.createElements) { - const document = getDocument(); - const wrapper = document.createElement('div'); - $wrapperEl = $(wrapper); - wrapper.className = swiper.params.wrapperClass; - $el.append(wrapper); - $el.children(`.${swiper.params.slideClass}`).each(slideEl => { - $wrapperEl.append(slideEl); - }); - } - - Object.assign(swiper, { - $el, - el, - $wrapperEl, - wrapperEl: $wrapperEl[0], - mounted: true, - // RTL - rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl', - rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), - wrongRTL: $wrapperEl.css('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(); // Create loop - - if (swiper.params.loop) { - swiper.loopCreate(); - } // 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(); - } - - if (swiper.params.preloadImages) { - swiper.preloadImages(); - } // Slide To Initial Slide - - - if (swiper.params.loop) { - swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true); - } else { - swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); - } // Attach events - - - swiper.attachEvents(); // Init Flag - - swiper.initialized = true; // 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(); - $el.removeAttr('style'); - $wrapperEl.removeAttr('style'); - - if (slides && slides.length) { - slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index'); - } - } - - swiper.emit('destroy'); // Detach emitter events - - Object.keys(swiper.eventsListeners).forEach(eventName => { - swiper.off(eventName); - }); - - if (deleteInstance !== false) { - swiper.$el[0].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 - }) { - extendParams({ - virtual: { - enabled: false, - slides: [], - cache: true, - renderSlide: null, - renderExternal: null, - renderExternalUpdate: true, - addSlidesBefore: 0, - addSlidesAfter: 0 - } - }); - let cssModeTimeout; - swiper.virtual = { - cache: {}, - from: undefined, - to: undefined, - slides: [], - offset: 0, - slidesGrid: [] - }; - - function renderSlide(slide, index) { - const params = swiper.params.virtual; - - if (params.cache && swiper.virtual.cache[index]) { - return swiper.virtual.cache[index]; - } - - const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`
${slide}
`); - if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index); - if (params.cache) swiper.virtual.cache[index] = $slideEl; - return $slideEl; - } - - function update(force) { - const { - slidesPerView, - slidesPerGroup, - centeredSlides - } = swiper.params; - const { - addSlidesBefore, - addSlidesAfter - } = swiper.params.virtual; - const { - from: previousFrom, - to: previousTo, - slides, - slidesGrid: previousSlidesGrid, - offset: previousOffset - } = swiper.virtual; - - if (!swiper.params.cssMode) { - swiper.updateActiveIndex(); - } - - const activeIndex = swiper.activeIndex || 0; - let offsetProp; - if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; - let slidesAfter; - let slidesBefore; - - if (centeredSlides) { - slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; - slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; - } else { - slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; - slidesBefore = slidesPerGroup + addSlidesBefore; - } - - const from = Math.max((activeIndex || 0) - slidesBefore, 0); - const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1); - const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); - Object.assign(swiper.virtual, { - from, - to, - offset, - slidesGrid: swiper.slidesGrid - }); - - function onRendered() { - swiper.updateSlides(); - swiper.updateProgress(); - swiper.updateSlidesClasses(); - - if (swiper.lazy && swiper.params.lazy.enabled) { - swiper.lazy.load(); - } - } - - if (previousFrom === from && previousTo === to && !force) { - if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { - swiper.slides.css(offsetProp, `${offset}px`); - } - - swiper.updateProgress(); - 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(); - } - - return; - } - - const prependIndexes = []; - const appendIndexes = []; - - if (force) { - swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove(); - } else { - for (let i = previousFrom; i <= previousTo; i += 1) { - if (i < from || i > to) { - swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove(); - } - } - } - - for (let i = 0; i < slides.length; i += 1) { - if (i >= from && i <= to) { - if (typeof previousTo === 'undefined' || force) { - appendIndexes.push(i); - } else { - if (i > previousTo) appendIndexes.push(i); - if (i < previousFrom) prependIndexes.push(i); - } - } - } - - appendIndexes.forEach(index => { - swiper.$wrapperEl.append(renderSlide(slides[index], index)); - }); - prependIndexes.sort((a, b) => b - a).forEach(index => { - swiper.$wrapperEl.prepend(renderSlide(slides[index], index)); - }); - swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}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.attr('data-swiper-slide-index'); - - if (cachedElIndex) { - $cachedEl.attr('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) { - swiper.virtual.slides.splice(slidesIndexes[i], 1); - - if (swiper.params.virtual.cache) { - delete swiper.virtual.cache[slidesIndexes[i]]; - } - - if (slidesIndexes[i] < activeIndex) activeIndex -= 1; - activeIndex = Math.max(activeIndex, 0); - } - } else { - swiper.virtual.slides.splice(slidesIndexes, 1); - - if (swiper.params.virtual.cache) { - delete swiper.virtual.cache[slidesIndexes]; - } - - 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; - swiper.virtual.slides = swiper.params.virtual.slides; - swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); - swiper.params.watchSlidesProgress = true; - swiper.originalParams.watchSlidesProgress = true; - - if (!swiper.params.initialSlide) { - update(); - } - }); - 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 - } - }); - - 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.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 (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) { - return undefined; - } - - const $el = swiper.$el; - const swiperWidth = $el[0].clientWidth; - const swiperHeight = $el[0].clientHeight; - const windowWidth = window.innerWidth; - const windowHeight = window.innerHeight; - const swiperOffset = swiper.$el.offset(); - if (rtl) swiperOffset.left -= swiper.$el[0].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; - } - - 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(); - if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); - } else { - if (isPageUp || isPageDown || isArrowUp || isArrowDown) { - if (e.preventDefault) e.preventDefault();else e.returnValue = false; - } - - if (isPageDown || isArrowDown) swiper.slideNext(); - if (isPageUp || isArrowUp) swiper.slidePrev(); - } - - emit('keyPress', kc); - return undefined; - } - - function enable() { - if (swiper.keyboard.enabled) return; - $(document).on('keydown', handle); - swiper.keyboard.enabled = true; - } - - function disable() { - if (!swiper.keyboard.enabled) return; - $(document).off('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 - } - }); - 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; - const params = swiper.params.mousewheel; - - if (swiper.params.cssMode) { - e.preventDefault(); - } - - let target = swiper.$el; - - if (swiper.params.mousewheel.eventsTarget !== 'container') { - target = $(swiper.params.mousewheel.eventsTarget); - } - - if (!swiper.mouseEntered && !target[0].contains(e.target) && !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; - - if (swiper.params.loop) { - swiper.loopFix(); - } - - 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.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(() => { - 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(() => { - 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.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions - - if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true; - } - } - - if (e.preventDefault) e.preventDefault();else e.returnValue = false; - return false; - } - - function events(method) { - let target = swiper.$el; - - if (swiper.params.mousewheel.eventsTarget !== 'container') { - target = $(swiper.params.mousewheel.eventsTarget); - } - - target[method]('mouseenter', handleMouseEnter); - target[method]('mouseleave', handleMouseLeave); - target[method]('wheel', handle); - } - - function enable() { - if (swiper.params.cssMode) { - swiper.wrapperEl.removeEventListener('wheel', handle); - return true; - } - - if (swiper.mousewheel.enabled) return false; - events('on'); - 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('off'); - 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) { - const document = getDocument(); - - if (swiper.params.createElements) { - Object.keys(checkProps).forEach(key => { - if (!params[key] && params.auto === true) { - let element = swiper.$el.children(`.${checkProps[key]}`)[0]; - - if (!element) { - element = document.createElement('div'); - element.className = checkProps[key]; - swiper.$el.append(element); - } - - params[key] = element; - originalParams[key] = element; - } - }); - } - - return params; - } - - function Navigation({ - swiper, - extendParams, - on, - emit - }) { - extendParams({ - navigation: { - nextEl: null, - prevEl: null, - hideOnClick: false, - disabledClass: 'swiper-button-disabled', - hiddenClass: 'swiper-button-hidden', - lockClass: 'swiper-button-lock' - } - }); - swiper.navigation = { - nextEl: null, - $nextEl: null, - prevEl: null, - $prevEl: null - }; - - function getEl(el) { - let $el; - - if (el) { - $el = $(el); - - if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) { - $el = swiper.$el.find(el); - } - } - - return $el; - } - - function toggleEl($el, disabled) { - const params = swiper.params.navigation; - - if ($el && $el.length > 0) { - $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass); - if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled; - - if (swiper.params.watchOverflow && swiper.enabled) { - $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); - } - } - } - - function update() { - // Update Navigation Buttons - if (swiper.params.loop) return; - const { - $nextEl, - $prevEl - } = swiper.navigation; - toggleEl($prevEl, swiper.isBeginning); - toggleEl($nextEl, swiper.isEnd); - } - - function onPrevClick(e) { - e.preventDefault(); - if (swiper.isBeginning && !swiper.params.loop) return; - swiper.slidePrev(); - } - - function onNextClick(e) { - e.preventDefault(); - if (swiper.isEnd && !swiper.params.loop) return; - swiper.slideNext(); - } - - 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; - const $nextEl = getEl(params.nextEl); - const $prevEl = getEl(params.prevEl); - - if ($nextEl && $nextEl.length > 0) { - $nextEl.on('click', onNextClick); - } - - if ($prevEl && $prevEl.length > 0) { - $prevEl.on('click', onPrevClick); - } - - Object.assign(swiper.navigation, { - $nextEl, - nextEl: $nextEl && $nextEl[0], - $prevEl, - prevEl: $prevEl && $prevEl[0] - }); - - if (!swiper.enabled) { - if ($nextEl) $nextEl.addClass(params.lockClass); - if ($prevEl) $prevEl.addClass(params.lockClass); - } - } - - function destroy() { - const { - $nextEl, - $prevEl - } = swiper.navigation; - - if ($nextEl && $nextEl.length) { - $nextEl.off('click', onNextClick); - $nextEl.removeClass(swiper.params.navigation.disabledClass); - } - - if ($prevEl && $prevEl.length) { - $prevEl.off('click', onPrevClick); - $prevEl.removeClass(swiper.params.navigation.disabledClass); - } - } - - on('init', () => { - init(); - update(); - }); - on('toEdge fromEdge lock unlock', () => { - update(); - }); - on('destroy', () => { - destroy(); - }); - on('enable disable', () => { - const { - $nextEl, - $prevEl - } = swiper.navigation; - - if ($nextEl) { - $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass); - } - - if ($prevEl) { - $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass); - } - }); - on('click', (_s, e) => { - const { - $nextEl, - $prevEl - } = swiper.navigation; - const targetEl = e.target; - - if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) { - if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; - let isHidden; - - if ($nextEl) { - isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass); - } else if ($prevEl) { - isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass); - } - - if (isHidden === true) { - emit('navigationShow'); - } else { - emit('navigationHide'); - } - - if ($nextEl) { - $nextEl.toggleClass(swiper.params.navigation.hiddenClass); - } - - if ($prevEl) { - $prevEl.toggleClass(swiper.params.navigation.hiddenClass); - } - } - }); - Object.assign(swiper.navigation, { - update, - init, - destroy - }); - } - - function classesToSelector(classes = '') { - 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` - } - }); - swiper.pagination = { - el: null, - $el: null, - bullets: [] - }; - let bulletSize; - let dynamicBulletIndex = 0; - - function isPaginationDisabled() { - return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0; - } - - function setSideBullets($bulletEl, position) { - const { - bulletActiveClass - } = swiper.params.pagination; - $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`); - } - - function update() { - // Render || Update Pagination bullets/items - const rtl = swiper.rtl; - const params = swiper.params.pagination; - if (isPaginationDisabled()) return; - const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; - const $el = swiper.pagination.$el; // Current/Total - - let current; - const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; - - if (swiper.params.loop) { - current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); - - if (current > slidesLength - 1 - swiper.loopedSlides * 2) { - current -= slidesLength - swiper.loopedSlides * 2; - } - - if (current > total - 1) current -= total; - if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current; - } else if (typeof swiper.snapIndex !== 'undefined') { - current = swiper.snapIndex; - } else { - 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 = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true); - $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`); - - if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { - dynamicBulletIndex += current - swiper.previousIndex; - - if (dynamicBulletIndex > params.dynamicMainBullets - 1) { - dynamicBulletIndex = params.dynamicMainBullets - 1; - } else if (dynamicBulletIndex < 0) { - dynamicBulletIndex = 0; - } - } - - firstIndex = current - dynamicBulletIndex; - lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); - midIndex = (lastIndex + firstIndex) / 2; - } - - bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' ')); - - if ($el.length > 1) { - bullets.each(bullet => { - const $bullet = $(bullet); - const bulletIndex = $bullet.index(); - - if (bulletIndex === current) { - $bullet.addClass(params.bulletActiveClass); - } - - if (params.dynamicBullets) { - if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { - $bullet.addClass(`${params.bulletActiveClass}-main`); - } - - if (bulletIndex === firstIndex) { - setSideBullets($bullet, 'prev'); - } - - if (bulletIndex === lastIndex) { - setSideBullets($bullet, 'next'); - } - } - }); - } else { - const $bullet = bullets.eq(current); - const bulletIndex = $bullet.index(); - $bullet.addClass(params.bulletActiveClass); - - if (params.dynamicBullets) { - const $firstDisplayedBullet = bullets.eq(firstIndex); - const $lastDisplayedBullet = bullets.eq(lastIndex); - - for (let i = firstIndex; i <= lastIndex; i += 1) { - bullets.eq(i).addClass(`${params.bulletActiveClass}-main`); - } - - if (swiper.params.loop) { - if (bulletIndex >= bullets.length - params.dynamicMainBullets) { - for (let i = params.dynamicMainBullets; i >= 0; i -= 1) { - bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`); - } - - bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`); - } else { - setSideBullets($firstDisplayedBullet, 'prev'); - setSideBullets($lastDisplayedBullet, 'next'); - } - } else { - 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.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`); - } - } - - if (params.type === 'fraction') { - $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1)); - $el.find(classesToSelector(params.totalClass)).text(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; - } - - $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed); - } - - if (params.type === 'custom' && params.renderCustom) { - $el.html(params.renderCustom(swiper, current + 1, total)); - emit('paginationRender', $el[0]); - } else { - emit('paginationUpdate', $el[0]); - } - - if (swiper.params.watchOverflow && swiper.enabled) { - $el[swiper.isLocked ? 'addClass' : 'removeClass'](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.slides.length; - const $el = swiper.pagination.$el; - let paginationHTML = ''; - - if (params.type === 'bullets') { - let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; - - if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) { - numberOfBullets = slidesLength; - } - - for (let i = 0; i < numberOfBullets; i += 1) { - if (params.renderBullet) { - paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); - } else { - paginationHTML += `<${params.bulletElement} class="${params.bulletClass}">`; - } - } - - $el.html(paginationHTML); - swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass)); - } - - if (params.type === 'fraction') { - if (params.renderFraction) { - paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); - } else { - paginationHTML = `` + ' / ' + ``; - } - - $el.html(paginationHTML); - } - - if (params.type === 'progressbar') { - if (params.renderProgressbar) { - paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); - } else { - paginationHTML = ``; - } - - $el.html(paginationHTML); - } - - if (params.type !== 'custom') { - emit('paginationRender', swiper.pagination.$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 = $(params.el); - if ($el.length === 0) return; - - if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) { - $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper - - if ($el.length > 1) { - $el = $el.filter(el => { - if ($(el).parents('.swiper')[0] !== swiper.el) return false; - return true; - }); - } - } - - if (params.type === 'bullets' && params.clickable) { - $el.addClass(params.clickableClass); - } - - $el.addClass(params.modifierClass + params.type); - $el.addClass(params.modifierClass + swiper.params.direction); - - if (params.type === 'bullets' && params.dynamicBullets) { - $el.addClass(`${params.modifierClass}${params.type}-dynamic`); - dynamicBulletIndex = 0; - - if (params.dynamicMainBullets < 1) { - params.dynamicMainBullets = 1; - } - } - - if (params.type === 'progressbar' && params.progressbarOpposite) { - $el.addClass(params.progressbarOppositeClass); - } - - if (params.clickable) { - $el.on('click', classesToSelector(params.bulletClass), function onClick(e) { - e.preventDefault(); - let index = $(this).index() * swiper.params.slidesPerGroup; - if (swiper.params.loop) index += swiper.loopedSlides; - swiper.slideTo(index); - }); - } - - Object.assign(swiper.pagination, { - $el, - el: $el[0] - }); - - if (!swiper.enabled) { - $el.addClass(params.lockClass); - } - } - - function destroy() { - const params = swiper.params.pagination; - if (isPaginationDisabled()) return; - const $el = swiper.pagination.$el; - $el.removeClass(params.hiddenClass); - $el.removeClass(params.modifierClass + params.type); - $el.removeClass(params.modifierClass + swiper.params.direction); - if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass); - - if (params.clickable) { - $el.off('click', classesToSelector(params.bulletClass)); - } - } - - on('init', () => { - init(); - render(); - update(); - }); - on('activeIndexChange', () => { - if (swiper.params.loop) { - update(); - } else if (typeof swiper.snapIndex === 'undefined') { - update(); - } - }); - on('snapIndexChange', () => { - if (!swiper.params.loop) { - update(); - } - }); - on('slidesLengthChange', () => { - if (swiper.params.loop) { - render(); - update(); - } - }); - on('snapGridLengthChange', () => { - if (!swiper.params.loop) { - render(); - update(); - } - }); - on('destroy', () => { - destroy(); - }); - on('enable disable', () => { - const { - $el - } = swiper.pagination; - - if ($el) { - $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass); - } - }); - on('lock unlock', () => { - update(); - }); - on('click', (_s, e) => { - const targetEl = e.target; - const { - $el - } = swiper.pagination; - - if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(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.hasClass(swiper.params.pagination.hiddenClass); - - if (isHidden === true) { - emit('paginationShow'); - } else { - emit('paginationHide'); - } - - $el.toggleClass(swiper.params.pagination.hiddenClass); - } - }); - Object.assign(swiper.pagination, { - 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' - } - }); - swiper.scrollbar = { - el: null, - dragEl: null, - $el: null, - $dragEl: null - }; - - function setTranslate() { - if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; - const { - scrollbar, - rtlTranslate: rtl, - progress - } = swiper; - const { - $dragEl, - $el - } = scrollbar; - const params = swiper.params.scrollbar; - 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.transform(`translate3d(${newPos}px, 0, 0)`); - $dragEl[0].style.width = `${newSize}px`; - } else { - $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`); - $dragEl[0].style.height = `${newSize}px`; - } - - if (params.hide) { - clearTimeout(timeout); - $el[0].style.opacity = 1; - timeout = setTimeout(() => { - $el[0].style.opacity = 0; - $el.transition(400); - }, 1000); - } - } - - function setTransition(duration) { - if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; - swiper.scrollbar.$dragEl.transition(duration); - } - - function updateSize() { - if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; - const { - scrollbar - } = swiper; - const { - $dragEl, - $el - } = scrollbar; - $dragEl[0].style.width = ''; - $dragEl[0].style.height = ''; - trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].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[0].style.width = `${dragSize}px`; - } else { - $dragEl[0].style.height = `${dragSize}px`; - } - - if (divider >= 1) { - $el[0].style.display = 'none'; - } else { - $el[0].style.display = ''; - } - - if (swiper.params.scrollbar.hide) { - $el[0].style.opacity = 0; - } - - if (swiper.params.watchOverflow && swiper.enabled) { - scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass); - } - } - - function getPointerPosition(e) { - if (swiper.isHorizontal()) { - return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX; - } - - return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY; - } - - function setDragPosition(e) { - const { - scrollbar, - rtlTranslate: rtl - } = swiper; - const { - $el - } = scrollbar; - let positionRatio; - positionRatio = (getPointerPosition(e) - $el.offset()[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[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; - e.preventDefault(); - e.stopPropagation(); - $wrapperEl.transition(100); - $dragEl.transition(100); - setDragPosition(e); - clearTimeout(dragTimeout); - $el.transition(0); - - if (params.hide) { - $el.css('opacity', 1); - } - - if (swiper.params.cssMode) { - swiper.$wrapperEl.css('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.preventDefault();else e.returnValue = false; - setDragPosition(e); - $wrapperEl.transition(0); - $el.transition(0); - $dragEl.transition(0); - 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.css('scroll-snap-type', ''); - $wrapperEl.transition(''); - } - - if (params.hide) { - clearTimeout(dragTimeout); - dragTimeout = nextTick(() => { - $el.css('opacity', 0); - $el.transition(400); - }, 1000); - } - - emit('scrollbarDragEnd', e); - - if (params.snapOnRelease) { - swiper.slideToClosest(); - } - } - - function events(method) { - const { - scrollbar, - touchEventsTouch, - touchEventsDesktop, - params, - support - } = swiper; - const $el = scrollbar.$el; - const target = $el[0]; - const activeListener = support.passiveListener && params.passiveListeners ? { - passive: false, - capture: false - } : false; - const passiveListener = support.passiveListener && params.passiveListeners ? { - passive: true, - capture: false - } : false; - if (!target) return; - const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; - - if (!support.touch) { - target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener); - document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener); - document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener); - } else { - target[eventMethod](touchEventsTouch.start, onDragStart, activeListener); - target[eventMethod](touchEventsTouch.move, onDragMove, activeListener); - target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener); - } - } - - function enableDraggable() { - if (!swiper.params.scrollbar.el) return; - events('on'); - } - - function disableDraggable() { - if (!swiper.params.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 = $(params.el); - - if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) { - $el = $swiperEl.find(params.el); - } - - let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`); - - if ($dragEl.length === 0) { - $dragEl = $(`
`); - $el.append($dragEl); - } - - Object.assign(scrollbar, { - $el, - el: $el[0], - $dragEl, - dragEl: $dragEl[0] - }); - - if (params.draggable) { - enableDraggable(); - } - - if ($el) { - $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass); - } - } - - function destroy() { - disableDraggable(); - } - - on('init', () => { - init(); - updateSize(); - setTranslate(); - }); - on('update resize observerUpdate lock unlock', () => { - updateSize(); - }); - on('setTranslate', () => { - setTranslate(); - }); - on('setTransition', (_s, duration) => { - setTransition(duration); - }); - on('enable disable', () => { - const { - $el - } = swiper.scrollbar; - - if ($el) { - $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass); - } - }); - on('destroy', () => { - destroy(); - }); - Object.assign(swiper.scrollbar, { - updateSize, - setTranslate, - init, - destroy - }); - } - - function Parallax({ - swiper, - extendParams, - on - }) { - extendParams({ - parallax: { - enabled: false - } - }); - - const setTransform = (el, progress) => { - const { - rtl - } = swiper; - const $el = $(el); - const rtlFactor = rtl ? -1 : 1; - const p = $el.attr('data-swiper-parallax') || '0'; - let x = $el.attr('data-swiper-parallax-x'); - let y = $el.attr('data-swiper-parallax-y'); - const scale = $el.attr('data-swiper-parallax-scale'); - const opacity = $el.attr('data-swiper-parallax-opacity'); - - 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[0].style.opacity = currentOpacity; - } - - if (typeof scale === 'undefined' || scale === null) { - $el.transform(`translate3d(${x}, ${y}, 0px)`); - } else { - const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); - $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`); - } - }; - - const setTranslate = () => { - const { - $el, - slides, - progress, - snapGrid - } = swiper; - $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => { - setTransform(el, progress); - }); - slides.each((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).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => { - setTransform(el, slideProgress); - }); - }); - }; - - const setTransition = (duration = swiper.params.speed) => { - const { - $el - } = swiper; - $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => { - const $parallaxEl = $(parallaxEl); - let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration; - if (duration === 0) parallaxDuration = 0; - $parallaxEl.transition(parallaxDuration); - }); - }; - - 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, - maxRatio: 3, - minRatio: 1, - toggle: true, - containerClass: 'swiper-zoom-container', - zoomedSlideClass: 'swiper-slide-zoomed' - } - }); - swiper.zoom = { - enabled: false - }; - let currentScale = 1; - let isScaling = false; - let gesturesEnabled; - let fakeGestureTouched; - let fakeGestureMoved; - const gesture = { - $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 ? gesture.$imageEl[0] : undefined; - const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined; - emit('zoomChange', value, imageEl, slideEl); - } - - scale = value; - } - - }); - - function getDistanceBetweenTouches(e) { - if (e.targetTouches.length < 2) return 1; - const x1 = e.targetTouches[0].pageX; - const y1 = e.targetTouches[0].pageY; - const x2 = e.targetTouches[1].pageX; - const y2 = e.targetTouches[1].pageY; - const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); - return distance; - } // Events - - - function onGestureStart(e) { - const support = swiper.support; - const params = swiper.params.zoom; - fakeGestureTouched = false; - fakeGestureMoved = false; - - if (!support.gestures) { - if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) { - return; - } - - fakeGestureTouched = true; - gesture.scaleStart = getDistanceBetweenTouches(e); - } - - if (!gesture.$slideEl || !gesture.$slideEl.length) { - gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`); - if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); - gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target'); - gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); - gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; - - if (gesture.$imageWrapEl.length === 0) { - gesture.$imageEl = undefined; - return; - } - } - - if (gesture.$imageEl) { - gesture.$imageEl.transition(0); - } - - isScaling = true; - } - - function onGestureChange(e) { - const support = swiper.support; - const params = swiper.params.zoom; - const zoom = swiper.zoom; - - if (!support.gestures) { - if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) { - return; - } - - fakeGestureMoved = true; - gesture.scaleMove = getDistanceBetweenTouches(e); - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0) { - if (e.type === 'gesturechange') onGestureStart(e); - return; - } - - if (support.gestures) { - zoom.scale = e.scale * currentScale; - } else { - 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.transform(`translate3d(0,0,0) scale(${zoom.scale})`); - } - - function onGestureEnd(e) { - const device = swiper.device; - const support = swiper.support; - const params = swiper.params.zoom; - const zoom = swiper.zoom; - - if (!support.gestures) { - if (!fakeGestureTouched || !fakeGestureMoved) { - return; - } - - if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) { - return; - } - - fakeGestureTouched = false; - fakeGestureMoved = false; - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; - zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); - gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`); - currentScale = zoom.scale; - isScaling = false; - if (zoom.scale === 1) gesture.$slideEl = undefined; - } - - function onTouchStart(e) { - const device = swiper.device; - if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; - if (image.isTouched) return; - if (device.android && e.cancelable) e.preventDefault(); - image.isTouched = true; - image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; - image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; - } - - function onTouchMove(e) { - const zoom = swiper.zoom; - if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; - swiper.allowClick = false; - if (!image.isTouched || !gesture.$slideEl) return; - - if (!image.isMoved) { - image.width = gesture.$imageEl[0].offsetWidth; - image.height = gesture.$imageEl[0].offsetHeight; - image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0; - image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0; - gesture.slideWidth = gesture.$slideEl[0].offsetWidth; - gesture.slideHeight = gesture.$slideEl[0].offsetHeight; - gesture.$imageWrapEl.transition(0); - } // Define if we need image drag - - - const scaledWidth = image.width * zoom.scale; - const scaledHeight = image.height * zoom.scale; - if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; - 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 = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; - image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; - - 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; - 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; - return; - } - } - - if (e.cancelable) { - e.preventDefault(); - } - - e.stopPropagation(); - image.isMoved = true; - image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX; - image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY; - - 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.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); - } - - function onTouchEnd() { - const zoom = swiper.zoom; - if (!gesture.$imageEl || gesture.$imageEl.length === 0) 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.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); - } - - function onTransitionEnd() { - const zoom = swiper.zoom; - - if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) { - if (gesture.$imageEl) { - gesture.$imageEl.transform('translate3d(0,0,0) scale(1)'); - } - - if (gesture.$imageWrapEl) { - gesture.$imageWrapEl.transform('translate3d(0,0,0)'); - } - - zoom.scale = 1; - currentScale = 1; - gesture.$slideEl = undefined; - gesture.$imageEl = undefined; - gesture.$imageWrapEl = undefined; - } - } - - 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}`); - } - - if (!gesture.$slideEl) { - if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { - gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); - } else { - gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); - } - } - - gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target'); - gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return; - - if (swiper.params.cssMode) { - swiper.wrapperEl.style.overflow = 'hidden'; - swiper.wrapperEl.style.touchAction = 'none'; - } - - gesture.$slideEl.addClass(`${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.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX; - touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY; - } else { - touchX = image.touchesStart.x; - touchY = image.touchesStart.y; - } - - zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; - currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; - - if (e) { - slideWidth = gesture.$slideEl[0].offsetWidth; - slideHeight = gesture.$slideEl[0].offsetHeight; - offsetX = gesture.$slideEl.offset().left + window.scrollX; - offsetY = gesture.$slideEl.offset().top + window.scrollY; - diffX = offsetX + slideWidth / 2 - touchX; - diffY = offsetY + slideHeight / 2 - touchY; - imageWidth = gesture.$imageEl[0].offsetWidth; - imageHeight = gesture.$imageEl[0].offsetHeight; - 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; - 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; - } - - gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`); - gesture.$imageEl.transition(300).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 = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); - } else { - gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); - } - - gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target'); - gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); - } - - if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return; - - if (swiper.params.cssMode) { - swiper.wrapperEl.style.overflow = ''; - swiper.wrapperEl.style.touchAction = ''; - } - - zoom.scale = 1; - currentScale = 1; - gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); - gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); - gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`); - gesture.$slideEl = undefined; - } // 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 support = swiper.support; - const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? { - passive: true, - capture: false - } : false; - const activeListenerWithCapture = support.passiveListener ? { - passive: false, - capture: true - } : true; - return { - passiveListener, - activeListenerWithCapture - }; - } - - function getSlideSelector() { - return `.${swiper.params.slideClass}`; - } - - function toggleGestures(method) { - const { - passiveListener - } = getListeners(); - const slideSelector = getSlideSelector(); - swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener); - swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener); - swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener); - } - - function enableGestures() { - if (gesturesEnabled) return; - gesturesEnabled = true; - toggleGestures('on'); - } - - function disableGestures() { - if (!gesturesEnabled) return; - gesturesEnabled = false; - toggleGestures('off'); - } // Attach/Detach Events - - - function enable() { - const zoom = swiper.zoom; - if (zoom.enabled) return; - zoom.enabled = true; - const support = swiper.support; - const { - passiveListener, - activeListenerWithCapture - } = getListeners(); - const slideSelector = getSlideSelector(); // Scale image - - if (support.gestures) { - swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener); - swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener); - } else if (swiper.touchEvents.start === 'touchstart') { - swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener); - swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture); - swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener); - - if (swiper.touchEvents.cancel) { - swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener); - } - } // Move image - - - swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture); - } - - function disable() { - const zoom = swiper.zoom; - if (!zoom.enabled) return; - const support = swiper.support; - zoom.enabled = false; - const { - passiveListener, - activeListenerWithCapture - } = getListeners(); - const slideSelector = getSlideSelector(); // Scale image - - if (support.gestures) { - swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener); - swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener); - } else if (swiper.touchEvents.start === 'touchstart') { - swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener); - swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture); - swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener); - - if (swiper.touchEvents.cancel) { - swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener); - } - } // Move image - - - swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, 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 - }); - } - - function Lazy({ - swiper, - extendParams, - on, - emit - }) { - extendParams({ - lazy: { - checkInView: false, - enabled: false, - loadPrevNext: false, - loadPrevNextAmount: 1, - loadOnTransitionStart: false, - scrollingElement: '', - elementClass: 'swiper-lazy', - loadingClass: 'swiper-lazy-loading', - loadedClass: 'swiper-lazy-loaded', - preloaderClass: 'swiper-lazy-preloader' - } - }); - swiper.lazy = {}; - let scrollHandlerAttached = false; - let initialImageLoaded = false; - - function loadInSlide(index, loadInDuplicate = true) { - const params = swiper.params.lazy; - if (typeof index === 'undefined') return; - if (swiper.slides.length === 0) return; - const isVirtual = swiper.virtual && swiper.params.virtual.enabled; - const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`) : swiper.slides.eq(index); - const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`); - - if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) { - $images.push($slideEl[0]); - } - - if ($images.length === 0) return; - $images.each(imageEl => { - const $imageEl = $(imageEl); - $imageEl.addClass(params.loadingClass); - const background = $imageEl.attr('data-background'); - const src = $imageEl.attr('data-src'); - const srcset = $imageEl.attr('data-srcset'); - const sizes = $imageEl.attr('data-sizes'); - const $pictureEl = $imageEl.parent('picture'); - swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => { - if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return; - - if (background) { - $imageEl.css('background-image', `url("${background}")`); - $imageEl.removeAttr('data-background'); - } else { - if (srcset) { - $imageEl.attr('srcset', srcset); - $imageEl.removeAttr('data-srcset'); - } - - if (sizes) { - $imageEl.attr('sizes', sizes); - $imageEl.removeAttr('data-sizes'); - } - - if ($pictureEl.length) { - $pictureEl.children('source').each(sourceEl => { - const $source = $(sourceEl); - - if ($source.attr('data-srcset')) { - $source.attr('srcset', $source.attr('data-srcset')); - $source.removeAttr('data-srcset'); - } - }); - } - - if (src) { - $imageEl.attr('src', src); - $imageEl.removeAttr('data-src'); - } - } - - $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); - $slideEl.find(`.${params.preloaderClass}`).remove(); - - if (swiper.params.loop && loadInDuplicate) { - const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index'); - - if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) { - const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`); - loadInSlide(originalSlide.index(), false); - } else { - const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`); - loadInSlide(duplicatedSlide.index(), false); - } - } - - emit('lazyImageReady', $slideEl[0], $imageEl[0]); - - if (swiper.params.autoHeight) { - swiper.updateAutoHeight(); - } - }); - emit('lazyImageLoad', $slideEl[0], $imageEl[0]); - }); - } - - function load() { - const { - $wrapperEl, - params: swiperParams, - slides, - activeIndex - } = swiper; - const isVirtual = swiper.virtual && swiperParams.virtual.enabled; - const params = swiperParams.lazy; - let slidesPerView = swiperParams.slidesPerView; - - if (slidesPerView === 'auto') { - slidesPerView = 0; - } - - function slideExist(index) { - if (isVirtual) { - if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) { - return true; - } - } else if (slides[index]) return true; - - return false; - } - - function slideIndex(slideEl) { - if (isVirtual) { - return $(slideEl).attr('data-swiper-slide-index'); - } - - return $(slideEl).index(); - } - - if (!initialImageLoaded) initialImageLoaded = true; - - if (swiper.params.watchSlidesProgress) { - $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => { - const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index(); - loadInSlide(index); - }); - } else if (slidesPerView > 1) { - for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) { - if (slideExist(i)) loadInSlide(i); - } - } else { - loadInSlide(activeIndex); - } - - if (params.loadPrevNext) { - if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) { - const amount = params.loadPrevNextAmount; - const spv = slidesPerView; - const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); - const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides - - for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) { - if (slideExist(i)) loadInSlide(i); - } // Prev Slides - - - for (let i = minIndex; i < activeIndex; i += 1) { - if (slideExist(i)) loadInSlide(i); - } - } else { - const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`); - if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide)); - const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`); - if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide)); - } - } - } - - function checkInViewOnLoad() { - const window = getWindow(); - if (!swiper || swiper.destroyed) return; - const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window); - const isWindow = $scrollElement[0] === window; - const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth; - const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight; - const swiperOffset = swiper.$el.offset(); - const { - rtlTranslate: rtl - } = swiper; - let inView = false; - if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft; - const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]]; - - for (let i = 0; i < swiperCoord.length; i += 1) { - const point = swiperCoord[i]; - - if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) { - if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line - - inView = true; - } - } - - const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? { - passive: true, - capture: false - } : false; - - if (inView) { - load(); - $scrollElement.off('scroll', checkInViewOnLoad, passiveListener); - } else if (!scrollHandlerAttached) { - scrollHandlerAttached = true; - $scrollElement.on('scroll', checkInViewOnLoad, passiveListener); - } - } - - on('beforeInit', () => { - if (swiper.params.lazy.enabled && swiper.params.preloadImages) { - swiper.params.preloadImages = false; - } - }); - on('init', () => { - if (swiper.params.lazy.enabled) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - }); - on('scroll', () => { - if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) { - load(); - } - }); - on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => { - if (swiper.params.lazy.enabled) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - }); - on('transitionStart', () => { - if (swiper.params.lazy.enabled) { - if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - } - }); - on('transitionEnd', () => { - if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) { - if (swiper.params.lazy.checkInView) { - checkInViewOnLoad(); - } else { - load(); - } - } - }); - on('slideChange', () => { - const { - lazy, - cssMode, - watchSlidesProgress, - touchReleaseOnEdges, - resistanceRatio - } = swiper.params; - - if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) { - load(); - } - }); - Object.assign(swiper.lazy, { - load, - loadInSlide - }); - } - - /* 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; - } // xxx: for now i will just save one spline function to to - - - function getInterpolateFunction(c) { - if (!swiper.controller.spline) { - 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) { - // 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()); - 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) { - c.setTransition(duration, swiper); - - if (duration !== 0) { - c.transitionStart(); - - if (c.params.autoHeight) { - nextTick(() => { - c.updateAutoHeight(); - }); - } - - c.$wrapperEl.transitionEnd(() => { - if (!controlled) return; - - if (c.params.loop && swiper.params.controller.by === 'slide') { - c.loopFix(); - } - - 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', () => { - 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) return; - swiper.controller.setTranslate(translate, byController); - }); - on('setTransition', (_s, duration, byController) => { - if (!swiper.controller.control) 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, - itemRoleDescriptionMessage: null, - slideRole: 'group' - } - }); - let liveRegion = null; - - function notify(message) { - const notification = liveRegion; - if (notification.length === 0) return; - notification.html(''); - notification.html(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.attr('tabIndex', '0'); - } - - function makeElNotFocusable($el) { - $el.attr('tabIndex', '-1'); - } - - function addElRole($el, role) { - $el.attr('role', role); - } - - function addElRoleDescription($el, description) { - $el.attr('aria-roledescription', description); - } - - function addElControls($el, controls) { - $el.attr('aria-controls', controls); - } - - function addElLabel($el, label) { - $el.attr('aria-label', label); - } - - function addElId($el, id) { - $el.attr('id', id); - } - - function addElLive($el, live) { - $el.attr('aria-live', live); - } - - function disableEl($el) { - $el.attr('aria-disabled', true); - } - - function enableEl($el) { - $el.attr('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.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) { - if (!(swiper.isEnd && !swiper.params.loop)) { - swiper.slideNext(); - } - - if (swiper.isEnd) { - notify(params.lastSlideMessage); - } else { - notify(params.nextSlideMessage); - } - } - - if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) { - if (!(swiper.isBeginning && !swiper.params.loop)) { - swiper.slidePrev(); - } - - if (swiper.isBeginning) { - notify(params.firstSlideMessage); - } else { - notify(params.prevSlideMessage); - } - } - - if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) { - $targetEl[0].click(); - } - } - - function updateNavigation() { - if (swiper.params.loop || !swiper.navigation) return; - const { - $nextEl, - $prevEl - } = swiper.navigation; - - if ($prevEl && $prevEl.length > 0) { - if (swiper.isBeginning) { - disableEl($prevEl); - makeElNotFocusable($prevEl); - } else { - enableEl($prevEl); - makeElFocusable($prevEl); - } - } - - if ($nextEl && $nextEl.length > 0) { - if (swiper.isEnd) { - disableEl($nextEl); - makeElNotFocusable($nextEl); - } else { - enableEl($nextEl); - makeElFocusable($nextEl); - } - } - } - - function hasPagination() { - return swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length; - } - - function updatePagination() { - const params = swiper.params.a11y; - - if (hasPagination()) { - swiper.pagination.bullets.each(bulletEl => { - const $bulletEl = $(bulletEl); - makeElFocusable($bulletEl); - - if (!swiper.params.pagination.renderBullet) { - addElRole($bulletEl, 'button'); - addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1)); - } - }); - } - } - - const initNavEl = ($el, wrapperId, message) => { - makeElFocusable($el); - - if ($el[0].tagName !== 'BUTTON') { - addElRole($el, 'button'); - $el.on('keydown', onEnterOrSpaceKey); - } - - addElLabel($el, message); - addElControls($el, wrapperId); - }; - - function 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); - } // Wrapper - - - const $wrapperEl = swiper.$wrapperEl; - const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`; - const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; - addElId($wrapperEl, wrapperId); - addElLive($wrapperEl, live); // Slide - - if (params.itemRoleDescriptionMessage) { - addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage); - } - - addElRole($(swiper.slides), params.slideRole); - const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length; - swiper.slides.each((slideEl, index) => { - const $slideEl = $(slideEl); - const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index; - const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); - addElLabel($slideEl, ariaLabelMessage); - }); // Navigation - - let $nextEl; - let $prevEl; - - if (swiper.navigation && swiper.navigation.$nextEl) { - $nextEl = swiper.navigation.$nextEl; - } - - if (swiper.navigation && swiper.navigation.$prevEl) { - $prevEl = swiper.navigation.$prevEl; - } - - if ($nextEl && $nextEl.length) { - initNavEl($nextEl, wrapperId, params.nextSlideMessage); - } - - if ($prevEl && $prevEl.length) { - initNavEl($prevEl, wrapperId, params.prevSlideMessage); - } // Pagination - - - if (hasPagination()) { - swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey); - } - } - - function destroy() { - if (liveRegion && liveRegion.length > 0) liveRegion.remove(); - let $nextEl; - let $prevEl; - - if (swiper.navigation && swiper.navigation.$nextEl) { - $nextEl = swiper.navigation.$nextEl; - } - - if (swiper.navigation && swiper.navigation.$prevEl) { - $prevEl = swiper.navigation.$prevEl; - } - - if ($nextEl) { - $nextEl.off('keydown', onEnterOrSpaceKey); - } - - if ($prevEl) { - $prevEl.off('keydown', onEnterOrSpaceKey); - } // Pagination - - - if (hasPagination()) { - swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey); - } - } - - on('beforeInit', () => { - liveRegion = $(``); - }); - on('afterInit', () => { - if (!swiper.params.a11y.enabled) return; - init(); - updateNavigation(); - }); - on('toEdge', () => { - if (!swiper.params.a11y.enabled) return; - updateNavigation(); - }); - on('fromEdge', () => { - 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' - } - }); - 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.slides.eq(index); - let value = slugify(slide.attr('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}/${value}`; - } else if (!location.pathname.includes(key)) { - value = `${key}/${value}`; - } - - 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.eq(i); - const slideHistory = slugify(slide.attr('data-history')); - - if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) { - const index = slide.index(); - swiper.slideTo(index, speed, runCallbacks); - } - } - } else { - swiper.slideTo(0, speed, runCallbacks); - } - }; - - const setHistoryPopState = () => { - paths = getPathValues(swiper.params.url); - scrollToSlide(swiper.params.speed, swiper.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) 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 - } - }); - - const onHashChange = () => { - emit('hashChange'); - const newHash = document.location.hash.replace('#', ''); - const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash'); - - if (newHash !== activeSlideHash) { - const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index(); - if (typeof newIndex === 'undefined') return; - swiper.slideTo(newIndex); - } - }; - - const setHash = () => { - if (!initialized || !swiper.params.hashNavigation.enabled) return; - - if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { - window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''); - emit('hashSet'); - } else { - const slide = swiper.slides.eq(swiper.activeIndex); - const hash = slide.attr('data-hash') || slide.attr('data-history'); - document.location.hash = hash || ''; - 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; - - for (let i = 0, length = swiper.slides.length; i < length; i += 1) { - const slide = swiper.slides.eq(i); - const slideHash = slide.attr('data-hash') || slide.attr('data-history'); - - if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) { - const index = slide.index(); - swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true); - } - } - } - - if (swiper.params.hashNavigation.watchState) { - $(window).on('hashchange', onHashChange); - } - }; - - const destroy = () => { - if (swiper.params.hashNavigation.watchState) { - $(window).off('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" */ - function Autoplay({ - swiper, - extendParams, - on, - emit - }) { - let timeout; - swiper.autoplay = { - running: false, - paused: false - }; - extendParams({ - autoplay: { - enabled: false, - delay: 3000, - waitForTransition: true, - disableOnInteraction: true, - stopOnLastSlide: false, - reverseDirection: false, - pauseOnMouseEnter: false - } - }); - - function run() { - const $activeSlideEl = swiper.slides.eq(swiper.activeIndex); - let delay = swiper.params.autoplay.delay; - - if ($activeSlideEl.attr('data-swiper-autoplay')) { - delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay; - } - - clearTimeout(timeout); - timeout = nextTick(() => { - let autoplayResult; - - if (swiper.params.autoplay.reverseDirection) { - if (swiper.params.loop) { - swiper.loopFix(); - autoplayResult = swiper.slidePrev(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.isBeginning) { - autoplayResult = swiper.slidePrev(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.params.autoplay.stopOnLastSlide) { - autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); - emit('autoplay'); - } else { - stop(); - } - } else if (swiper.params.loop) { - swiper.loopFix(); - autoplayResult = swiper.slideNext(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.isEnd) { - autoplayResult = swiper.slideNext(swiper.params.speed, true, true); - emit('autoplay'); - } else if (!swiper.params.autoplay.stopOnLastSlide) { - autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true); - emit('autoplay'); - } else { - stop(); - } - - if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) { - run(); - } - }, delay); - } - - function start() { - if (typeof timeout !== 'undefined') return false; - if (swiper.autoplay.running) return false; - swiper.autoplay.running = true; - emit('autoplayStart'); - run(); - return true; - } - - function stop() { - if (!swiper.autoplay.running) return false; - if (typeof timeout === 'undefined') return false; - - if (timeout) { - clearTimeout(timeout); - timeout = undefined; - } - - swiper.autoplay.running = false; - emit('autoplayStop'); - return true; - } - - function pause(speed) { - if (!swiper.autoplay.running) return; - if (swiper.autoplay.paused) return; - if (timeout) clearTimeout(timeout); - swiper.autoplay.paused = true; - - if (speed === 0 || !swiper.params.autoplay.waitForTransition) { - swiper.autoplay.paused = false; - run(); - } else { - ['transitionend', 'webkitTransitionEnd'].forEach(event => { - swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd); - }); - } - } - - function onVisibilityChange() { - const document = getDocument(); - - if (document.visibilityState === 'hidden' && swiper.autoplay.running) { - pause(); - } - - if (document.visibilityState === 'visible' && swiper.autoplay.paused) { - run(); - swiper.autoplay.paused = false; - } - } - - function onTransitionEnd(e) { - if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return; - if (e.target !== swiper.$wrapperEl[0]) return; - ['transitionend', 'webkitTransitionEnd'].forEach(event => { - swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd); - }); - swiper.autoplay.paused = false; - - if (!swiper.autoplay.running) { - stop(); - } else { - run(); - } - } - - function onMouseEnter() { - if (swiper.params.autoplay.disableOnInteraction) { - stop(); - } else { - pause(); - } - - ['transitionend', 'webkitTransitionEnd'].forEach(event => { - swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd); - }); - } - - function onMouseLeave() { - if (swiper.params.autoplay.disableOnInteraction) { - return; - } - - swiper.autoplay.paused = false; - run(); - } - - function attachMouseEvents() { - if (swiper.params.autoplay.pauseOnMouseEnter) { - swiper.$el.on('mouseenter', onMouseEnter); - swiper.$el.on('mouseleave', onMouseLeave); - } - } - - function detachMouseEvents() { - swiper.$el.off('mouseenter', onMouseEnter); - swiper.$el.off('mouseleave', onMouseLeave); - } - - on('init', () => { - if (swiper.params.autoplay.enabled) { - start(); - const document = getDocument(); - document.addEventListener('visibilitychange', onVisibilityChange); - attachMouseEvents(); - } - }); - on('beforeTransitionStart', (_s, speed, internal) => { - if (swiper.autoplay.running) { - if (internal || !swiper.params.autoplay.disableOnInteraction) { - swiper.autoplay.pause(speed); - } else { - stop(); - } - } - }); - on('sliderFirstMove', () => { - if (swiper.autoplay.running) { - if (swiper.params.autoplay.disableOnInteraction) { - stop(); - } else { - pause(); - } - } - }); - on('touchEnd', () => { - if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) { - run(); - } - }); - on('destroy', () => { - detachMouseEvents(); - - if (swiper.autoplay.running) { - stop(); - } - - const document = getDocument(); - document.removeEventListener('visibilitychange', onVisibilityChange); - }); - Object.assign(swiper.autoplay, { - pause, - run, - start, - stop - }); - } - - 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 onThumbClick() { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) return; - const clickedIndex = thumbsSwiper.clickedIndex; - const clickedSlide = thumbsSwiper.clickedSlide; - if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return; - if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; - let slideToIndex; - - if (thumbsSwiper.params.loop) { - slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10); - } else { - slideToIndex = clickedIndex; - } - - if (swiper.params.loop) { - let currentIndex = swiper.activeIndex; - - if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) { - swiper.loopFix(); // eslint-disable-next-line - - swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; - currentIndex = swiper.activeIndex; - } - - const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); - const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); - if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex; - } - - 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) { - 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 - }); - } 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.addClass(swiper.params.thumbs.thumbsContainerClass); - swiper.thumbs.swiper.on('tap', onThumbClick); - return true; - } - - function update(initial) { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) 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) { - let currentThumbsIndex = thumbsSwiper.activeIndex; - let newThumbsIndex; - let direction; - - if (thumbsSwiper.params.loop) { - if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) { - thumbsSwiper.loopFix(); // eslint-disable-next-line - - thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft; - currentThumbsIndex = thumbsSwiper.activeIndex; - } // Find actual thumbs index to slide to - - - const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index(); - const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index(); - - if (typeof prevThumbsIndex === 'undefined') { - newThumbsIndex = nextThumbsIndex; - } else if (typeof nextThumbsIndex === 'undefined') { - newThumbsIndex = prevThumbsIndex; - } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) { - newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex; - } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { - newThumbsIndex = nextThumbsIndex; - } else { - newThumbsIndex = prevThumbsIndex; - } - - 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, initial ? 0 : undefined); - } - } // 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.removeClass(thumbActiveClass); - - if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { - for (let i = 0; i < thumbsToActivate; i += 1) { - thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass); - } - } else { - for (let i = 0; i < thumbsToActivate; i += 1) { - thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass); - } - } - } - - on('beforeInit', () => { - const { - thumbs - } = swiper.params; - if (!thumbs || !thumbs.swiper) return; - init(); - update(true); - }); - on('slideChange update resize observerUpdate', () => { - if (!swiper.thumbs.swiper) return; - update(); - }); - on('setTransition', (_s, duration) => { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) return; - thumbsSwiper.setTransition(duration); - }); - on('beforeDestroy', () => { - const thumbsSwiper = swiper.thumbs.swiper; - if (!thumbsSwiper) return; - - if (swiperCreated && thumbsSwiper) { - 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 onTouchMove() { - 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 - }) { - 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; - $wrapperEl.transitionEnd(() => { - if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; - emit('momentumBounce'); - swiper.setTransition(params.speed); - setTimeout(() => { - swiper.setTranslate(afterBouncePosition); - $wrapperEl.transitionEnd(() => { - 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; - $wrapperEl.transitionEnd(() => { - 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) { - swiper.updateProgress(); - swiper.updateActiveIndex(); - swiper.updateSlidesClasses(); - } - } - - Object.assign(swiper, { - freeMode: { - onTouchMove, - onTouchEnd - } - }); - } - - function Grid({ - swiper, - extendParams - }) { - extendParams({ - grid: { - rows: 1, - fill: 'column' - } - }); - let slidesNumberEvenToRows; - let slidesPerRow; - let numFullColumns; - - const initSlides = slidesLength => { - const { - slidesPerView - } = swiper.params; - const { - rows, - fill - } = swiper.params.grid; - slidesPerRow = slidesNumberEvenToRows / rows; - 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); - } - }; - - const updateSlide = (i, slide, slidesLength, getDirectionLabel) => { - const { - slidesPerGroup, - spaceBetween - } = swiper.params; - const { - rows, - fill - } = swiper.params.grid; // 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.css({ - '-webkit-order': newSlideOrderIndex, - 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.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : ''); - }; - - const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => { - const { - spaceBetween, - centeredSlides, - roundLengths - } = swiper.params; - const { - rows - } = swiper.params.grid; - swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; - swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; - swiper.$wrapperEl.css({ - [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px` - }); - - if (centeredSlides) { - snapGrid.splice(0, snapGrid.length); - 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.push(...newSlidesGrid); - } - }; - - swiper.grid = { - initSlides, - updateSlide, - updateWrapperSize - }; - } - - function appendSlide(slides) { - const swiper = this; - const { - $wrapperEl, - params - } = swiper; - - if (params.loop) { - swiper.loopDestroy(); - } - - if (typeof slides === 'object' && 'length' in slides) { - for (let i = 0; i < slides.length; i += 1) { - if (slides[i]) $wrapperEl.append(slides[i]); - } - } else { - $wrapperEl.append(slides); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - swiper.update(); - } - } - - function prependSlide(slides) { - const swiper = this; - const { - params, - $wrapperEl, - activeIndex - } = swiper; - - if (params.loop) { - swiper.loopDestroy(); - } - - let newActiveIndex = activeIndex + 1; - - if (typeof slides === 'object' && 'length' in slides) { - for (let i = 0; i < slides.length; i += 1) { - if (slides[i]) $wrapperEl.prepend(slides[i]); - } - - newActiveIndex = activeIndex + slides.length; - } else { - $wrapperEl.prepend(slides); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - swiper.update(); - } - - swiper.slideTo(newActiveIndex, 0, false); - } - - function addSlide(index, slides) { - const swiper = this; - const { - $wrapperEl, - params, - activeIndex - } = swiper; - let activeIndexBuffer = activeIndex; - - if (params.loop) { - activeIndexBuffer -= swiper.loopedSlides; - swiper.loopDestroy(); - swiper.slides = $wrapperEl.children(`.${params.slideClass}`); - } - - 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.eq(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]) $wrapperEl.append(slides[i]); - } - - newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; - } else { - $wrapperEl.append(slides); - } - - for (let i = 0; i < slidesBuffer.length; i += 1) { - $wrapperEl.append(slidesBuffer[i]); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - 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, - $wrapperEl, - activeIndex - } = swiper; - let activeIndexBuffer = activeIndex; - - if (params.loop) { - activeIndexBuffer -= swiper.loopedSlides; - swiper.loopDestroy(); - swiper.slides = $wrapperEl.children(`.${params.slideClass}`); - } - - 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.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex -= 1; - } - - newActiveIndex = Math.max(newActiveIndex, 0); - } else { - indexToRemove = slidesIndexes; - if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); - if (indexToRemove < newActiveIndex) newActiveIndex -= 1; - newActiveIndex = Math.max(newActiveIndex, 0); - } - - if (params.loop) { - swiper.loopCreate(); - } - - if (!params.observer) { - 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 - } = 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', () => { - if (swiper.params.effect !== effect) return; - setTranslate(); - }); - on('setTransition', (_s, duration) => { - if (swiper.params.effect !== effect) return; - setTransition(duration); - }); - } - - function effectTarget(effectParams, $slideEl) { - if (effectParams.transformEl) { - return $slideEl.find(effectParams.transformEl).css({ - 'backface-visibility': 'hidden', - '-webkit-backface-visibility': 'hidden' - }); - } - - return $slideEl; - } - - function effectVirtualTransitionEnd({ - swiper, - duration, - transformEl, - allSlides - }) { - const { - slides, - activeIndex, - $wrapperEl - } = swiper; - - if (swiper.params.virtualTranslate && duration !== 0) { - let eventTriggered = false; - let $transitionEndTarget; - - if (allSlides) { - $transitionEndTarget = transformEl ? slides.find(transformEl) : slides; - } else { - $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex); - } - - $transitionEndTarget.transitionEnd(() => { - if (eventTriggered) return; - if (!swiper || swiper.destroyed) return; - eventTriggered = true; - swiper.animating = false; - const triggerEvents = ['webkitTransitionEnd', 'transitionend']; - - for (let i = 0; i < triggerEvents.length; i += 1) { - $wrapperEl.trigger(triggerEvents[i]); - } - }); - } - } - - function EffectFade({ - swiper, - extendParams, - on - }) { - extendParams({ - fadeEffect: { - crossFade: false, - transformEl: null - } - }); - - const setTranslate = () => { - const { - slides - } = swiper; - const params = swiper.params.fadeEffect; - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = swiper.slides.eq(i); - const offset = $slideEl[0].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[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0); - const $targetEl = effectTarget(params, $slideEl); - $targetEl.css({ - opacity: slideOpacity - }).transform(`translate3d(${tx}px, ${ty}px, 0px)`); - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.fadeEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl, - 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 setTranslate = () => { - const { - $el, - $wrapperEl, - slides, - width: swiperWidth, - height: swiperHeight, - rtlTranslate: rtl, - size: swiperSize, - browser - } = 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 = $wrapperEl.find('.swiper-cube-shadow'); - - if ($cubeShadowEl.length === 0) { - $cubeShadowEl = $('
'); - $wrapperEl.append($cubeShadowEl); - } - - $cubeShadowEl.css({ - height: `${swiperWidth}px` - }); - } else { - $cubeShadowEl = $el.find('.swiper-cube-shadow'); - - if ($cubeShadowEl.length === 0) { - $cubeShadowEl = $('
'); - $el.append($cubeShadowEl); - } - } - } - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - let slideIndex = i; - - if (isVirtual) { - slideIndex = parseInt($slideEl.attr('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[0].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(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${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.transform(transform); - - if (params.slideShadows) { - // Set shadows - let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); - let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); - - if (shadowBefore.length === 0) { - shadowBefore = $(`
`); - $slideEl.append(shadowBefore); - } - - if (shadowAfter.length === 0) { - shadowAfter = $(`
`); - $slideEl.append(shadowAfter); - } - - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - } - - $wrapperEl.css({ - '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`, - 'transform-origin': `50% 50% -${swiperSize / 2}px` - }); - - if (params.shadow) { - if (isHorizontal) { - $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) 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.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`); - } - } - - const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0; - $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`); - }; - - const setTransition = duration => { - const { - $el, - slides - } = swiper; - slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - - if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { - $el.find('.swiper-cube-shadow').transition(duration); - } - }; - - effectInit({ - effect: 'cube', - swiper, - on, - setTranslate, - setTransition, - perspective: () => true, - overwriteParams: () => ({ - slidesPerView: 1, - slidesPerGroup: 1, - watchSlidesProgress: true, - resistanceRatio: 0, - spaceBetween: 0, - centeredSlides: false, - virtualTranslate: true - }) - }); - } - - function createShadow(params, $slideEl, side) { - const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`; - const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl; - let $shadowEl = $shadowContainer.children(`.${shadowClass}`); - - if (!$shadowEl.length) { - $shadowEl = $(`
`); - $shadowContainer.append($shadowEl); - } - - return $shadowEl; - } - - function EffectFlip({ - swiper, - extendParams, - on - }) { - extendParams({ - flipEffect: { - slideShadows: true, - limitRotation: true, - transformEl: null - } - }); - - const setTranslate = () => { - const { - slides, - rtlTranslate: rtl - } = swiper; - const params = swiper.params.flipEffect; - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - let progress = $slideEl[0].progress; - - if (swiper.params.flipEffect.limitRotation) { - progress = Math.max(Math.min($slideEl[0].progress, 1), -1); - } - - const offset = $slideEl[0].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[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length; - - if (params.slideShadows) { - // Set shadows - let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); - let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); - - if (shadowBefore.length === 0) { - shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top'); - } - - if (shadowAfter.length === 0) { - shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); - } - - if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); - if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); - } - - const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(transform); - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.flipEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl - }); - }; - - effectInit({ - effect: 'flip', - swiper, - on, - setTranslate, - setTransition, - 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, - transformEl: null - } - }); - - 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; // Each slide offset from center - - for (let i = 0, length = slides.length; i < length; i += 1) { - const $slideEl = slides.eq(i); - const slideSize = slidesSizesGrid[i]; - const slideOffset = $slideEl[0].swiperSlideOffset; - const offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * 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(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`; - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(slideTransform); - $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; - - if (params.slideShadows) { - // Set shadows - let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); - let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); - - if ($shadowBeforeEl.length === 0) { - $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top'); - } - - if ($shadowAfterEl.length === 0) { - $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom'); - } - - if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; - if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; - } - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.coverflowEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); - }; - - effectInit({ - effect: 'coverflow', - swiper, - on, - setTranslate, - setTransition, - perspective: () => true, - overwriteParams: () => ({ - watchSlidesProgress: true - }) - }); - } - - function EffectCreative({ - swiper, - extendParams, - on - }) { - extendParams({ - creativeEffect: { - transformEl: null, - 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; - - if (isCenteredSlides) { - const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; - $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`); - } - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - const slideProgress = $slideEl[0].progress; - const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress); - let originalProgress = progress; - - if (!isCenteredSlides) { - originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress); - } - - const offset = $slideEl[0].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) => { - r[index] = data.rotate[index] * Math.abs(progress * multiplier); - }); - $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; - const translateString = t.join(', '); - const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${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.children('.swiper-slide-shadow'); - - if ($shadowEl.length === 0 && data.shadow) { - $shadowEl = createShadow(params, $slideEl); - } - - if ($shadowEl.length) { - const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; - $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); - } - } - - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(transform).css({ - opacity: opacityString - }); - - if (data.origin) { - $targetEl.css('transform-origin', data.origin); - } - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.creativeEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl, - 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, - transformEl: null - } - }); - - const setTranslate = () => { - const { - slides, - activeIndex - } = swiper; - const params = swiper.params.cardsEffect; - const { - startTranslate, - isTouched - } = swiper.touchEventsData; - const currentTranslate = swiper.translate; - - for (let i = 0; i < slides.length; i += 1) { - const $slideEl = slides.eq(i); - const slideProgress = $slideEl[0].progress; - const progress = Math.min(Math.max(slideProgress, -4), 4); - let offset = $slideEl[0].swiperSlideOffset; - - if (swiper.params.centeredSlides && !swiper.params.cssMode) { - swiper.$wrapperEl.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 = -2 * progress; - let tXAdd = 8 - Math.abs(progress) * 0.75; - const isSwipeToNext = (i === activeIndex || i === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; - const isSwipeToPrev = (i === activeIndex || i === 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 = `${-25 * subProgress * Math.abs(progress)}%`; - } - - if (progress < 0) { - // next - tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`; - } else if (progress > 0) { - // prev - tX = `calc(${tX}px + (-${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}`; - const transform = ` - translate3d(${tX}, ${tY}, ${tZ}px) - rotateZ(${rotate}deg) - scale(${scaleString}) - `; - - if (params.slideShadows) { - // Set shadows - let $shadowEl = $slideEl.find('.swiper-slide-shadow'); - - if ($shadowEl.length === 0) { - $shadowEl = createShadow(params, $slideEl); - } - - if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); - } - - $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; - const $targetEl = effectTarget(params, $slideEl); - $targetEl.transform(transform); - } - }; - - const setTransition = duration => { - const { - transformEl - } = swiper.params.cardsEffect; - const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; - $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration); - effectVirtualTransitionEnd({ - swiper, - duration, - transformEl - }); - }; - - effectInit({ - effect: 'cards', - swiper, - on, - setTranslate, - setTransition, - perspective: () => true, - overwriteParams: () => ({ - watchSlidesProgress: true, - virtualTranslate: !swiper.params.cssMode - }) - }); - } - - // Swiper Class - const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; - Swiper.use(modules); - - return Swiper; - -}))); -//# sourceMappingURL=swiper-bundle.js.map diff --git a/resources/web/include/swiper/swiper-bundle.js.map b/resources/web/include/swiper/swiper-bundle.js.map deleted file mode 100644 index a334e41bac..0000000000 --- a/resources/web/include/swiper/swiper-bundle.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"swiper-bundle.js.map","sources":["../node_modules/ssr-window/ssr-window.esm.js","../node_modules/dom7/dom7.esm.js","../src/shared/dom.js","../src/shared/utils.js","../src/shared/get-support.js","../src/shared/get-device.js","../src/shared/get-browser.js","../src/core/modules/resize/resize.js","../src/core/modules/observer/observer.js","../src/core/events-emitter.js","../src/core/update/updateSize.js","../src/core/update/updateSlides.js","../src/core/update/updateAutoHeight.js","../src/core/update/updateSlidesOffset.js","../src/core/update/updateSlidesProgress.js","../src/core/update/updateProgress.js","../src/core/update/updateSlidesClasses.js","../src/core/update/updateActiveIndex.js","../src/core/update/updateClickedSlide.js","../src/core/update/index.js","../src/core/translate/getTranslate.js","../src/core/translate/setTranslate.js","../src/core/translate/minTranslate.js","../src/core/translate/maxTranslate.js","../src/core/translate/translateTo.js","../src/core/translate/index.js","../src/core/transition/setTransition.js","../src/core/transition/transitionEmit.js","../src/core/transition/transitionStart.js","../src/core/transition/transitionEnd.js","../src/core/transition/index.js","../src/core/slide/slideTo.js","../src/core/slide/slideToLoop.js","../src/core/slide/slideNext.js","../src/core/slide/slidePrev.js","../src/core/slide/slideReset.js","../src/core/slide/slideToClosest.js","../src/core/slide/slideToClickedSlide.js","../src/core/slide/index.js","../src/core/loop/loopCreate.js","../src/core/loop/loopFix.js","../src/core/loop/loopDestroy.js","../src/core/loop/index.js","../src/core/grab-cursor/setGrabCursor.js","../src/core/grab-cursor/unsetGrabCursor.js","../src/core/grab-cursor/index.js","../src/core/events/onTouchStart.js","../src/core/events/onTouchMove.js","../src/core/events/onTouchEnd.js","../src/core/events/onResize.js","../src/core/events/onClick.js","../src/core/events/onScroll.js","../src/core/events/index.js","../src/core/breakpoints/setBreakpoint.js","../src/core/breakpoints/getBreakpoint.js","../src/core/breakpoints/index.js","../src/core/classes/addClasses.js","../src/core/classes/removeClasses.js","../src/core/classes/index.js","../src/core/images/loadImage.js","../src/core/images/preloadImages.js","../src/core/images/index.js","../src/core/check-overflow/index.js","../src/core/defaults.js","../src/core/moduleExtendParams.js","../src/core/core.js","../src/modules/virtual/virtual.js","../src/modules/keyboard/keyboard.js","../src/modules/mousewheel/mousewheel.js","../src/shared/create-element-if-not-defined.js","../src/modules/navigation/navigation.js","../src/shared/classes-to-selector.js","../src/modules/pagination/pagination.js","../src/modules/scrollbar/scrollbar.js","../src/modules/parallax/parallax.js","../src/modules/zoom/zoom.js","../src/modules/lazy/lazy.js","../src/modules/controller/controller.js","../src/modules/a11y/a11y.js","../src/modules/history/history.js","../src/modules/hash-navigation/hash-navigation.js","../src/modules/autoplay/autoplay.js","../src/modules/thumbs/thumbs.js","../src/modules/free-mode/free-mode.js","../src/modules/grid/grid.js","../src/modules/manipulation/methods/appendSlide.js","../src/modules/manipulation/methods/prependSlide.js","../src/modules/manipulation/methods/addSlide.js","../src/modules/manipulation/methods/removeSlide.js","../src/modules/manipulation/methods/removeAllSlides.js","../src/modules/manipulation/manipulation.js","../src/shared/effect-init.js","../src/shared/effect-target.js","../src/shared/effect-virtual-transition-end.js","../src/modules/effect-fade/effect-fade.js","../src/modules/effect-cube/effect-cube.js","../src/shared/create-shadow.js","../src/modules/effect-flip/effect-flip.js","../src/modules/effect-coverflow/effect-coverflow.js","../src/modules/effect-creative/effect-creative.js","../src/modules/effect-cards/effect-cards.js","../src/swiper.js"],"sourcesContent":["/**\n * SSR Window 4.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.1\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n super(...(items || []));\n makeReactive(this);\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import {\n $,\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n} from 'dom7';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n Object.defineProperty($.fn, methodName, { value: Methods[methodName], writable: true });\n});\n\nexport default $;\n","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform\n .split(', ')\n .map((a) => a.replace(',', '.'))\n .join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix =\n curStyle.MozTransform ||\n curStyle.OTransform ||\n curStyle.MsTransform ||\n curStyle.msTransform ||\n curStyle.transform ||\n curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return (\n typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n );\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter((key) => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({ swiper, targetPosition, side }) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return (dir === 'next' && current >= target) || (dir === 'prev' && current <= target);\n };\n\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\n\nexport {\n animateCSSModeScroll,\n deleteProps,\n nextTick,\n now,\n getTranslate,\n isObject,\n extend,\n getComputedStyle,\n setCSSProperty,\n};\n","import { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n\n touch: !!(\n 'ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)\n ),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n })(),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n })(),\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nexport { getSupport };\n","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\n\nlet deviceCached;\n\nfunction calcDevice({ userAgent } = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nexport { getDevice };\n","import { getWindow } from 'ssr-window';\n\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nexport { getBrowser };\n","import { getWindow } from 'ssr-window';\n\nexport default function Resize({ swiper, on, emit }) {\n const window = getWindow();\n let observer = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver((entries) => {\n const { width, height } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({ contentBoxSize, contentRect, target }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect\n ? contentRect.width\n : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect\n ? contentRect.height\n : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function Observer({ swiper, extendParams, on, emit }) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren,\n });\n\n // Observe wrapper\n attach(swiper.$wrapperEl[0], { attributes: false });\n };\n const destroy = () => {\n observers.forEach((observer) => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n });\n on('init', init);\n on('destroy', destroy);\n}\n","/* eslint-disable no-underscore-dangle */\n\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (\n eventHandler === handler ||\n (eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler)\n ) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n\n eventsArray.forEach((event) => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach((eventHandler) => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n },\n};\n","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width =\n width -\n parseInt($el.css('padding-left') || 0, 10) -\n parseInt($el.css('padding-right') || 0, 10);\n height =\n height -\n parseInt($el.css('padding-top') || 0, 10) -\n parseInt($el.css('padding-bottom') || 0, 10);\n\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { setCSSProperty } from '../../shared/utils.js';\n\nexport default function updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom',\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n\n const { $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginBottom: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '', marginTop: '' });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n\n const shouldResetSlideSize =\n params.slidesPerView === 'auto' &&\n params.breakpoints &&\n Object.keys(params.breakpoints).filter((key) => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const { clientWidth, offsetWidth } = slide[0];\n slideSize =\n width +\n paddingLeft +\n paddingRight +\n marginLeft +\n marginRight +\n (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0)\n slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (\n (index - Math.min(swiper.params.slidesPerGroupSkip, index)) %\n swiper.params.slidesPerGroup ===\n 0\n )\n snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`,\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n\n if (\n Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) >\n 1\n ) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides\n .filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n })\n .css({ [key]: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(\n swiper.wrapperEl,\n '--swiper-centered-offset-after',\n `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`,\n );\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map((v) => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map((v) => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n}\n","export default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = (index) => {\n if (isVirtual) {\n return swiper.slides.filter(\n (el) => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index,\n )[0];\n }\n return swiper.slides.eq(index)[0];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal()\n ? slides[i].offsetLeft\n : slides[i].offsetTop;\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateSlidesProgress(translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl, snapGrid } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress =\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress =\n (offsetCenter -\n snapGrid[0] +\n (params.centeredSlides ? swiper.minTranslate() : 0) -\n slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible =\n (slideBefore >= 0 && slideBefore < swiper.size - 1) ||\n (slideAfter > 1 && slideAfter <= swiper.size) ||\n (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","export default function updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && swiper.translate * multiplier) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || (params.centeredSlides && params.autoHeight))\n swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function updateSlidesClasses() {\n const swiper = this;\n\n const { slides, params, $wrapperEl, activeIndex, realIndex } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(\n `${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`,\n );\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\n `.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`,\n );\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide\n .nextAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide\n .prevAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n translate >= slidesGrid[i] &&\n translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2\n ) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(\n swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex,\n 10,\n );\n\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (\n params.slideToClickedSlide &&\n swiper.clickedIndex !== undefined &&\n swiper.clickedIndex !== swiper.activeIndex\n ) {\n swiper.slideToClickedSlide();\n }\n}\n","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","import { getTranslate } from '../../shared/utils.js';\n\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const { params, rtlTranslate: rtl, translate, $wrapperEl } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function setTranslate(translate, byController) {\n const swiper = this;\n const { rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function minTranslate() {\n return -this.snapGrid[0];\n}\n","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function translateTo(\n translate = 0,\n speed = this.params.speed,\n runCallbacks = true,\n translateBounds = true,\n internal,\n) {\n const swiper = this;\n\n const { params, wrapperEl } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: -newTranslate, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","export default function transitionEmit({ swiper, runCallbacks, direction, step }) {\n const { activeIndex, previousIndex } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'Start' });\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'End' });\n}\n","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function slideTo(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n initial,\n) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(\n `The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`,\n );\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\n `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`,\n );\n }\n\n // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled,\n } = swiper;\n\n if (\n (swiper.animating && params.preventInteractionOnTransition) ||\n (!enabled && !internal && !initial)\n ) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2\n ) {\n slideIndex = i;\n } else if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext\n ) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (\n !swiper.allowSlideNext &&\n translate < swiper.translate &&\n translate < swiper.minTranslate()\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n translate > swiper.translate &&\n translate > swiper.maxTranslate()\n ) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: t, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","export default function slideToLoop(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { animating, enabled, params } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating, snapGrid, slidesGrid, rtlTranslate, enabled } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (\n params.slidesPerView === 'auto' &&\n params.slidesPerGroup === 1 &&\n params.slidesPerGroupAuto\n ) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n threshold = 0.5,\n) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function slideToClickedSlide() {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView =\n params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n slideToIndex < swiper.loopedSlides - slidesPerView / 2 ||\n slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n const $selector = $($wrapperEl.children()[0].parentNode);\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(\n `${params.slideClass} ${params.slideBlankClass}`,\n );\n $selector.append(blankNode);\n }\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function loopFix() {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function loopDestroy() {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`,\n )\n .remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","export default function setGrabCursor(moving) {\n const swiper = this;\n if (\n swiper.support.touch ||\n !swiper.params.simulateTouch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n )\n return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","export default function unsetGrabCursor() {\n const swiper = this;\n if (\n swiper.support.touch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n ) {\n return;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}\n","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n\n const data = swiper.touchEventsData;\n const { params, touches, enabled } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector\n ? params.noSwipingSelector\n : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (\n params.noSwiping &&\n (isTargetShadow\n ? closestElement(noSwipingSelector, e.target)\n : $targetEl.closest(noSwipingSelector)[0])\n ) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection &&\n (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)\n ) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n if (\n document.activeElement &&\n $(document.activeElement).is(data.focusableElements) &&\n document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault =\n preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (\n (params.touchStartForcePreventDefault || shouldPreventDefault) &&\n !$targetEl[0].isContentEditable\n ) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch =\n e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) ||\n (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) ||\n (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold)\n return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (\n (swiper.isHorizontal() && touches.currentY === touches.startY) ||\n (swiper.isVertical() && touches.currentX === touches.startX)\n ) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal()\n ? touchAngle > params.touchAngle\n : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.minTranslate() -\n 1 +\n (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.maxTranslate() +\n 1 -\n (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n swiper.swipeDirection === 'next' &&\n data.currentTranslate < data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (\n !swiper.allowSlidePrev &&\n swiper.swipeDirection === 'prev' &&\n data.currentTranslate > data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal()\n ? touches.currentX - touches.startX\n : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (\n (params.freeMode && params.freeMode.enabled && swiper.freeMode) ||\n params.watchSlidesProgress\n ) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import { now, nextTick } from '../../shared/utils.js';\n\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const { params, touches, rtlTranslate: rtl, slidesGrid, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (\n params.grabCursor &&\n data.isMoved &&\n data.isTouched &&\n (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)\n ) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (\n !data.isTouched ||\n !data.isMoved ||\n !swiper.swipeDirection ||\n touches.diff === 0 ||\n data.currentTranslate === data.startTranslate\n ) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({ currentPos });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (\n let i = 0;\n i < slidesGrid.length;\n i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup\n ) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget =\n swiper.navigation &&\n (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n","export default function onResize() {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if (\n (params.slidesPerView === 'auto' || params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.isBeginning &&\n !swiper.params.centeredSlides\n ) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","export default function onScroll() {\n const swiper = this;\n const { wrapperEl, rtlTranslate, enabled } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { getDocument } from 'ssr-window';\n\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const { params, touchEvents, el, wrapperEl, device, support } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener =\n touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](\n touchEvents.move,\n swiper.onTouchMove,\n support.passiveListener ? { passive: false, capture } : capture,\n );\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](\n device.ios || device.android\n ? 'resize orientationchange observerUpdate'\n : 'resize observerUpdate',\n onResize,\n true,\n );\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const { params, support } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const { activeIndex, initialized, loopedSlides = 0, params, $el } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(\n `${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`,\n );\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n if (\n (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column') ||\n (!breakpointParams.grid.fill && params.grid.fill === 'column')\n ) {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n const directionChanged =\n breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop =\n params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n\n const isEnabled = swiper.params.enabled;\n\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || (base === 'container' && !containerEl)) return undefined;\n let breakpoint = false;\n\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\n\nexport default { setBreakpoint, getBreakpoint };\n","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach((item) => {\n if (typeof item === 'object') {\n Object.keys(item).forEach((classNames) => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const { classNames, params, rtl, $el, device, support } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses([\n 'initialized',\n params.direction,\n { 'pointer-events': !support.touch },\n { 'free-mode': swiper.params.freeMode && params.freeMode.enabled },\n { 'autoheight': params.autoHeight },\n { 'rtl': rtl },\n { 'grid': params.grid && params.grid.rows > 1 },\n { 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' },\n { 'android': device.android },\n { 'ios': device.ios },\n { 'css-mode': params.cssMode },\n { 'centered': params.cssMode && params.centeredSlides },\n ], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}\n","export default function removeClasses() {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}\n","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\n\nexport default { addClasses, removeClasses };\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n function onReady() {\n if (callback) callback();\n }\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady,\n );\n }\n}\n","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","function checkOverflow() {\n const swiper = this;\n const { isLocked: wasLocked, params } = swiper;\n const { slidesOffsetBefore } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge =\n swiper.slidesGrid[lastSlideIndex] +\n swiper.slidesSizesGrid[lastSlideIndex] +\n slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n\n // Overrides\n width: null,\n height: null,\n\n //\n preventInteractionOnTransition: false,\n\n // ssr\n userAgent: null,\n url: null,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n\n // Internals\n _emitClasses: false,\n};\n","import { extend } from '../shared/utils.js';\n\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (\n ['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 &&\n params[moduleParamName] === true\n ) {\n params[moduleParamName] = { auto: true };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n extend(allModulesParams, obj);\n };\n}\n","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\n\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\n\nimport eventsEmitter from './events-emitter.js';\n\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\n\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\n\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n if (\n args.length === 1 &&\n args[0].constructor &&\n Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object'\n ) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each((containerEl) => {\n const newParams = extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({ userAgent: params.userAgent });\n swiper.browser = getBrowser();\n\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n\n swiper.modules.forEach((mod) => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper),\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach((eventName) => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Save Dom lib\n swiper.$ = $;\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return swiper.support.touch || !swiper.params.simulateTouch\n ? swiper.touchEventsTouch\n : swiper.touchEventsDesktop;\n })(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n });\n\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter((className) => {\n return (\n className.indexOf('swiper') === 0 ||\n className.indexOf(swiper.params.containerModifierClass) === 0\n );\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n\n return slideEl.className\n .split(' ')\n .filter((className) => {\n return (\n className.indexOf('swiper-slide') === 0 ||\n className.indexOf(swiper.params.slideClass) === 0\n );\n })\n .join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each((slideEl) => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({ slideEl, classNames });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const { params, slides, slidesGrid, slidesSizesGrid, size: swiperSize, activeIndex } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact\n ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize\n : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(\n Math.max(translateValue, swiper.maxTranslate()),\n swiper.minTranslate(),\n );\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if (\n (swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.params.centeredSlides\n ) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (\n newDirection === currentDirection ||\n (newDirection !== 'horizontal' && newDirection !== 'vertical')\n ) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector()));\n // Children needs to return slot items\n res.children = (options) => $el.children(options);\n return res;\n }\n return $el.children(getWrapperSelector());\n };\n // Find Wrapper\n let $wrapperEl = getWrapper();\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each((slideEl) => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate:\n swiper.params.direction === 'horizontal' &&\n (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n });\n\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(\n swiper.params.initialSlide + swiper.loopedSlides,\n 0,\n swiper.params.runCallbacksOnInit,\n false,\n true,\n );\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const { params, $el, $wrapperEl, slides } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass(\n [\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '),\n )\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach((m) => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\n\nObject.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\n\nSwiper.use([Resize, Observer]);\n\nexport default Swiper;\n","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\n\nexport default function Virtual({ swiper, extendParams, on }) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n });\n\n let cssModeTimeout;\n\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: [],\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(\n `
${slide}
`,\n );\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset,\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n })(),\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl\n .find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`)\n .remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes\n .sort((a, b) => b - a)\n .forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr(\n 'data-swiper-slide-index',\n parseInt(cachedElIndex, 10) + numberOfNewSlides,\n );\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Keyboard({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false,\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true,\n },\n });\n\n function handle(event) {\n if (!swiper.enabled) return;\n\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n ((swiper.isHorizontal() && isArrowRight) ||\n (swiper.isVertical() && isArrowDown) ||\n isPageDown)\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n ((swiper.isHorizontal() && isArrowLeft) || (swiper.isVertical() && isArrowUp) || isPageUp)\n ) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (\n document.activeElement &&\n document.activeElement.nodeName &&\n (document.activeElement.nodeName.toLowerCase() === 'input' ||\n document.activeElement.nodeName.toLowerCase() === 'textarea')\n ) {\n return undefined;\n }\n if (\n swiper.params.keyboard.onlyInViewport &&\n (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)\n ) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (\n swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 &&\n swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0\n ) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiperWidth, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiperHeight],\n [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl))\n swiper.slideNext();\n if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl))\n swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n\n Object.assign(swiper.keyboard, {\n enable,\n disable,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\n\nexport default function Mousewheel({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n },\n });\n\n swiper.mousewheel = {\n enabled: false,\n };\n\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (\n swiper.params.mousewheel.thresholdDelta &&\n newEvent.delta < swiper.params.mousewheel.thresholdDelta\n ) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (\n swiper.params.mousewheel.thresholdTime &&\n now() - lastScrollTime < swiper.params.mousewheel.thresholdTime\n ) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges)\n return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n else return true;\n } else {\n delta =\n Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop\n ? true\n : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (\n newEvent.direction !== prevEvent.direction ||\n newEvent.delta > prevEvent.delta ||\n newEvent.time > prevEvent.time + 150\n ) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n };\n const ignoreWheelEvents =\n lastEventBeforeSnap &&\n newEvent.time < lastEventBeforeSnap.time + 500 &&\n newEvent.delta <= lastEventBeforeSnap.delta &&\n newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (\n prevEvent &&\n (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)\n ) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (\n recentWheelEvents.length >= 15 &&\n newEvent.time - firstEvent.time < 500 &&\n firstEvent.delta - newEvent.delta >= 1 &&\n newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction)\n swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n\n Object.assign(swiper.mousewheel, {\n enable,\n disable,\n });\n}\n","import { getDocument } from 'ssr-window';\n\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach((key) => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Navigation({ swiper, extendParams, on, emit }) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n });\n\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null,\n };\n\n function getEl(el) {\n let $el;\n if (el) {\n $el = $(el);\n if (\n swiper.params.uniqueNavElements &&\n typeof el === 'string' &&\n $el.length > 1 &&\n swiper.$el.find(el).length === 1\n ) {\n $el = swiper.$el.find(el);\n }\n }\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n toggleEl($prevEl, swiper.isBeginning);\n toggleEl($nextEl, swiper.isEnd);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n }\n function init() {\n const params = swiper.params.navigation;\n\n swiper.params.navigation = createElementIfNotDefined(\n swiper,\n swiper.originalParams.navigation,\n swiper.params.navigation,\n {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev',\n },\n );\n if (!(params.nextEl || params.prevEl)) return;\n\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n function destroy() {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n init();\n update();\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const { $nextEl, $prevEl } = swiper.navigation;\n const targetEl = e.target;\n if (\n swiper.params.navigation.hideOnClick &&\n !$(targetEl).is($prevEl) &&\n !$(targetEl).is($nextEl)\n ) {\n if (\n swiper.pagination &&\n swiper.params.pagination &&\n swiper.params.pagination.clickable &&\n (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))\n )\n return;\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n Object.assign(swiper.navigation, {\n update,\n init,\n destroy,\n });\n}\n","export default function classesToSelector(classes = '') {\n return `.${classes\n .trim()\n .replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Pagination({ swiper, extendParams, on, emit }) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n },\n });\n\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: [],\n };\n\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return (\n !swiper.params.pagination.el ||\n !swiper.pagination.el ||\n !swiper.pagination.$el ||\n swiper.pagination.$el.length === 0\n );\n }\n\n function setSideBullets($bulletEl, position) {\n const { bulletActiveClass } = swiper.params.pagination;\n $bulletEl[position]()\n .addClass(`${bulletActiveClass}-${position}`)\n [position]()\n .addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil(\n (swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup,\n );\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (\n params.type === 'bullets' &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length > 0\n ) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(\n swiper.isHorizontal() ? 'width' : 'height',\n `${bulletSize * (params.dynamicMainBullets + 4)}px`,\n );\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - swiper.previousIndex;\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(\n ['', '-next', '-next-next', '-prev', '-prev-prev', '-main']\n .map((suffix) => `${params.bulletActiveClass}${suffix}`)\n .join(' '),\n );\n if ($el.length > 1) {\n bullets.each((bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets\n .eq(bullets.length - params.dynamicMainBullets - 1)\n .addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset =\n (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el\n .find(classesToSelector(params.currentClass))\n .text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el\n .find(classesToSelector(params.progressbarFillClass))\n .transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`)\n .transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.loop &&\n numberOfBullets > slidesLength\n ) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML =\n `` +\n ' / ' +\n ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(\n swiper,\n swiper.originalParams.pagination,\n swiper.params.pagination,\n { el: 'swiper-pagination' },\n );\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el);\n // check if it belongs to another nested Swiper\n if ($el.length > 1) {\n $el = $el.filter((el) => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(params.modifierClass + swiper.params.direction);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0],\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(params.modifierClass + swiper.params.direction);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass)\n swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n init();\n render();\n update();\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $el } = swiper.pagination;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const { $el } = swiper.pagination;\n if (\n swiper.params.pagination.el &&\n swiper.params.pagination.hideOnClick &&\n $el.length > 0 &&\n !$(targetEl).hasClass(swiper.params.pagination.bulletClass)\n ) {\n if (\n swiper.navigation &&\n ((swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) ||\n (swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl))\n )\n return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n Object.assign(swiper.pagination, {\n render,\n update,\n init,\n destroy,\n });\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Scrollbar({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n });\n\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null,\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const { $dragEl, $el } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n divider =\n swiper.size /\n (swiper.virtualSize +\n swiper.params.slidesOffsetBefore -\n (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](\n swiper.params.scrollbar.lockClass,\n );\n }\n }\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientX\n : e.clientX;\n }\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientY\n : e.clientY;\n }\n function setDragPosition(e) {\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const { $el } = scrollbar;\n\n let positionRatio;\n positionRatio =\n (getPointerPosition(e) -\n $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] -\n (dragStartPos !== null ? dragStartPos : dragSize / 2)) /\n (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position =\n swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n isTouched = true;\n dragStartPos =\n e.target === $dragEl[0] || e.target === $dragEl\n ? getPointerPosition(e) -\n e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top']\n : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n\n clearTimeout(dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const { scrollbar, touchEventsTouch, touchEventsDesktop, params, support } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener =\n support.passiveListener && params.passiveListeners\n ? { passive: false, capture: false }\n : false;\n const passiveListener =\n support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('off');\n }\n function init() {\n const { scrollbar, $el: $swiperEl } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(\n swiper,\n swiper.originalParams.scrollbar,\n swiper.params.scrollbar,\n { el: 'swiper-scrollbar' },\n );\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n\n let $el = $(params.el);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.el === 'string' &&\n $el.length > 1 &&\n $swiperEl.find(params.el).length === 1\n ) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n function destroy() {\n disableDraggable();\n }\n\n on('init', () => {\n init();\n updateSize();\n setTranslate();\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const { $el } = swiper.scrollbar;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n Object.assign(swiper.scrollbar, {\n updateSize,\n setTranslate,\n init,\n destroy,\n });\n}\n","import $ from '../../shared/dom.js';\n\nexport default function Parallax({ swiper, extendParams, on }) {\n extendParams({\n parallax: {\n enabled: false,\n },\n });\n\n const setTransform = (el, progress) => {\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n };\n\n const setTranslate = () => {\n const { $el, slides, progress, snapGrid } = swiper;\n $el\n .children(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl)\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = (duration = swiper.params.speed) => {\n const { $el } = swiper;\n $el\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration =\n parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n };\n\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\n\nexport default function Zoom({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n });\n\n swiper.zoom = {\n enabled: false,\n };\n\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n };\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n\n // Events\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n if (\n e.type !== 'touchend' ||\n (e.type === 'touchend' && e.changedTouches.length < 2 && !device.android)\n ) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl\n .transition(swiper.params.speed)\n .transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (\n swiper.isHorizontal() &&\n ((Math.floor(image.minX) === Math.floor(image.startX) &&\n image.touchesCurrent.x < image.touchesStart.x) ||\n (Math.floor(image.maxX) === Math.floor(image.startX) &&\n image.touchesCurrent.x > image.touchesStart.x))\n ) {\n image.isTouched = false;\n return;\n }\n if (\n !swiper.isHorizontal() &&\n ((Math.floor(image.minY) === Math.floor(image.startY) &&\n image.touchesCurrent.y < image.touchesStart.y) ||\n (Math.floor(image.maxY) === Math.floor(image.startY) &&\n image.touchesCurrent.y > image.touchesStart.y))\n ) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x =\n (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y =\n (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0)\n momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0)\n momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl\n .transition(momentumDuration)\n .transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl\n .transition(300)\n .transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n const activeListenerWithCapture = support.passiveListener\n ? { passive: false, capture: true }\n : true;\n return { passiveListener, activeListenerWithCapture };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const { passiveListener } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (\n !swiper.animating &&\n swiper.params.zoom.enabled &&\n swiper.zoom.enabled &&\n swiper.params.zoom.toggle\n ) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle,\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Lazy({ swiper, extendParams, on, emit }) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n });\n\n swiper.lazy = {};\n\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(\n `.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`,\n )\n : swiper.slides.eq(index);\n\n const $images = $slideEl.find(\n `.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`,\n );\n if (\n $slideEl.hasClass(params.elementClass) &&\n !$slideEl.hasClass(params.loadedClass) &&\n !$slideEl.hasClass(params.loadingClass)\n ) {\n $images.push($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (\n typeof swiper === 'undefined' ||\n swiper === null ||\n !swiper ||\n (swiper && !swiper.params) ||\n swiper.destroyed\n )\n return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if ($pictureEl.length) {\n $pictureEl.children('source').each((sourceEl) => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(\n `[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`,\n );\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(\n `.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`,\n );\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const { $wrapperEl, params: swiperParams, slides, activeIndex } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if (\n $wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n .length\n ) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement\n ? $(swiper.params.lazy.scrollingElement)\n : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const { rtlTranslate: rtl } = swiper;\n\n let inView = false;\n\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 &&\n point[0] <= scrollElementWidth &&\n point[1] >= 0 &&\n point[1] <= scrollElementHeight\n ) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n swiper.support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.freeMode.sticky\n ) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (\n swiper.params.lazy.loadOnTransitionStart ||\n (!swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded)\n ) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const { lazy, cssMode, watchSlidesProgress, touchReleaseOnEdges, resistanceRatio } =\n swiper.params;\n if (\n lazy.enabled &&\n (cssMode || (watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0)))\n ) {\n load();\n }\n });\n\n Object.assign(swiper.lazy, {\n load,\n loadInSlide,\n });\n}\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Controller({ swiper, extendParams, on }) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n });\n\n swiper.controller = {\n control: undefined,\n };\n\n function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = (maxIndex + minIndex) >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n })();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (\n ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]\n );\n };\n return this;\n }\n // xxx: for now i will just save one spline function to to\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier =\n (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition,\n });\n}\n","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\n\nexport default function A11y({ swiper, extendParams, on }) {\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n },\n });\n\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n function addElId($el, id) {\n $el.attr('id', id);\n }\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (\n swiper.pagination &&\n $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))\n ) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return (\n swiper.pagination &&\n swiper.params.pagination.clickable &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length\n );\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (hasPagination()) {\n swiper.pagination.bullets.each((bulletEl) => {\n const $bulletEl = $(bulletEl);\n makeElFocusable($bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel(\n $bulletEl,\n params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1),\n );\n }\n });\n }\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n function init() {\n const params = swiper.params.a11y;\n\n swiper.$el.append(liveRegion);\n\n // Container\n const $containerEl = swiper.$el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n }\n\n // Wrapper\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live);\n\n // Slide\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n addElRole($(swiper.slides), params.slideRole);\n\n const slidesLength = swiper.params.loop\n ? swiper.slides.filter((el) => !el.classList.contains(swiper.params.slideDuplicateClass))\n .length\n : swiper.slides.length;\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop\n ? parseInt($slideEl.attr('data-swiper-slide-index'), 10)\n : index;\n const ariaLabelMessage = params.slideLabelMessage\n .replace(/\\{\\{index\\}\\}/, slideIndex + 1)\n .replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n });\n\n // Navigation\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n }\n\n // Pagination\n if (hasPagination()) {\n swiper.pagination.$el.on(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n }\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n }\n\n // Pagination\n if (hasPagination()) {\n swiper.pagination.$el.off(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n }\n\n on('beforeInit', () => {\n liveRegion = $(\n ``,\n );\n });\n\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n updateNavigation();\n });\n on('toEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('fromEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function History({ swiper, extendParams, on }) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n },\n });\n\n let initialized = false;\n let paths = {};\n\n const slugify = (text) => {\n return text\n .toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n };\n\n const getPathValues = (urlOverride) => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname\n .slice(1)\n .split('/')\n .filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, swiper.paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function HashNavigation({ swiper, extendParams, emit, on }) {\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl\n .children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`)\n .index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n if (\n swiper.params.hashNavigation.replaceState &&\n window.history &&\n window.history.replaceState\n ) {\n window.history.replaceState(\n null,\n null,\n `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '',\n );\n emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (\n !swiper.params.hashNavigation.enabled ||\n (swiper.params.history && swiper.params.history.enabled)\n )\n return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n","/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Autoplay({ swiper, extendParams, on, emit }) {\n let timeout;\n\n swiper.autoplay = {\n running: false,\n paused: false,\n };\n\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false,\n },\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(\n swiper.slides.length - 1,\n swiper.params.speed,\n true,\n true,\n );\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) run();\n else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n function onVisibilityChange() {\n const document = getDocument();\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n swiper.autoplay.paused = false;\n run();\n }\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (\n swiper.params.cssMode &&\n swiper.autoplay.paused &&\n !swiper.params.autoplay.disableOnInteraction\n ) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop,\n });\n}\n","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Thumb({ swiper, extendParams, on }) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs',\n },\n });\n\n let initialized = false;\n let swiperCreated = false;\n\n swiper.thumbs = {\n swiper: null,\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass))\n return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides\n .eq(currentIndex)\n .prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n const nextIndex = swiper.slides\n .eq(currentIndex)\n .nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const { thumbs: thumbsParams } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView =\n thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (\n thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .hasClass(thumbsSwiper.params.slideDuplicateClass)\n ) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex =\n thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (\n thumbsSwiper.visibleSlidesIndexes &&\n thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0\n ) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (\n newThumbsIndex > currentThumbsIndex &&\n thumbsSwiper.params.slidesPerGroup === 1\n ) {\n // newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (\n thumbsSwiper.params.loop ||\n (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)\n ) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl\n .children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`)\n .addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n }\n\n on('beforeInit', () => {\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n if (!swiper.thumbs.swiper) return;\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n });\n\n Object.assign(swiper.thumbs, {\n init,\n update,\n });\n}\n","import { now } from '../../shared/utils.js';\n\nexport default function freeMode({ swiper, extendParams, emit, once }) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02,\n },\n });\n\n function onTouchMove() {\n const { touchEventsData: data, touches } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now(),\n });\n }\n\n function onTouchEnd({ currentPos }) {\n const { params, $wrapperEl, rtlTranslate: rtl, snapGrid, touchEventsData: data } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (\n Math.abs(snapGrid[nextSlide] - newPosition) <\n Math.abs(snapGrid[nextSlide - 1] - newPosition) ||\n swiper.swipeDirection === 'next'\n ) {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchMove,\n onTouchEnd,\n },\n });\n}\n","export default function Grid({ swiper, extendParams }) {\n extendParams({\n grid: {\n rows: 1,\n fill: 'column',\n },\n });\n\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n\n const initSlides = (slidesLength) => {\n const { slidesPerView } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const { slidesPerGroup, spaceBetween } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup =\n groupIndex === 0\n ? slidesPerGroup\n : Math.min(\n Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows),\n slidesPerGroup,\n );\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n\n newSlideOrderIndex = column + (row * slidesNumberEvenToRows) / rows;\n slide.css({\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || (column === numFullColumns && row === rows - 1)) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.css(\n getDirectionLabel('margin-top'),\n row !== 0 ? spaceBetween && `${spaceBetween}px` : '',\n );\n };\n\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const { spaceBetween, centeredSlides, roundLengths } = swiper.params;\n const { rows } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.$wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`,\n });\n if (centeredSlides) {\n snapGrid.splice(0, snapGrid.length);\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.push(...newSlidesGrid);\n }\n };\n\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize,\n };\n}\n","export default function appendSlide(slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n}\n","export default function prependSlide(slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","export default function addSlide(index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex =\n activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeAllSlides() {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\n\nexport default function Manipulation({ swiper }) {\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper),\n });\n}\n","export default function effectInit(params) {\n const { effect, swiper, on, setTranslate, setTransition, overwriteParams, perspective } = params;\n\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n}\n","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden',\n });\n }\n return $slideEl;\n}\n","export default function effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides }) {\n const { slides, activeIndex, $wrapperEl } = swiper;\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl\n ? slides.eq(activeIndex).find(transformEl)\n : slides.eq(activeIndex);\n }\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}\n","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFade({ swiper, extendParams, on }) {\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\n\nexport default function EffectCube({ swiper, extendParams, on }) {\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n });\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${\n isHorizontal ? slideAngle : 0\n }deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(\n `
`,\n );\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(\n `
`,\n );\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(\n `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${\n -swiperWidth / 2\n }px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`,\n );\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier =\n 1.5 -\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2 +\n Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(\n `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${\n -swiperHeight / 2 / scale2\n }px) rotateX(-90deg)`,\n );\n }\n }\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(\n `translate3d(0px,0,${zFactor}px) rotateX(${\n swiper.isHorizontal() ? 0 : wrapperRotate\n }deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`,\n );\n };\n const setTransition = (duration) => {\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n }),\n });\n}\n","import $ from './dom.js';\n\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`
`);\n $shadowContainer.append($shadowEl);\n }\n return $shadowEl;\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFlip({ swiper, extendParams, on }) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides, rtlTranslate: rtl } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\n\nexport default function EffectCoverflow({ swiper, extendParams, on }) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { width: swiperWidth, height: swiperHeight, slides, slidesSizesGrid } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier =\n ((center - slideOffset - slideSize / 2) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = (parseFloat(params.stretch) / 100) * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if ($shadowBeforeEl.length)\n $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length)\n $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCreative({ swiper, extendParams, on }) {\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n },\n });\n\n const getTranslateValue = (value) => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const { slides, $wrapperEl, slidesSizesGrid } = swiper;\n const params = swiper.params.creativeEffect;\n const { progressMultiplier: multiplier } = params;\n\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(\n Math.max($slideEl[0].progress, -params.limitProgress),\n params.limitProgress,\n );\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(\n Math.max($slideEl[0].originalProgress, -params.limitProgress),\n params.limitProgress,\n );\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1,\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(\n progress * multiplier,\n )}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString =\n originalProgress < 0\n ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})`\n : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString =\n originalProgress < 0\n ? 1 + (1 - data.opacity) * originalProgress * multiplier\n : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if ((custom && data.shadow) || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress\n ? progress * (1 / params.limitProgress)\n : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({ opacity: opacityString });\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCards({ swiper, extendParams, on }) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides, activeIndex } = swiper;\n const params = swiper.params.cardsEffect;\n const { startTranslate, isTouched } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -2 * progress;\n\n let tXAdd = 8 - Math.abs(progress) * 0.75;\n\n const isSwipeToNext =\n (i === activeIndex || i === activeIndex - 1) &&\n progress > 0 &&\n progress < 1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate < startTranslate;\n const isSwipeToPrev =\n (i === activeIndex || i === activeIndex + 1) &&\n progress < 0 &&\n progress > -1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString =\n progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${rotate}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length)\n $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","// Swiper Class\nimport Swiper from './core/core.js';\n\n//IMPORT_MODULES\n\nconst modules = [\n //INSTALL_MODULES\n];\n\nSwiper.use(modules);\n\n//EXPORT\n"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","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","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","makeReactive","proto","__proto__","defineProperty","get","set","value","Dom7","Array","items","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","arrayUnique","uniqueArray","i","indexOf","qsa","selector","context","a","$","html","trim","toCreate","tempParent","innerHTML","nodeType","fn","addClass","classes","classNames","map","c","split","classList","add","removeClass","remove","toggleClass","className","toggle","hasClass","contains","attr","attrs","arguments","getAttribute","undefined","attrName","removeAttr","removeAttribute","transform","transition","duration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","events","j","event","dom7Listeners","proxyListener","dom7LiveListeners","off","handlers","handler","splice","dom7proxy","trigger","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","index","result","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","Methods","methodName","writable","deleteProps","object","nextTick","delay","now","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","o","slice","isNode","node","HTMLElement","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","startTime","time","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","calcSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","checkPassiveListener","supportsPassive","opts","gestures","checkGestures","getSupport","deviceCached","calcDevice","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","iPadScreens","os","getDevice","overrides","browser","calcBrowser","isSafari","toLowerCase","isWebView","test","getBrowser","Resize","emit","observer","resizeHandler","destroyed","initialized","createObserver","ResizeObserver","entries","newWidth","newHeight","contentBoxSize","contentRect","inlineSize","blockSize","observe","removeObserver","unobserve","orientationChangeHandler","resizeObserver","Observer","extendParams","observers","attach","options","ObserverFunc","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","init","observeParents","containerParents","$el","observeSlideChildren","$wrapperEl","destroy","disconnect","priority","self","method","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","eventsArray","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","Number","isNaN","assign","size","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","marginRight","centeredSlides","cssMode","gridEnabled","grid","rows","initSlides","slideSize","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","updateAutoHeight","activeSlides","setTransition","getSlideByIndex","visibleSlides","ceil","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","activeSlide","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","getSwiperTranslate","virtualTranslate","currentTranslate","setTranslate","byController","x","y","z","previousTranslate","newProgress","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","transitionStart","slideTo","initial","Error","indexAsNumber","isValidNumber","isFinite","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","snapTranslate","diff","slideChanged","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","closestElement","base","__closestFrom","assignedSlot","getRootNode","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","isTouchEvent","type","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","onTouchEnd","touchEndTime","timeDiff","lastClickTime","currentPos","stopIndex","groupSize","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","isNavButtonTarget","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","start","move","end","passiveListeners","passive","cancel","updateOnWindowResize","attachEvents","bind","detachEvents","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointOnlyParams","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","containerModifierClass","emitContainerClasses","fill","directionChanged","needsReLoop","changeDirection","isEnabled","disable","enable","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","prepareClasses","prefix","resultClasses","item","addClasses","suffixes","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","isPicture","complete","onload","onerror","preloadImages","imagesToLoad","imagesLoaded","updateOnImagesReady","update","currentSrc","wasLocked","lastSlideIndex","lastSlideRightEdge","createElements","url","uniqueNavElements","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","images","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","swiperParams","defaults","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","slideInView","translateValue","translated","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","getWrapper","wrapper","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","Virtual","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","cssModeTimeout","from","$slideEl","force","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","getSlides","slidesToRender","prependIndexes","appendIndexes","appendSlide","prependSlide","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","removeSlide","slidesIndexes","removeAllSlides","Keyboard","keyboard","onlyInViewport","pageUpDown","handle","kc","keyCode","charCode","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","Mousewheel","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","timeout","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","releaseScroll","rtlFactor","positions","sign","shift","prevEvent","ignoreWheelEvents","position","sticky","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","createElementIfNotDefined","checkProps","element","Navigation","hideOnClick","disabledClass","hiddenClass","lockClass","$nextEl","$prevEl","getEl","toggleEl","disabled","tagName","onPrevClick","onNextClick","_s","targetEl","pagination","clickable","isHidden","classesToSelector","Pagination","pfx","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","bullets","bulletSize","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","lastIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","Scrollbar","dragTimeout","dragStartPos","dragSize","trackSize","divider","scrollbar","hide","draggable","snapOnRelease","dragClass","dragEl","$dragEl","newSize","newPos","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","activeListener","eventMethod","enableDraggable","disableDraggable","$swiperEl","Parallax","parallax","setTransform","p","currentOpacity","currentScale","parallaxEl","$parallaxEl","parallaxDuration","_swiper","Zoom","zoom","maxRatio","containerClass","zoomedSlideClass","isScaling","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","gesture","slideWidth","slideHeight","$imageEl","$imageWrapEl","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","distance","onGestureStart","scaleStart","onGestureChange","scaleMove","onGestureEnd","scaledWidth","scaledHeight","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTransitionEnd","zoomIn","touchAction","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","in","out","Lazy","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$images","background","$pictureEl","sourceEl","$source","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","amount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","Controller","controller","control","inverse","by","LinearSpline","binarySearch","guess","array","i1","i3","interpolate","getInterpolateFunction","spline","_t","controlled","controlledTranslate","setControlledTranslate","setControlledTransition","removeSpline","A11y","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","liveRegion","notify","message","notification","getRandomNumber","randomChar","round","random","repeat","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElControls","controls","addElLabel","addElId","addElLive","live","disableEl","enableEl","onEnterOrSpaceKey","click","updateNavigation","hasPagination","updatePagination","bulletEl","initNavEl","wrapperId","$containerEl","ariaLabelMessage","History","root","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","includes","currentState","state","scrollToSlide","slideHistory","setHistoryPopState","hashNavigation","HashNavigation","watchState","onHashChange","newHash","activeSlideHash","setHash","slideHash","Autoplay","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","$activeSlideEl","autoplayResult","pause","onVisibilityChange","visibilityState","onMouseEnter","onMouseLeave","attachMouseEvents","detachMouseEvents","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","useOffset","currentThumbsIndex","newThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","momentumDistance","newPosition","doBounce","afterBouncePosition","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","order","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","indexToRemove","Manipulation","effectInit","overwriteParams","perspective","overwriteParamsResult","effectTarget","effectParams","transformEl","effectVirtualTransitionEnd","allSlides","eventTriggered","$transitionEndTarget","triggerEvents","EffectFade","fadeEffect","crossFade","tx","ty","slideOpacity","$transitionElements","EffectCube","cubeEffect","slideShadows","shadow","shadowOffset","shadowScale","wrapperRotate","$cubeShadowEl","slideAngle","tz","shadowBefore","shadowAfter","shadowAngle","sin","scale1","scale2","zFactor","createShadow","shadowClass","$shadowContainer","$shadowEl","EffectFlip","flipEffect","limitRotation","rotate","rotateY","rotateX","zIndex","EffectCoverflow","coverflowEffect","stretch","depth","modifier","center","offsetMultiplier","translateZ","slideTransform","$shadowBeforeEl","$shadowAfterEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","EffectCards","cardsEffect","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY"],"mappings":"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"} \ No newline at end of file diff --git a/resources/web/include/swiper/swiper-bundle.min.js.map b/resources/web/include/swiper/swiper-bundle.min.js.map deleted file mode 100644 index 1828e94139..0000000000 --- a/resources/web/include/swiper/swiper-bundle.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../node_modules/ssr-window/ssr-window.esm.js","../node_modules/dom7/dom7.esm.js","../src/shared/dom.js","../src/shared/utils.js","../src/shared/get-support.js","../src/shared/get-device.js","../src/shared/get-browser.js","../src/core/events-emitter.js","../src/core/transition/transitionEmit.js","../src/core/events/onTouchStart.js","../src/core/events/onTouchMove.js","../src/core/events/onTouchEnd.js","../src/core/events/onResize.js","../src/core/events/onClick.js","../src/core/events/onScroll.js","../src/core/events/index.js","../src/core/breakpoints/setBreakpoint.js","../src/core/check-overflow/index.js","../src/core/defaults.js","../src/core/moduleExtendParams.js","../src/core/core.js","../src/core/update/index.js","../src/core/update/updateSize.js","../src/core/update/updateSlides.js","../src/core/update/updateAutoHeight.js","../src/core/update/updateSlidesOffset.js","../src/core/update/updateSlidesProgress.js","../src/core/update/updateProgress.js","../src/core/update/updateSlidesClasses.js","../src/core/update/updateActiveIndex.js","../src/core/update/updateClickedSlide.js","../src/core/translate/index.js","../src/core/translate/getTranslate.js","../src/core/translate/setTranslate.js","../src/core/translate/minTranslate.js","../src/core/translate/maxTranslate.js","../src/core/translate/translateTo.js","../src/core/transition/index.js","../src/core/transition/setTransition.js","../src/core/transition/transitionStart.js","../src/core/transition/transitionEnd.js","../src/core/slide/index.js","../src/core/slide/slideTo.js","../src/core/slide/slideToLoop.js","../src/core/slide/slideNext.js","../src/core/slide/slidePrev.js","../src/core/slide/slideReset.js","../src/core/slide/slideToClosest.js","../src/core/slide/slideToClickedSlide.js","../src/core/loop/index.js","../src/core/loop/loopCreate.js","../src/core/loop/loopFix.js","../src/core/loop/loopDestroy.js","../src/core/grab-cursor/index.js","../src/core/grab-cursor/setGrabCursor.js","../src/core/grab-cursor/unsetGrabCursor.js","../src/core/breakpoints/index.js","../src/core/breakpoints/getBreakpoint.js","../src/core/classes/index.js","../src/core/classes/addClasses.js","../src/core/classes/removeClasses.js","../src/core/images/index.js","../src/core/images/loadImage.js","../src/core/images/preloadImages.js","../src/shared/create-element-if-not-defined.js","../src/shared/classes-to-selector.js","../src/modules/manipulation/methods/appendSlide.js","../src/modules/manipulation/methods/prependSlide.js","../src/modules/manipulation/methods/addSlide.js","../src/modules/manipulation/methods/removeSlide.js","../src/modules/manipulation/methods/removeAllSlides.js","../src/shared/effect-init.js","../src/shared/effect-target.js","../src/shared/effect-virtual-transition-end.js","../src/shared/create-shadow.js","../src/core/modules/resize/resize.js","../src/core/modules/observer/observer.js","../src/swiper.js","../src/modules/virtual/virtual.js","../src/modules/keyboard/keyboard.js","../src/modules/mousewheel/mousewheel.js","../src/modules/navigation/navigation.js","../src/modules/pagination/pagination.js","../src/modules/scrollbar/scrollbar.js","../src/modules/parallax/parallax.js","../src/modules/zoom/zoom.js","../src/modules/lazy/lazy.js","../src/modules/controller/controller.js","../src/modules/a11y/a11y.js","../src/modules/history/history.js","../src/modules/hash-navigation/hash-navigation.js","../src/modules/autoplay/autoplay.js","../src/modules/thumbs/thumbs.js","../src/modules/free-mode/free-mode.js","../src/modules/grid/grid.js","../src/modules/manipulation/manipulation.js","../src/modules/effect-fade/effect-fade.js","../src/modules/effect-cube/effect-cube.js","../src/modules/effect-flip/effect-flip.js","../src/modules/effect-coverflow/effect-coverflow.js","../src/modules/effect-creative/effect-creative.js","../src/modules/effect-cards/effect-cards.js"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","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","Dom7","Array","items","super","proto","__proto__","defineProperty","get","set","value","makeReactive","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","$","selector","context","html","trim","indexOf","toCreate","tempParent","innerHTML","i","a","qsa","nodeType","uniqueArray","arrayUnique","fn","Methods","addClass","classes","classNames","map","c","split","classList","add","removeClass","remove","hasClass","className","contains","toggleClass","toggle","attr","attrs","arguments","getAttribute","attrName","removeAttr","removeAttribute","transform","transition","duration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","j","event","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","splice","trigger","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","index","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","o","slice","to","noExtend","nextSource","node","HTMLElement","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","time","startTime","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","supportsPassive","opts","gestures","calcSupport","getDevice","overrides","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","isSafari","toLowerCase","isWebView","test","calcBrowser","methodName","writable","eventsEmitter","priority","self","method","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","emit","transitionEmit","runCallbacks","direction","step","activeIndex","previousIndex","onTouchStart","touchEventsData","touches","enabled","animating","preventInteractionOnTransition","cssMode","loop","loopFix","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","assign","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","updateSize","swipeDirection","threshold","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","rtlTranslate","rtl","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","isVertical","maxTranslate","minTranslate","diffX","diffY","sqrt","touchAngle","isHorizontal","atan2","abs","touchMoveStopPropagation","nested","stopPropagation","startTranslate","setTransition","$wrapperEl","allowMomentumBounce","grabCursor","allowSlideNext","allowSlidePrev","setGrabCursor","diff","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","watchSlidesProgress","updateActiveIndex","updateSlidesClasses","updateProgress","setTranslate","onTouchEnd","slidesGrid","touchEndTime","timeDiff","updateClickedSlide","lastClickTime","destroyed","currentPos","stopIndex","groupSize","slidesSizesGrid","slidesPerGroupSkip","slidesPerGroup","increment","ratio","longSwipesMs","longSwipes","slideTo","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","snapGrid","updateSlides","slidesPerView","isEnd","isBeginning","centeredSlides","slides","autoplay","running","paused","run","watchOverflow","checkOverflow","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","translatesDiff","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","start","passiveListeners","passive","move","end","cancel","updateOnWindowResize","isGridEnabled","grid","rows","defaults","init","initialSlide","resizeObserver","createElements","url","autoHeight","setWrapperSize","virtualTranslate","effect","breakpointsBase","spaceBetween","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","simulateTouch","uniqueNavElements","slideToClickedSlide","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlides","loopFillGroupWithBlank","loopPreventsSlide","containerModifierClass","slideClass","slideBlankClass","slideActiveClass","slideDuplicateActiveClass","slideVisibleClass","slideDuplicateClass","slideNextClass","slideDuplicateNextClass","slidePrevClass","slideDuplicatePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","update","$el","clientWidth","clientHeight","parseInt","Number","isNaN","size","getDirectionLabel","property","marginRight","getDirectionPropertyValue","label","swiperSize","wrongRTL","isVirtual","virtual","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","gridEnabled","slideSize","initSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","updateSlidesOffset","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","visibleSlides","ceil","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","originalProgress","multiplier","wasBeginning","wasEnd","realIndex","activeSlide","nextSlide","prevSlide","emitSlidesClasses","newActiveIndex","previousRealIndex","previousSnapIndex","skip","initialized","slideFound","clickedSlide","clickedIndex","byController","x","y","translateTo","translateBounds","internal","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionStart","initial","Error","indexAsNumber","isFinite","normalizedTranslate","normalizedGrid","normalizedGridNext","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerViewDynamic","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","currentSnap","slideToIndex","loopCreate","$selector","blankSlidesNum","blankNode","prependSlides","appendSlides","cloneNode","loopDestroy","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","directionChanged","needsReLoop","changeDirection","isEnabled","disable","enable","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","wasLocked","lastSlideIndex","lastSlideRightEdge","addClasses","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","options","getWrapper","wrapper","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","createElementIfNotDefined","checkProps","element","classesToSelector","appendSlide","observer","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","overwriteParamsResult","_s","effectTarget","effectParams","$slideEl","transformEl","effectVirtualTransitionEnd","allSlides","$transitionEndTarget","eventTriggered","triggerEvents","createShadow","shadowClass","$shadowContainer","$shadowEl","prototypeGroup","protoMethod","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","renderSlide","cache","force","addSlidesBefore","addSlidesAfter","from","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","renderExternalUpdate","prependIndexes","appendIndexes","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","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","shift","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","getEl","toggleEl","disabled","disabledClass","tagName","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","targetEl","pagination","clickable","isHidden","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","lastIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","progressbarDirection","scale","scaleX","scaleY","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","eventMethod","$swiperEl","dragClass","dragEl","draggable","parallax","setTransform","p","currentOpacity","currentScale","_swiper","parallaxEl","$parallaxEl","parallaxDuration","zoom","maxRatio","containerClass","zoomedSlideClass","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","isScaling","gesture","slideWidth","slideHeight","$imageEl","$imageWrapEl","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","scaleStart","onGestureChange","scaleMove","onGestureEnd","scaledWidth","scaledHeight","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","touchAction","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$images","background","$pictureEl","sourceEl","$source","slideOriginalIndex","slideExist","amount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","LinearSpline","binarySearch","guess","array","i1","i3","interpolate","removeSpline","controller","control","spline","inverse","by","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","liveRegion","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","updateNavigation","hasPagination","initNavEl","wrapperId","controls","addElControls","$containerEl","repeat","round","random","getRandomNumber","live","addElLive","bulletEl","updatePagination","root","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","includes","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","onHashChange","newHash","setHash","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","slideShadows","shadow","shadowOffset","shadowScale","$cubeShadowEl","wrapperRotate","slideAngle","tz","shadowBefore","shadowAfter","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateY","rotateX","zIndex","coverflowEffect","rotate","stretch","depth","modifier","center","offsetMultiplier","translateZ","slideTransform","$shadowBeforeEl","$shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY"],"mappings":"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","file":"swiper-bundle.min.js","sourcesContent":["/**\n * SSR Window 4.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.1\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n super(...(items || []));\n makeReactive(this);\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import {\n $,\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n} from 'dom7';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n Object.defineProperty($.fn, methodName, { value: Methods[methodName], writable: true });\n});\n\nexport default $;\n","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform\n .split(', ')\n .map((a) => a.replace(',', '.'))\n .join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix =\n curStyle.MozTransform ||\n curStyle.OTransform ||\n curStyle.MsTransform ||\n curStyle.msTransform ||\n curStyle.transform ||\n curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return (\n typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object'\n );\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter((key) => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({ swiper, targetPosition, side }) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return (dir === 'next' && current >= target) || (dir === 'prev' && current <= target);\n };\n\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition,\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\n\nexport {\n animateCSSModeScroll,\n deleteProps,\n nextTick,\n now,\n getTranslate,\n isObject,\n extend,\n getComputedStyle,\n setCSSProperty,\n};\n","import { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n\n touch: !!(\n 'ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)\n ),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n })(),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n })(),\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nexport { getSupport };\n","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\n\nlet deviceCached;\n\nfunction calcDevice({ userAgent } = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nexport { getDevice };\n","import { getWindow } from 'ssr-window';\n\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nexport { getBrowser };\n","/* eslint-disable no-underscore-dangle */\n\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (\n eventHandler === handler ||\n (eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler)\n ) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n\n eventsArray.forEach((event) => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach((eventHandler) => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n },\n};\n","export default function transitionEmit({ swiper, runCallbacks, direction, step }) {\n const { activeIndex, previousIndex } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n\n const data = swiper.touchEventsData;\n const { params, touches, enabled } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector\n ? params.noSwipingSelector\n : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (\n params.noSwiping &&\n (isTargetShadow\n ? closestElement(noSwipingSelector, e.target)\n : $targetEl.closest(noSwipingSelector)[0])\n ) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection &&\n (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)\n ) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n if (\n document.activeElement &&\n $(document.activeElement).is(data.focusableElements) &&\n document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault =\n preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (\n (params.touchStartForcePreventDefault || shouldPreventDefault) &&\n !$targetEl[0].isContentEditable\n ) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\n\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch =\n e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) ||\n (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) ||\n (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold)\n return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (\n (swiper.isHorizontal() && touches.currentY === touches.startY) ||\n (swiper.isVertical() && touches.currentX === touches.startX)\n ) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal()\n ? touchAngle > params.touchAngle\n : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.minTranslate() -\n 1 +\n (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate =\n swiper.maxTranslate() +\n 1 -\n (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n swiper.swipeDirection === 'next' &&\n data.currentTranslate < data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (\n !swiper.allowSlidePrev &&\n swiper.swipeDirection === 'prev' &&\n data.currentTranslate > data.startTranslate\n ) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal()\n ? touches.currentX - touches.startX\n : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (\n (params.freeMode && params.freeMode.enabled && swiper.freeMode) ||\n params.watchSlidesProgress\n ) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import { now, nextTick } from '../../shared/utils.js';\n\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const { params, touches, rtlTranslate: rtl, slidesGrid, enabled } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (\n params.grabCursor &&\n data.isMoved &&\n data.isTouched &&\n (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)\n ) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (\n !data.isTouched ||\n !data.isMoved ||\n !swiper.swipeDirection ||\n touches.diff === 0 ||\n data.currentTranslate === data.startTranslate\n ) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({ currentPos });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (\n let i = 0;\n i < slidesGrid.length;\n i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup\n ) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget =\n swiper.navigation &&\n (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n","export default function onResize() {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if (\n (params.slidesPerView === 'auto' || params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.isBeginning &&\n !swiper.params.centeredSlides\n ) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","export default function onScroll() {\n const swiper = this;\n const { wrapperEl, rtlTranslate, enabled } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { getDocument } from 'ssr-window';\n\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const { params, touchEvents, el, wrapperEl, device, support } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener =\n touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](\n touchEvents.move,\n swiper.onTouchMove,\n support.passiveListener ? { passive: false, capture } : capture,\n );\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](\n device.ios || device.android\n ? 'resize orientationchange observerUpdate'\n : 'resize observerUpdate',\n onResize,\n true,\n );\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const { params, support } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const { activeIndex, initialized, loopedSlides = 0, params, $el } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(\n `${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`,\n );\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n if (\n (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column') ||\n (!breakpointParams.grid.fill && params.grid.fill === 'column')\n ) {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n const directionChanged =\n breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop =\n params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n\n const isEnabled = swiper.params.enabled;\n\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}\n","function checkOverflow() {\n const swiper = this;\n const { isLocked: wasLocked, params } = swiper;\n const { slidesOffsetBefore } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge =\n swiper.slidesGrid[lastSlideIndex] +\n swiper.slidesSizesGrid[lastSlideIndex] +\n slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n\n // Overrides\n width: null,\n height: null,\n\n //\n preventInteractionOnTransition: false,\n\n // ssr\n userAgent: null,\n url: null,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n\n // Internals\n _emitClasses: false,\n};\n","import { extend } from '../shared/utils.js';\n\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (\n ['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 &&\n params[moduleParamName] === true\n ) {\n params[moduleParamName] = { auto: true };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n extend(allModulesParams, obj);\n };\n}\n","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\n\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\n\nimport eventsEmitter from './events-emitter.js';\n\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\n\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\n\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n if (\n args.length === 1 &&\n args[0].constructor &&\n Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object'\n ) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each((containerEl) => {\n const newParams = extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({ userAgent: params.userAgent });\n swiper.browser = getBrowser();\n\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n\n swiper.modules.forEach((mod) => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper),\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach((eventName) => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Save Dom lib\n swiper.$ = $;\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return swiper.support.touch || !swiper.params.simulateTouch\n ? swiper.touchEventsTouch\n : swiper.touchEventsDesktop;\n })(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n });\n\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter((className) => {\n return (\n className.indexOf('swiper') === 0 ||\n className.indexOf(swiper.params.containerModifierClass) === 0\n );\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n\n return slideEl.className\n .split(' ')\n .filter((className) => {\n return (\n className.indexOf('swiper-slide') === 0 ||\n className.indexOf(swiper.params.slideClass) === 0\n );\n })\n .join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each((slideEl) => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({ slideEl, classNames });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const { params, slides, slidesGrid, slidesSizesGrid, size: swiperSize, activeIndex } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact\n ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize\n : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(\n Math.max(translateValue, swiper.maxTranslate()),\n swiper.minTranslate(),\n );\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if (\n (swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) &&\n swiper.isEnd &&\n !swiper.params.centeredSlides\n ) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (\n newDirection === currentDirection ||\n (newDirection !== 'horizontal' && newDirection !== 'vertical')\n ) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector()));\n // Children needs to return slot items\n res.children = (options) => $el.children(options);\n return res;\n }\n return $el.children(getWrapperSelector());\n };\n // Find Wrapper\n let $wrapperEl = getWrapper();\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each((slideEl) => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate:\n swiper.params.direction === 'horizontal' &&\n (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n });\n\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(\n swiper.params.initialSlide + swiper.loopedSlides,\n 0,\n swiper.params.runCallbacksOnInit,\n false,\n true,\n );\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const { params, $el, $wrapperEl, slides } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass(\n [\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '),\n )\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach((m) => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\n\nObject.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\n\nSwiper.use([Resize, Observer]);\n\nexport default Swiper;\n","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width =\n width -\n parseInt($el.css('padding-left') || 0, 10) -\n parseInt($el.css('padding-right') || 0, 10);\n height =\n height -\n parseInt($el.css('padding-top') || 0, 10) -\n parseInt($el.css('padding-bottom') || 0, 10);\n\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { setCSSProperty } from '../../shared/utils.js';\n\nexport default function updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom',\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n\n const { $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginBottom: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '', marginTop: '' });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n\n const shouldResetSlideSize =\n params.slidesPerView === 'auto' &&\n params.breakpoints &&\n Object.keys(params.breakpoints).filter((key) => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const { clientWidth, offsetWidth } = slide[0];\n slideSize =\n width +\n paddingLeft +\n paddingRight +\n marginLeft +\n marginRight +\n (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0)\n slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (\n (index - Math.min(swiper.params.slidesPerGroupSkip, index)) %\n swiper.params.slidesPerGroup ===\n 0\n )\n snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`,\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n\n if (\n Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) >\n 1\n ) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides\n .filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n })\n .css({ [key]: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(\n swiper.wrapperEl,\n '--swiper-centered-offset-after',\n `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`,\n );\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map((v) => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map((v) => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n}\n","export default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = (index) => {\n if (isVirtual) {\n return swiper.slides.filter(\n (el) => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index,\n )[0];\n }\n return swiper.slides.eq(index)[0];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal()\n ? slides[i].offsetLeft\n : slides[i].offsetTop;\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateSlidesProgress(translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl, snapGrid } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress =\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress =\n (offsetCenter -\n snapGrid[0] +\n (params.centeredSlides ? swiper.minTranslate() : 0) -\n slideOffset) /\n (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible =\n (slideBefore >= 0 && slideBefore < swiper.size - 1) ||\n (slideAfter > 1 && slideAfter <= swiper.size) ||\n (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","export default function updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && swiper.translate * multiplier) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || (params.centeredSlides && params.autoHeight))\n swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function updateSlidesClasses() {\n const swiper = this;\n\n const { slides, params, $wrapperEl, activeIndex, realIndex } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(\n `${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`,\n );\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\n `.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`,\n );\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`,\n )\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide\n .nextAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide\n .prevAll(`.${params.slideClass}`)\n .eq(0)\n .addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\n `.${params.slideClass}:not(.${\n params.slideDuplicateClass\n })[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(\n `.${params.slideClass}.${\n params.slideDuplicateClass\n }[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`,\n )\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n translate >= slidesGrid[i] &&\n translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2\n ) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(\n swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex,\n 10,\n );\n\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../shared/dom.js';\n\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (\n params.slideToClickedSlide &&\n swiper.clickedIndex !== undefined &&\n swiper.clickedIndex !== swiper.activeIndex\n ) {\n swiper.slideToClickedSlide();\n }\n}\n","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","import { getTranslate } from '../../shared/utils.js';\n\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const { params, rtlTranslate: rtl, translate, $wrapperEl } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function setTranslate(translate, byController) {\n const swiper = this;\n const { rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function minTranslate() {\n return -this.snapGrid[0];\n}\n","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function translateTo(\n translate = 0,\n speed = this.params.speed,\n runCallbacks = true,\n translateBounds = true,\n internal,\n) {\n const swiper = this;\n\n const { params, wrapperEl } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: -newTranslate, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener(\n 'transitionend',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onTranslateToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'Start' });\n}\n","import transitionEmit from './transitionEmit.js';\n\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const { params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n transitionEmit({ swiper, runCallbacks, direction, step: 'End' });\n}\n","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","import { animateCSSModeScroll } from '../../shared/utils.js';\n\nexport default function slideTo(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n initial,\n) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(\n `The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`,\n );\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\n `The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`,\n );\n }\n\n // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled,\n } = swiper;\n\n if (\n (swiper.animating && params.preventInteractionOnTransition) ||\n (!enabled && !internal && !initial)\n ) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2\n ) {\n slideIndex = i;\n } else if (\n normalizedTranslate >= normalizedGrid &&\n normalizedTranslate < normalizedGridNext\n ) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (\n !swiper.allowSlideNext &&\n translate < swiper.translate &&\n translate < swiper.minTranslate()\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n translate > swiper.translate &&\n translate > swiper.maxTranslate()\n ) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({ swiper, targetPosition: t, side: isH ? 'left' : 'top' });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener(\n 'transitionend',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.$wrapperEl[0].removeEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener(\n 'webkitTransitionEnd',\n swiper.onSlideToWrapperTransitionEnd,\n );\n }\n }\n\n return true;\n}\n","export default function slideToLoop(\n index = 0,\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { animating, enabled, params } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating, snapGrid, slidesGrid, rtlTranslate, enabled } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (\n params.slidesPerView === 'auto' &&\n params.slidesPerGroup === 1 &&\n params.slidesPerGroupAuto\n ) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(\n speed = this.params.speed,\n runCallbacks = true,\n internal,\n threshold = 0.5,\n) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function slideToClickedSlide() {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView =\n params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n slideToIndex < swiper.loopedSlides - slidesPerView / 2 ||\n slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\n `.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`,\n )\n .eq(0)\n .index();\n\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n const $selector = $($wrapperEl.children()[0].parentNode);\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(\n `${params.slideClass} ${params.slideBlankClass}`,\n );\n $selector.append(blankNode);\n }\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function loopFix() {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function loopDestroy() {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl\n .children(\n `.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`,\n )\n .remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","export default function setGrabCursor(moving) {\n const swiper = this;\n if (\n swiper.support.touch ||\n !swiper.params.simulateTouch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n )\n return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","export default function unsetGrabCursor() {\n const swiper = this;\n if (\n swiper.support.touch ||\n (swiper.params.watchOverflow && swiper.isLocked) ||\n swiper.params.cssMode\n ) {\n return;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}\n","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\n\nexport default { setBreakpoint, getBreakpoint };\n","import { getWindow } from 'ssr-window';\n\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || (base === 'container' && !containerEl)) return undefined;\n let breakpoint = false;\n\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\n\nexport default { addClasses, removeClasses };\n","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach((item) => {\n if (typeof item === 'object') {\n Object.keys(item).forEach((classNames) => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const { classNames, params, rtl, $el, device, support } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses([\n 'initialized',\n params.direction,\n { 'pointer-events': !support.touch },\n { 'free-mode': swiper.params.freeMode && params.freeMode.enabled },\n { 'autoheight': params.autoHeight },\n { 'rtl': rtl },\n { 'grid': params.grid && params.grid.rows > 1 },\n { 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' },\n { 'android': device.android },\n { 'ios': device.ios },\n { 'css-mode': params.cssMode },\n { 'centered': params.cssMode && params.centeredSlides },\n ], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}\n","export default function removeClasses() {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}\n","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n function onReady() {\n if (callback) callback();\n }\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady,\n );\n }\n}\n","import { getDocument } from 'ssr-window';\n\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach((key) => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n","export default function classesToSelector(classes = '') {\n return `.${classes\n .trim()\n .replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n","export default function appendSlide(slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n}\n","export default function prependSlide(slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","export default function addSlide(index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex =\n activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function removeAllSlides() {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","export default function effectInit(params) {\n const { effect, swiper, on, setTranslate, setTransition, overwriteParams, perspective } = params;\n\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n}\n","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden',\n });\n }\n return $slideEl;\n}\n","export default function effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides }) {\n const { slides, activeIndex, $wrapperEl } = swiper;\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl\n ? slides.eq(activeIndex).find(transformEl)\n : slides.eq(activeIndex);\n }\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}\n","import $ from './dom.js';\n\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`
`);\n $shadowContainer.append($shadowEl);\n }\n return $shadowEl;\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function Resize({ swiper, on, emit }) {\n const window = getWindow();\n let observer = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver((entries) => {\n const { width, height } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({ contentBoxSize, contentRect, target }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect\n ? contentRect.width\n : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect\n ? contentRect.height\n : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function Observer({ swiper, extendParams, on, emit }) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren,\n });\n\n // Observe wrapper\n attach(swiper.$wrapperEl[0], { attributes: false });\n };\n const destroy = () => {\n observers.forEach((observer) => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n });\n on('init', init);\n on('destroy', destroy);\n}\n","// Swiper Class\nimport Swiper from './core/core.js';\n\n//IMPORT_MODULES\n\nconst modules = [\n //INSTALL_MODULES\n];\n\nSwiper.use(modules);\n\n//EXPORT\n","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\n\nexport default function Virtual({ swiper, extendParams, on }) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n });\n\n let cssModeTimeout;\n\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: [],\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(\n `
${slide}
`,\n );\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset,\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n })(),\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl\n .find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`)\n .remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes\n .sort((a, b) => b - a)\n .forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr(\n 'data-swiper-slide-index',\n parseInt(cachedElIndex, 10) + numberOfNewSlides,\n );\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Keyboard({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false,\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true,\n },\n });\n\n function handle(event) {\n if (!swiper.enabled) return;\n\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (\n !swiper.allowSlideNext &&\n ((swiper.isHorizontal() && isArrowRight) ||\n (swiper.isVertical() && isArrowDown) ||\n isPageDown)\n ) {\n return false;\n }\n if (\n !swiper.allowSlidePrev &&\n ((swiper.isHorizontal() && isArrowLeft) || (swiper.isVertical() && isArrowUp) || isPageUp)\n ) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (\n document.activeElement &&\n document.activeElement.nodeName &&\n (document.activeElement.nodeName.toLowerCase() === 'input' ||\n document.activeElement.nodeName.toLowerCase() === 'textarea')\n ) {\n return undefined;\n }\n if (\n swiper.params.keyboard.onlyInViewport &&\n (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)\n ) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (\n swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 &&\n swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0\n ) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiperWidth, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiperHeight],\n [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl))\n swiper.slideNext();\n if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl))\n swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n\n Object.assign(swiper.keyboard, {\n enable,\n disable,\n });\n}\n","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\n\nexport default function Mousewheel({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n },\n });\n\n swiper.mousewheel = {\n enabled: false,\n };\n\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (\n swiper.params.mousewheel.thresholdDelta &&\n newEvent.delta < swiper.params.mousewheel.thresholdDelta\n ) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (\n swiper.params.mousewheel.thresholdTime &&\n now() - lastScrollTime < swiper.params.mousewheel.thresholdTime\n ) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges)\n return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n else return true;\n } else {\n delta =\n Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop\n ? true\n : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (\n newEvent.direction !== prevEvent.direction ||\n newEvent.delta > prevEvent.delta ||\n newEvent.time > prevEvent.time + 150\n ) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n };\n const ignoreWheelEvents =\n lastEventBeforeSnap &&\n newEvent.time < lastEventBeforeSnap.time + 500 &&\n newEvent.delta <= lastEventBeforeSnap.delta &&\n newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length\n ? recentWheelEvents[recentWheelEvents.length - 1]\n : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (\n prevEvent &&\n (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)\n ) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (\n recentWheelEvents.length >= 15 &&\n newEvent.time - firstEvent.time < 500 &&\n firstEvent.delta - newEvent.delta >= 1 &&\n newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction)\n swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n\n Object.assign(swiper.mousewheel, {\n enable,\n disable,\n });\n}\n","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Navigation({ swiper, extendParams, on, emit }) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n });\n\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null,\n };\n\n function getEl(el) {\n let $el;\n if (el) {\n $el = $(el);\n if (\n swiper.params.uniqueNavElements &&\n typeof el === 'string' &&\n $el.length > 1 &&\n swiper.$el.find(el).length === 1\n ) {\n $el = swiper.$el.find(el);\n }\n }\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n toggleEl($prevEl, swiper.isBeginning);\n toggleEl($nextEl, swiper.isEnd);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n }\n function init() {\n const params = swiper.params.navigation;\n\n swiper.params.navigation = createElementIfNotDefined(\n swiper,\n swiper.originalParams.navigation,\n swiper.params.navigation,\n {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev',\n },\n );\n if (!(params.nextEl || params.prevEl)) return;\n\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n function destroy() {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n init();\n update();\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const { $nextEl, $prevEl } = swiper.navigation;\n const targetEl = e.target;\n if (\n swiper.params.navigation.hideOnClick &&\n !$(targetEl).is($prevEl) &&\n !$(targetEl).is($nextEl)\n ) {\n if (\n swiper.pagination &&\n swiper.params.pagination &&\n swiper.params.pagination.clickable &&\n (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))\n )\n return;\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n Object.assign(swiper.navigation, {\n update,\n init,\n destroy,\n });\n}\n","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Pagination({ swiper, extendParams, on, emit }) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n },\n });\n\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: [],\n };\n\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return (\n !swiper.params.pagination.el ||\n !swiper.pagination.el ||\n !swiper.pagination.$el ||\n swiper.pagination.$el.length === 0\n );\n }\n\n function setSideBullets($bulletEl, position) {\n const { bulletActiveClass } = swiper.params.pagination;\n $bulletEl[position]()\n .addClass(`${bulletActiveClass}-${position}`)\n [position]()\n .addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil(\n (swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup,\n );\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (\n params.type === 'bullets' &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length > 0\n ) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(\n swiper.isHorizontal() ? 'width' : 'height',\n `${bulletSize * (params.dynamicMainBullets + 4)}px`,\n );\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - swiper.previousIndex;\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(\n ['', '-next', '-next-next', '-prev', '-prev-prev', '-main']\n .map((suffix) => `${params.bulletActiveClass}${suffix}`)\n .join(' '),\n );\n if ($el.length > 1) {\n bullets.each((bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets\n .eq(bullets.length - params.dynamicMainBullets - 1)\n .addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset =\n (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el\n .find(classesToSelector(params.currentClass))\n .text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el\n .find(classesToSelector(params.progressbarFillClass))\n .transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`)\n .transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength =\n swiper.virtual && swiper.params.virtual.enabled\n ? swiper.virtual.slides.length\n : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop\n ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup)\n : swiper.snapGrid.length;\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.loop &&\n numberOfBullets > slidesLength\n ) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML =\n `` +\n ' / ' +\n ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(\n swiper,\n swiper.originalParams.pagination,\n swiper.params.pagination,\n { el: 'swiper-pagination' },\n );\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el);\n // check if it belongs to another nested Swiper\n if ($el.length > 1) {\n $el = $el.filter((el) => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(params.modifierClass + swiper.params.direction);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0],\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(params.modifierClass + swiper.params.direction);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass)\n swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n init();\n render();\n update();\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const { $el } = swiper.pagination;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const { $el } = swiper.pagination;\n if (\n swiper.params.pagination.el &&\n swiper.params.pagination.hideOnClick &&\n $el.length > 0 &&\n !$(targetEl).hasClass(swiper.params.pagination.bulletClass)\n ) {\n if (\n swiper.navigation &&\n ((swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) ||\n (swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl))\n )\n return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n Object.assign(swiper.pagination, {\n render,\n update,\n init,\n destroy,\n });\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\n\nexport default function Scrollbar({ swiper, extendParams, on, emit }) {\n const document = getDocument();\n\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n });\n\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null,\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const { $dragEl, $el } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n divider =\n swiper.size /\n (swiper.virtualSize +\n swiper.params.slidesOffsetBefore -\n (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](\n swiper.params.scrollbar.lockClass,\n );\n }\n }\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientX\n : e.clientX;\n }\n return e.type === 'touchstart' || e.type === 'touchmove'\n ? e.targetTouches[0].clientY\n : e.clientY;\n }\n function setDragPosition(e) {\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const { $el } = scrollbar;\n\n let positionRatio;\n positionRatio =\n (getPointerPosition(e) -\n $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] -\n (dragStartPos !== null ? dragStartPos : dragSize / 2)) /\n (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position =\n swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n isTouched = true;\n dragStartPos =\n e.target === $dragEl[0] || e.target === $dragEl\n ? getPointerPosition(e) -\n e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top']\n : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n\n clearTimeout(dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const { scrollbar, touchEventsTouch, touchEventsDesktop, params, support } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener =\n support.passiveListener && params.passiveListeners\n ? { passive: false, capture: false }\n : false;\n const passiveListener =\n support.passiveListener && params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('off');\n }\n function init() {\n const { scrollbar, $el: $swiperEl } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(\n swiper,\n swiper.originalParams.scrollbar,\n swiper.params.scrollbar,\n { el: 'swiper-scrollbar' },\n );\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n\n let $el = $(params.el);\n if (\n swiper.params.uniqueNavElements &&\n typeof params.el === 'string' &&\n $el.length > 1 &&\n $swiperEl.find(params.el).length === 1\n ) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n function destroy() {\n disableDraggable();\n }\n\n on('init', () => {\n init();\n updateSize();\n setTranslate();\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const { $el } = swiper.scrollbar;\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n Object.assign(swiper.scrollbar, {\n updateSize,\n setTranslate,\n init,\n destroy,\n });\n}\n","import $ from '../../shared/dom.js';\n\nexport default function Parallax({ swiper, extendParams, on }) {\n extendParams({\n parallax: {\n enabled: false,\n },\n });\n\n const setTransform = (el, progress) => {\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n };\n\n const setTranslate = () => {\n const { $el, slides, progress, snapGrid } = swiper;\n $el\n .children(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl)\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((el) => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = (duration = swiper.params.speed) => {\n const { $el } = swiper;\n $el\n .find(\n '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]',\n )\n .each((parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration =\n parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n };\n\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\n\nexport default function Zoom({ swiper, extendParams, on, emit }) {\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n });\n\n swiper.zoom = {\n enabled: false,\n };\n\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n };\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n\n // Events\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n if (\n e.type !== 'touchend' ||\n (e.type === 'touchend' && e.changedTouches.length < 2 && !device.android)\n ) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl\n .transition(swiper.params.speed)\n .transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (\n swiper.isHorizontal() &&\n ((Math.floor(image.minX) === Math.floor(image.startX) &&\n image.touchesCurrent.x < image.touchesStart.x) ||\n (Math.floor(image.maxX) === Math.floor(image.startX) &&\n image.touchesCurrent.x > image.touchesStart.x))\n ) {\n image.isTouched = false;\n return;\n }\n if (\n !swiper.isHorizontal() &&\n ((Math.floor(image.minY) === Math.floor(image.startY) &&\n image.touchesCurrent.y < image.touchesStart.y) ||\n (Math.floor(image.maxY) === Math.floor(image.startY) &&\n image.touchesCurrent.y > image.touchesStart.y))\n ) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x =\n (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y =\n (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0)\n momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0)\n momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl\n .transition(momentumDuration)\n .transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl\n .transition(300)\n .transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl\n .find(`.${params.containerClass}`)\n .eq(0)\n .find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (\n !gesture.$imageEl ||\n gesture.$imageEl.length === 0 ||\n !gesture.$imageWrapEl ||\n gesture.$imageWrapEl.length === 0\n )\n return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n const activeListenerWithCapture = support.passiveListener\n ? { passive: false, capture: true }\n : true;\n return { passiveListener, activeListenerWithCapture };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const { passiveListener } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n\n const { passiveListener, activeListenerWithCapture } = getListeners();\n const slideSelector = getSlideSelector();\n\n // Scale image\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(\n swiper.touchEvents.start,\n slideSelector,\n onGestureStart,\n passiveListener,\n );\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n slideSelector,\n onGestureChange,\n activeListenerWithCapture,\n );\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(\n swiper.touchEvents.cancel,\n slideSelector,\n onGestureEnd,\n passiveListener,\n );\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(\n swiper.touchEvents.move,\n `.${swiper.params.zoom.containerClass}`,\n onTouchMove,\n activeListenerWithCapture,\n );\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (\n !swiper.animating &&\n swiper.params.zoom.enabled &&\n swiper.zoom.enabled &&\n swiper.params.zoom.toggle\n ) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle,\n });\n}\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function Lazy({ swiper, extendParams, on, emit }) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n });\n\n swiper.lazy = {};\n\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(\n `.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`,\n )\n : swiper.slides.eq(index);\n\n const $images = $slideEl.find(\n `.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`,\n );\n if (\n $slideEl.hasClass(params.elementClass) &&\n !$slideEl.hasClass(params.loadedClass) &&\n !$slideEl.hasClass(params.loadingClass)\n ) {\n $images.push($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (\n typeof swiper === 'undefined' ||\n swiper === null ||\n !swiper ||\n (swiper && !swiper.params) ||\n swiper.destroyed\n )\n return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if ($pictureEl.length) {\n $pictureEl.children('source').each((sourceEl) => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(\n `[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`,\n );\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(\n `.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`,\n );\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const { $wrapperEl, params: swiperParams, slides, activeIndex } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if (\n $wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n .length\n ) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement\n ? $(swiper.params.lazy.scrollingElement)\n : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const { rtlTranslate: rtl } = swiper;\n\n let inView = false;\n\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 &&\n point[0] <= scrollElementWidth &&\n point[1] >= 0 &&\n point[1] <= scrollElementHeight\n ) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n\n const passiveListener =\n swiper.touchEvents.start === 'touchstart' &&\n swiper.support.passiveListener &&\n swiper.params.passiveListeners\n ? { passive: true, capture: false }\n : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (\n swiper.params.freeMode &&\n swiper.params.freeMode.enabled &&\n !swiper.params.freeMode.sticky\n ) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (\n swiper.params.lazy.loadOnTransitionStart ||\n (!swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded)\n ) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const { lazy, cssMode, watchSlidesProgress, touchReleaseOnEdges, resistanceRatio } =\n swiper.params;\n if (\n lazy.enabled &&\n (cssMode || (watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0)))\n ) {\n load();\n }\n });\n\n Object.assign(swiper.lazy, {\n load,\n loadInSlide,\n });\n}\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Controller({ swiper, extendParams, on }) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n });\n\n swiper.controller = {\n control: undefined,\n };\n\n function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = (maxIndex + minIndex) >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n })();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (\n ((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1]) + this.y[i1]\n );\n };\n return this;\n }\n // xxx: for now i will just save one spline function to to\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier =\n (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition,\n });\n}\n","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\n\nexport default function A11y({ swiper, extendParams, on }) {\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n },\n });\n\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n function addElId($el, id) {\n $el.attr('id', id);\n }\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (\n swiper.pagination &&\n $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))\n ) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return (\n swiper.pagination &&\n swiper.params.pagination.clickable &&\n swiper.pagination.bullets &&\n swiper.pagination.bullets.length\n );\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (hasPagination()) {\n swiper.pagination.bullets.each((bulletEl) => {\n const $bulletEl = $(bulletEl);\n makeElFocusable($bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel(\n $bulletEl,\n params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1),\n );\n }\n });\n }\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n function init() {\n const params = swiper.params.a11y;\n\n swiper.$el.append(liveRegion);\n\n // Container\n const $containerEl = swiper.$el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n }\n\n // Wrapper\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live);\n\n // Slide\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n addElRole($(swiper.slides), params.slideRole);\n\n const slidesLength = swiper.params.loop\n ? swiper.slides.filter((el) => !el.classList.contains(swiper.params.slideDuplicateClass))\n .length\n : swiper.slides.length;\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop\n ? parseInt($slideEl.attr('data-swiper-slide-index'), 10)\n : index;\n const ariaLabelMessage = params.slideLabelMessage\n .replace(/\\{\\{index\\}\\}/, slideIndex + 1)\n .replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n });\n\n // Navigation\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n }\n\n // Pagination\n if (hasPagination()) {\n swiper.pagination.$el.on(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n }\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n }\n\n // Pagination\n if (hasPagination()) {\n swiper.pagination.$el.off(\n 'keydown',\n classesToSelector(swiper.params.pagination.bulletClass),\n onEnterOrSpaceKey,\n );\n }\n }\n\n on('beforeInit', () => {\n liveRegion = $(\n ``,\n );\n });\n\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n updateNavigation();\n });\n on('toEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('fromEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n","import { getWindow } from 'ssr-window';\n\nexport default function History({ swiper, extendParams, on }) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n },\n });\n\n let initialized = false;\n let paths = {};\n\n const slugify = (text) => {\n return text\n .toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n };\n\n const getPathValues = (urlOverride) => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname\n .slice(1)\n .split('/')\n .filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, swiper.paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\n\nexport default function HashNavigation({ swiper, extendParams, emit, on }) {\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl\n .children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`)\n .index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n if (\n swiper.params.hashNavigation.replaceState &&\n window.history &&\n window.history.replaceState\n ) {\n window.history.replaceState(\n null,\n null,\n `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '',\n );\n emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (\n !swiper.params.hashNavigation.enabled ||\n (swiper.params.history && swiper.params.history.enabled)\n )\n return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n","/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\n\nexport default function Autoplay({ swiper, extendParams, on, emit }) {\n let timeout;\n\n swiper.autoplay = {\n running: false,\n paused: false,\n };\n\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false,\n },\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(\n swiper.slides.length - 1,\n swiper.params.speed,\n true,\n true,\n );\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) run();\n else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n function onVisibilityChange() {\n const document = getDocument();\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n swiper.autoplay.paused = false;\n run();\n }\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (\n swiper.params.cssMode &&\n swiper.autoplay.paused &&\n !swiper.params.autoplay.disableOnInteraction\n ) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop,\n });\n}\n","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\n\nexport default function Thumb({ swiper, extendParams, on }) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs',\n },\n });\n\n let initialized = false;\n let swiperCreated = false;\n\n swiper.thumbs = {\n swiper: null,\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass))\n return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides\n .eq(currentIndex)\n .prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n const nextIndex = swiper.slides\n .eq(currentIndex)\n .nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const { thumbs: thumbsParams } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView =\n thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (\n thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .hasClass(thumbsSwiper.params.slideDuplicateClass)\n ) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`)\n .eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex =\n thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (\n thumbsSwiper.visibleSlidesIndexes &&\n thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0\n ) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (\n newThumbsIndex > currentThumbsIndex &&\n thumbsSwiper.params.slidesPerGroup === 1\n ) {\n // newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (\n thumbsSwiper.params.loop ||\n (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)\n ) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl\n .children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`)\n .addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n }\n\n on('beforeInit', () => {\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n if (!swiper.thumbs.swiper) return;\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n });\n\n Object.assign(swiper.thumbs, {\n init,\n update,\n });\n}\n","import { now } from '../../shared/utils.js';\n\nexport default function freeMode({ swiper, extendParams, emit, once }) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02,\n },\n });\n\n function onTouchMove() {\n const { touchEventsData: data, touches } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now(),\n });\n }\n\n function onTouchEnd({ currentPos }) {\n const { params, $wrapperEl, rtlTranslate: rtl, snapGrid, touchEventsData: data } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (\n Math.abs(snapGrid[nextSlide] - newPosition) <\n Math.abs(snapGrid[nextSlide - 1] - newPosition) ||\n swiper.swipeDirection === 'next'\n ) {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchMove,\n onTouchEnd,\n },\n });\n}\n","export default function Grid({ swiper, extendParams }) {\n extendParams({\n grid: {\n rows: 1,\n fill: 'column',\n },\n });\n\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n\n const initSlides = (slidesLength) => {\n const { slidesPerView } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const { slidesPerGroup, spaceBetween } = swiper.params;\n const { rows, fill } = swiper.params.grid;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup =\n groupIndex === 0\n ? slidesPerGroup\n : Math.min(\n Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows),\n slidesPerGroup,\n );\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n\n newSlideOrderIndex = column + (row * slidesNumberEvenToRows) / rows;\n slide.css({\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || (column === numFullColumns && row === rows - 1)) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.css(\n getDirectionLabel('margin-top'),\n row !== 0 ? spaceBetween && `${spaceBetween}px` : '',\n );\n };\n\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const { spaceBetween, centeredSlides, roundLengths } = swiper.params;\n const { rows } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.$wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`,\n });\n if (centeredSlides) {\n snapGrid.splice(0, snapGrid.length);\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.push(...newSlidesGrid);\n }\n };\n\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize,\n };\n}\n","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\n\nexport default function Manipulation({ swiper }) {\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper),\n });\n}\n","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFade({ swiper, extendParams, on }) {\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\n\nexport default function EffectCube({ swiper, extendParams, on }) {\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n });\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${\n isHorizontal ? slideAngle : 0\n }deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(\n `
`,\n );\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(\n `
`,\n );\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(\n `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${\n -swiperWidth / 2\n }px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`,\n );\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier =\n 1.5 -\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2 +\n Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(\n `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${\n -swiperHeight / 2 / scale2\n }px) rotateX(-90deg)`,\n );\n }\n }\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(\n `translate3d(0px,0,${zFactor}px) rotateX(${\n swiper.isHorizontal() ? 0 : wrapperRotate\n }deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`,\n );\n };\n const setTransition = (duration) => {\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectFlip({ swiper, extendParams, on }) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides, rtlTranslate: rtl } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal()\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\n\nexport default function EffectCoverflow({ swiper, extendParams, on }) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { width: swiperWidth, height: swiperHeight, slides, slidesSizesGrid } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier =\n ((center - slideOffset - slideSize / 2) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = (parseFloat(params.stretch) / 100) * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-left')\n : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal\n ? $slideEl.find('.swiper-slide-shadow-right')\n : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if ($shadowBeforeEl.length)\n $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length)\n $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements\n .transition(duration)\n .find(\n '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left',\n )\n .transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCreative({ swiper, extendParams, on }) {\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1,\n },\n },\n });\n\n const getTranslateValue = (value) => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const { slides, $wrapperEl, slidesSizesGrid } = swiper;\n const params = swiper.params.creativeEffect;\n const { progressMultiplier: multiplier } = params;\n\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(\n Math.max($slideEl[0].progress, -params.limitProgress),\n params.limitProgress,\n );\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(\n Math.max($slideEl[0].originalProgress, -params.limitProgress),\n params.limitProgress,\n );\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1,\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(\n progress * multiplier,\n )}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString =\n originalProgress < 0\n ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})`\n : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString =\n originalProgress < 0\n ? 1 + (1 - data.opacity) * originalProgress * multiplier\n : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if ((custom && data.shadow) || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress\n ? progress * (1 / params.limitProgress)\n : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({ opacity: opacityString });\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl, allSlides: true });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\n\nexport default function EffectCards({ swiper, extendParams, on }) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null,\n },\n });\n\n const setTranslate = () => {\n const { slides, activeIndex } = swiper;\n const params = swiper.params.cardsEffect;\n const { startTranslate, isTouched } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -2 * progress;\n\n let tXAdd = 8 - Math.abs(progress) * 0.75;\n\n const isSwipeToNext =\n (i === activeIndex || i === activeIndex - 1) &&\n progress > 0 &&\n progress < 1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate < startTranslate;\n const isSwipeToPrev =\n (i === activeIndex || i === activeIndex + 1) &&\n progress < 0 &&\n progress > -1 &&\n (isTouched || swiper.params.cssMode) &&\n currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString =\n progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${rotate}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n if ($shadowEl.length)\n $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = (duration) => {\n const { transformEl } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n\n effectVirtualTransitionEnd({ swiper, duration, transformEl });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode,\n }),\n });\n}\n"]} \ No newline at end of file diff --git a/resources/web/include/swiper/swiper-vars.less b/resources/web/include/swiper/swiper-vars.less deleted file mode 100644 index a068f6d42e..0000000000 --- a/resources/web/include/swiper/swiper-vars.less +++ /dev/null @@ -1 +0,0 @@ -@themeColor: #007aff; diff --git a/resources/web/include/swiper/swiper-vars.scss b/resources/web/include/swiper/swiper-vars.scss deleted file mode 100644 index 819dec449a..0000000000 --- a/resources/web/include/swiper/swiper-vars.scss +++ /dev/null @@ -1 +0,0 @@ -$themeColor: #007aff !default; diff --git a/resources/web/include/swiper/swiper.d.ts b/resources/web/include/swiper/swiper.d.ts deleted file mode 100644 index 1dd69a54ad..0000000000 --- a/resources/web/include/swiper/swiper.d.ts +++ /dev/null @@ -1,58 +0,0 @@ -import Swiper from './types/swiper-class'; -import { SwiperOptions } from './types/swiper-options'; -import { SwiperModule } from './types/shared'; - -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 Lazy: 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 default Swiper; -export { - Swiper, - SwiperOptions, - A11y, - Autoplay, - Controller, - EffectCoverflow, - EffectCube, - EffectFade, - EffectFlip, - EffectCreative, - EffectCards, - HashNavigation, - History, - Keyboard, - Lazy, - Mousewheel, - Navigation, - Pagination, - Parallax, - Scrollbar, - Thumbs, - Virtual, - Zoom, - FreeMode, - Grid, - Manipulation, -}; diff --git a/resources/web/include/swiper/swiper.esm.js b/resources/web/include/swiper/swiper.esm.js deleted file mode 100644 index 6386d6658b..0000000000 --- a/resources/web/include/swiper/swiper.esm.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Swiper 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -export { default as Swiper, default } from './core/core.js'; -export { default as Virtual } from './modules/virtual/virtual.js'; -export { default as Keyboard } from './modules/keyboard/keyboard.js'; -export { default as Mousewheel } from './modules/mousewheel/mousewheel.js'; -export { default as Navigation } from './modules/navigation/navigation.js'; -export { default as Pagination } from './modules/pagination/pagination.js'; -export { default as Scrollbar } from './modules/scrollbar/scrollbar.js'; -export { default as Parallax } from './modules/parallax/parallax.js'; -export { default as Zoom } from './modules/zoom/zoom.js'; -export { default as Lazy } from './modules/lazy/lazy.js'; -export { default as Controller } from './modules/controller/controller.js'; -export { default as A11y } from './modules/a11y/a11y.js'; -export { default as History } from './modules/history/history.js'; -export { default as HashNavigation } from './modules/hash-navigation/hash-navigation.js'; -export { default as Autoplay } from './modules/autoplay/autoplay.js'; -export { default as Thumbs } from './modules/thumbs/thumbs.js'; -export { default as FreeMode } from './modules/free-mode/free-mode.js'; -export { default as Grid } from './modules/grid/grid.js'; -export { default as Manipulation } from './modules/manipulation/manipulation.js'; -export { default as EffectFade } from './modules/effect-fade/effect-fade.js'; -export { default as EffectCube } from './modules/effect-cube/effect-cube.js'; -export { default as EffectFlip } from './modules/effect-flip/effect-flip.js'; -export { default as EffectCoverflow } from './modules/effect-coverflow/effect-coverflow.js'; -export { default as EffectCreative } from './modules/effect-creative/effect-creative.js'; -export { default as EffectCards } from './modules/effect-cards/effect-cards.js'; \ No newline at end of file diff --git a/resources/web/include/swiper/swiper.less b/resources/web/include/swiper/swiper.less deleted file mode 100644 index 356f93c5f0..0000000000 --- a/resources/web/include/swiper/swiper.less +++ /dev/null @@ -1,169 +0,0 @@ -@themeColor: #007aff; - -@font-face { - font-family: 'swiper-icons'; - src: url('data:application/font-woff;charset=utf-8;base64, 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'); - font-weight: 400; - font-style: normal; -} - -:root { - --swiper-theme-color: @themeColor; -} -.swiper { - margin-left: auto; - margin-right: auto; - position: relative; - overflow: hidden; - list-style: none; - padding: 0; - /* Fix of Webkit flickering */ - z-index: 1; -} -.swiper-vertical > .swiper-wrapper { - flex-direction: column; -} -.swiper-wrapper { - position: relative; - width: 100%; - height: 100%; - z-index: 1; - display: flex; - transition-property: transform; - box-sizing: content-box; -} -.swiper-android .swiper-slide, -.swiper-wrapper { - transform: translate3d(0px, 0, 0); -} - -.swiper-pointer-events { - touch-action: pan-y; - &.swiper-vertical { - touch-action: pan-x; - } -} -.swiper-slide { - flex-shrink: 0; - width: 100%; - height: 100%; - position: relative; - transition-property: transform; -} -.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; -} - -/* 3D Effects */ -.swiper-3d { - &, - &.swiper-css-mode .swiper-wrapper { - perspective: 1200px; - } - .swiper-wrapper, - .swiper-slide, - .swiper-slide-shadow, - .swiper-slide-shadow-left, - .swiper-slide-shadow-right, - .swiper-slide-shadow-top, - .swiper-slide-shadow-bottom, - .swiper-cube-shadow { - transform-style: preserve-3d; - } - .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)); - } -} - -/* 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-css-mode { - > .swiper-wrapper { - scroll-snap-type: x mandatory; - } -} -.swiper-vertical.swiper-css-mode { - > .swiper-wrapper { - scroll-snap-type: y mandatory; - } -} -.swiper-centered { - > .swiper-wrapper::before { - content: ''; - flex-shrink: 0; - order: 9999; - } - &.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-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); - } - } - - > .swiper-wrapper > .swiper-slide { - scroll-snap-align: center center; - } -} - - - diff --git a/resources/web/include/swiper/swiper.min.css b/resources/web/include/swiper/swiper.min.css deleted file mode 100644 index d9e9e5abc4..0000000000 --- a/resources/web/include/swiper/swiper.min.css +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Swiper 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, 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');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-android .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-pointer-events{touch-action:pan-y}.swiper-pointer-events.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.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-3d,.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide,.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.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>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-horizontal.swiper-css-mode>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-vertical.swiper-css-mode>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-horizontal>.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-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center} \ No newline at end of file diff --git a/resources/web/include/swiper/swiper.scss b/resources/web/include/swiper/swiper.scss deleted file mode 100644 index f3d800a222..0000000000 --- a/resources/web/include/swiper/swiper.scss +++ /dev/null @@ -1,170 +0,0 @@ -@import 'swiper-vars.scss'; - -@font-face { - font-family: 'swiper-icons'; - src: url('data:application/font-woff;charset=utf-8;base64, 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') - format('woff'); - font-weight: 400; - font-style: normal; -} - -:root { - --swiper-theme-color: #{$themeColor}; -} -.swiper { - margin-left: auto; - margin-right: auto; - position: relative; - overflow: hidden; - list-style: none; - padding: 0; - /* Fix of Webkit flickering */ - z-index: 1; -} -.swiper-vertical > .swiper-wrapper { - flex-direction: column; -} -.swiper-wrapper { - position: relative; - width: 100%; - height: 100%; - z-index: 1; - display: flex; - transition-property: transform; - box-sizing: content-box; -} -.swiper-android .swiper-slide, -.swiper-wrapper { - transform: translate3d(0px, 0, 0); -} -.swiper-pointer-events { - touch-action: pan-y; - &.swiper-vertical { - touch-action: pan-x; - } -} -.swiper-slide { - flex-shrink: 0; - width: 100%; - height: 100%; - position: relative; - transition-property: transform; -} -.swiper-slide-invisible-blank { - visibility: hidden; -} -/* Auto Height */ -.swiper-autoheight { - &, - .swiper-slide { - height: auto; - } - - .swiper-wrapper { - align-items: flex-start; - transition-property: transform, height; - } -} - -/* 3D Effects */ -.swiper-3d { - &, - &.swiper-css-mode .swiper-wrapper { - perspective: 1200px; - } - .swiper-wrapper, - .swiper-slide, - .swiper-slide-shadow, - .swiper-slide-shadow-left, - .swiper-slide-shadow-right, - .swiper-slide-shadow-top, - .swiper-slide-shadow-bottom, - .swiper-cube-shadow { - transform-style: preserve-3d; - } - .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)); - } -} - -/* 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-css-mode { - > .swiper-wrapper { - scroll-snap-type: x mandatory; - } -} -.swiper-vertical.swiper-css-mode { - > .swiper-wrapper { - scroll-snap-type: y mandatory; - } -} -.swiper-centered { - > .swiper-wrapper::before { - content: ''; - flex-shrink: 0; - order: 9999; - } - &.swiper-horizontal { - > .swiper-wrapper > .swiper-slide:first-child { - margin-inline-start: var(--swiper-centered-offset-before); - } - > .swiper-wrapper::before { - height: 100%; - width: var(--swiper-centered-offset-after); - } - } - &.swiper-vertical { - > .swiper-wrapper > .swiper-slide:first-child { - margin-block-start: var(--swiper-centered-offset-before); - } - > .swiper-wrapper::before { - width: 100%; - height: var(--swiper-centered-offset-after); - } - } - - > .swiper-wrapper > .swiper-slide { - scroll-snap-align: center center; - } -} - - - diff --git a/resources/web/include/swiper/types/index.d.ts b/resources/web/include/swiper/types/index.d.ts deleted file mode 100644 index ee0ced809b..0000000000 --- a/resources/web/include/swiper/types/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './shared'; -export { default as Swiper } from './swiper-class'; -export * from './swiper-events'; -export * from './swiper-options'; -export * from './modules/public-api'; diff --git a/resources/web/include/swiper/types/modules/a11y.d.ts b/resources/web/include/swiper/types/modules/a11y.d.ts deleted file mode 100644 index ef0cc244c4..0000000000 --- a/resources/web/include/swiper/types/modules/a11y.d.ts +++ /dev/null @@ -1,89 +0,0 @@ -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; - - /** - * 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; -} diff --git a/resources/web/include/swiper/types/modules/autoplay.d.ts b/resources/web/include/swiper/types/modules/autoplay.d.ts deleted file mode 100644 index eba380f1e2..0000000000 --- a/resources/web/include/swiper/types/modules/autoplay.d.ts +++ /dev/null @@ -1,101 +0,0 @@ -import Swiper from '../swiper-class'; - -export interface AutoplayMethods { - /** - * Whether autoplay enabled and running - */ - running: boolean; - - /** - * 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 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 mouse enter over Swiper container. If `disableOnInteraction` is also enabled, it will stop autoplay instead of pause - * - * @default false - */ - pauseOnMouseEnter?: boolean; -} diff --git a/resources/web/include/swiper/types/modules/controller.d.ts b/resources/web/include/swiper/types/modules/controller.d.ts deleted file mode 100644 index 74b99c80b5..0000000000 --- a/resources/web/include/swiper/types/modules/controller.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import Swiper from '../swiper-class'; - -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 - */ - control?: Swiper | Swiper[]; - - /** - * 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/resources/web/include/swiper/types/modules/effect-cards.d.ts b/resources/web/include/swiper/types/modules/effect-cards.d.ts deleted file mode 100644 index 9630ae0169..0000000000 --- a/resources/web/include/swiper/types/modules/effect-cards.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { CSSSelector } from '../shared'; - -export interface CardsEffectMethods {} - -export interface CardsEffectEvents {} - -export interface CardsEffectOptions { - /** - * Enables slides shadows - * - * @default true - */ - slideShadows?: boolean; - /** - * CSS selector of the element inside of the slide to transform instead of the slide itself. Useful to use with cssMode - * - * @default null - */ - transformEl?: CSSSelector; -} diff --git a/resources/web/include/swiper/types/modules/effect-coverflow.d.ts b/resources/web/include/swiper/types/modules/effect-coverflow.d.ts deleted file mode 100644 index e95dde7892..0000000000 --- a/resources/web/include/swiper/types/modules/effect-coverflow.d.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { CSSSelector } from '../shared'; - -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 (in px) - * - * @default 0 - */ - stretch?: 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; - /** - * CSS selector of the element inside of the slide to transform instead of the slide itself. Useful to use with cssMode - * - * @default null - */ - transformEl?: CSSSelector; -} diff --git a/resources/web/include/swiper/types/modules/effect-creative.d.ts b/resources/web/include/swiper/types/modules/effect-creative.d.ts deleted file mode 100644 index ac34c9fed2..0000000000 --- a/resources/web/include/swiper/types/modules/effect-creative.d.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { CSSSelector } from '../shared'; - -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; - /** - * CSS selector of the element inside of the slide to transform instead of the slide itself. Useful to use with cssMode - * - * @default null - */ - transformEl?: CSSSelector; - /** - * 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 - */ - progressMultipler?: number; - /** - * Enable this parameter if your custom transforms require 3D transformations (`translateZ`, `rotateX`, `rotateY` ) - * - * @default true - */ - perspective?: boolean; -} diff --git a/resources/web/include/swiper/types/modules/effect-cube.d.ts b/resources/web/include/swiper/types/modules/effect-cube.d.ts deleted file mode 100644 index c59535c5aa..0000000000 --- a/resources/web/include/swiper/types/modules/effect-cube.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -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/resources/web/include/swiper/types/modules/effect-fade.d.ts b/resources/web/include/swiper/types/modules/effect-fade.d.ts deleted file mode 100644 index 8478d4bea8..0000000000 --- a/resources/web/include/swiper/types/modules/effect-fade.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { CSSSelector } from '../shared'; - -export interface FadeEffectMethods {} - -export interface FadeEffectEvents {} - -export interface FadeEffectOptions { - /** - * Enables slides cross fade - * - * @default false - */ - crossFade?: boolean; - /** - * CSS selector of the element inside of the slide to transform instead of the slide itself. Useful to use with cssMode - * - * @default null - */ - transformEl?: CSSSelector; -} diff --git a/resources/web/include/swiper/types/modules/effect-flip.d.ts b/resources/web/include/swiper/types/modules/effect-flip.d.ts deleted file mode 100644 index f3de1e6b57..0000000000 --- a/resources/web/include/swiper/types/modules/effect-flip.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { CSSSelector } from '../shared'; - -export interface FlipEffectMethods {} - -export interface FlipEffectEvents {} - -export interface FlipEffectOptions { - /** - * Enables slides shadows - * - * @default true - */ - slideShadows?: boolean; - /** - * Limit edge slides rotation - * - * @default true - */ - limitRotation?: boolean; - /** - * CSS selector of the element inside of the slide to transform instead of the slide itself. Useful to use with cssMode - * - * @default null - */ - transformEl?: CSSSelector; -} diff --git a/resources/web/include/swiper/types/modules/free-mode.d.ts b/resources/web/include/swiper/types/modules/free-mode.d.ts deleted file mode 100644 index e82a57c700..0000000000 --- a/resources/web/include/swiper/types/modules/free-mode.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -export interface FreeModeMethods { - onTouchMove(): void; - onTouchEnd(): void; -} - -export interface FreeModeEvents {} - -export interface FreeModeOptions { - 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/resources/web/include/swiper/types/modules/grid.d.ts b/resources/web/include/swiper/types/modules/grid.d.ts deleted file mode 100644 index a7626c8c68..0000000000 --- a/resources/web/include/swiper/types/modules/grid.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -export interface GridMethods {} - -export interface GridEvents {} - -export interface GridOptions { - /** - * Number of slides rows, for multirow layout - * - * @note `rows` > 1 is currently not compatible with loop mode (`loop: true`) - * - * @default 1 - */ - rows?: number; - - /** - * Can be `'column'` or `'row'`. Defines how slides should fill rows, by column or by row - * - * @default 'column' - */ - fill?: 'row' | 'column'; -} diff --git a/resources/web/include/swiper/types/modules/hash-navigation.d.ts b/resources/web/include/swiper/types/modules/hash-navigation.d.ts deleted file mode 100644 index ac490cfbae..0000000000 --- a/resources/web/include/swiper/types/modules/hash-navigation.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -import Swiper from '../swiper-class'; - -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; -} diff --git a/resources/web/include/swiper/types/modules/history.d.ts b/resources/web/include/swiper/types/modules/history.d.ts deleted file mode 100644 index 0003b08d72..0000000000 --- a/resources/web/include/swiper/types/modules/history.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -export interface HistoryMethods {} - -export interface HistoryEvents {} - -export interface HistoryOptions { - /** - * 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; -} diff --git a/resources/web/include/swiper/types/modules/keyboard.d.ts b/resources/web/include/swiper/types/modules/keyboard.d.ts deleted file mode 100644 index 1e9a3127c3..0000000000 --- a/resources/web/include/swiper/types/modules/keyboard.d.ts +++ /dev/null @@ -1,46 +0,0 @@ -import Swiper from '../swiper-class'; - -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; -} diff --git a/resources/web/include/swiper/types/modules/lazy.d.ts b/resources/web/include/swiper/types/modules/lazy.d.ts deleted file mode 100644 index 815c861494..0000000000 --- a/resources/web/include/swiper/types/modules/lazy.d.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { Dom7Array } from 'dom7'; -import { CSSSelector } from '../shared'; -import Swiper from '../swiper-class'; - -export interface LazyMethods { - /** - * Load/update lazy images based on current slider state (position) - */ - load(): void; - - /** - * Force to load lazy images in slide by specified index - * @param number index number of slide to load lazy images in - */ - loadInSlide(index: number): void; -} - -export interface LazyEvents { - /** - * Event will be fired in the beginning of lazy loading of image - */ - lazyImageLoad: (swiper: Swiper, slideEl: HTMLElement, imageEl: HTMLElement) => void; - /** - * Event will be fired when lazy loading image will be loaded - */ - lazyImageReady: (swiper: Swiper, slideEl: HTMLElement, imageEl: HTMLElement) => void; -} - -export interface LazyOptions { - /** - * Enables to check is the Swiper in view before lazy loading images on initial slides - * - * @default false - */ - checkInView?: boolean; - /** - * Element to check scrolling on for `checkInView`. Defaults to `window` - * */ - scrollingElement?: CSSSelector | null | Dom7Array | HTMLElement; - /** - * Set to `true` to enable lazy loading for the closest slides images (for previous and next slide images) - * - * @default false - * */ - loadPrevNext?: boolean; - /** - * Amount of next/prev slides to preload lazy images in. Can't be less than `slidesPerView` - * - * @default 1 - * */ - loadPrevNextAmount?: number; - /** - * By default, Swiper will load lazy images after transition to this slide, so you may enable this parameter if you need it to start loading of new image in the beginning of transition - * - * @default false - * */ - loadOnTransitionStart?: boolean; - /** - * CSS class name of lazy element - * - * @default 'swiper-lazy' - * */ - elementClass?: string; - /** - * CSS class name of lazy loading element - * - * @default 'swiper-lazy-loading' - * */ - loadingClass?: string; - /** - * CSS class name of lazy loaded element - * - * @default 'swiper-lazy-loaded' - * */ - loadedClass?: string; - /** - * CSS class name of lazy preloader - * - * @default 'swiper-lazy-preloader' - * */ - preloaderClass?: string; -} diff --git a/resources/web/include/swiper/types/modules/manipulation.d.ts b/resources/web/include/swiper/types/modules/manipulation.d.ts deleted file mode 100644 index 3366eaf031..0000000000 --- a/resources/web/include/swiper/types/modules/manipulation.d.ts +++ /dev/null @@ -1,70 +0,0 @@ -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/resources/web/include/swiper/types/modules/mousewheel.d.ts b/resources/web/include/swiper/types/modules/mousewheel.d.ts deleted file mode 100644 index 43c980998c..0000000000 --- a/resources/web/include/swiper/types/modules/mousewheel.d.ts +++ /dev/null @@ -1,75 +0,0 @@ -import Swiper from '../swiper-class'; -import { CSSSelector } from '../shared'; - -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 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; -} diff --git a/resources/web/include/swiper/types/modules/navigation.d.ts b/resources/web/include/swiper/types/modules/navigation.d.ts deleted file mode 100644 index 89a5cfb14f..0000000000 --- a/resources/web/include/swiper/types/modules/navigation.d.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { CSSSelector } from '../shared'; -import Swiper from '../swiper-class'; - -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; -} - -export interface NavigationOptions { - /** - * 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; - - /** - * 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; -} diff --git a/resources/web/include/swiper/types/modules/pagination.d.ts b/resources/web/include/swiper/types/modules/pagination.d.ts deleted file mode 100644 index 7e444a0ccf..0000000000 --- a/resources/web/include/swiper/types/modules/pagination.d.ts +++ /dev/null @@ -1,285 +0,0 @@ -import { Dom7Array } from 'dom7'; -import { CSSSelector } from '../shared'; -import Swiper from '../swiper-class'; - -export interface PaginationMethods { - /** - * HTMLElement of pagination container element - */ - el: HTMLElement; - - /** - * Dom7 array-like collection of pagination bullets - * HTML elements. To get specific slide HTMLElement - * use `swiper.pagination.bullets[1]`. - */ - bullets: Dom7Array[]; - - /** - * 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 { - /** - * 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; - - /** - * format fraction pagination total number. Function receives total number, and you - * need to return formatted value - */ - formatFractionTotal?: (number: number) => number; - - /** - * 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', { - * //... - * renderBullet: function (index, className) { - * return '' + (index + 1) + ''; - * } - * }); - * ``` - */ - renderBullet?: (index: number, className: string) => void; - - /** - * This parameter allows to customize "fraction" pagination html. Only for `'fraction'` pagination type - * - * @default null - * - * @example - * ```js - * const swiper = new Swiper('.swiper', { - * //... - * renderFraction: function (currentClass, totalClass) { - * return '' + - * ' of ' + - * ''; - * } - * }); - * ``` - */ - renderFraction?: (currentClass: string, totalClass: string) => void; - - /** - * This parameter allows to customize "progress" pagination. Only for `'progress'` pagination type - * - * @default null - * - * @example - * ```js - * const swiper = new Swiper('.swiper', { - * //... - * renderProgressbar: function (progressbarFillClass) { - * return ''; - * } - * }); - * ``` - */ - renderProgressbar?: (progressbarFillClass: string) => void; - - /** - * 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', { - * //... - * renderCustom: function (swiper, current, total) { - * return current + ' of ' + total; - * } - * }); - * ``` - */ - renderCustom?: (swiper: Swiper, current: number, total: number) => void; - - /** - * 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; -} diff --git a/resources/web/include/swiper/types/modules/parallax.d.ts b/resources/web/include/swiper/types/modules/parallax.d.ts deleted file mode 100644 index 27e8e6fc6b..0000000000 --- a/resources/web/include/swiper/types/modules/parallax.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -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/resources/web/include/swiper/types/modules/public-api.d.ts b/resources/web/include/swiper/types/modules/public-api.d.ts deleted file mode 100644 index 316772c0c8..0000000000 --- a/resources/web/include/swiper/types/modules/public-api.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -export * from './a11y'; -export * from './autoplay'; -export * from './controller'; -export * from './effect-coverflow'; -export * from './effect-cube'; -export * from './effect-fade'; -export * from './effect-flip'; -export * from './effect-creative'; -export * from './effect-cards'; -export * from './hash-navigation'; -export * from './history'; -export * from './keyboard'; -export * from './lazy'; -export * from './mousewheel'; -export * from './navigation'; -export * from './pagination'; -export * from './parallax'; -export * from './scrollbar'; -export * from './thumbs'; -export * from './virtual'; -export * from './zoom'; -export * from './free-mode'; -export * from './grid'; -export * from './manipulation'; diff --git a/resources/web/include/swiper/types/modules/scrollbar.d.ts b/resources/web/include/swiper/types/modules/scrollbar.d.ts deleted file mode 100644 index 9577568cf6..0000000000 --- a/resources/web/include/swiper/types/modules/scrollbar.d.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { CSSSelector } from '../shared'; -import Swiper from '../swiper-class'; - -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 { - /** - * 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; -} diff --git a/resources/web/include/swiper/types/modules/thumbs.d.ts b/resources/web/include/swiper/types/modules/thumbs.d.ts deleted file mode 100644 index 98fa98b324..0000000000 --- a/resources/web/include/swiper/types/modules/thumbs.d.ts +++ /dev/null @@ -1,54 +0,0 @@ -import Swiper from '../swiper-class'; - -export interface ThumbsMethods { - /** - * Swiper instance of thumbs swiper - */ - swiper: Swiper; - - /** - * Update thumbs - */ - update(initial: 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 | 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/resources/web/include/swiper/types/modules/virtual.d.ts b/resources/web/include/swiper/types/modules/virtual.d.ts deleted file mode 100644 index 48b270868c..0000000000 --- a/resources/web/include/swiper/types/modules/virtual.d.ts +++ /dev/null @@ -1,122 +0,0 @@ -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: any[]; - - /* - * Methods - */ - - /** - * Append slide. `slides` can be a single slide item or array with such slides. - */ - appendSlide(slide: HTMLElement | string | HTMLElement[] | string[]): void; - - /** - * Prepend slide. `slides` can be a single slide item or array with such slides. - */ - 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. - */ - removeSlide(slideIndexes: number[]): void; - - /** - * Remove all slides - */ - 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: any[]; -} - -export interface VirtualOptions { - enabled?: boolean; - /** - * Array with slides - * - * @default [] - */ - slides?: any[]; - /** - * 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 outter HTML of the swiper slide. - * - * @default null - */ - renderSlide?: (slide: any, 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/resources/web/include/swiper/types/modules/zoom.d.ts b/resources/web/include/swiper/types/modules/zoom.d.ts deleted file mode 100644 index 40ebfaaf11..0000000000 --- a/resources/web/include/swiper/types/modules/zoom.d.ts +++ /dev/null @@ -1,79 +0,0 @@ -import Swiper from '../swiper-class'; - -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 - */ - in(): void; - - /** - * Zoom out image of the currently active slide - */ - out(): void; - - /** - * Toggle image zoom of the currently active slide - */ - toggle(): void; -} - -export interface ZoomEvents { - /** - * Event will be fired on zoom change - */ - zoomChange: (swiper: Swiper, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; -} - -export interface ZoomOptions { - /** - * Maximum image zoom multiplier - * - * @default 3 - */ - maxRatio?: number; - /** - * Minimal image zoom multiplier - * - * @default 1 - */ - minRatio?: number; - /** - * 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/resources/web/include/swiper/types/shared.d.ts b/resources/web/include/swiper/types/shared.d.ts deleted file mode 100644 index 1e174ff75c..0000000000 --- a/resources/web/include/swiper/types/shared.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface CSSSelector extends String {} - -export interface SwiperModule {} diff --git a/resources/web/include/swiper/types/swiper-class.d.ts b/resources/web/include/swiper/types/swiper-class.d.ts deleted file mode 100644 index 387990a76c..0000000000 --- a/resources/web/include/swiper/types/swiper-class.d.ts +++ /dev/null @@ -1,472 +0,0 @@ -import { Dom7Array } from 'dom7'; -import { SwiperOptions } from './swiper-options'; -import { CSSSelector, SwiperModule } from './shared'; -import { SwiperEvents } from './swiper-events'; - -import { A11yMethods } from './modules/a11y'; -import { AutoplayMethods } from './modules/autoplay'; -import { ControllerMethods } from './modules/controller'; -import { CoverflowEffectMethods } from './modules/effect-coverflow'; -import { CubeEffectMethods } from './modules/effect-cube'; -import { FadeEffectMethods } from './modules/effect-fade'; -import { FlipEffectMethods } from './modules/effect-flip'; -import { CreativeEffectMethods } from './modules/effect-creative'; -import { CardsEffectMethods } from './modules/effect-cards'; -import { HashNavigationMethods } from './modules/hash-navigation'; -import { HistoryMethods } from './modules/history'; -import { KeyboardMethods } from './modules/keyboard'; -import { LazyMethods } from './modules/lazy'; -import { MousewheelMethods } from './modules/mousewheel'; -import { NavigationMethods } from './modules/navigation'; -import { PaginationMethods } from './modules/pagination'; -import { ParallaxMethods } from './modules/parallax'; -import { ScrollbarMethods } from './modules/scrollbar'; -import { ThumbsMethods } from './modules/thumbs'; -import { VirtualMethods } from './modules/virtual'; -import { ZoomMethods } from './modules/zoom'; -import { FreeModeMethods } from './modules/free-mode'; -import { ManipulationMethods } from './modules/manipulation'; - -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; - - /** - * Dom7 element with slider container HTML element. To get vanilla HTMLElement use `swiper.el` - */ - $el: Dom7Array; - - /** - * Slider container HTML element - */ - el: HTMLElement; - - /** - * Dom7 element with slider wrapper HTML element. To get vanilla HTMLElement use `swiper.wrapperEl` - */ - $wrapperEl: Dom7Array; - - /** - * Wrapper HTML element - */ - wrapperEl: HTMLElement; - - /** - * Dom7 array-like collection of slides HTML elements. To get specific slide HTMLElement use `swiper.slides[1]` - */ - slides: Dom7Array; - - /** - * !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/duplicated slides - */ - activeIndex: number; - - /** - * Index number of currently active slide considering duplicated slides in loop mode - */ - realIndex: number; - - /** - * Index number of previously active slide - */ - previousIndex: number; - - /** - * `true` if slider on most "left"/"top" position - */ - isBeginning: boolean; - - /** - * `true` if slider on most "right"/"bottom" position - */ - isEnd: 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; - - /** - * !INTERNAL - */ - rtlTranslate: 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): void; - - /** - * 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): void; - - /** - * 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): void; - - /** - * 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): void; - - /** - * 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): void; - - /** - * 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): void; - - /** - * 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; - - /** - * 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; - - /** - * 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; - lazy: LazyMethods; - 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/resources/web/include/swiper/types/swiper-events.d.ts b/resources/web/include/swiper/types/swiper-events.d.ts deleted file mode 100644 index 54bba290d3..0000000000 --- a/resources/web/include/swiper/types/swiper-events.d.ts +++ /dev/null @@ -1,362 +0,0 @@ -import { SwiperOptions } from './swiper-options'; -import Swiper from './swiper-class'; - -import { A11yEvents } from './modules/a11y'; -import { AutoplayEvents } from './modules/autoplay'; -import { ControllerEvents } from './modules/controller'; -import { CoverflowEffectEvents } from './modules/effect-coverflow'; -import { CubeEffectEvents } from './modules/effect-cube'; -import { FadeEffectEvents } from './modules/effect-fade'; -import { FlipEffectEvents } from './modules/effect-flip'; -import { CreativeEffectEvents } from './modules/effect-creative'; -import { CardsEffectEvents } from './modules/effect-cards'; -import { HashNavigationEvents } from './modules/hash-navigation'; -import { HistoryEvents } from './modules/history'; -import { KeyboardEvents } from './modules/keyboard'; -import { LazyEvents } from './modules/lazy'; -import { MousewheelEvents } from './modules/mousewheel'; -import { NavigationEvents } from './modules/navigation'; -import { PaginationEvents } from './modules/pagination'; -import { ParallaxEvents } from './modules/parallax'; -import { ScrollbarEvents } from './modules/scrollbar'; -import { ThumbsEvents } from './modules/thumbs'; -import { VirtualEvents } from './modules/virtual'; -import { ZoomEvents } from './modules/zoom'; -import { FreeModeEvents } from './modules/free-mode'; - -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 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 `touchstart` 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 `touchmove` 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 `touchmove` 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 `touchmove` event as an arguments. - */ - sliderMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired when user release Swiper. Receives `touchend` event as an arguments. - */ - touchEnd: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired when user click/tap on Swiper. Receives `touchend` event as an arguments. - */ - click: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired when user click/tap on Swiper. Receives `touchend` 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 `touchend` event as an arguments - */ - doubleTap: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired right after all inner images are loaded. updateOnImagesReady should be also enabled - */ - imagesReady: (swiper: Swiper) => 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 LazyEvents {} -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/resources/web/include/swiper/types/swiper-options.d.ts b/resources/web/include/swiper/types/swiper-options.d.ts deleted file mode 100644 index b8b49027d5..0000000000 --- a/resources/web/include/swiper/types/swiper-options.d.ts +++ /dev/null @@ -1,1205 +0,0 @@ -import { A11yOptions } from './modules/a11y'; -import { AutoplayOptions } from './modules/autoplay'; -import { ControllerOptions } from './modules/controller'; -import { CoverflowEffectOptions } from './modules/effect-coverflow'; -import { CubeEffectOptions } from './modules/effect-cube'; -import { FadeEffectOptions } from './modules/effect-fade'; -import { FlipEffectOptions } from './modules/effect-flip'; -import { CreativeEffectOptions } from './modules/effect-creative'; -import { CardsEffectOptions } from './modules/effect-cards'; -import { HashNavigationOptions } from './modules/hash-navigation'; -import { HistoryOptions } from './modules/history'; -import { KeyboardOptions } from './modules/keyboard'; -import { LazyOptions } from './modules/lazy'; -import { MousewheelOptions } from './modules/mousewheel'; -import { NavigationOptions } from './modules/navigation'; -import { PaginationOptions } from './modules/pagination'; -import { ParallaxOptions } from './modules/parallax'; -import { ScrollbarOptions } from './modules/scrollbar'; -import { ThumbsOptions } from './modules/thumbs'; -import { VirtualOptions } from './modules/virtual'; -import { ZoomOptions } from './modules/zoom'; -import { FreeModeOptions } from './modules/free-mode'; -import { GridOptions } from './modules/grid'; - -import { CSSSelector, SwiperModule } from './shared'; -import { SwiperEvents } from './swiper-events'; - -export interface SwiperOptions { - /** - * Array with Swiper modules - * - * @example - * ```js - * import Swiper, { Navigation, Pagination } from 'swiper'; - * - * const swiper = new Swiper('.swiper', { - * modules: [ Navigation, Pagination ], - * }); - * ``` - */ - modules?: SwiperModule[]; - /** - * 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'; - - /** - * 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; - - /** - * 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'` or `'creative'` - * - * @default 'slide' - */ - effect?: 'slide' | 'fade' | 'cube' | 'coverflow' | 'flip' | 'creative' | 'cards'; - - /** - * 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 and Cards effects - * - `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` - * - `freeMode` and all relevant features - * - * @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 property. - */ - spaceBetween?: number; - - /** - * Number of slides per view (slides visible at the same time on slider's container). - * @note If you use it with "auto" value and along with `loop: true` then you need to specify `loopedSlides` parameter with amount of slides to loop (duplicate) - * @note `slidesPerView: 'auto'` is currently not compatible with multirow mode, when `grid.rows` > 1 - * - * @default 1 - */ - slidesPerView?: number | 'auto'; - - /** - * 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; - - /** - * 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 0 - */ - threshold?: number; - - /** - * If disabled, `touchstart` (`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 - * - * @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 - * - * @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; - - // Images - /** - * When enabled Swiper will force to load all images - * - * @default true - */ - preloadImages?: boolean; - - /** - * When enabled Swiper will be reinitialized after all inner images ( tags) are loaded. Required `preloadImages: true` - * - * @default true - */ - updateOnImagesReady?: boolean; - - /** - * Set to `true` to enable continuous loop mode - * - * Because of nature of how the loop mode works, it will add duplicated slides. Such duplicated slides will have additional classes: - * - `swiper-slide-duplicate` - represents duplicated slide - * - `swiper-slide-duplicate-active` - represents slide duplicated to the currently active slide - * - `swiper-slide-duplicate-next` - represents slide duplicated to the slide next to active - * - `swiper-slide-duplicate-prev` - represents slide duplicated to the slide previous to active - * - * @default false - * - * @note If you use it along with `slidesPerView: 'auto'` then you need to specify `loopedSlides` parameter with amount of slides to loop (duplicate) - */ - loop?: boolean; - - /** - * Addition number of slides that will be cloned after creating of loop - * - * @default 0 - */ - loopAdditionalSlides?: number; - - /** - * If you use `slidesPerView:'auto'` with loop mode you should tell to Swiper how many slides it should loop (duplicate) using this parameter - * - * @default null - */ - loopedSlides?: number | null; - - /** - * Enable and loop mode will fill groups with insufficient number of slides with blank slides. Good to be used with `slidesPerGroup` parameter - * - * @default false - */ - loopFillGroupWithBlank?: boolean; - /** - * When enabled it prevents Swiper slide prev/next transitions when transitions is already in progress (has effect when `loop` enabled) - * - * @default true - */ - loopPreventsSlide?: boolean; - - /** - * Allows to set different parameter for different responsive breakpoints (screen sizes). Not all parameters can be changed in breakpoints, only those which are not required 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' - * - * @note Currently in beta and not supported by Swiper Angular, React, Svelte and Vue components - */ - breakpointsBase?: string; - - // 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 Angular/React/Svelte/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 Angular/React/Svelte/Vue components - */ - slideActiveClass?: string; - - /** - * CSS class name of duplicated slide which represents the currently active slide - * - * @default 'swiper-slide-duplicate-active' - * - * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes - * - * @note Not supported in Swiper Angular/React/Svelte/Vue components - */ - slideDuplicateActiveClass?: string; - - /** - * CSS class name of currently 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 Angular/React/Svelte/Vue - */ - slideVisibleClass?: string; - - /** - * CSS class name of slide duplicated by loop mode - * - * @default 'swiper-slide-duplicate' - * - * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes - * - * @note Not supported in Swiper Angular/React/Svelte/Vue - */ - slideDuplicateClass?: 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 Angular/React/Svelte/Vue - */ - slideNextClass?: string; - - /** - * CSS class name of duplicated slide which represents the slide next to active slide - * - * @default 'swiper-slide-duplicate-next' - * - * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes - * - * @note Not supported in Swiper Angular/React/Svelte/Vue - */ - slideDuplicateNextClass?: 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 Angular/React/Svelte/Vue - */ - slidePrevClass?: string; - - /** - * CSS class name of duplicated slide which represents the slide previous to active slide - * - * @default 'swiper-slide-duplicate-prev' - * - * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes - * - * @note Not supported in Swiper Angular/React/Svelte/Vue - */ - slideDuplicatePrevClass?: string; - - /** - * CSS class name of blank slide append to fill groups in loop mode when `loopFillGroupWithBlank` is also enabled - * - * @default 'swiper-slide-invisible-blank' - * - * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes - * - * @note Not supported in Swiper Angular/React/Svelte/Vue - */ - slideBlankClass?: 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 Angular/React/Svelte/Vue - * - */ - wrapperClass?: string; - - /** - * 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; - - /** - * 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 images lazy loading. Object with lazy loading parameters or boolean `true` to enable with default settings - * - * @example - * ```js - * const swiper = new Swiper('.swiper', { - * lazy: { - * loadPrevNext: true, - * }, - * }); - * ``` - */ - lazy?: LazyOptions | 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/resources/web/include/swiper/vue/get-changed-params.js b/resources/web/include/swiper/vue/get-changed-params.js deleted file mode 100644 index 22dacd31ef..0000000000 --- a/resources/web/include/swiper/vue/get-changed-params.js +++ /dev/null @@ -1,43 +0,0 @@ -import { paramsList } from './params-list.js'; -import { isObject } from './utils.js'; - -function getChangedParams(swiperParams, oldParams, children, oldChildren) { - const keys = []; - if (!oldParams) return keys; - - const addKey = key => { - if (keys.indexOf(key) < 0) keys.push(key); - }; - - const oldChildrenKeys = oldChildren.map(child => child.props && child.props.key); - const childrenKeys = children.map(child => child.props && child.props.key); - if (oldChildrenKeys.join('') !== childrenKeys.join('')) keys.push('children'); - if (oldChildren.length !== children.length) keys.push('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; -} - -export { getChangedParams }; \ No newline at end of file diff --git a/resources/web/include/swiper/vue/get-children.js b/resources/web/include/swiper/vue/get-children.js deleted file mode 100644 index f09d3874ef..0000000000 --- a/resources/web/include/swiper/vue/get-children.js +++ /dev/null @@ -1,41 +0,0 @@ -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, 'default'); - } else if (vnode.type && (vnode.type.name === 'SwiperSlide' || vnode.type.name === 'AsyncComponentWrapper')) { - slides.push(vnode); - } else if (slots[slotName]) { - slots[slotName].push(vnode); - } - }); - }; - - Object.keys(originalSlots).forEach(slotName => { - const els = originalSlots[slotName](); - getSlidesFromElements(els, slotName); - }); - oldSlidesRef.value = slidesRef.value; - slidesRef.value = slides; - return { - slides, - slots - }; -} - -export { getChildren }; \ No newline at end of file diff --git a/resources/web/include/swiper/vue/get-params.js b/resources/web/include/swiper/vue/get-params.js deleted file mode 100644 index 118f72fda9..0000000000 --- a/resources/web/include/swiper/vue/get-params.js +++ /dev/null @@ -1,48 +0,0 @@ -import Swiper from 'swiper'; -import { isObject, extend } from './utils.js'; -import { paramsList } from './params-list.js'; - -function getParams(obj = {}) { - const params = { - on: {} - }; - const passedParams = {}; - extend(params, Swiper.defaults); - extend(params, Swiper.extendedDefaults); - params._emitClasses = true; - params.init = false; - const rest = {}; - const allowedParams = paramsList.map(key => key.replace(/_/, '')); // Prevent empty Object.keys(obj) array on ios. - - 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') { - 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 - }; -} - -export { getParams }; \ No newline at end of file diff --git a/resources/web/include/swiper/vue/init-swiper.js b/resources/web/include/swiper/vue/init-swiper.js deleted file mode 100644 index aaf5568971..0000000000 --- a/resources/web/include/swiper/vue/init-swiper.js +++ /dev/null @@ -1,36 +0,0 @@ -import Swiper from 'swiper'; -import { needsNavigation, needsPagination, needsScrollbar } from './utils.js'; - -function initSwiper(swiperParams) { - return new Swiper(swiperParams); -} - -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); -} - -export { initSwiper, mountSwiper }; \ No newline at end of file diff --git a/resources/web/include/swiper/vue/loop.js b/resources/web/include/swiper/vue/loop.js deleted file mode 100644 index 591a07a199..0000000000 --- a/resources/web/include/swiper/vue/loop.js +++ /dev/null @@ -1,79 +0,0 @@ -import { h } from 'vue'; -import Swiper from 'swiper'; - -function calcLoopedSlides(slides, swiperParams) { - let slidesPerViewParams = swiperParams.slidesPerView; - - if (swiperParams.breakpoints) { - const breakpoint = Swiper.prototype.getBreakpoint(swiperParams.breakpoints); - const breakpointOnlyParams = breakpoint in swiperParams.breakpoints ? swiperParams.breakpoints[breakpoint] : undefined; - - if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) { - slidesPerViewParams = breakpointOnlyParams.slidesPerView; - } - } - - let loopedSlides = Math.ceil(parseFloat(swiperParams.loopedSlides || slidesPerViewParams, 10)); - loopedSlides += swiperParams.loopAdditionalSlides; - - if (loopedSlides > slides.length) { - loopedSlides = slides.length; - } - - return loopedSlides; -} - -function renderLoop(swiperRef, slides, swiperParams) { - const modifiedSlides = slides.map((child, index) => { - if (!child.props) child.props = {}; - child.props.swiperRef = swiperRef; - child.props['data-swiper-slide-index'] = index; - return child; - }); - - function duplicateSlide(child, index, position) { - if (!child.props) child.props = {}; - return h(child.type, { ...child.props, - key: `${child.key}-duplicate-${index}-${position}`, - class: `${child.props.className || ''} ${swiperParams.slideDuplicateClass} ${child.props.class || ''}` - }, child.children); - } - - if (swiperParams.loopFillGroupWithBlank) { - const blankSlidesNum = swiperParams.slidesPerGroup - modifiedSlides.length % swiperParams.slidesPerGroup; - - if (blankSlidesNum !== swiperParams.slidesPerGroup) { - for (let i = 0; i < blankSlidesNum; i += 1) { - const blankSlide = h('div', { - class: `${swiperParams.slideClass} ${swiperParams.slideBlankClass}` - }); - modifiedSlides.push(blankSlide); - } - } - } - - if (swiperParams.slidesPerView === 'auto' && !swiperParams.loopedSlides) { - swiperParams.loopedSlides = modifiedSlides.length; - } - - const loopedSlides = calcLoopedSlides(modifiedSlides, swiperParams); - const prependSlides = []; - const appendSlides = []; - modifiedSlides.forEach((child, index) => { - if (index < loopedSlides) { - appendSlides.push(duplicateSlide(child, index, 'prepend')); - } - - if (index < modifiedSlides.length && index >= modifiedSlides.length - loopedSlides) { - prependSlides.push(duplicateSlide(child, index, 'append')); - } - }); - - if (swiperRef.value) { - swiperRef.value.loopedSlides = loopedSlides; - } - - return [...prependSlides, ...modifiedSlides, ...appendSlides]; -} - -export { calcLoopedSlides, renderLoop }; \ No newline at end of file diff --git a/resources/web/include/swiper/vue/params-list.js b/resources/web/include/swiper/vue/params-list.js deleted file mode 100644 index 2d25f8f2d2..0000000000 --- a/resources/web/include/swiper/vue/params-list.js +++ /dev/null @@ -1,4 +0,0 @@ -/* underscore in name -> watch for changes */ -const paramsList = ['modules', 'init', '_direction', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_preloadImages', 'updateOnImagesReady', '_loop', '_loopAdditionalSlides', '_loopedSlides', '_loopFillGroupWithBlank', 'loopPreventsSlide', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideBlankClass', 'slideActiveClass', 'slideDuplicateActiveClass', 'slideVisibleClass', 'slideDuplicateClass', 'slideNextClass', 'slideDuplicateNextClass', 'slidePrevClass', 'slideDuplicatePrevClass', 'wrapperClass', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', // modules -'a11y', 'autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'lazy', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom']; -export { paramsList }; \ No newline at end of file diff --git a/resources/web/include/swiper/vue/swiper-slide.js b/resources/web/include/swiper/vue/swiper-slide.js deleted file mode 100644 index a9e9e95f3d..0000000000 --- a/resources/web/include/swiper/vue/swiper-slide.js +++ /dev/null @@ -1,83 +0,0 @@ -import { h, ref, onMounted, onUpdated, onBeforeUpdate, computed, onBeforeUnmount } from 'vue'; -import { uniqueClasses } from './utils.js'; -const SwiperSlide = { - name: 'SwiperSlide', - props: { - tag: { - type: String, - default: 'div' - }, - swiperRef: { - type: Object, - required: false - }, - zoom: { - type: Boolean, - default: undefined - }, - virtualIndex: { - type: [String, Number], - default: undefined - } - }, - - setup(props, { - slots - }) { - let eventAttached = false; - const { - swiperRef - } = props; - const slideElRef = ref(null); - const slideClasses = ref('swiper-slide'); - - function updateClasses(swiper, el, classNames) { - if (el === slideElRef.value) { - slideClasses.value = classNames; - } - } - - onMounted(() => { - if (!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 (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 || slideClasses.value.indexOf('swiper-slide-duplicate-active') >= 0, - isVisible: slideClasses.value.indexOf('swiper-slide-visible') >= 0, - isDuplicate: slideClasses.value.indexOf('swiper-slide-duplicate') >= 0, - isPrev: slideClasses.value.indexOf('swiper-slide-prev') >= 0 || slideClasses.value.indexOf('swiper-slide-duplicate-prev') >= 0, - isNext: slideClasses.value.indexOf('swiper-slide-next') >= 0 || slideClasses.value.indexOf('swiper-slide-duplicate-next') >= 0 - })); - return () => { - return h(props.tag, { - class: uniqueClasses(`${slideClasses.value}`), - ref: slideElRef, - 'data-swiper-slide-index': props.virtualIndex - }, props.zoom ? h('div', { - class: 'swiper-zoom-container', - 'data-swiper-zoom': typeof props.zoom === 'number' ? props.zoom : undefined - }, slots.default && slots.default(slideData.value)) : slots.default && slots.default(slideData.value)); - }; - } - -}; -export { SwiperSlide }; \ No newline at end of file diff --git a/resources/web/include/swiper/vue/swiper-vue.d.ts b/resources/web/include/swiper/vue/swiper-vue.d.ts deleted file mode 100644 index 9cb48917af..0000000000 --- a/resources/web/include/swiper/vue/swiper-vue.d.ts +++ /dev/null @@ -1,859 +0,0 @@ -import { - A11yOptions, - AutoplayOptions, - ControllerOptions, - CoverflowEffectOptions, - CubeEffectOptions, - FadeEffectOptions, - FlipEffectOptions, - CreativeEffectOptions, - CardsEffectOptions, - HashNavigationOptions, - HistoryOptions, - KeyboardOptions, - LazyOptions, - MousewheelOptions, - NavigationOptions, - PaginationOptions, - ParallaxOptions, - ScrollbarOptions, - ThumbsOptions, - VirtualOptions, - ZoomOptions, - FreeModeOptions, - GridOptions, -} from '../types'; -import { ComponentOptionsMixin, DefineComponent, PropType } from 'vue'; -import { SwiperOptions, Swiper as SwiperClass } from '../types'; - -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']; - }; - 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: NumberConstructor; - default: undefined; - }; - slidesPerView: { - type: PropType; - 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; - }; - 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; - }; - preloadImages: { - type: BooleanConstructor; - default: undefined; - }; - updateOnImagesReady: { - type: BooleanConstructor; - default: undefined; - }; - loop: { type: BooleanConstructor; default: undefined }; - loopAdditionalSlides: { - type: NumberConstructor; - default: undefined; - }; - loopedSlides: { - type: NumberConstructor; - default: undefined; - }; - loopFillGroupWithBlank: { - type: BooleanConstructor; - default: undefined; - }; - loopPreventsSlide: { - 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; - }; - slideBlankClass: { - type: StringConstructor; - default: undefined; - }; - slideActiveClass: { - type: StringConstructor; - default: undefined; - }; - slideDuplicateActiveClass: { - type: StringConstructor; - default: undefined; - }; - slideVisibleClass: { - type: StringConstructor; - default: undefined; - }; - slideDuplicateClass: { - type: StringConstructor; - default: undefined; - }; - slideNextClass: { - type: StringConstructor; - default: undefined; - }; - slideDuplicateNextClass: { - type: StringConstructor; - default: undefined; - }; - slidePrevClass: { - type: StringConstructor; - default: undefined; - }; - slideDuplicatePrevClass: { - type: StringConstructor; - default: undefined; - }; - wrapperClass: { - type: StringConstructor; - 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; - }; - lazy: { - 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 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 mousewheel scroll - */ - scroll: (swiper: SwiperClass, event: WheelEvent) => void;/** - * Event will be fired in the beginning of lazy loading of image - */ - lazyImageLoad: (swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement) => void; - /** - * Event will be fired when lazy loading image will be loaded - */ - lazyImageReady: (swiper: SwiperClass, slideEl: HTMLElement, imageEl: HTMLElement) => void;/** - * Event will be fired on key press - */ - keyPress: (swiper: SwiperClass, keyCode: string) => 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 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 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;/** - * Event will be fired on zoom change - */ - zoomChange: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => 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 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 `touchstart` 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 `touchmove` 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 `touchmove` 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 `touchmove` event as an arguments. - */ - sliderMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired when user release Swiper. Receives `touchend` event as an arguments. - */ - touchEnd: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired when user click/tap on Swiper. Receives `touchend` event as an arguments. - */ - click: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired when user click/tap on Swiper. Receives `touchend` 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 `touchend` event as an arguments - */ - doubleTap: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; - - /** - * Event will be fired right after all inner images are loaded. updateOnImagesReady should be also enabled - */ - imagesReady: (swiper: SwiperClass) => 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 }; - zoom: { type: BooleanConstructor; default: undefined }; - virtualIndex: { - type: StringConstructor | NumberConstructor; - default: undefined; - }; -}>; - -export { Swiper, SwiperSlide }; diff --git a/resources/web/include/swiper/vue/swiper-vue.js b/resources/web/include/swiper/vue/swiper-vue.js deleted file mode 100644 index 621d2460dd..0000000000 --- a/resources/web/include/swiper/vue/swiper-vue.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Swiper Vue 7.2.0 - * Most modern mobile touch slider and framework with hardware accelerated transitions - * https://swiperjs.com - * - * Copyright 2014-2021 Vladimir Kharlampidi - * - * Released under the MIT License - * - * Released on: October 27, 2021 - */ - -import { Swiper } from './swiper.js'; -import { SwiperSlide } from './swiper-slide.js'; -export { Swiper, SwiperSlide }; \ No newline at end of file diff --git a/resources/web/include/swiper/vue/swiper.js b/resources/web/include/swiper/vue/swiper.js deleted file mode 100644 index 575325087e..0000000000 --- a/resources/web/include/swiper/vue/swiper.js +++ /dev/null @@ -1,640 +0,0 @@ -import { h, ref, onMounted, onUpdated, onBeforeUnmount, watch, nextTick } from 'vue'; -import { getParams } from './get-params.js'; -import { initSwiper, mountSwiper } from './init-swiper.js'; -import { needsScrollbar, needsNavigation, needsPagination, uniqueClasses, extend } from './utils.js'; -import { renderLoop, calcLoopedSlides } from './loop.js'; -import { getChangedParams } from './get-changed-params.js'; -import { getChildren } from './get-children.js'; -import { updateSwiper } from './update-swiper.js'; -import { renderVirtual, updateOnVirtualData } from './virtual.js'; -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 - }, - 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 - }, - spaceBetween: { - type: Number, - default: undefined - }, - slidesPerView: { - type: [Number, String], - 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 - }, - preloadImages: { - type: Boolean, - default: undefined - }, - updateOnImagesReady: { - type: Boolean, - default: undefined - }, - loop: { - type: Boolean, - default: undefined - }, - loopAdditionalSlides: { - type: Number, - default: undefined - }, - loopedSlides: { - type: Number, - default: undefined - }, - loopFillGroupWithBlank: { - type: Boolean, - default: undefined - }, - loopPreventsSlide: { - 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 - }, - slideBlankClass: { - type: String, - default: undefined - }, - slideActiveClass: { - type: String, - default: undefined - }, - slideDuplicateActiveClass: { - type: String, - default: undefined - }, - slideVisibleClass: { - type: String, - default: undefined - }, - slideDuplicateClass: { - type: String, - default: undefined - }, - slideNextClass: { - type: String, - default: undefined - }, - slideDuplicateNextClass: { - type: String, - default: undefined - }, - slidePrevClass: { - type: String, - default: undefined - }, - slideDuplicatePrevClass: { - type: String, - default: undefined - }, - wrapperClass: { - type: String, - 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 - }, - lazy: { - 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 - } - }, - emits: ['_beforeBreakpoint', '_containerClasses', '_slideClass', '_slideClasses', '_swiper', 'activeIndexChange', 'afterInit', 'autoplay', 'autoplayStart', 'autoplayStop', 'beforeDestroy', 'beforeInit', 'beforeLoopFix', 'beforeResize', 'beforeSlideChangeStart', 'beforeTransitionStart', 'breakpoint', 'changeDirection', 'click', 'disable', 'doubleTap', 'doubleClick', 'destroy', 'enable', 'fromEdge', 'hashChange', 'hashSet', 'imagesReady', 'init', 'keyPress', 'lazyImageLoad', 'lazyImageReady', 'lock', 'loopFix', 'momentumBounce', 'navigationHide', 'navigationShow', 'observerUpdate', 'orientationchange', 'paginationHide', 'paginationRender', 'paginationShow', 'paginationUpdate', 'progress', 'reachBeginning', 'reachEnd', 'realIndexChange', 'resize', 'scroll', 'scrollbarDragEnd', 'scrollbarDragMove', 'scrollbarDragStart', 'setTransition', 'setTranslate', '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', '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); - 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 - - swiperRef.value = initSwiper(swiperParams); - - swiperRef.value.loopCreate = () => {}; - - swiperRef.value.loopDestroy = () => {}; - - if (swiperParams.loop) { - swiperRef.value.loopedSlides = calcLoopedSlides(slidesRef.value, swiperParams); - } - - 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); - const changedParams = getChangedParams(newPassedParams, oldPassedParamsRef.value, slidesRef.value, oldSlidesRef.value); - 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; - }); // 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); - } - - if (!swiperParams.loop || swiperRef.value && swiperRef.value.destroyed) { - slides.forEach(slide => { - if (!slide.props) slide.props = {}; - slide.props.swiperRef = swiperRef; - }); - return slides; - } - - return renderLoop(swiperRef, slides, swiperParams); - } - - return () => { - const { - slides, - slots - } = getChildren(originalSlots, slidesRef, oldSlidesRef); - return h(Tag, { - ref: swiperElRef, - class: uniqueClasses(containerClasses.value) - }, [slots['container-start'], 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' - }), h(WrapperTag, { - class: 'swiper-wrapper' - }, [slots['wrapper-start'], renderSlides(slides), slots['wrapper-end']]), slots['container-end']]); - }; - } - -}; -export { Swiper }; \ No newline at end of file diff --git a/resources/web/include/swiper/vue/update-swiper.js b/resources/web/include/swiper/vue/update-swiper.js deleted file mode 100644 index 4824d48b56..0000000000 --- a/resources/web/include/swiper/vue/update-swiper.js +++ /dev/null @@ -1,131 +0,0 @@ -import { isObject, extend } from './utils.js'; - -function updateSwiper({ - swiper, - slides, - passedParams, - changedParams, - nextEl, - prevEl, - paginationEl, - scrollbarEl -}) { - const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction'); - const { - params: currentParams, - pagination, - navigation, - scrollbar, - virtual, - thumbs - } = swiper; - let needThumbsInit; - let needControllerInit; - let needPaginationInit; - let needScrollbarInit; - let needNavigationInit; - - if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { - 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') { - currentParams[mod].prevEl = undefined; - currentParams[mod].nextEl = undefined; - swiper[mod].prevEl = undefined; - swiper[mod].nextEl = undefined; - } else { - currentParams[mod].el = undefined; - swiper[mod].el = undefined; - } - }; - - updateParams.forEach(key => { - if (isObject(currentParams[key]) && isObject(passedParams[key])) { - extend(currentParams[key], passedParams[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 (changedParams.includes('children') && virtual && currentParams.virtual.enabled) { - virtual.slides = slides; - virtual.update(true); - } else if (changedParams.includes('children') && swiper.lazy && swiper.params.lazy.enabled) { - swiper.lazy.load(); - } - - if (needThumbsInit) { - const initialized = thumbs.init(); - if (initialized) thumbs.update(true); - } - - if (needControllerInit) { - swiper.controller.control = currentParams.controller.control; - } - - if (needPaginationInit) { - if (paginationEl) currentParams.pagination.el = paginationEl; - pagination.init(); - pagination.render(); - pagination.update(); - } - - if (needScrollbarInit) { - if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; - scrollbar.init(); - scrollbar.updateSize(); - scrollbar.setTranslate(); - } - - if (needNavigationInit) { - 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); - } - - swiper.update(); -} - -export { updateSwiper }; \ No newline at end of file diff --git a/resources/web/include/swiper/vue/utils.js b/resources/web/include/swiper/vue/utils.js deleted file mode 100644 index 6c38df53f8..0000000000 --- a/resources/web/include/swiper/vue/utils.js +++ /dev/null @@ -1,37 +0,0 @@ -function isObject(o) { - return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === '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) { - if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); - } else { - target[key] = src[key]; - } - }); -} - -function needsNavigation(props = {}) { - return props.navigation && typeof props.navigation.nextEl === 'undefined' && typeof props.navigation.prevEl === 'undefined'; -} - -function needsPagination(props = {}) { - return props.pagination && typeof props.pagination.el === 'undefined'; -} - -function needsScrollbar(props = {}) { - return props.scrollbar && typeof props.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(' '); -} - -export { isObject, extend, needsNavigation, needsPagination, needsScrollbar, uniqueClasses }; \ No newline at end of file diff --git a/resources/web/include/swiper/vue/virtual.js b/resources/web/include/swiper/vue/virtual.js deleted file mode 100644 index bd3b35dd06..0000000000 --- a/resources/web/include/swiper/vue/virtual.js +++ /dev/null @@ -1,35 +0,0 @@ -import { h } from 'vue'; - -function updateOnVirtualData(swiper) { - if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return; - swiper.updateSlides(); - swiper.updateProgress(); - swiper.updateSlidesClasses(); - - if (swiper.lazy && swiper.params.lazy.enabled) { - swiper.lazy.load(); - } - - if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) { - swiper.parallax.setTranslate(); - } -} - -function renderVirtual(swiperRef, slides, virtualData) { - if (!virtualData) return null; - const style = swiperRef.value.isHorizontal() ? { - [swiperRef.value.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` - } : { - top: `${virtualData.offset}px` - }; - return slides.filter((slide, index) => index >= virtualData.from && index <= virtualData.to).map(slide => { - if (!slide.props) slide.props = {}; - if (!slide.props.style) slide.props.style = {}; - slide.props.swiperRef = swiperRef; - slide.props.style = style; - return h(slide.type, { ...slide.props - }, slide.children); - }); -} - -export { renderVirtual, updateOnVirtualData }; \ No newline at end of file