UNPKG

swiper

Version:

Most modern mobile touch slider and framework with hardware accelerated transitions

937 lines (927 loc) 36 kB
import { Directive, TemplateRef, Input, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, ElementRef, ChangeDetectorRef, Output, ViewChild, ContentChildren, HostBinding, NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import Swiper from 'swiper/core'; import { Subject, of } from 'rxjs'; function isObject(o) { return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object; } function extend(target, src) { Object.keys(src).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) { extend(target[key], src[key]); } else { target[key] = src[key]; } }); } function uniqueClasses(classNames = '') { const classes = classNames .split(' ') .map((c) => c.trim()) .filter((c) => !!c); const unique = []; classes.forEach((c) => { if (unique.indexOf(c) < 0) unique.push(c); }); return unique.join(' '); } function coerceBooleanProperty(value) { return value != null && `${value}` !== 'false'; } const ignoreNgOnChanges = ['pagination', 'navigation', 'scrollbar', 'virtual']; function setProperty(val, obj = {}) { if (isObject(val)) { return val; } const newValue = coerceBooleanProperty(val); if (newValue === true) { return obj; } return newValue; } /* underscore in name -> watch for changes */ const paramsList = [ 'init', '_direction', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'nested', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_freeModeMomentum', '_freeModeMomentumRatio', '_freeModeMomentumBounce', '_freeModeMomentumBounceRatio', '_freeModeMomentumVelocityRatio', '_freeModeSticky', '_freeModeMinimumVelocity', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', '_slidesPerColumn', '_slidesPerColumnFill', '_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', '_watchSlidesVisibility', '_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', // modules 'a11y', 'autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'hashNavigation', 'history', 'keyboard', 'lazy', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', ]; // eslint-disable-next-line const ɵ0 = (key) => key.replace(/_/, ''); const allowedParams = paramsList.map(ɵ0); 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.slideData = { isActive: false, isPrev: false, isNext: false, isVisible: false, isDuplicate: false, }; } 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.decorators = [ { type: Directive, args: [{ selector: '[swiperSlide]', },] } ]; SwiperSlideDirective.ctorParameters = () => [ { type: TemplateRef } ]; SwiperSlideDirective.propDecorators = { virtualIndex: [{ type: Input }] }; class SwiperComponent { constructor(elementRef, _changeDetectorRef) { this.elementRef = elementRef; this._changeDetectorRef = _changeDetectorRef; this.init = true; this.slideClass = 'swiper-slide'; this.wrapperClass = 'swiper-wrapper'; // 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._activeSlides = new Subject(); this.containerClasses = 'swiper-container'; this.style = null; } set navigation(val) { this._navigation = setProperty(val, { nextEl: null, prevEl: null, }); } get navigation() { return this._navigation; } set pagination(val) { this._pagination = setProperty(val, { el: null, }); } get pagination() { return this._pagination; } set scrollbar(val) { this._scrollbar = setProperty(val, { el: null, }); } get scrollbar() { return this._scrollbar; } set virtual(val) { this._virtual = setProperty(val); } get virtual() { return this._virtual; } set prevElRef(el) { this._setElement(el, this.navigation, 'navigation', 'prevEl'); } set nextElRef(el) { this._setElement(el, this.navigation, 'navigation', 'nextEl'); } set scrollbarElRef(el) { this._setElement(el, this.scrollbar, 'scrollbar'); } set paginationElRef(el) { this._setElement(el, this.pagination, 'pagination'); } set slidesEl(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) { this.prependSlides = of(this.slides.slice(this.slides.length - this.loopedSlides)); this.appendSlides = of(this.slides.slice(0, this.loopedSlides)); } } get activeSlides() { if (this.virtual) { return this._activeSlides; } return of(this.slides); } _setElement(el, ref, update, key = 'el') { if (!el && !ref) { return; } if (ref) { 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() { if (this.init) { this.initSwiper(); this._changeDetectorRef.detectChanges(); } } initSwiper() { const { params: swiperParams, passedParams } = getParams(this); Object.assign(this, swiperParams); swiperParams.onAny = (event, ...args) => { const emitter = this[`s_${event}`]; if (emitter) { emitter.emit(...args); } }; Object.assign(swiperParams.on, { _containerClasses(swiper, classes) { this.containerClasses = classes; }, _swiper: (swiper) => { this.swiperRef = swiper; this.s_swiper.emit(this.swiperRef); swiper.loopCreate = () => { }; swiper.loopDestroy = () => { }; if (swiperParams.loop) { swiper.loopedSlides = this.loopedSlides; } if (swiper.virtual && swiper.params.virtual.enabled) { swiper.virtual.slides = this.slides; swiper.params.virtual.cache = false; swiper.params.virtual.renderExternal = (data) => { this.updateVirtualSlides(data); }; swiper.params.virtual.renderExternalUpdate = false; } this._changeDetectorRef.detectChanges(); }, _slideClass: (_, el, classNames) => { const slideIndex = parseInt(el.dataset.swiperSlideIndex); if (this.virtual) { const virtualSlide = this.slides.find((item) => { return item.virtualIndex && item.virtualIndex === slideIndex; }); if (virtualSlide) { virtualSlide.classNames = classNames; return; } } this.slides[slideIndex].classNames = classNames; this._changeDetectorRef.detectChanges(); }, }); new Swiper(this.elementRef.nativeElement, swiperParams); } updateVirtualSlides(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._changeDetectorRef.detectChanges(); 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; } ngOnChanges(changedParams) { this.updateSwiper(changedParams); this._changeDetectorRef.detectChanges(); } updateInitSwiper(changedParams) { if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) { return; } const { params: currentParams, pagination, navigation, scrollbar, virtual, thumbs, } = this.swiperRef; if (changedParams.pagination) { if (this.pagination && 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 && 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 && 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) { if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) { return; } for (const key in changedParams) { if (ignoreNgOnChanges.indexOf(key) >= 0) { continue; } this.updateParameter(key, changedParams[key].currentValue); } 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(); } 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; 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(/^_/, ''); if (Object.keys(this.swiperRef.modules).indexOf(_key) >= 0) { extend(value, this.swiperRef.modules[_key].params[_key]); } if (isObject(this.swiperRef.params[_key]) && isObject(value)) { extend(this.swiperRef.params[_key], value); } else { this.swiperRef.params[_key] = value; } } ngOnDestroy() { this.swiperRef.destroy(); } } SwiperComponent.decorators = [ { type: Component, args: [{ selector: 'swiper, [swiper]', template: "<ng-content select=\"[slot=container-start]\"></ng-content>\n<ng-container *ngIf=\"navigation\">\n <div class=\"swiper-button-prev\" #prevElRef></div>\n <div class=\"swiper-button-next\" #nextElRef></div>\n</ng-container>\n<div *ngIf=\"scrollbar\" class=\"swiper-scrollbar\" #scrollbarElRef></div>\n<div *ngIf=\"pagination\" class=\"swiper-pagination\" #paginationElRef></div>\n<div [ngClass]=\"wrapperClass\">\n <ng-content select=\"[slot=wrapper-start]\"></ng-content>\n <ng-template\n *ngTemplateOutlet=\"\n slidesTemplate;\n context: {\n loopSlides: prependSlides,\n key: 'prepend'\n }\n \"\n ></ng-template>\n <ng-template\n *ngTemplateOutlet=\"\n slidesTemplate;\n context: {\n loopSlides: activeSlides,\n key: ''\n }\n \"\n ></ng-template>\n <ng-template\n *ngTemplateOutlet=\"\n slidesTemplate;\n context: {\n loopSlides: appendSlides,\n key: 'append'\n }\n \"\n ></ng-template>\n <ng-content select=\"[slot=wrapper-end]\"></ng-content>\n</div>\n<ng-content select=\"[slow=container-end]\"></ng-content>\n\n<ng-template #slidesTemplate let-loopSlides=\"loopSlides\" let-slideKey=\"key\">\n <div\n *ngFor=\"let slide of loopSlides | async\"\n [ngClass]=\"slide.classNames + ' ' + (slideKey !== '' ? slideDuplicateClass : '')\"\n [attr.data-swiper-slide-index]=\"slide.virtualIndex ? slide.virtualIndex : slide.slideIndex\"\n [style]=\"style\"\n >\n <ng-template\n [ngTemplateOutlet]=\"slide.template\"\n [ngTemplateOutletContext]=\"{\n $implicit: slide.slideData\n }\"\n ></ng-template>\n </div>\n</ng-template>\n", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [` swiper { display: block; } `] },] } ]; SwiperComponent.ctorParameters = () => [ { type: ElementRef }, { type: ChangeDetectorRef } ]; SwiperComponent.propDecorators = { init: [{ type: Input }], direction: [{ type: Input }], touchEventsTarget: [{ type: Input }], initialSlide: [{ type: Input }], speed: [{ type: Input }], cssMode: [{ type: Input }], updateOnWindowResize: [{ type: Input }], nested: [{ 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 }], freeModeMomentum: [{ type: Input }], freeModeMomentumRatio: [{ type: Input }], freeModeMomentumBounce: [{ type: Input }], freeModeMomentumBounceRatio: [{ type: Input }], freeModeMomentumVelocityRatio: [{ type: Input }], freeModeSticky: [{ type: Input }], freeModeMinimumVelocity: [{ type: Input }], autoHeight: [{ type: Input }], setWrapperSize: [{ type: Input }], virtualTranslate: [{ type: Input }], effect: [{ type: Input }], breakpoints: [{ type: Input }], spaceBetween: [{ type: Input }], slidesPerView: [{ type: Input }], slidesPerColumn: [{ type: Input }], slidesPerColumnFill: [{ 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 }], watchSlidesVisibility: [{ 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 }], a11y: [{ type: Input }], autoplay: [{ type: Input }], controller: [{ type: Input }], coverflowEffect: [{ type: Input }], cubeEffect: [{ type: Input }], fadeEffect: [{ type: Input }], flipEffect: [{ type: Input }], hashNavigation: [{ type: Input }], history: [{ type: Input }], keyboard: [{ type: Input }], lazy: [{ type: Input }], mousewheel: [{ type: Input }], navigation: [{ type: Input }], pagination: [{ type: Input }], parallax: [{ type: Input }], scrollbar: [{ type: Input }], virtual: [{ type: Input }], thumbs: [{ type: Input }], zoom: [{ 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',] }], 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: true },] }], containerClasses: [{ type: HostBinding, args: ['class',] }] }; class SwiperModule { } 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=angular.js.map