{"version":3,"file":"543.aa0480385ae65808.js","mappings":"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A1W,oBAAA,IAAFpoB,CAmhBkgR,WAAAs+B,EAAAS,MAnhBlgR/+B,MAAE,0BAAAs+B,EAAAU,aAAAV,EAAAU,aAAAV,EAAA3R,WAAF3sB,CAmhBqmR,uBAAAs+B,EAAAW,eAnhBrmRj/B,MAAE,GAAFA,MAAE,kBAmhBqvR,CAAC,UAAAk/B,GAAAr2B,EAAAC,GAAA,EAAAD,IAnhBxvR7I,MAAE,EAAA4+B,GAAA,cAAF5+B,MAAE,cAAA6I,GAAF7I,MAAE,UAAFA,MAAE,IAAA8I,EAAAq2B,YAmhBs2Q,OAAAC,GAAA,0HAAAC,GAAA,SAAAlB,GAAA,OAAAgB,WAAAhB,EAAA38B,IAAA,YAAA89B,GAAA,SAAAnB,GAAA,OAAAgB,WAAAhB,EAAA38B,IAAA,KAAA+9B,GAAA,SAAApB,GAAA,OAAAgB,WAAAhB,EAAA38B,IAAA,WAAAg+B,GAAA,8FApxB18QC,GAAa,CACf,OACA,UACA,aACA,oBACA,eACA,SACA,UACA,uBACA,iBACA,SACA,oBACA,SACA,UACA,iCACA,YACA,MACA,sBACA,sBACA,YACA,cACA,iBACA,mBACA,UACA,cACA,gBACA,iBACA,0BACA,QACA,kBACA,sBACA,sBACA,kBACA,wBACA,sBACA,qBACA,sBACA,4BACA,iBACA,eACA,aACA,aACA,gBACA,eACA,cACA,kBACA,eACA,gBACA,iBACA,aACA,2BACA,2BACA,gCACA,sBACA,oBACA,cACA,mBACA,uBACA,cACA,gBACA,2BACA,uBACA,iBACA,sBACA,QACA,wBACA,gBACA,qBACA,0BACA,oBACA,UACA,kBACA,kBACA,gBACA,aACA,iBACA,oBACA,mBACA,yBACA,aACA,kBACA,mBACA,4BACA,oBACA,sBACA,iBACA,0BACA,iBACA,0BACA,eACA,qBACA,WACA,iBACA,uBAEA,OACA,WACA,cACA,kBACA,aACA,aACA,aACA,iBACA,cACA,iBACA,UACA,WACA,OACA,aACA,cACA,cACA,WACA,aACA,UACA,UACA,OACA,MAGJ,SAASp2B,GAASpF,GACd,MAAqB,iBAANA,GACL,OAANA,GACAA,EAAEnC,a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","names":["i0","_r2","ctx_r1","handleClick","ctx_r3","selection","emit","selected","ctx_r0","data","name","actions","suppressLibraryLink","imageUrl","pages","pagesRead","allowSelection","relation","deepClone","obj","Array","map","item","clonedObj","key","Object","prototype","hasOwnProperty","call","SeriesCardComponent","constructor","router","cdRef","seriesService","toastr","modalService","imageService","actionFactoryService","actionService","this","libraryId","undefined","isOnDeck","clicked","EventEmitter","reload","dataChanged","translocoService","inject","TranslocoService","ngOnInit","getSeriesCoverImage","id","markForCheck","ngOnChanges","changes","getSeriesActions","action","series","handleSeriesActionCallback","othersIndex","findIndex","title","othersAction","children","o","Action","RemoveFromOnDeck","push","callback","class","requiresAdmin","MarkAsRead","markAsRead","MarkAsUnread","markAsUnread","Scan","scanLibrary","RefreshMetadata","refreshMetadata","Delete","deleteSeries","Edit","openEditModal","AddToReadingList","addSeriesToReadingList","AddToWantToReadList","addMultipleSeriesToWantToReadList","RemoveFromWantToReadList","removeMultipleSeriesFromWantToReadList","url","startsWith","AddToCollection","addMultipleSeriesToCollectionTag","AnalyzeFiles","analyzeFilesForSeries","SendTo","sendSeriesToDevice","_extra","removeFromOnDeck","subscribe","modalRef","open","EditSeriesModalComponent","size","componentInstance","closed","closeResult","success","getSeries","_this","_asyncToGenerator","refreshMetdata","_this2","scan","res","translate","_this3","result","markSeriesAsUnread","markSeriesAsRead","navigate","t","i1","i2","i3","i4","i5","i6","i7","_angular_core__WEBPACK_IMPORTED_MODULE_7__","Xpm","selectors","inputs","outputs","standalone","features","decls","vars","consts","template","rf","ctx","SeriesCardComponent_ng_container_0_Template","CommonModule","i8","CardItemComponent","RelationshipPipe","changeDetection","isObject","extend","target","src","keys","forEach","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","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","cancelAnimationFrame","getWindow","win","window","Dom7","items","super","makeReactive","proto","__proto__","defineProperty","get","set","value","arrayFlat","arr","el","isArray","arrayFilter","filter","$","selector","context","html","trim","indexOf","toCreate","tempParent","innerHTML","i","qsa","a","nodeType","arrayUnique","uniqueArray","fn","noTrigger","split","shortcut","eventHandler","args","trigger","on","Methods","addClass","classes","classNames","c","classList","add","removeClass","remove","hasClass","className","contains","toggleClass","toggle","attr","attrs","arguments","getAttribute","attrName","removeAttr","removeAttribute","transform","transition","duration","transitionDuration","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","events","j","event","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","splice","evt","detail","bubbles","cancelable","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","top","scrollY","scrollTop","clientTop","left","scrollX","scrollLeft","clientLeft","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","methodName","writable","nextTick","delay","now","toString","slice","isNode","node","HTMLElement","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","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","calcSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","supportsPassive","opts","gestures","transitionEmit","runCallbacks","direction","step","activeIndex","previousIndex","onTouchStart","touchEventsData","touches","enabled","animating","preventInteractionOnTransition","cssMode","loop","loopFix","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","path","shadowRoot","noSwipingSelector","noSwiping","closestElement","base","__closestFrom","assignedSlot","getRootNode","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","touchStartForcePreventDefault","allowTouchMove","touchStartPreventDefault","isContentEditable","freeMode","onTouchMove","rtlTranslate","rtl","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","isVertical","maxTranslate","minTranslate","diffX","diffY","sqrt","touchAngle","isHorizontal","atan2","abs","touchMoveStopPropagation","nested","stopPropagation","startTranslate","getTranslate","setTransition","$wrapperEl","allowMomentumBounce","grabCursor","allowSlideNext","allowSlidePrev","setGrabCursor","diff","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","watchSlidesProgress","updateActiveIndex","updateSlidesClasses","updateProgress","setTranslate","onTouchEnd","slidesGrid","touchEndTime","timeDiff","pathTree","updateClickedSlide","lastClickTime","destroyed","currentPos","stopIndex","groupSize","slidesSizesGrid","slidesPerGroupSkip","slidesPerGroup","increment","rewindFirstIndex","rewindLastIndex","rewind","isBeginning","virtual","slides","isEnd","ratio","longSwipesMs","longSwipes","slideTo","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","snapGrid","updateSlides","slidesPerView","centeredSlides","autoplay","running","paused","run","watchOverflow","checkOverflow","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","translatesDiff","dummyEventAttached","dummyEventListener","method","touchEvents","device","domMethod","swiperMethod","start","passiveListeners","passive","move","end","cancel","updateOnWindowResize","ios","android","isGridEnabled","grid","rows","defaults","init","initialSlide","resizeObserver","createElements","width","height","autoHeight","setWrapperSize","virtualTranslate","effect","breakpointsBase","spaceBetween","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","simulateTouch","uniqueNavElements","slideToClickedSlide","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlides","loopedSlidesLimit","loopFillGroupWithBlank","loopPreventsSlide","maxBackfaceHiddenSlides","containerModifierClass","slideClass","slideBlankClass","slideActiveClass","slideDuplicateActiveClass","slideVisibleClass","slideDuplicateClass","slideNextClass","slideDuplicateNextClass","slidePrevClass","slideDuplicatePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","priority","self","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","update","$el","clientWidth","clientHeight","parseInt","Number","isNaN","getDirectionLabel","property","marginRight","getDirectionPropertyValue","label","swiperSize","wrongRTL","isVirtual","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","replace","virtualSize","marginLeft","marginBottom","marginTop","gridEnabled","slideSize","initSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","webkitTransform","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","I","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","updateSlidesOffset","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","visibleSlides","ceil","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","originalProgress","wasBeginning","wasEnd","realIndex","activeSlide","nextSlide","prevSlide","emitSlidesClasses","newActiveIndex","previousRealIndex","previousSnapIndex","skip","initialized","slideFound","clickedSlide","clickedIndex","getSwiperTranslate","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","join","MozTransform","OTransform","MsTransform","msTransform","m41","m42","byController","x","y","translateTo","translateBounds","internal","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionStart","initial","Error","indexAsNumber","isFinite","normalizedTranslate","normalizedGrid","normalizedGridNext","_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","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","wasLocked","lastSlideIndex","lastSlideRightEdge","addClasses","suffixes","prepareClasses","entries","prefix","resultClasses","autoheight","centered","removeClasses","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","swipers","newParams","getDevice","overrides","calcDevice","platform","ua","screenWidth","screenHeight","match","ipad","ipod","iphone","windows","macos","os","getBrowser","calcBrowser","isSafari","toLowerCase","isWebView","test","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","getWrapperSelector","options","wrapper","destroy","deleteInstance","cleanStyles","deleteProps","object","static","newDefaults","module","m","installModule","prototypeGroup","protoMethod","use","Resize","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","Observer","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","core_core","_c0","_c1","_c2","_c3","SwiperComponent_ng_container_1_Template","SwiperComponent_div_2_Template","SwiperComponent_div_3_Template","SwiperComponent_6_ng_template_0_Template","SwiperComponent_6_Template","SwiperComponent_7_ng_template_0_Template","SwiperComponent_7_Template","SwiperComponent_8_ng_template_0_Template","SwiperComponent_8_Template","SwiperComponent_ng_template_11_div_0_div_1_ng_template_1_Template","_c4","a0","$implicit","SwiperComponent_ng_template_11_div_0_div_1_Template","slide_r18","ctx_r19","zoomContainerClass","slideData","SwiperComponent_ng_template_11_div_0_ng_container_2_ng_template_1_Template","SwiperComponent_ng_template_11_div_0_ng_container_2_Template","SwiperComponent_ng_template_11_div_0_Template","slideKey_r16","ctx_r17","zoom","virtualIndex","autoplayDelay","SwiperComponent_ng_template_11_Template","loopSlides","_c5","_c6","_c7","_c8","_c9","paramsList","isShowEl","coerceBooleanProperty","nativeElement","ignoreNgOnChanges","getParams","rest","allowedParams","_key","SwiperSlideDirective","isActive","isPrev","isNext","isVisible","isDuplicate","ngClass","_zoom","_classNames","_hasClass","some","ɵfac","ɵdir","SwiperComponent","_ngZone","elementRef","_changeDetectorRef","_platformId","showNavigation","showPagination","showScrollbar","s__beforeBreakpoint","s__containerClasses","s__slideClass","s__swiper","s_activeIndexChange","s_afterInit","s_autoplay","s_autoplayStart","s_autoplayStop","s_autoplayPause","s_autoplayResume","s_beforeDestroy","s_beforeInit","s_beforeLoopFix","s_beforeResize","s_beforeSlideChangeStart","s_beforeTransitionStart","s_breakpoint","s_changeDirection","s_click","s_doubleTap","s_doubleClick","s_destroy","s_fromEdge","s_hashChange","s_hashSet","s_imagesReady","s_init","s_keyPress","s_lazyImageLoad","s_lazyImageReady","s_loopFix","s_momentumBounce","s_navigationHide","s_navigationShow","s_navigationPrev","s_navigationNext","s_observerUpdate","s_orientationchange","s_paginationHide","s_paginationRender","s_paginationShow","s_paginationUpdate","s_progress","s_reachBeginning","s_reachEnd","s_realIndexChange","s_resize","s_scroll","s_scrollbarDragEnd","s_scrollbarDragMove","s_scrollbarDragStart","s_setTransition","s_setTranslate","s_slideChange","s_slideChangeTransitionEnd","s_slideChangeTransitionStart","s_slideNextTransitionEnd","s_slideNextTransitionStart","s_slidePrevTransitionEnd","s_slidePrevTransitionStart","s_slideResetTransitionStart","s_slideResetTransitionEnd","s_sliderMove","s_sliderFirstMove","s_slidesLengthChange","s_slidesGridLengthChange","s_snapGridLengthChange","s_snapIndexChange","s_tap","s_toEdge","s_touchEnd","s_touchMove","s_touchMoveOpposite","s_touchStart","s_transitionEnd","s_transitionStart","s_update","s_zoomChange","s_swiper","s_lock","s_unlock","_activeSlides","Subject","containerClasses","slidesChanges","calcLoopedSlides","swiperRef","runOutsideAngular","of","detectChanges","updateVirtualSlides","virtualData","currentVirtualData","from","lazy","load","_a","_b","_c","currentNext","_navigation","currentPrev","_prevElRef","pagination","_pagination","_paginationElRef","scrollbar","_scrollbar","_scrollbarElRef","_virtual","config","updateSwiper","prevElRef","_setElement","nextElRef","_nextElRef","scrollbarElRef","paginationElRef","containerClass","ref","updateObj","updateInitSwiper","ngAfterViewInit","childrenSlidesInit","initSwiper","slidesEl","isSwiperActive","emitter","_containerClasses","_slideClasses","updated","virtualSlide","isVirtualEnabled","extendWith","cache","renderExternal","renderExternalUpdate","isPlatformBrowser","changedParams","thumbs","updateParameter","render","controller","control","newValue","currentValue","slidesPerViewParams","breakpointOnlyParams","isCurrentParamObj","ngOnDestroy","PLATFORM_ID","ɵcmp","contentQueries","dirIndex","_t","viewQuery","first","hostVars","hostBindings","a11y","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","keyboard","mousewheel","parallax","ngContentSelectors","_r6","dependencies","encapsulation","SwiperModule","ɵmod","ɵinj","imports","iconClasses","_r8","ctx_r7","prevPage","ctx_r9","nextPage","ctx_r4","t_r1","ctx_r13","carouselItemTemplate","item_r11","i_r12","CarouselReelComponent_ng_container_0_div_1_9_ng_template_0_Template","ctx_r15","promptToAddTemplate","CarouselReelComponent_ng_container_0_div_1_ng_container_10_ng_template_1_Template","$event","_r17","ctx_r16","sectionClicked","CarouselReelComponent_ng_container_0_div_1_i_5_Template","CarouselReelComponent_ng_container_0_div_1_div_6_Template","ctx_r18","onSwiper","CarouselReelComponent_ng_container_0_div_1_9_Template","CarouselReelComponent_ng_container_0_div_1_ng_container_10_Template","ctx_r2","clickableTitle","alwaysShow","CarouselReelComponent_ng_container_0_div_1_Template","CarouselReelComponent","trackByIdentity","sectionClick","eventParams","core","CarouselReelComponent_ng_container_0_Template","NgIf","NgClass","NgFor","NgTemplateOutlet","TranslocoDirective"],"sourceRoot":"webpack:///","sources":["./src/app/cards/series-card/series-card.component.html","./src/app/cards/series-card/series-card.component.ts","./node_modules/ssr-window/ssr-window.esm.js","./node_modules/dom7/dom7.esm.js","./node_modules/swiper/shared/dom.js","./node_modules/swiper/shared/utils.js","./node_modules/swiper/shared/get-support.js","./node_modules/swiper/shared/get-device.js","./node_modules/swiper/shared/get-browser.js","./node_modules/swiper/core/transition/transitionEmit.js","./node_modules/swiper/core/events/onTouchStart.js","./node_modules/swiper/core/events/onTouchMove.js","./node_modules/swiper/core/events/onTouchEnd.js","./node_modules/swiper/core/events/onResize.js","./node_modules/swiper/core/events/onClick.js","./node_modules/swiper/core/events/onScroll.js","./node_modules/swiper/core/events/index.js","./node_modules/swiper/core/breakpoints/setBreakpoint.js","./node_modules/swiper/core/defaults.js","./node_modules/swiper/core/moduleExtendParams.js","./node_modules/swiper/core/core.js","./node_modules/swiper/core/events-emitter.js","./node_modules/swiper/core/update/index.js","./node_modules/swiper/core/update/updateSize.js","./node_modules/swiper/core/update/updateSlides.js","./node_modules/swiper/core/update/updateAutoHeight.js","./node_modules/swiper/core/update/updateSlidesOffset.js","./node_modules/swiper/core/update/updateSlidesProgress.js","./node_modules/swiper/core/update/updateProgress.js","./node_modules/swiper/core/update/updateSlidesClasses.js","./node_modules/swiper/core/update/updateActiveIndex.js","./node_modules/swiper/core/update/updateClickedSlide.js","./node_modules/swiper/core/translate/index.js","./node_modules/swiper/core/translate/getTranslate.js","./node_modules/swiper/core/translate/setTranslate.js","./node_modules/swiper/core/translate/minTranslate.js","./node_modules/swiper/core/translate/maxTranslate.js","./node_modules/swiper/core/translate/translateTo.js","./node_modules/swiper/core/transition/index.js","./node_modules/swiper/core/transition/setTransition.js","./node_modules/swiper/core/transition/transitionStart.js","./node_modules/swiper/core/transition/transitionEnd.js","./node_modules/swiper/core/slide/index.js","./node_modules/swiper/core/slide/slideTo.js","./node_modules/swiper/core/slide/slideToLoop.js","./node_modules/swiper/core/slide/slideNext.js","./node_modules/swiper/core/slide/slidePrev.js","./node_modules/swiper/core/slide/slideReset.js","./node_modules/swiper/core/slide/slideToClosest.js","./node_modules/swiper/core/slide/slideToClickedSlide.js","./node_modules/swiper/core/loop/index.js","./node_modules/swiper/core/loop/loopCreate.js","./node_modules/swiper/core/loop/loopFix.js","./node_modules/swiper/core/loop/loopDestroy.js","./node_modules/swiper/core/grab-cursor/index.js","./node_modules/swiper/core/grab-cursor/setGrabCursor.js","./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","./node_modules/swiper/core/breakpoints/index.js","./node_modules/swiper/core/breakpoints/getBreakpoint.js","./node_modules/swiper/core/check-overflow/index.js","./node_modules/swiper/core/classes/index.js","./node_modules/swiper/core/classes/addClasses.js","./node_modules/swiper/core/classes/removeClasses.js","./node_modules/swiper/core/images/index.js","./node_modules/swiper/core/images/loadImage.js","./node_modules/swiper/core/images/preloadImages.js","./node_modules/swiper/core/modules/resize/resize.js","./node_modules/swiper/core/modules/observer/observer.js","./node_modules/swiper/angular/fesm2015/swiper_angular.mjs","./src/app/carousel/_components/carousel-reel/carousel-reel.component.html","./src/app/carousel/_components/carousel-reel/carousel-reel.component.ts"],"sourcesContent":["\n \n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter, inject,\n Input,\n OnChanges,\n OnInit,\n Output\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {NgbModal} from '@ng-bootstrap/ng-bootstrap';\nimport {ToastrService} from 'ngx-toastr';\nimport {Series} from 'src/app/_models/series';\nimport {ImageService} from 'src/app/_services/image.service';\nimport {Action, ActionFactoryService, ActionItem} from 'src/app/_services/action-factory.service';\nimport {SeriesService} from 'src/app/_services/series.service';\nimport {ActionService} from 'src/app/_services/action.service';\nimport {EditSeriesModalComponent} from '../_modals/edit-series-modal/edit-series-modal.component';\nimport {RelationKind} from 'src/app/_models/series-detail/relation-kind';\nimport {CommonModule} from \"@angular/common\";\nimport {CardItemComponent} from \"../card-item/card-item.component\";\nimport {RelationshipPipe} from \"../../pipe/relationship.pipe\";\nimport {Device} from \"../../_models/device/device\";\nimport {TranslocoService} from \"@ngneat/transloco\";\n\nfunction deepClone(obj: any): any {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (obj instanceof Array) {\n return obj.map(item => deepClone(item));\n }\n\n const clonedObj: any = {};\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (typeof obj[key] === 'object' && obj[key] !== null) {\n clonedObj[key] = deepClone(obj[key]);\n } else {\n clonedObj[key] = obj[key];\n }\n }\n }\n\n return clonedObj;\n}\n\n@Component({\n selector: 'app-series-card',\n standalone: true,\n imports: [CommonModule, CardItemComponent, RelationshipPipe],\n templateUrl: './series-card.component.html',\n styleUrls: ['./series-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SeriesCardComponent implements OnInit, OnChanges {\n @Input({required: true}) data!: Series;\n @Input() libraryId = 0;\n @Input() suppressLibraryLink = false;\n /**\n * If the entity is selected or not.\n */\n @Input() selected: boolean = false;\n /**\n * If the entity should show selection code\n */\n @Input() allowSelection: boolean = false;\n /**\n * If the Series has a relationship to display\n */\n @Input() relation: RelationKind | undefined = undefined;\n /**\n * When a series card is shown on deck, a special actionable is added to the list\n */\n @Input() isOnDeck: boolean = false;\n\n @Output() clicked = new EventEmitter();\n /**\n * Emits when a reload needs to occur and the id of the entity\n */\n @Output() reload = new EventEmitter();\n @Output() dataChanged = new EventEmitter();\n /**\n * When the card is selected.\n */\n @Output() selection = new EventEmitter();\n\n actions: ActionItem[] = [];\n imageUrl: string = '';\n\n private readonly translocoService = inject(TranslocoService);\n\n constructor(private router: Router, private cdRef: ChangeDetectorRef,\n private seriesService: SeriesService, private toastr: ToastrService,\n private modalService: NgbModal, private imageService: ImageService,\n private actionFactoryService: ActionFactoryService,\n private actionService: ActionService) {}\n\n\n ngOnInit(): void {\n if (this.data) {\n this.imageUrl = this.imageService.getSeriesCoverImage(this.data.id);\n this.cdRef.markForCheck();\n }\n }\n\n ngOnChanges(changes: any) {\n if (this.data) {\n this.actions = [...this.actionFactoryService.getSeriesActions((action: ActionItem, series: Series) => this.handleSeriesActionCallback(action, series))];\n if (this.isOnDeck) {\n const othersIndex = this.actions.findIndex(obj => obj.title === 'others');\n const othersAction = deepClone(this.actions[othersIndex]) as ActionItem;\n if (othersAction.children.findIndex(o => o.action === Action.RemoveFromOnDeck) < 0) {\n othersAction.children.push({\n action: Action.RemoveFromOnDeck,\n title: 'remove-from-on-deck',\n callback: (action: ActionItem, series: Series) => this.handleSeriesActionCallback(action, series),\n class: 'danger',\n requiresAdmin: false,\n children: [],\n });\n this.actions[othersIndex] = othersAction;\n }\n }\n this.cdRef.markForCheck();\n }\n }\n\n handleSeriesActionCallback(action: ActionItem, series: Series) {\n switch (action.action) {\n case(Action.MarkAsRead):\n this.markAsRead(series);\n break;\n case(Action.MarkAsUnread):\n this.markAsUnread(series);\n break;\n case(Action.Scan):\n this.scanLibrary(series);\n break;\n case(Action.RefreshMetadata):\n this.refreshMetadata(series);\n break;\n case(Action.Delete):\n this.deleteSeries(series);\n break;\n case(Action.Edit):\n this.openEditModal(series);\n break;\n case(Action.AddToReadingList):\n this.actionService.addSeriesToReadingList(series);\n break;\n case Action.AddToWantToReadList:\n this.actionService.addMultipleSeriesToWantToReadList([series.id]);\n break;\n case Action.RemoveFromWantToReadList:\n this.actionService.removeMultipleSeriesFromWantToReadList([series.id]);\n if (this.router.url.startsWith('/want-to-read')) {\n this.reload.emit(series.id);\n }\n break;\n case(Action.AddToCollection):\n this.actionService.addMultipleSeriesToCollectionTag([series]);\n break;\n case (Action.AnalyzeFiles):\n this.actionService.analyzeFilesForSeries(series);\n break;\n case Action.SendTo:\n const device = (action._extra!.data as Device);\n this.actionService.sendSeriesToDevice(series.id, device);\n break;\n case Action.RemoveFromOnDeck:\n this.seriesService.removeFromOnDeck(series.id).subscribe(() => this.reload.emit(series.id));\n break;\n default:\n break;\n }\n }\n\n openEditModal(data: Series) {\n const modalRef = this.modalService.open(EditSeriesModalComponent, { size: 'lg' });\n modalRef.componentInstance.series = data;\n modalRef.closed.subscribe((closeResult: {success: boolean, series: Series, coverImageUpdate: boolean}) => {\n if (closeResult.success) {\n this.seriesService.getSeries(data.id).subscribe(series => {\n this.data = series;\n this.cdRef.markForCheck();\n this.reload.emit(series.id);\n this.dataChanged.emit(series);\n });\n }\n });\n }\n\n async refreshMetadata(series: Series) {\n await this.actionService.refreshMetdata(series);\n }\n\n async scanLibrary(series: Series) {\n this.seriesService.scan(series.libraryId, series.id).subscribe((res: any) => {\n this.toastr.success(this.translocoService.translate('toasts.scan-queued', {name: series.name}));\n });\n }\n\n async deleteSeries(series: Series) {\n await this.actionService.deleteSeries(series, (result: boolean) => {\n if (result) {\n this.reload.emit(series.id);\n }\n });\n }\n\n markAsUnread(series: Series) {\n this.actionService.markSeriesAsUnread(series, () => {\n if (this.data) {\n this.data.pagesRead = 0;\n this.cdRef.markForCheck();\n }\n\n this.dataChanged.emit(series);\n });\n }\n\n markAsRead(series: Series) {\n this.actionService.markSeriesAsRead(series, () => {\n if (this.data) {\n this.data.pagesRead = series.pages;\n this.cdRef.markForCheck();\n }\n this.dataChanged.emit(series);\n });\n }\n\n handleClick() {\n this.clicked.emit(this.data);\n this.router.navigate(['library', this.libraryId, 'series', this.data?.id]);\n }\n\n}\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionStart(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionstart', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionstart', fireCallBack);\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, transitionStart, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line\n\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n $targetEl = $(eventPath[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n } // Toggle navigation, pagination, scrollbar\n\n\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopedSlidesLimit: true,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n }); // eslint-disable-next-line no-constructor-return\n\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n // eslint-disable-next-line no-constructor-return\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n\n swiper.update();\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\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}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex]; // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n } // Update progress\n\n\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < swiper.loopedSlides; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlides.push(slides.eq(index)[0]);\n prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\n }\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n 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 {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import * as i0 from '@angular/core';\nimport { Directive, Input, EventEmitter, PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Output, ViewChild, ContentChildren, HostBinding, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { isPlatformBrowser, CommonModule } from '@angular/common';\nimport Swiper from 'swiper';\nimport { Subject, of } from 'rxjs';\n\n/* underscore in name -> watch for changes */\nconst 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 'maxBackfaceHiddenSlides',\n '_grid',\n '_slidesPerGroup',\n '_slidesPerGroupSkip',\n '_slidesPerGroupAuto',\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 '_loopedSlidesLimit',\n '_loopFillGroupWithBlank',\n 'loopPreventsSlide',\n '_rewind',\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 // 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 'on',\n];\n\nfunction isObject(o) {\n return (typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object');\n}\nfunction isEnabled(val) {\n return typeof val !== 'undefined' && typeof val !== 'boolean' && val.enabled === true;\n}\nfunction isShowEl(val, obj, el) {\n return ((coerceBooleanProperty(val) === true && obj && !obj.el) ||\n !(typeof obj !== 'boolean' &&\n obj.el !== (el === null || el === void 0 ? void 0 : el.nativeElement) &&\n (typeof obj.el === 'string' || typeof obj.el === 'object')));\n}\nfunction extend(target, src) {\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__)\n target[key] = src[key];\n else\n extend(target[key], src[key]);\n }\n else {\n target[key] = src[key];\n }\n });\n}\nfunction coerceBooleanProperty(value) {\n return value != null && `${value}` !== 'false';\n}\nconst ignoreNgOnChanges = ['pagination', 'navigation', 'scrollbar', 'virtual'];\nfunction setProperty(val, obj = {}) {\n if (isObject(val)) {\n return val;\n }\n if (coerceBooleanProperty(val) === true) {\n return obj;\n }\n return false;\n}\n\n// @ts-ignore\nconst allowedParams = paramsList.map((key) => key.replace(/_/, ''));\nfunction getParams(obj = {}) {\n const params = {\n on: {},\n };\n // const events = {};\n const passedParams = {};\n extend(params, Swiper.defaults);\n extend(params, Swiper.extendedDefaults);\n params._emitClasses = true;\n params.init = false;\n const rest = {};\n const allowedParams = paramsList.map((key) => key.replace(/_/, ''));\n Object.keys(obj).forEach((key) => {\n const _key = key.replace(/^_/, '');\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 }\n else {\n params[_key] = obj[key];\n passedParams[_key] = obj[key];\n }\n }\n // else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {\n // events[`${_key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n // }\n else {\n rest[_key] = obj[key];\n }\n });\n ['navigation', 'pagination', 'scrollbar'].forEach((key) => {\n if (params[key] === true)\n params[key] = {};\n if (params[key] === false)\n delete params[key];\n });\n return { params, passedParams, rest };\n}\n\nclass SwiperSlideDirective {\n constructor(template) {\n this.template = template;\n this.class = '';\n this.autoplayDelay = null;\n this.slideData = {\n isActive: false,\n isPrev: false,\n isNext: false,\n isVisible: false,\n isDuplicate: false,\n };\n }\n set ngClass(val) {\n this.class = [this.class || '', val].join(' ');\n }\n set zoom(val) {\n this._zoom = coerceBooleanProperty(val);\n }\n get zoom() {\n return this._zoom;\n }\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 _hasClass(classNames) {\n return classNames.some((className) => this._classNames.indexOf(className) >= 0);\n }\n}\nSwiperSlideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: SwiperSlideDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nSwiperSlideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.11\", type: SwiperSlideDirective, selector: \"ng-template[swiperSlide]\", inputs: { virtualIndex: \"virtualIndex\", class: \"class\", ngClass: \"ngClass\", autoplayDelay: [\"data-swiper-autoplay\", \"autoplayDelay\"], zoom: \"zoom\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: SwiperSlideDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[swiperSlide]',\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { virtualIndex: [{\n type: Input\n }], class: [{\n type: Input\n }], ngClass: [{\n type: Input\n }], autoplayDelay: [{\n type: Input,\n args: ['data-swiper-autoplay']\n }], zoom: [{\n type: Input\n }] } });\n\nclass SwiperComponent {\n constructor(_ngZone, elementRef, _changeDetectorRef, _platformId) {\n this._ngZone = _ngZone;\n this.elementRef = elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._platformId = _platformId;\n this.slideClass = 'swiper-slide';\n this.wrapperClass = 'swiper-wrapper';\n this.showNavigation = true;\n this.showPagination = true;\n this.showScrollbar = true;\n this.s__beforeBreakpoint = new EventEmitter();\n this.s__containerClasses = new EventEmitter();\n this.s__slideClass = new EventEmitter();\n this.s__swiper = new EventEmitter();\n this.s_activeIndexChange = new EventEmitter();\n this.s_afterInit = new EventEmitter();\n this.s_autoplay = new EventEmitter();\n this.s_autoplayStart = new EventEmitter();\n this.s_autoplayStop = new EventEmitter();\n this.s_autoplayPause = new EventEmitter();\n this.s_autoplayResume = new EventEmitter();\n this.s_beforeDestroy = new EventEmitter();\n this.s_beforeInit = new EventEmitter();\n this.s_beforeLoopFix = new EventEmitter();\n this.s_beforeResize = new EventEmitter();\n this.s_beforeSlideChangeStart = new EventEmitter();\n this.s_beforeTransitionStart = new EventEmitter();\n this.s_breakpoint = new EventEmitter();\n this.s_changeDirection = new EventEmitter();\n this.s_click = new EventEmitter();\n this.s_doubleTap = new EventEmitter();\n this.s_doubleClick = new EventEmitter();\n this.s_destroy = new EventEmitter();\n this.s_fromEdge = new EventEmitter();\n this.s_hashChange = new EventEmitter();\n this.s_hashSet = new EventEmitter();\n this.s_imagesReady = new EventEmitter();\n this.s_init = new EventEmitter();\n this.s_keyPress = new EventEmitter();\n this.s_lazyImageLoad = new EventEmitter();\n this.s_lazyImageReady = new EventEmitter();\n this.s_loopFix = new EventEmitter();\n this.s_momentumBounce = new EventEmitter();\n this.s_navigationHide = new EventEmitter();\n this.s_navigationShow = new EventEmitter();\n this.s_navigationPrev = new EventEmitter();\n this.s_navigationNext = new EventEmitter();\n this.s_observerUpdate = new EventEmitter();\n this.s_orientationchange = new EventEmitter();\n this.s_paginationHide = new EventEmitter();\n this.s_paginationRender = new EventEmitter();\n this.s_paginationShow = new EventEmitter();\n this.s_paginationUpdate = new EventEmitter();\n this.s_progress = new EventEmitter();\n this.s_reachBeginning = new EventEmitter();\n this.s_reachEnd = new EventEmitter();\n this.s_realIndexChange = new EventEmitter();\n this.s_resize = new EventEmitter();\n this.s_scroll = new EventEmitter();\n this.s_scrollbarDragEnd = new EventEmitter();\n this.s_scrollbarDragMove = new EventEmitter();\n this.s_scrollbarDragStart = new EventEmitter();\n this.s_setTransition = new EventEmitter();\n this.s_setTranslate = new EventEmitter();\n this.s_slideChange = new EventEmitter();\n this.s_slideChangeTransitionEnd = new EventEmitter();\n this.s_slideChangeTransitionStart = new EventEmitter();\n this.s_slideNextTransitionEnd = new EventEmitter();\n this.s_slideNextTransitionStart = new EventEmitter();\n this.s_slidePrevTransitionEnd = new EventEmitter();\n this.s_slidePrevTransitionStart = new EventEmitter();\n this.s_slideResetTransitionStart = new EventEmitter();\n this.s_slideResetTransitionEnd = new EventEmitter();\n this.s_sliderMove = new EventEmitter();\n this.s_sliderFirstMove = new EventEmitter();\n this.s_slidesLengthChange = new EventEmitter();\n this.s_slidesGridLengthChange = new EventEmitter();\n this.s_snapGridLengthChange = new EventEmitter();\n this.s_snapIndexChange = new EventEmitter();\n this.s_tap = new EventEmitter();\n this.s_toEdge = new EventEmitter();\n this.s_touchEnd = new EventEmitter();\n this.s_touchMove = new EventEmitter();\n this.s_touchMoveOpposite = new EventEmitter();\n this.s_touchStart = new EventEmitter();\n this.s_transitionEnd = new EventEmitter();\n this.s_transitionStart = new EventEmitter();\n this.s_update = new EventEmitter();\n this.s_zoomChange = new EventEmitter();\n this.s_swiper = new EventEmitter();\n this.s_lock = new EventEmitter();\n this.s_unlock = new EventEmitter();\n this._activeSlides = new Subject();\n this.containerClasses = 'swiper';\n this.slidesChanges = (val) => {\n this.slides = val.map((slide, index) => {\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 }\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 this.style = null;\n this.updateVirtualSlides = (virtualData) => {\n // TODO: type virtualData\n if (!this.swiperRef ||\n (this.currentVirtualData &&\n this.currentVirtualData.from === virtualData.from &&\n this.currentVirtualData.to === virtualData.to &&\n this.currentVirtualData.offset === virtualData.offset)) {\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 (isEnabled(this.swiperRef.params.lazy)) {\n this.swiperRef.lazy.load();\n }\n this.swiperRef.virtual.update(true);\n });\n return;\n };\n }\n set navigation(val) {\n var _a, _b, _c;\n const currentNext = typeof this._navigation !== 'boolean' && this._navigation !== ''\n ? (_a = this._navigation) === null || _a === void 0 ? void 0 : _a.nextEl\n : null;\n const currentPrev = typeof this._navigation !== 'boolean' && this._navigation !== ''\n ? (_b = this._navigation) === null || _b === void 0 ? void 0 : _b.prevEl\n : null;\n this._navigation = setProperty(val, {\n nextEl: currentNext || null,\n prevEl: currentPrev || null,\n });\n this.showNavigation = !(coerceBooleanProperty(val) !== true ||\n (this._navigation &&\n typeof this._navigation !== 'boolean' &&\n this._navigation.prevEl !== ((_c = this._prevElRef) === null || _c === void 0 ? void 0 : _c.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 get navigation() {\n return this._navigation;\n }\n set pagination(val) {\n var _a;\n const current = typeof this._pagination !== 'boolean' && this._pagination !== ''\n ? (_a = this._pagination) === null || _a === void 0 ? void 0 : _a.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 set scrollbar(val) {\n var _a;\n const current = typeof this._scrollbar !== 'boolean' && this._scrollbar !== '' ? (_a = this._scrollbar) === null || _a === void 0 ? void 0 : _a.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 set virtual(val) {\n this._virtual = setProperty(val);\n }\n get virtual() {\n return this._virtual;\n }\n set config(val) {\n this.updateSwiper(val);\n const { params } = getParams(val);\n Object.assign(this, params);\n }\n set prevElRef(el) {\n this._prevElRef = el;\n this._setElement(el, this.navigation, 'navigation', 'prevEl');\n }\n set nextElRef(el) {\n this._nextElRef = el;\n this._setElement(el, this.navigation, 'navigation', 'nextEl');\n }\n set scrollbarElRef(el) {\n this._scrollbarElRef = el;\n this._setElement(el, this.scrollbar, 'scrollbar');\n }\n set paginationElRef(el) {\n this._paginationElRef = el;\n this._setElement(el, this.pagination, 'pagination');\n }\n get activeSlides() {\n if (this.virtual) {\n return this._activeSlides;\n }\n return of(this.slides);\n }\n get zoomContainerClass() {\n return this.zoom && typeof this.zoom !== 'boolean'\n ? this.zoom.containerClass\n : 'swiper-zoom-container';\n }\n _setElement(el, ref, update, key = 'el') {\n if (!ref || !el)\n return;\n if (el.nativeElement) {\n if (ref[key] === el.nativeElement) {\n return;\n }\n ref[key] = el.nativeElement;\n }\n const updateObj = {};\n updateObj[update] = true;\n this.updateInitSwiper(updateObj);\n }\n ngOnInit() {\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 childrenSlidesInit() {\n this.slidesChanges(this.slidesEl);\n this.slidesEl.changes.subscribe(this.slidesChanges);\n }\n get isSwiperActive() {\n return this.swiperRef && !this.swiperRef.destroyed;\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 swiperParams.onAny = (eventName, ...args) => {\n const emitter = this[('s_' + eventName)];\n if (emitter) {\n emitter.emit([...args]);\n }\n };\n const _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 if (this.slides[slideIndex]) {\n this.slides[slideIndex].classNames = classNames;\n }\n });\n this._changeDetectorRef.detectChanges();\n };\n const _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 = isEnabled(swiperRef.params.virtual);\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 if (isPlatformBrowser(this._platformId)) {\n this.swiperRef = swiperRef.init(this.elementRef.nativeElement);\n const isVirtualEnabled = isEnabled(this.swiperRef.params.virtual);\n if (this.swiperRef.virtual && isVirtualEnabled) {\n this.swiperRef.virtual.update(true);\n }\n this._changeDetectorRef.detectChanges();\n }\n });\n }\n ngOnChanges(changedParams) {\n this.updateSwiper(changedParams);\n this._changeDetectorRef.detectChanges();\n }\n updateInitSwiper(changedParams) {\n if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n this._ngZone.runOutsideAngular(() => {\n const { params: currentParams, pagination, navigation, scrollbar, virtual, thumbs, } = this.swiperRef;\n if (changedParams.pagination) {\n if (this.pagination &&\n typeof this.pagination !== 'boolean' &&\n this.pagination.el &&\n pagination &&\n !pagination.el) {\n this.updateParameter('pagination', this.pagination);\n pagination.init();\n pagination.render();\n pagination.update();\n }\n else {\n pagination.destroy();\n pagination.el = null;\n }\n }\n if (changedParams.scrollbar) {\n if (this.scrollbar &&\n typeof this.scrollbar !== 'boolean' &&\n this.scrollbar.el &&\n scrollbar &&\n !scrollbar.el) {\n this.updateParameter('scrollbar', this.scrollbar);\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n else {\n scrollbar.destroy();\n scrollbar.el = null;\n }\n }\n if (changedParams.navigation) {\n if (this.navigation &&\n typeof this.navigation !== 'boolean' &&\n this.navigation.prevEl &&\n this.navigation.nextEl &&\n navigation &&\n !navigation.prevEl &&\n !navigation.nextEl) {\n this.updateParameter('navigation', this.navigation);\n navigation.init();\n navigation.update();\n }\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)\n thumbs.update(true);\n }\n if (changedParams.controller && this.controller && this.controller.control) {\n this.swiperRef.controller.control = this.controller.control;\n }\n this.swiperRef.update();\n });\n }\n updateSwiper(changedParams) {\n this._ngZone.runOutsideAngular(() => {\n var _a, _b;\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 = (_b = (_a = changedParams[key]) === null || _a === void 0 ? void 0 : _a.currentValue) !== null && _b !== void 0 ? _b : changedParams[key];\n this.updateParameter(key, newValue);\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 if (changedParams.thumbs || changedParams.controller) {\n this.updateInitSwiper(changedParams);\n }\n this.swiperRef.update();\n });\n }\n calcLoopedSlides() {\n if (!this.loop) {\n return false;\n }\n let slidesPerViewParams = this.slidesPerView;\n if (this.breakpoints) {\n const breakpoint = Swiper.prototype.getBreakpoint(this.breakpoints);\n const breakpointOnlyParams = 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 false;\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 true;\n }\n updateParameter(key, value) {\n if (!(this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n const _key = key.replace(/^_/, '');\n const isCurrentParamObj = isObject(this.swiperRef.params[_key]);\n if (_key === 'enabled') {\n if (value === true) {\n this.swiperRef.enable();\n }\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 }\n else {\n this.swiperRef.params[_key] = value;\n }\n }\n ngOnDestroy() {\n this._ngZone.runOutsideAngular(() => {\n var _a;\n (_a = this.swiperRef) === null || _a === void 0 ? void 0 : _a.destroy(true, false);\n });\n }\n}\nSwiperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: SwiperComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nSwiperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.11\", type: SwiperComponent, selector: \"swiper, [swiper]\", inputs: { enabled: \"enabled\", on: \"on\", 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\", maxBackfaceHiddenSlides: \"maxBackfaceHiddenSlides\", 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\", loopedSlidesLimit: \"loopedSlidesLimit\", loopFillGroupWithBlank: \"loopFillGroupWithBlank\", loopPreventsSlide: \"loopPreventsSlide\", rewind: \"rewind\", 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\", slidesPerGroupAuto: \"slidesPerGroupAuto\", class: \"class\", id: \"id\", navigation: \"navigation\", pagination: \"pagination\", scrollbar: \"scrollbar\", virtual: \"virtual\", 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_autoplayPause: \"autoplayPause\", s_autoplayResume: \"autoplayResume\", 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_navigationPrev: \"navigationPrev\", s_navigationNext: \"navigationNext\", 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\", s_lock: \"lock\", s_unlock: \"unlock\" }, 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: [\"swiper{display:block}\\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 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: SwiperComponent, decorators: [{\n type: Component,\n args: [{ selector: 'swiper, [swiper]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\n `\n swiper {\n display: block;\n }\n `,\n ], 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\" }]\n }], ctorParameters: function () {\n return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }];\n }, propDecorators: { enabled: [{\n type: Input\n }], on: [{\n type: Input\n }], direction: [{\n type: Input\n }], touchEventsTarget: [{\n type: Input\n }], initialSlide: [{\n type: Input\n }], speed: [{\n type: Input\n }], cssMode: [{\n type: Input\n }], updateOnWindowResize: [{\n type: Input\n }], resizeObserver: [{\n type: Input\n }], nested: [{\n type: Input\n }], focusableElements: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], preventInteractionOnTransition: [{\n type: Input\n }], userAgent: [{\n type: Input\n }], url: [{\n type: Input\n }], edgeSwipeDetection: [{\n type: Input\n }], edgeSwipeThreshold: [{\n type: Input\n }], freeMode: [{\n type: Input\n }], autoHeight: [{\n type: Input\n }], setWrapperSize: [{\n type: Input\n }], virtualTranslate: [{\n type: Input\n }], effect: [{\n type: Input\n }], breakpoints: [{\n type: Input\n }], spaceBetween: [{\n type: Input\n }], slidesPerView: [{\n type: Input\n }], maxBackfaceHiddenSlides: [{\n type: Input\n }], grid: [{\n type: Input\n }], slidesPerGroup: [{\n type: Input\n }], slidesPerGroupSkip: [{\n type: Input\n }], centeredSlides: [{\n type: Input\n }], centeredSlidesBounds: [{\n type: Input\n }], slidesOffsetBefore: [{\n type: Input\n }], slidesOffsetAfter: [{\n type: Input\n }], normalizeSlideIndex: [{\n type: Input\n }], centerInsufficientSlides: [{\n type: Input\n }], watchOverflow: [{\n type: Input\n }], roundLengths: [{\n type: Input\n }], touchRatio: [{\n type: Input\n }], touchAngle: [{\n type: Input\n }], simulateTouch: [{\n type: Input\n }], shortSwipes: [{\n type: Input\n }], longSwipes: [{\n type: Input\n }], longSwipesRatio: [{\n type: Input\n }], longSwipesMs: [{\n type: Input\n }], followFinger: [{\n type: Input\n }], allowTouchMove: [{\n type: Input\n }], threshold: [{\n type: Input\n }], touchMoveStopPropagation: [{\n type: Input\n }], touchStartPreventDefault: [{\n type: Input\n }], touchStartForcePreventDefault: [{\n type: Input\n }], touchReleaseOnEdges: [{\n type: Input\n }], uniqueNavElements: [{\n type: Input\n }], resistance: [{\n type: Input\n }], resistanceRatio: [{\n type: Input\n }], watchSlidesProgress: [{\n type: Input\n }], grabCursor: [{\n type: Input\n }], preventClicks: [{\n type: Input\n }], preventClicksPropagation: [{\n type: Input\n }], slideToClickedSlide: [{\n type: Input\n }], preloadImages: [{\n type: Input\n }], updateOnImagesReady: [{\n type: Input\n }], loop: [{\n type: Input\n }], loopAdditionalSlides: [{\n type: Input\n }], loopedSlides: [{\n type: Input\n }], loopedSlidesLimit: [{\n type: Input\n }], loopFillGroupWithBlank: [{\n type: Input\n }], loopPreventsSlide: [{\n type: Input\n }], rewind: [{\n type: Input\n }], allowSlidePrev: [{\n type: Input\n }], allowSlideNext: [{\n type: Input\n }], swipeHandler: [{\n type: Input\n }], noSwiping: [{\n type: Input\n }], noSwipingClass: [{\n type: Input\n }], noSwipingSelector: [{\n type: Input\n }], passiveListeners: [{\n type: Input\n }], containerModifierClass: [{\n type: Input\n }], slideClass: [{\n type: Input\n }], slideBlankClass: [{\n type: Input\n }], slideActiveClass: [{\n type: Input\n }], slideDuplicateActiveClass: [{\n type: Input\n }], slideVisibleClass: [{\n type: Input\n }], slideDuplicateClass: [{\n type: Input\n }], slideNextClass: [{\n type: Input\n }], slideDuplicateNextClass: [{\n type: Input\n }], slidePrevClass: [{\n type: Input\n }], slideDuplicatePrevClass: [{\n type: Input\n }], wrapperClass: [{\n type: Input\n }], runCallbacksOnInit: [{\n type: Input\n }], observeParents: [{\n type: Input\n }], observeSlideChildren: [{\n type: Input\n }], a11y: [{\n type: Input\n }], autoplay: [{\n type: Input\n }], controller: [{\n type: Input\n }], coverflowEffect: [{\n type: Input\n }], cubeEffect: [{\n type: Input\n }], fadeEffect: [{\n type: Input\n }], flipEffect: [{\n type: Input\n }], creativeEffect: [{\n type: Input\n }], cardsEffect: [{\n type: Input\n }], hashNavigation: [{\n type: Input\n }], history: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], lazy: [{\n type: Input\n }], mousewheel: [{\n type: Input\n }], parallax: [{\n type: Input\n }], thumbs: [{\n type: Input\n }], zoom: [{\n type: Input\n }], slidesPerGroupAuto: [{\n type: Input\n }], class: [{\n type: Input\n }], id: [{\n type: Input\n }], navigation: [{\n type: Input\n }], pagination: [{\n type: Input\n }], scrollbar: [{\n type: Input\n }], virtual: [{\n type: Input\n }], config: [{\n type: Input\n }], s__beforeBreakpoint: [{\n type: Output,\n args: ['_beforeBreakpoint']\n }], s__containerClasses: [{\n type: Output,\n args: ['_containerClasses']\n }], s__slideClass: [{\n type: Output,\n args: ['_slideClass']\n }], s__swiper: [{\n type: Output,\n args: ['_swiper']\n }], s_activeIndexChange: [{\n type: Output,\n args: ['activeIndexChange']\n }], s_afterInit: [{\n type: Output,\n args: ['afterInit']\n }], s_autoplay: [{\n type: Output,\n args: ['autoplay']\n }], s_autoplayStart: [{\n type: Output,\n args: ['autoplayStart']\n }], s_autoplayStop: [{\n type: Output,\n args: ['autoplayStop']\n }], s_autoplayPause: [{\n type: Output,\n args: ['autoplayPause']\n }], s_autoplayResume: [{\n type: Output,\n args: ['autoplayResume']\n }], s_beforeDestroy: [{\n type: Output,\n args: ['beforeDestroy']\n }], s_beforeInit: [{\n type: Output,\n args: ['beforeInit']\n }], s_beforeLoopFix: [{\n type: Output,\n args: ['beforeLoopFix']\n }], s_beforeResize: [{\n type: Output,\n args: ['beforeResize']\n }], s_beforeSlideChangeStart: [{\n type: Output,\n args: ['beforeSlideChangeStart']\n }], s_beforeTransitionStart: [{\n type: Output,\n args: ['beforeTransitionStart']\n }], s_breakpoint: [{\n type: Output,\n args: ['breakpoint']\n }], s_changeDirection: [{\n type: Output,\n args: ['changeDirection']\n }], s_click: [{\n type: Output,\n args: ['click']\n }], s_doubleTap: [{\n type: Output,\n args: ['doubleTap']\n }], s_doubleClick: [{\n type: Output,\n args: ['doubleClick']\n }], s_destroy: [{\n type: Output,\n args: ['destroy']\n }], s_fromEdge: [{\n type: Output,\n args: ['fromEdge']\n }], s_hashChange: [{\n type: Output,\n args: ['hashChange']\n }], s_hashSet: [{\n type: Output,\n args: ['hashSet']\n }], s_imagesReady: [{\n type: Output,\n args: ['imagesReady']\n }], s_init: [{\n type: Output,\n args: ['init']\n }], s_keyPress: [{\n type: Output,\n args: ['keyPress']\n }], s_lazyImageLoad: [{\n type: Output,\n args: ['lazyImageLoad']\n }], s_lazyImageReady: [{\n type: Output,\n args: ['lazyImageReady']\n }], s_loopFix: [{\n type: Output,\n args: ['loopFix']\n }], s_momentumBounce: [{\n type: Output,\n args: ['momentumBounce']\n }], s_navigationHide: [{\n type: Output,\n args: ['navigationHide']\n }], s_navigationShow: [{\n type: Output,\n args: ['navigationShow']\n }], s_navigationPrev: [{\n type: Output,\n args: ['navigationPrev']\n }], s_navigationNext: [{\n type: Output,\n args: ['navigationNext']\n }], s_observerUpdate: [{\n type: Output,\n args: ['observerUpdate']\n }], s_orientationchange: [{\n type: Output,\n args: ['orientationchange']\n }], s_paginationHide: [{\n type: Output,\n args: ['paginationHide']\n }], s_paginationRender: [{\n type: Output,\n args: ['paginationRender']\n }], s_paginationShow: [{\n type: Output,\n args: ['paginationShow']\n }], s_paginationUpdate: [{\n type: Output,\n args: ['paginationUpdate']\n }], s_progress: [{\n type: Output,\n args: ['progress']\n }], s_reachBeginning: [{\n type: Output,\n args: ['reachBeginning']\n }], s_reachEnd: [{\n type: Output,\n args: ['reachEnd']\n }], s_realIndexChange: [{\n type: Output,\n args: ['realIndexChange']\n }], s_resize: [{\n type: Output,\n args: ['resize']\n }], s_scroll: [{\n type: Output,\n args: ['scroll']\n }], s_scrollbarDragEnd: [{\n type: Output,\n args: ['scrollbarDragEnd']\n }], s_scrollbarDragMove: [{\n type: Output,\n args: ['scrollbarDragMove']\n }], s_scrollbarDragStart: [{\n type: Output,\n args: ['scrollbarDragStart']\n }], s_setTransition: [{\n type: Output,\n args: ['setTransition']\n }], s_setTranslate: [{\n type: Output,\n args: ['setTranslate']\n }], s_slideChange: [{\n type: Output,\n args: ['slideChange']\n }], s_slideChangeTransitionEnd: [{\n type: Output,\n args: ['slideChangeTransitionEnd']\n }], s_slideChangeTransitionStart: [{\n type: Output,\n args: ['slideChangeTransitionStart']\n }], s_slideNextTransitionEnd: [{\n type: Output,\n args: ['slideNextTransitionEnd']\n }], s_slideNextTransitionStart: [{\n type: Output,\n args: ['slideNextTransitionStart']\n }], s_slidePrevTransitionEnd: [{\n type: Output,\n args: ['slidePrevTransitionEnd']\n }], s_slidePrevTransitionStart: [{\n type: Output,\n args: ['slidePrevTransitionStart']\n }], s_slideResetTransitionStart: [{\n type: Output,\n args: ['slideResetTransitionStart']\n }], s_slideResetTransitionEnd: [{\n type: Output,\n args: ['slideResetTransitionEnd']\n }], s_sliderMove: [{\n type: Output,\n args: ['sliderMove']\n }], s_sliderFirstMove: [{\n type: Output,\n args: ['sliderFirstMove']\n }], s_slidesLengthChange: [{\n type: Output,\n args: ['slidesLengthChange']\n }], s_slidesGridLengthChange: [{\n type: Output,\n args: ['slidesGridLengthChange']\n }], s_snapGridLengthChange: [{\n type: Output,\n args: ['snapGridLengthChange']\n }], s_snapIndexChange: [{\n type: Output,\n args: ['snapIndexChange']\n }], s_tap: [{\n type: Output,\n args: ['tap']\n }], s_toEdge: [{\n type: Output,\n args: ['toEdge']\n }], s_touchEnd: [{\n type: Output,\n args: ['touchEnd']\n }], s_touchMove: [{\n type: Output,\n args: ['touchMove']\n }], s_touchMoveOpposite: [{\n type: Output,\n args: ['touchMoveOpposite']\n }], s_touchStart: [{\n type: Output,\n args: ['touchStart']\n }], s_transitionEnd: [{\n type: Output,\n args: ['transitionEnd']\n }], s_transitionStart: [{\n type: Output,\n args: ['transitionStart']\n }], s_update: [{\n type: Output,\n args: ['update']\n }], s_zoomChange: [{\n type: Output,\n args: ['zoomChange']\n }], s_swiper: [{\n type: Output,\n args: ['swiper']\n }], s_lock: [{\n type: Output,\n args: ['lock']\n }], s_unlock: [{\n type: Output,\n args: ['unlock']\n }], prevElRef: [{\n type: ViewChild,\n args: ['prevElRef', { static: false }]\n }], nextElRef: [{\n type: ViewChild,\n args: ['nextElRef', { static: false }]\n }], scrollbarElRef: [{\n type: ViewChild,\n args: ['scrollbarElRef', { static: false }]\n }], paginationElRef: [{\n type: ViewChild,\n args: ['paginationElRef', { static: false }]\n }], slidesEl: [{\n type: ContentChildren,\n args: [SwiperSlideDirective, { descendants: false, emitDistinctChangesOnly: true }]\n }], containerClasses: [{\n type: HostBinding,\n args: ['class']\n }] } });\n\nclass SwiperModule {\n}\nSwiperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: SwiperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSwiperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: SwiperModule, declarations: [SwiperComponent, SwiperSlideDirective], imports: [CommonModule], exports: [SwiperComponent, SwiperSlideDirective] });\nSwiperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: SwiperModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: SwiperModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SwiperComponent, SwiperSlideDirective],\n exports: [SwiperComponent, SwiperSlideDirective],\n imports: [CommonModule],\n }]\n }] });\n\n/*\n * Public API Surface of angular\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { SwiperComponent, SwiperModule, SwiperSlideDirective };\n","\n 0 || alwaysShow\">\n \n \n {{title}}\n \n \n \n {{t('prev-items')}}\n {{t('next-items')}}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { Swiper, SwiperEvents } from 'swiper/types';\nimport { SwiperModule } from 'swiper/angular';\nimport { NgIf, NgClass, NgFor, NgTemplateOutlet } from '@angular/common';\nimport {TranslocoDirective} from \"@ngneat/transloco\";\n\n@Component({\n selector: 'app-carousel-reel',\n templateUrl: './carousel-reel.component.html',\n styleUrls: ['./carousel-reel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgClass, SwiperModule, NgFor, NgTemplateOutlet, TranslocoDirective]\n})\nexport class CarouselReelComponent {\n\n @ContentChild('carouselItem') carouselItemTemplate!: TemplateRef;\n @ContentChild('promptToAdd') promptToAddTemplate!: TemplateRef;\n @Input() items: any[] = [];\n @Input() title = '';\n @Input() clickableTitle: boolean = true;\n @Input() iconClasses = '';\n /**\n * Show's the carousel component even if there is nothing in it\n */\n @Input() alwaysShow = false;\n /**\n * Track by identity. By default, this has an implementation based on title, item's name, pagesRead, and index\n */\n @Input() trackByIdentity: (index: number, item: any) => string = (index: number, item: any) => `${this.title}_${item.id}_${item?.name}_${item?.pagesRead}_${index}`;\n @Output() sectionClick = new EventEmitter();\n\n swiper: Swiper | undefined;\n\n\n\n constructor(private readonly cdRef: ChangeDetectorRef) {}\n\n nextPage() {\n if (this.swiper) {\n if (this.swiper.isEnd) return;\n this.swiper.setProgress(this.swiper.progress + 0.25, 600);\n this.cdRef.markForCheck();\n }\n }\n\n prevPage() {\n if (this.swiper) {\n if (this.swiper.isBeginning) return;\n this.swiper.setProgress(this.swiper.progress - 0.25, 600);\n this.cdRef.markForCheck();\n }\n }\n\n sectionClicked(event: any) {\n this.sectionClick.emit(this.title);\n }\n\n onSwiper(eventParams: Parameters) {\n [this.swiper] = eventParams;\n this.cdRef.detectChanges();\n }\n}\n"],"x_google_ignoreList":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68]}