{"version":3,"sources":["webpack:///./src/views/apps/e-commerce/e-commerce-product-details/ECommerceProductDetails.vue?ae01","webpack:///./src/@core/components/app-timeline/AppTimelineItem.vue?eb4f","webpack:///src/@core/components/app-timeline/AppTimelineItem.vue","webpack:///./src/@core/components/app-timeline/AppTimelineItem.vue?6f82","webpack:///./src/@core/components/app-timeline/AppTimelineItem.vue","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-img.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/tfoot.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-bottom-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-busy.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-empty.js","webpack:///./node_modules/bootstrap-vue/esm/utils/stringify-object-values.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/sanitize-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/stringify-record-values.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-filtering.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-pagination.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-provider.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-selectable.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-sorting.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/default-sort-compare.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-top-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/table.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tbody-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tbody.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-caption.js","webpack:///./src/views/apps/e-commerce/e-commerce-product-details/ECommerceProductDetailsRelatedProducts.vue?07ac","webpack:///./node_modules/bootstrap-vue/esm/components/image/img.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-title.js","webpack:///./node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./node_modules/bootstrap-vue/esm/components/collapse/collapse.js","webpack:///./node_modules/bootstrap-vue/esm/constants/classes.js","webpack:///./node_modules/bootstrap-vue/esm/components/collapse/helpers/bv-collapse.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/normalize-fields.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-items.js","webpack:///./node_modules/bootstrap-vue/esm/components/alert/alert.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-body.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-footer.js","webpack:///./src/@core/components/app-timeline/AppTimeline.vue?b4c0","webpack:///./node_modules/vue-awesome-swiper/dist/vue-awesome-swiper.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/constants.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tfoot.js","webpack:///./node_modules/bootstrap-vue/esm/components/breadcrumb/breadcrumb-link.js","webpack:///./node_modules/bootstrap-vue/esm/components/breadcrumb/breadcrumb-item.js","webpack:///./src/views/apps/e-commerce/e-commerce-shop/useECommerceShop.js","webpack:///./src/@core/components/app-collapse/AppCollapseItem.vue?c435","webpack:///src/@core/components/app-collapse/AppCollapseItem.vue","webpack:///./src/@core/components/app-collapse/AppCollapseItem.vue?c790","webpack:///./src/@core/components/app-collapse/AppCollapseItem.vue","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/filter-event.js","webpack:///./node_modules/bootstrap-vue/esm/components/layout/col.js","webpack:///./node_modules/ssr-window/dist/ssr-window.esm.js","webpack:///./node_modules/dom7/dist/dom7.modular.js","webpack:///./node_modules/swiper/js/swiper.esm.bundle.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-header.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-sub-title.js","webpack:///./src/@core/components/app-timeline/AppTimelineItem.vue?6840","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-thead.js","webpack:///./src/@core/components/app-collapse/AppCollapse.vue?eb5c","webpack:///src/@core/components/app-collapse/AppCollapse.vue","webpack:///./src/@core/components/app-collapse/AppCollapse.vue?1c46","webpack:///./src/@core/components/app-collapse/AppCollapse.vue","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./src/@core/utils/utils.js","webpack:///./src/views/apps/e-commerce/e-commerce-product-details/ECommerceProductDetails.vue?e805","webpack:///./node_modules/@babel/runtime/helpers/esm/readOnlyError.js","webpack:///./src/views/apps/e-commerce/e-commerce-product-details/ECommerceProductDetailsItemFeatures.vue?52b2","webpack:///src/views/apps/e-commerce/e-commerce-product-details/ECommerceProductDetailsItemFeatures.vue","webpack:///./src/views/apps/e-commerce/e-commerce-product-details/ECommerceProductDetailsItemFeatures.vue?19c2","webpack:///./src/views/apps/e-commerce/e-commerce-product-details/ECommerceProductDetailsItemFeatures.vue","webpack:///./src/views/apps/e-commerce/e-commerce-product-details/ECommerceProductDetailsRelatedProducts.vue?2cd5","webpack:///src/views/apps/e-commerce/e-commerce-product-details/ECommerceProductDetailsRelatedProducts.vue","webpack:///./src/views/apps/e-commerce/e-commerce-product-details/ECommerceProductDetailsRelatedProducts.vue?8f0f","webpack:///./src/views/apps/e-commerce/e-commerce-product-details/ECommerceProductDetailsRelatedProducts.vue","webpack:///src/views/apps/e-commerce/e-commerce-product-details/ECommerceProductDetails.vue","webpack:///./src/views/apps/e-commerce/e-commerce-product-details/ECommerceProductDetails.vue?ae2d","webpack:///./src/views/apps/e-commerce/e-commerce-product-details/ECommerceProductDetails.vue","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/text-selection-active.js","webpack:///./node_modules/bootstrap-vue/esm/components/carousel/carousel.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/card.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-colgroup.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-text.js","webpack:///./node_modules/bootstrap-vue/esm/components/breadcrumb/breadcrumb.js","webpack:///./src/views/apps/e-commerce/useEcommerce.js","webpack:///./src/@core/components/app-timeline/AppTimeline.vue?5cbe","webpack:///src/@core/components/app-timeline/AppTimeline.vue","webpack:///./src/@core/components/app-timeline/AppTimeline.vue?1052","webpack:///./src/@core/components/app-timeline/AppTimeline.vue","webpack:///./node_modules/bootstrap-vue/esm/components/badge/badge.js","webpack:///./node_modules/uuid/dist/esm-browser/rng.js","webpack:///./node_modules/uuid/dist/esm-browser/regex.js","webpack:///./node_modules/uuid/dist/esm-browser/validate.js","webpack:///./node_modules/uuid/dist/esm-browser/stringify.js","webpack:///./node_modules/uuid/dist/esm-browser/v4.js","webpack:///./node_modules/bootstrap-vue/esm/utils/noop.js","webpack:///./node_modules/bootstrap-vue/esm/components/carousel/carousel-slide.js"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","class","variant","fillBorder","icon","attrs","_t","domProps","_s","title","time","subtitle","staticRenderFns","props","type","String","default","Boolean","component","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","configurable","writable","bottom","end","start","top","BCardImg","extend","name","functional","h","_ref","data","src","alt","width","height","baseClass","right","left","cardImgProps","bind","imgSrc","required","card","align","noBody","BCard","_class","slots","scopedSlots","imgLeft","imgRight","imgStart","imgEnd","imgBottom","header","headerHtml","footer","footerHtml","textVariant","bgVariant","borderVariant","$scopedSlots","$slots","slotScope","$imgFirst","$imgLast","$img","$header","hasHeaderSlot","html","$content","overlay","$footer","hasFooterSlot","tag","concat","footVariant","BTfoot","mixins","provide","bvTableRowGroup","inject","bvTable","inheritAttrs","computed","isTfoot","isDark","dark","isStacked","isResponsive","isStickyHeader","hasStickyHeader","stickyHeader","tableVariant","tfootClasses","tfootAttrs","bvAttrs","role","on","bvListeners","normalizeSlot","bottomRowMixin","methods","renderBottomRow","fields","computedFields","stacked","tbodyTrClass","tbodyTrAttr","hasNormalizedSlot","columns","MODEL_PROP_NAME_BUSY","MODEL_EVENT_NAME_BUSY","busyMixin","localBusy","computedBusy","watch","newValue","oldValue","$emit","stopIfBusy","event","renderBusy","colspan","emptyFilteredHtml","emptyFilteredText","emptyHtml","emptyText","showEmpty","emptyMixin","renderEmpty","items","computedItems","$empty","isFiltered","stringifyObjectValues","sort","map","k","v","join","row","ignoreFields","includeFields","fieldsObj","undefined","formattedRow","reduce","result","field","filterByFormatted","formatter","allowedKeys","array","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","o","minLen","_arrayLikeToArray","n","prototype","toString","call","slice","constructor","Array","from","test","iter","Symbol","iterator","isArray","len","arr2","DEBOUNCE_DEPRECATED_MSG","filterDebounce","filterFunction","filterIgnoredFields","filterIncludedFields","filteringMixin","localFilter","filterSanitize","computedFilterIgnored","identity","computedFilterIncluded","computedFilterDebounce","ms","warn","localFiltering","hasProvider","noProviderFiltering","filteredCheck","filteredItems","localItems","localFilterFn","criteria","filterFn","filterFnFactory","defaultFilterFnFactory","$_filterTimer","clearFilterTimer","deep","handler","newCriteria","_this","timeout","setTimeout","created","_this2","$nextTick","beforeDestroy","clearTimeout","fn","item","_this3","regExp","pattern","replace","RegExp","lastIndex","computedFieldsObj","currentPage","perPage","paginationMixin","localPaging","noProviderPaging","paginatedItems","sortedItems","math","ROOT_EVENT_NAME_REFRESHED","ROOT_ACTION_EVENT_NAME_REFRESH","apiUrl","noProviderSorting","providerMixin","providerTriggerContext","ctx","sortBy","sortDesc","localSortBy","localSortDesc","_providerUpdate","mounted","listenOnRoot","id","refresh","$off","$on","clearSelected","_providerSetLocal","emitOnRoot","context","then","e","message","_props","_watch","SELECT_MODES","noSelectOnClick","selectMode","selectable","selectedVariant","selectableMixin","selectedRows","selectedLastRow","isSelectable","hasSelectableRowClick","supportsSelectableRows","selectableHasSelection","some","selectableIsMultiSelect","selectableTableClasses","selectableTableAttrs","equal","setSelectionHandlers","_selectedRows","idx","beforeMount","selectRow","index","isRowSelected","selectedLastClicked","unselectRow","selectAllRows","selectableRowClasses","selectableRowAttrs","method","selectionHandler","selected","shiftKey","ctrlKey","metaKey","a","b","_ref$sortBy","_ref$formatter","_ref$locale","locale","_ref$localeOptions","localeOptions","_ref$nullLast","nullLast","aa","get","bb","localeCompare","MODEL_PROP_NAME_SORT_BY","MODEL_EVENT_NAME_SORT_BY","MODEL_PROP_NAME_SORT_DESC","MODEL_EVENT_NAME_SORT_DESC","SORT_DIRECTION_ASC","SORT_DIRECTION_DESC","SORT_DIRECTION_LAST","SORT_DIRECTIONS","labelSortAsc","labelSortClear","labelSortDesc","noFooterSorting","noLocalSorting","noSortReset","numeric","sortingMixin","localSorting","isSortable","f","sortable","sortCompareLocale","sortNullLast","sortCompare","sortCompareOptions","usage","sortByFormatted","getFieldFormatter","handleSort","isFoot","sortChanged","toggleLocalSortDesc","sortDirection","sortKey","sortTheadThClasses","sortIconLeft","sortTheadThAttrs","ariaSort","sortTheadThLabel","labelSorting","topRowMixin","renderTopRow","BTable","detailsTdClass","tbodyRowMixin","getTdValues","tdValue","defaultValue","$parent","getThValues","thValue","getFormattedValue","toggleDetailsFactory","hasDetailsSlot","$set","rowHovered","tbodyRowEvtStopped","emitTbodyRowEvent","rowUnhovered","renderTbodyRowCell","colIndex","rowIndex","label","isRowHeader","formatted","stickyColumn","cellTag","cellVariant","tdClass","thAttr","tdAttr","stackedHeading","scope","unformatted","toggleDetails","detailsShowing","rowSelected","slotName","$_bodyFieldSlotNameCache","$childNodes","renderTbodyRow","striped","primaryKey","rowShowDetails","hasRowClickHandler","$listeners","$rows","detailsId","safeId","$tds","ariaRowIndex","primaryKeyValue","rowKey","rowId","selectableClasses","selectableAttrs","userTrClasses","userTrAttrs","tabindex","mouseenter","mouseleave","ref","refInFor","detailsScope","$details","userDetailsTrClasses","userDetailsTrAttrs","getCellSlotName","tbodyClass","tbodyMixin","getTbodyTrs","$refs","tbody","$el","trs","tr","children","getTbodyTrIndex","el","tagName","indexOf","hasListener","onTbodyRowKeydown","keyCode","tabIndex","onTBodyRowClicked","shift","onTbodyRowMiddleMouseRowClicked","which","onTbodyRowContextmenu","onTbodyRowDblClicked","renderTbody","$busy","cache","defaultSlotName","lowercaseSlotName","toLowerCase","handlers","auxclick","contextmenu","dblclick","click","keydown","$tbody","$props","caption","captionHtml","captionMixin","captionId","renderCaption","$caption","hasCaptionSlot","BLANK_TEMPLATE","makeBlankImgSrc","color","encodeURIComponent","blank","blankColor","block","center","fluid","fluidGrow","rounded","sizes","srcset","thumbnail","BImg","titleTag","BCardTitle","DESCRIPTORS","global","isForced","inheritIfRequired","getOwnPropertyNames","isRegExp","getFlags","stickyHelpers","redefine","fails","setInternalState","set","setSpecies","wellKnownSymbol","MATCH","NativeRegExp","RegExpPrototype","re1","re2","CORRECT_NEW","UNSUPPORTED_Y","FORCED","RegExpWrapper","flags","sticky","thisIsRegExp","patternIsRegExp","flagsAreUndefined","proxy","it","CLASS_NAME_SHOW","scrollHeight","TRANSITION_PROPS","css","enterClass","enterActiveClass","enterToClass","leaveClass","leaveActiveClass","leaveToClass","TRANSITION_HANDLERS","enter","afterEnter","leave","afterLeave","BVCollapse","appear","ROOT_ACTION_EVENT_NAME_TOGGLE","ROOT_ACTION_EVENT_NAME_REQUEST_STATE","ROOT_EVENT_NAME_ACCORDION","ROOT_EVENT_NAME_STATE","ROOT_EVENT_NAME_SYNC_STATE","_makeModelMixin","modelMixin","mixin","modelProps","MODEL_PROP_NAME","prop","MODEL_EVENT_NAME","accordion","isNav","BCollapse","show","transitioning","classObject","collapse","visible","close","emitState","handleToggleEvt","handleAccordionEvt","setWindowEvents","handleResize","emitSync","updated","deactivated","activated","window","toggle","onEnter","onAfterEnter","onLeave","onAfterLeave","checkDisplayBlock","restore","isBlock","display","clickHandler","openedId","openAccordion","isThis","directives","origFields","sample","memo","itemsMixin","parseCountDown","parseShow","dismissLabel","dismissible","fade","BAlert","countDown","localShow","clearCountDownInterval","$_countDownTimeout","dismiss","$alert","$dismissButton","noFade","bodyClass","BCardBody","_ref2","bodyBgVariant","bodyBorderVariant","bodyTextVariant","$title","$subTitle","subTitle","bodyTag","footerClass","BCardFooter","footerBgVariant","footerBorderVariant","footerTextVariant","footerTag","g","exports","SwiperClass","Vue","CoreNames","hasOwnProperty","ComponentEvents","ComponentPropNames","DEFAULT_CLASSES","freeze","containerClass","wrapperClass","slideClass","SWIPER_EVENTS","__spreadArrays","s","il","r","j","jl","SlotNames","kebabcase","string","handleClickSlideEvent","swiper","emit","_a","_b","eventPath","composedPath","path","slides_1","slides","paths","includes","clickedIndex","reallyIndex","Number","clickedSlide","dataset","swiperSlideIndex","reallyIndexValue","isInteger","ClickSlide","bindSwiperEvents","eventName","arguments$1","args","_i","kebabcaseName","INSTANCE_NAME_KEY","getDirective","globalOptions","getStandardisedOptionByAttrs","vnode","_d","getSwiperInstanceName","element","binding","arg","SwiperInstance","getSwiperInstance","instanceName","getSwipeOptions","getBooleanValueByInput","input","getEventEmiter","componentOptions","listeners","handle","fns","className","addEventListener","emitEvent","inserted","swiperOptions","vueContext","destroyed","Ready","componentUpdated","_e","_f","_g","_j","_k","_l","_m","autoUpdate","AutoUpdate","isLoop","loop","loopDestroy","update","navigation","pagination","loopCreate","unbind","autoDestroy","AutoDestroy","initialized","destroy","DeleteInstanceOnDestroy","CleanupStylesOnDestroy","getSwiperComponent","SwiperComponent","defaultOptions","options","swiperInstance","handleSwiperClick","autoReLoopSwiper","updateSwiper","destroySwiper","initSwiper","createElement","ParallaxBg","Pagination","PrevButton","NextButton","Scrollbar","SwiperSlideComponent","parent","getInstaller","install","installed","directive","SwiperDirective","exporter","version","VueAwesomeSwiper","Swiper","SwiperSlide","FIELD_KEY_CELL_VARIANT","FIELD_KEY_ROW_VARIANT","FIELD_KEY_SHOW_DETAILS","IGNORED_FIELD_KEYS","EVENT_FILTER","footClone","footRowVariant","tfootClass","tfootTrClass","tfootMixin","renderTFootCustom","headVariant","renderTfoot","renderThead","ariaCurrent","text","BBreadcrumbLink","suppliedProps","active","componentData","BBreadcrumbItem","useShopFiltersSortingAndPagination","filters","q","priceRangeDefined","priceRange","categories","brands","gender","ratings","page","filterOptions","rating","count","sortByOptions","useShopUi","itemView","itemViewOptions","totalProducts","useShopRemoteData","products","fetchProducts","store","dispatch","collapseOpen","collapseClose","collapseItemID","$event","updateVisible","_v","model","callback","$$v","expression","components","BCardHeader","isVisible","openOnHover","hover","val","TABLE_TAG_NAMES","filterEvent","disabled","labelFor","ALIGN_SELF_VALUES","computeBreakpoint","breakpoint","computeBreakpointClass","breakpointPropMap","generateProps","breakpoints","breakpointCol","breakpointOffset","breakpointOrder","col","offset","order","alignSelf","cols","BCol","_classList$push","classList","_keys","c","hasColClasses","isObject","doc","document","ssrDocument","body","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","win","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","matchMedia","Dom7","self","$","selector","els","tempParent","trim","toCreate","innerHTML","match","split","nodeType","unique","uniqueArray","addClass","classes","add","removeClass","remove","hasClass","contains","toggleClass","attr","getAttribute","attrName","removeAttr","removeAttribute","dom7ElementDataStorage","dataKey","transform","elStyle","webkitTransform","transition","duration","webkitTransitionDuration","transitionDuration","eventType","targetSelector","listener","capture","handleLiveEvent","eventData","dom7EventData","unshift","is","parents","handleEvent","events","dom7LiveListeners","proxyListener","dom7Listeners","off","dom7proxy","splice","trigger","evt","detail","bubbles","cancelable","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","includeMargins","styles","offsetWidth","parseFloat","offsetHeight","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","each","matchedItems","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parentNode","closest","find","foundElements","found","removeChild","toAdd","Class","Methods","outerWidth","outerHeight","methodName","Utils","delay","now","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","url","query","params","param","urlToParse","paramsPart","decodeURIComponent","to","nextSource","keysArray","nextIndex","nextKey","desc","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","observer","passiveListener","supportsPassive","opts","gestures","eventsListeners","priority","onceHandler","f7proxy","eventHandler","eventsArray","instanceParams","instance","modules","moduleName","module","modulesParams","moduleParams","modulePropName","moduleProp","moduleEventName","create","use","proto","static","m","installModule","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","size","updateSlides","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","slidesNumberEvenToRows","slideSize","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","Math","floor","ceil","slidesPerView","slidesPerColumnFill","max","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","min","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","paddingTop","paddingBottom","swiperSlideSize","centeredSlides","abs","slidesPerGroupSkip","newSlidesGrid","effect","setWrapperSize","slidesGridItem","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","visibleSlides","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","progress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","slideDuplicateClass","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","runCallbacksOnInit","updateClickedSlide","slideFound","slideToClickedSlide","getTranslate","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","x","y","z","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","scrollTo","behavior","onTranslateToWrapperTransitionEnd","transitionStart","direction","dir","slideTo","initialSlide","allowSlideNext","allowSlidePrev","t","scrollWidth","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopFix","_clientLeft","slidePrev","normalize","normalizedTranslate","normalizedSnapGrid","prevIndex","prevSnap","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slidesPerViewDynamic","slideToIndex","nextTick","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","snapTranslate","diff","slideChanged","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","grabCursor","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","manipulation","platform","ua","device","ios","android","androidChrome","desktop","iphone","ipod","ipad","edge","ie","firefox","macos","windows","cordova","phonegap","electron","screenWidth","screenHeight","os","osVersion","webView","standalone","webview","pixelRatio","devicePixelRatio","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","button","isTouched","isMoved","noSwiping","noSwipingSelector","noSwipingClass","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","preventDefault","formElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","PI","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","position","onTouchEnd","touchEndTime","timeDiff","lastClickTime","currentPos","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","freeModeMomentumBounceRatio","needsLoopFix","freeModeMomentumBounce","freeModeSticky","once","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","ratio","longSwipes","longSwipesRatio","shortSwipes","isNavButtonTarget","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","run","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","attachEvents","touchEvents","onClick","move","passiveListeners","passive","cancel","updateOnWindowResize","detachEvents","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","containerModifierClass","directionChanged","needsReLoop","changeDirection","points","point","minRatio","substr","innerHeight","innerWidth","addClasses","classNames","suffixes","suffix","removeClasses","loadImage","imageEl","checkForComplete","image","onReady","isPicture","complete","onload","onerror","preloadImages","imagesLoaded","imagesToLoad","updateOnImagesReady","currentSrc","wasLocked","lastSlidePosition","checkOverflow$1","defaults","init","uniqueNavElements","prototypes","images","extendedDefaults","super","prototypeGroup","protoMethod","moduleParamName","swiperParams","useModulesParams","passedParams","swipers","containerEl","newParams","shadowRoot","touchEventsTouch","touchEventsDesktop","clickTimeout","useModules","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","slideEl","deleteInstance","cleanStyles","deleteProps","newDefaults","Device$1","Support$1","support","isSafari","isEdge","isWebView","Browser$1","browser","Resize","resize","resizeHandler","orientationChangeHandler","Observer","func","MutationObserver","WebkitMutationObserver","ObserverFunc","mutations","observerUpdate","requestAnimationFrame","observe","attributes","childList","characterData","observers","observeParents","containerParents","attach","observeSlideChildren","disconnect","Observer$1","Virtual","force","addSlidesBefore","addSlidesAfter","previousFrom","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","prependIndexes","appendIndexes","$slideEl","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","Virtual$1","overwriteParams","Keyboard","kc","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","altKey","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","Keyboard$1","enable","disable","isEventSupported","isSupported","implementation","hasFeature","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","mouseEntered","mousewheel","eventsTarged","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","newEvent","sign","ignoreWheelEvents","sensitivity","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","raw","animateSlider","releaseScroll","getTime","handleMouseEnter","handleMouseLeave","Mousewheel$1","Navigation","$nextEl","$prevEl","disabledClass","lockClass","onNextClick","onPrevClick","Navigation$1","hideOnClick","hiddenClass","isHidden","current","total","paginationType","bullets","firstIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","progressbarFillClass","renderCustom","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","Pagination$1","number","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","opacity","divider","moveDivider","clientX","clientY","dragStartPos","positionRatio","getPointerPosition","setDragPosition","dragTimeout","snapOnRelease","activeListener","onDragStart","onDragMove","onDragEnd","$swiperEl","dragClass","dragEl","draggable","enableDraggable","disableDraggable","Scrollbar$1","Parallax","p","currentOpacity","currentScale","parallax","setTransform","parallaxEl","$parallaxEl","parallaxDuration","Parallax$1","Zoom","x1","y1","x2","y2","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","getDistanceBetweenTouches","$imageEl","$imageWrapEl","maxRatio","isScaling","scaleMove","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","out","in","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomedSlideClass","activeListenerWithCapture","slideSelector","onGestureStart","onGestureChange","onGestureEnd","Zoom$1","onTransitionEnd","Lazy","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","background","$pictureEl","sourceIndex","sourceEl","$source","preloaderClass","slideOriginalIndex","originalSlide","loadInSlide","duplicatedSlide","slideExist","initialImageLoaded","elIndex","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","Lazy$1","loadOnTransitionStart","Controller","LinearSpline","binarySearch","guess","i1","i3","interpolate","controller","spline","controlled","control","controlledTranslate","setControlledTranslate","by","getInterpolateFunction","inverse","setControlledTransition","Controller$1","a11y","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","notification","liveRegion","disableEl","makeElNotFocusable","enableEl","makeElFocusable","bulletEl","$bulletEl","addElRole","addElLabel","paginationBulletMessage","onEnterKey","A11y","notificationClass","updateNavigation","updatePagination","History","hashNavigation","getPathValues","scrollToSlide","setHistoryPopState","pathArray","part","slugify","currentState","state","slideHistory","History$1","setHistory","HashNavigation","newHash","activeSlideHash","slideHash","watchState","onHashCange","HashNavigation$1","setHash","Autoplay","$activeSlideEl","reverseDirection","stopOnLastSlide","waitForTransition","Autoplay$1","disableOnInteraction","pause","visibilityState","onVisibilityChange","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","EffectFade","Cube","swiperWidth","swiperHeight","cubeEffect","$cubeShadowEl","wrapperRotate","shadow","slideAngle","round","tz","slideShadows","shadowBefore","shadowAfter","shadowOffset","shadowScale","shadowAngle","sin","cos","scale1","scale2","zFactor","EffectCube","Flip","flipEffect","limitRotation","rotate","rotateY","rotateX","zIndex","EffectFlip","Coverflow","coverflowEffect","depth","slideOffset","offsetMultiplier","modifier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","prefixedPointerEvents","ws","perspectiveOrigin","EffectCoverflow","Thumbs","thumbs","thumbsParams","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","initial","autoScrollOffset","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","Thumbs$1","headerClass","headerBgVariant","headerBorderVariant","headerTextVariant","headerTag","subTitleTag","subTitleTextVariant","BCardSubTitle","getHeadSlotName","getFootSlotName","headRowVariant","theadClass","theadTrClass","theadMixin","fieldClasses","thClass","headClicked","isStackedAlways","hasHeadClickListener","makeCell","labelHtml","ariaLabel","headerTitle","sortAttrs","sortClass","sortLabel","thStyle","abbr","headerAbbr","slotNames","$srLabel","$cells","$trs","collapseClasses","collapseID","border","margin","collapseVariants","_typeof","isToday","date","today","getDate","getMonth","getFullYear","isDynamicRouteActive","route","router","resolve","resolvedRoute","currentRoute","useRouter","vm","getCurrentInstance","reactive","$route","toRefs","$router","product","meta","pageTitle","categoryName","category","brand","productCode","staticStyle","prices","originalPrice","price","star","ratingScore","totalCount","$t","rawName","colors","selectedColor","yenile","imageUrl","selectedSize","attributeValue","modifiers","stock","handleCartActionClick","isInCart","toggleProductInWishlist","isInWishlist","_u","description","productReviews","productView","userFullName","comment","commentDateISOtype","_readOnlyError","slot","BCardText","BLink","reload","trMap","setup","fetchShopProducts","1600","1300","768","320","relatedProducts","Ripple","BRow","BButton","BDropdown","BDropdownItem","BCarousel","BCarouselSlide","fetchProduct","breadcrumb","textSelectionActive","sel","containsNode","DIRECTION","dirClass","overlayClass","TRANS_DURATION","TOUCH_EVENT_COMPAT_WAIT","SWIPE_THRESHOLD","PointerType","TOUCH","PEN","TransitionEndEvents","WebkitTransition","MozTransition","OTransition","getTransitionEndEvent","controls","imgHeight","imgWidth","indicators","interval","labelGotoSlide","labelIndicators","labelNext","labelPrev","noAnimation","noHoverPause","noTouch","noWrap","bvCarousel","isSliding","transitionEndEvent","isPaused","touchStartX","touchDeltaX","numSlides","setSlide","doSlide","$_interval","$_animationTimeout","$_touchTimeout","$_observer","setObserver","clearInterval","clearAnimationTimeout","clearTouchTimeout","_clearInterval","inner","subtree","attributeFilter","hidden","$once","setInterval","restart","isCycling","calcDirection","called","onceTransEnd","curIndex","handleClick","handleSwipe","absDeltaX","touchStart","pointerType","toUpperCase","touchMove","touchEnd","idInner","$inner","$controls","makeControl","handlerWrapper","propagation","$indicators","focusin","focusout","colgroupMixin","renderColgroup","$colgroup","textTag","BBreadcrumb","activeDefined","_item","useEcommerce","addProductInWishlist","productId","removeProductFromWishlist","addProductInCart","removeProductFromCart","updateItemQuantity","qty","useEcommerceUi","commit","cartItemsCount","handleWishlistCartActionClick","removeProductFromWishlistUi","linkProps","pill","BBadge","link","getRandomValues","rnds8","Uint8Array","rng","crypto","msCrypto","Error","validate","uuid","byteToHex","stringify","v4","buf","rnds","random","noop","imgProps","imgAlt","imgBlank","imgBlankColor","captionTag","contentTag","contentVisibleUp","textHtml","contentClasses","computedWidth","computedHeight","dragstart","$contentChildren","$child"],"mappings":"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","file":"js/chunk-7f8037d7.44f843b4.js","sourcesContent":["export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ECommerceProductDetails.vue?vue&type=style&index=0&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"timeline-item\",class:[(\"timeline-variant-\" + _vm.variant), _vm.fillBorder ? (\"timeline-item-fill-border-\" + _vm.variant) : null]},[(!_vm.icon)?_c('div',{staticClass:\"timeline-item-point\"}):_c('div',{staticClass:\"timeline-item-icon d-flex align-items-center justify-content-center rounded-circle\"},[_c('feather-icon',{attrs:{\"icon\":_vm.icon}})],1),_vm._t(\"default\",[_c('div',{staticClass:\"d-flex flex-sm-row flex-column flex-wrap justify-content-between mb-1 mb-sm-0\"},[_c('h6',{domProps:{\"textContent\":_vm._s(_vm.title)}}),_c('small',{staticClass:\"timeline-item-time text-nowrap text-muted\",domProps:{\"textContent\":_vm._s(_vm.time)}})]),_c('p',{staticClass:\"mb-0\",domProps:{\"textContent\":_vm._s(_vm.subtitle)}})])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppTimelineItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppTimelineItem.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppTimelineItem.vue?vue&type=template&id=4d50203e&scoped=true&\"\nimport script from \"./AppTimelineItem.vue?vue&type=script&lang=js&\"\nexport * from \"./AppTimelineItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppTimelineItem.vue?vue&type=style&index=0&id=4d50203e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4d50203e\",\n null\n \n)\n\nexport default component.exports","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_IMG } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { pick, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { props as BImgProps } from '../image/img'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, pick(BImgProps, ['src', 'alt', 'width', 'height', 'left', 'right'])), {}, {\n bottom: makeProp(PROP_TYPE_BOOLEAN, false),\n end: makeProp(PROP_TYPE_BOOLEAN, false),\n start: makeProp(PROP_TYPE_BOOLEAN, false),\n top: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD_IMG); // --- Main component ---\n// @vue/component\n\nexport var BCardImg = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_IMG,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n var src = props.src,\n alt = props.alt,\n width = props.width,\n height = props.height;\n var baseClass = 'card-img';\n\n if (props.top) {\n baseClass += '-top';\n } else if (props.right || props.end) {\n baseClass += '-right';\n } else if (props.bottom) {\n baseClass += '-bottom';\n } else if (props.left || props.start) {\n baseClass += '-left';\n }\n\n return h('img', mergeData(data, {\n class: baseClass,\n attrs: {\n src: src,\n alt: alt,\n width: width,\n height: height\n }\n }));\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_FOOTER, SLOT_NAME_HEADER } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, pluckProps, prefixPropName, unprefixPropName } from '../../utils/props';\nimport { props as cardProps } from '../../mixins/card';\nimport { BCardBody, props as BCardBodyProps } from './card-body';\nimport { BCardHeader, props as BCardHeaderProps } from './card-header';\nimport { BCardFooter, props as BCardFooterProps } from './card-footer';\nimport { BCardImg, props as BCardImgProps } from './card-img'; // --- Props ---\n\nvar cardImgProps = copyProps(BCardImgProps, prefixPropName.bind(null, 'img'));\ncardImgProps.imgSrc.required = false;\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, BCardBodyProps), BCardHeaderProps), BCardFooterProps), cardImgProps), cardProps), {}, {\n align: makeProp(PROP_TYPE_STRING),\n noBody: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD); // --- Main component ---\n// @vue/component\n\nexport var BCard = /*#__PURE__*/Vue.extend({\n name: NAME_CARD,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var imgSrc = props.imgSrc,\n imgLeft = props.imgLeft,\n imgRight = props.imgRight,\n imgStart = props.imgStart,\n imgEnd = props.imgEnd,\n imgBottom = props.imgBottom,\n header = props.header,\n headerHtml = props.headerHtml,\n footer = props.footer,\n footerHtml = props.footerHtml,\n align = props.align,\n textVariant = props.textVariant,\n bgVariant = props.bgVariant,\n borderVariant = props.borderVariant;\n var $scopedSlots = scopedSlots || {};\n var $slots = slots();\n var slotScope = {};\n var $imgFirst = h();\n var $imgLast = h();\n\n if (imgSrc) {\n var $img = h(BCardImg, {\n props: pluckProps(cardImgProps, props, unprefixPropName.bind(null, 'img'))\n });\n\n if (imgBottom) {\n $imgLast = $img;\n } else {\n $imgFirst = $img;\n }\n }\n\n var $header = h();\n var hasHeaderSlot = hasNormalizedSlot(SLOT_NAME_HEADER, $scopedSlots, $slots);\n\n if (hasHeaderSlot || header || headerHtml) {\n $header = h(BCardHeader, {\n props: pluckProps(BCardHeaderProps, props),\n domProps: hasHeaderSlot ? {} : htmlOrText(headerHtml, header)\n }, normalizeSlot(SLOT_NAME_HEADER, slotScope, $scopedSlots, $slots));\n }\n\n var $content = normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots); // Wrap content in `` when `noBody` prop set\n\n if (!props.noBody) {\n $content = h(BCardBody, {\n props: pluckProps(BCardBodyProps, props)\n }, $content); // When the `overlap` prop is set we need to wrap the `` and ``\n // into a relative positioned wrapper to don't distract a potential header or footer\n\n if (props.overlay && imgSrc) {\n $content = h('div', {\n staticClass: 'position-relative'\n }, [$imgFirst, $content, $imgLast]); // Reset image variables since they are already in the wrapper\n\n $imgFirst = h();\n $imgLast = h();\n }\n }\n\n var $footer = h();\n var hasFooterSlot = hasNormalizedSlot(SLOT_NAME_FOOTER, $scopedSlots, $slots);\n\n if (hasFooterSlot || footer || footerHtml) {\n $footer = h(BCardFooter, {\n props: pluckProps(BCardFooterProps, props),\n domProps: hasHeaderSlot ? {} : htmlOrText(footerHtml, footer)\n }, normalizeSlot(SLOT_NAME_FOOTER, slotScope, $scopedSlots, $slots));\n }\n\n return h(props.tag, mergeData(data, {\n staticClass: 'card',\n class: (_class = {\n 'flex-row': imgLeft || imgStart,\n 'flex-row-reverse': (imgRight || imgEnd) && !(imgLeft || imgStart)\n }, _defineProperty(_class, \"text-\".concat(align), align), _defineProperty(_class, \"bg-\".concat(bgVariant), bgVariant), _defineProperty(_class, \"border-\".concat(borderVariant), borderVariant), _defineProperty(_class, \"text-\".concat(textVariant), textVariant), _class)\n }), [$imgFirst, $header, $content, $footer, $imgLast]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_TFOOT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n // Supported values: 'lite', 'dark', or null\n footVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_TFOOT); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTfoot = /*#__PURE__*/Vue.extend({\n name: NAME_TFOOT,\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n provide: function provide() {\n return {\n bvTableRowGroup: this\n };\n },\n inject: {\n // Sniffed by `` / `` / ``\n bvTable: {\n default:\n /* istanbul ignore next */\n function _default() {\n return {};\n }\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n // Sniffed by `` / `` / ``\n isTfoot: function isTfoot() {\n return true;\n },\n // Sniffed by `` / `` / ``\n isDark: function isDark() {\n return this.bvTable.dark;\n },\n // Sniffed by `` / `` / ``\n isStacked: function isStacked() {\n return this.bvTable.isStacked;\n },\n // Sniffed by `` / `` / ``\n isResponsive: function isResponsive() {\n return this.bvTable.isResponsive;\n },\n // Sniffed by `` / `` / ``\n // Sticky headers are only supported in thead\n isStickyHeader: function isStickyHeader() {\n return false;\n },\n // Sniffed by `` / `` / ``\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `` / `` / ``\n tableVariant: function tableVariant() {\n return this.bvTable.tableVariant;\n },\n tfootClasses: function tfootClasses() {\n return [this.footVariant ? \"thead-\".concat(this.footVariant) : null];\n },\n tfootAttrs: function tfootAttrs() {\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n role: 'rowgroup'\n });\n }\n },\n render: function render(h) {\n return h('tfoot', {\n class: this.tfootClasses,\n attrs: this.tfootAttrs,\n // Pass down any native listeners\n on: this.bvListeners\n }, this.normalizeSlot());\n }\n});","import { Vue } from '../../../vue';\nimport { SLOT_NAME_BOTTOM_ROW } from '../../../constants/slots';\nimport { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var bottomRowMixin = Vue.extend({\n props: props,\n methods: {\n renderBottomRow: function renderBottomRow() {\n var fields = this.computedFields,\n stacked = this.stacked,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Static bottom row slot (hidden in visibly stacked mode as we can't control the data-label)\n // If in *always* stacked mode, we don't bother rendering the row\n\n if (!this.hasNormalizedSlot(SLOT_NAME_BOTTOM_ROW) || stacked === true || stacked === '') {\n return h();\n }\n\n return h(BTr, {\n staticClass: 'b-table-bottom-row',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, 'row-bottom') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, 'row-bottom') : tbodyTrAttr,\n key: 'b-bottom-row'\n }, this.normalizeSlot(SLOT_NAME_BOTTOM_ROW, {\n columns: fields.length,\n fields: fields\n }));\n }\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { MODEL_EVENT_NAME_PREFIX } from '../../../constants/events';\nimport { PROP_TYPE_BOOLEAN } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_BUSY } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { isFunction } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { BTr } from '../tr';\nimport { BTd } from '../td'; // --- Constants ---\n\nvar MODEL_PROP_NAME_BUSY = 'busy';\nvar MODEL_EVENT_NAME_BUSY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_BUSY; // --- Props ---\n\nexport var props = _defineProperty({}, MODEL_PROP_NAME_BUSY, makeProp(PROP_TYPE_BOOLEAN, false)); // --- Mixin ---\n// @vue/component\n\nexport var busyMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n localBusy: false\n };\n },\n computed: {\n computedBusy: function computedBusy() {\n return this[MODEL_PROP_NAME_BUSY] || this.localBusy;\n }\n },\n watch: {\n localBusy: function localBusy(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_BUSY, newValue);\n }\n }\n },\n methods: {\n // Event handler helper\n stopIfBusy: function stopIfBusy(event) {\n // If table is busy (via provider) then don't propagate\n if (this.computedBusy) {\n stopEvent(event);\n return true;\n }\n\n return false;\n },\n // Render the busy indicator or return `null` if not busy\n renderBusy: function renderBusy() {\n var tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Return a busy indicator row, or `null` if not busy\n\n if (this.computedBusy && this.hasNormalizedSlot(SLOT_NAME_TABLE_BUSY)) {\n return h(BTr, {\n staticClass: 'b-table-busy-slot',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, SLOT_NAME_TABLE_BUSY) : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, SLOT_NAME_TABLE_BUSY) : tbodyTrAttr,\n key: 'table-busy-slot'\n }, [h(BTd, {\n props: {\n colspan: this.computedFields.length || null\n }\n }, [this.normalizeSlot(SLOT_NAME_TABLE_BUSY)])]);\n } // We return `null` here so that we can determine if we need to\n // render the table items rows or not\n\n\n return null;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_EMPTY, SLOT_NAME_EMPTYFILTERED, SLOT_NAME_TABLE_BUSY } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { isFunction } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { BTr } from '../tr';\nimport { BTd } from '../td'; // --- Props ---\n\nexport var props = {\n emptyFilteredHtml: makeProp(PROP_TYPE_STRING),\n emptyFilteredText: makeProp(PROP_TYPE_STRING, 'There are no records matching your request'),\n emptyHtml: makeProp(PROP_TYPE_STRING),\n emptyText: makeProp(PROP_TYPE_STRING, 'There are no records to show'),\n showEmpty: makeProp(PROP_TYPE_BOOLEAN, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var emptyMixin = Vue.extend({\n props: props,\n methods: {\n renderEmpty: function renderEmpty() {\n var items = this.computedItems;\n var h = this.$createElement;\n var $empty = h();\n\n if (this.showEmpty && (!items || items.length === 0) && !(this.computedBusy && this.hasNormalizedSlot(SLOT_NAME_TABLE_BUSY))) {\n var fields = this.computedFields,\n isFiltered = this.isFiltered,\n emptyText = this.emptyText,\n emptyHtml = this.emptyHtml,\n emptyFilteredText = this.emptyFilteredText,\n emptyFilteredHtml = this.emptyFilteredHtml,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n $empty = this.normalizeSlot(isFiltered ? SLOT_NAME_EMPTYFILTERED : SLOT_NAME_EMPTY, {\n emptyFilteredHtml: emptyFilteredHtml,\n emptyFilteredText: emptyFilteredText,\n emptyHtml: emptyHtml,\n emptyText: emptyText,\n fields: fields,\n // Not sure why this is included, as it will always be an empty array\n items: items\n });\n\n if (!$empty) {\n $empty = h('div', {\n class: ['text-center', 'my-2'],\n domProps: isFiltered ? htmlOrText(emptyFilteredHtml, emptyFilteredText) : htmlOrText(emptyHtml, emptyText)\n });\n }\n\n $empty = h(BTd, {\n props: {\n colspan: fields.length || null\n }\n }, [h('div', {\n attrs: {\n role: 'alert',\n 'aria-live': 'polite'\n }\n }, [$empty])]);\n $empty = h(BTr, {\n staticClass: 'b-table-empty-row',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, 'row-empty') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, 'row-empty') : tbodyTrAttr,\n key: isFiltered ? 'b-empty-filtered-row' : 'b-empty-row'\n }, [$empty]);\n }\n\n return $empty;\n }\n }\n});","import { isDate, isObject, isUndefinedOrNull } from './inspect';\nimport { keys } from './object';\nimport { toString } from './string'; // Recursively stringifies the values of an object, space separated, in an\n// SSR safe deterministic way (keys are sorted before stringification)\n//\n// ex:\n// { b: 3, c: { z: 'zzz', d: null, e: 2 }, d: [10, 12, 11], a: 'one' }\n// becomes\n// 'one 3 2 zzz 10 12 11'\n//\n// Strings are returned as-is\n// Numbers get converted to string\n// `null` and `undefined` values are filtered out\n// Dates are converted to their native string format\n\nexport var stringifyObjectValues = function stringifyObjectValues(value) {\n if (isUndefinedOrNull(value)) {\n return '';\n } // Arrays are also object, and keys just returns the array indexes\n // Date objects we convert to strings\n\n\n if (isObject(value) && !isDate(value)) {\n return keys(value).sort() // Sort to prevent SSR issues on pre-rendered sorted tables\n .map(function (k) {\n return stringifyObjectValues(value[k]);\n }).filter(function (v) {\n return !!v;\n }) // Ignore empty strings\n .join(' ');\n }\n\n return toString(value);\n};","import { arrayIncludes } from '../../../utils/array';\nimport { isArray, isFunction } from '../../../utils/inspect';\nimport { clone, keys, pick } from '../../../utils/object';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Return a copy of a row after all reserved fields have been filtered out\n\nexport var sanitizeRow = function sanitizeRow(row, ignoreFields, includeFields) {\n var fieldsObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n // We first need to format the row based on the field configurations\n // This ensures that we add formatted values for keys that may not\n // exist in the row itself\n var formattedRow = keys(fieldsObj).reduce(function (result, key) {\n var field = fieldsObj[key];\n var filterByFormatted = field.filterByFormatted;\n var formatter = isFunction(filterByFormatted) ?\n /* istanbul ignore next */\n filterByFormatted : filterByFormatted ?\n /* istanbul ignore next */\n field.formatter : null;\n\n if (isFunction(formatter)) {\n result[key] = formatter(row[key], key, row);\n }\n\n return result;\n }, clone(row)); // Determine the allowed keys:\n // - Ignore special fields that start with `_`\n // - Ignore fields in the `ignoreFields` array\n // - Include only fields in the `includeFields` array\n\n var allowedKeys = keys(formattedRow).filter(function (key) {\n return !IGNORED_FIELD_KEYS[key] && !(isArray(ignoreFields) && ignoreFields.length > 0 && arrayIncludes(ignoreFields, key)) && !(isArray(includeFields) && includeFields.length > 0 && !arrayIncludes(includeFields, key));\n });\n return pick(formattedRow, allowedKeys);\n};","import { isObject } from '../../../utils/inspect';\nimport { stringifyObjectValues } from '../../../utils/stringify-object-values';\nimport { sanitizeRow } from './sanitize-row'; // Stringifies the values of a record, ignoring any special top level field keys\n// TODO: Add option to stringify `scopedSlot` items\n\nexport var stringifyRecordValues = function stringifyRecordValues(row, ignoreFields, includeFields, fieldsObj) {\n return isObject(row) ? stringifyObjectValues(sanitizeRow(row, ignoreFields, includeFields, fieldsObj)) :\n /* istanbul ignore next */\n '';\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { Vue } from '../../../vue';\nimport { NAME_TABLE } from '../../../constants/components';\nimport { EVENT_NAME_FILTERED } from '../../../constants/events';\nimport { PROP_TYPE_REG_EXP, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_ARRAY, PROP_TYPE_NUMBER_STRING } from '../../../constants/props';\nimport { RX_DIGITS, RX_SPACES } from '../../../constants/regex';\nimport { concat } from '../../../utils/array';\nimport { cloneDeep } from '../../../utils/clone-deep';\nimport { identity } from '../../../utils/identity';\nimport { isFunction, isString, isRegExp } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { toInteger } from '../../../utils/number';\nimport { hasPropFunction, makeProp } from '../../../utils/props';\nimport { escapeRegExp } from '../../../utils/string';\nimport { warn } from '../../../utils/warn';\nimport { stringifyRecordValues } from './stringify-record-values'; // --- Constants ---\n\nvar DEBOUNCE_DEPRECATED_MSG = 'Prop \"filter-debounce\" is deprecated. Use the debounce feature of \"\" instead.'; // --- Props ---\n\nexport var props = {\n filter: makeProp([].concat(_toConsumableArray(PROP_TYPE_ARRAY_OBJECT_STRING), [PROP_TYPE_REG_EXP])),\n filterDebounce: makeProp(PROP_TYPE_NUMBER_STRING, 0, function (value) {\n return RX_DIGITS.test(String(value));\n }),\n filterFunction: makeProp(PROP_TYPE_FUNCTION),\n filterIgnoredFields: makeProp(PROP_TYPE_ARRAY, []),\n filterIncludedFields: makeProp(PROP_TYPE_ARRAY, [])\n}; // --- Mixin ---\n// @vue/component\n\nexport var filteringMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n // Flag for displaying which empty slot to show and some event triggering\n isFiltered: false,\n // Where we store the copy of the filter criteria after debouncing\n // We pre-set it with the sanitized filter value\n localFilter: this.filterSanitize(this.filter)\n };\n },\n computed: {\n computedFilterIgnored: function computedFilterIgnored() {\n return concat(this.filterIgnoredFields || []).filter(identity);\n },\n computedFilterIncluded: function computedFilterIncluded() {\n return concat(this.filterIncludedFields || []).filter(identity);\n },\n computedFilterDebounce: function computedFilterDebounce() {\n var ms = toInteger(this.filterDebounce, 0);\n /* istanbul ignore next */\n\n if (ms > 0) {\n warn(DEBOUNCE_DEPRECATED_MSG, NAME_TABLE);\n }\n\n return ms;\n },\n localFiltering: function localFiltering() {\n return this.hasProvider ? !!this.noProviderFiltering : true;\n },\n // For watching changes to `filteredItems` vs `localItems`\n filteredCheck: function filteredCheck() {\n var filteredItems = this.filteredItems,\n localItems = this.localItems,\n localFilter = this.localFilter;\n return {\n filteredItems: filteredItems,\n localItems: localItems,\n localFilter: localFilter\n };\n },\n // Sanitized/normalize filter-function prop\n localFilterFn: function localFilterFn() {\n // Return `null` to signal to use internal filter function\n var filterFunction = this.filterFunction;\n return hasPropFunction(filterFunction) ? filterFunction : null;\n },\n // Returns the records in `localItems` that match the filter criteria\n // Returns the original `localItems` array if not sorting\n filteredItems: function filteredItems() {\n // Note the criteria is debounced and sanitized\n var items = this.localItems,\n criteria = this.localFilter; // Resolve the filtering function, when requested\n // We prefer the provided filtering function and fallback to the internal one\n // When no filtering criteria is specified the filtering factories will return `null`\n\n var filterFn = this.localFiltering ? this.filterFnFactory(this.localFilterFn, criteria) || this.defaultFilterFnFactory(criteria) : null; // We only do local filtering when requested and there are records to filter\n\n return filterFn && items.length > 0 ? items.filter(filterFn) : items;\n }\n },\n watch: {\n // Watch for debounce being set to 0\n computedFilterDebounce: function computedFilterDebounce(newValue) {\n if (!newValue && this.$_filterTimer) {\n this.clearFilterTimer();\n this.localFilter = this.filterSanitize(this.filter);\n }\n },\n // Watch for changes to the filter criteria, and debounce if necessary\n filter: {\n // We need a deep watcher in case the user passes\n // an object when using `filter-function`\n deep: true,\n handler: function handler(newCriteria) {\n var _this = this;\n\n var timeout = this.computedFilterDebounce;\n this.clearFilterTimer();\n\n if (timeout && timeout > 0) {\n // If we have a debounce time, delay the update of `localFilter`\n this.$_filterTimer = setTimeout(function () {\n _this.localFilter = _this.filterSanitize(newCriteria);\n }, timeout);\n } else {\n // Otherwise, immediately update `localFilter` with `newFilter` value\n this.localFilter = this.filterSanitize(newCriteria);\n }\n }\n },\n // Watch for changes to the filter criteria and filtered items vs `localItems`\n // Set visual state and emit events as required\n filteredCheck: function filteredCheck(_ref) {\n var filteredItems = _ref.filteredItems,\n localFilter = _ref.localFilter;\n // Determine if the dataset is filtered or not\n var isFiltered = false;\n\n if (!localFilter) {\n // If filter criteria is falsey\n isFiltered = false;\n } else if (looseEqual(localFilter, []) || looseEqual(localFilter, {})) {\n // If filter criteria is an empty array or object\n isFiltered = false;\n } else if (localFilter) {\n // If filter criteria is truthy\n isFiltered = true;\n }\n\n if (isFiltered) {\n this.$emit(EVENT_NAME_FILTERED, filteredItems, filteredItems.length);\n }\n\n this.isFiltered = isFiltered;\n },\n isFiltered: function isFiltered(newValue, oldValue) {\n if (newValue === false && oldValue === true) {\n // We need to emit a filtered event if `isFiltered` transitions from `true` to\n // `false` so that users can update their pagination controls\n var localItems = this.localItems;\n this.$emit(EVENT_NAME_FILTERED, localItems, localItems.length);\n }\n }\n },\n created: function created() {\n var _this2 = this;\n\n // Create private non-reactive props\n this.$_filterTimer = null; // If filter is \"pre-set\", set the criteria\n // This will trigger any watchers/dependents\n // this.localFilter = this.filterSanitize(this.filter)\n // Set the initial filtered state in a `$nextTick()` so that\n // we trigger a filtered event if needed\n\n this.$nextTick(function () {\n _this2.isFiltered = Boolean(_this2.localFilter);\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.clearFilterTimer();\n },\n methods: {\n clearFilterTimer: function clearFilterTimer() {\n clearTimeout(this.$_filterTimer);\n this.$_filterTimer = null;\n },\n filterSanitize: function filterSanitize(criteria) {\n // Sanitizes filter criteria based on internal or external filtering\n if (this.localFiltering && !this.localFilterFn && !(isString(criteria) || isRegExp(criteria))) {\n // If using internal filter function, which only accepts string or RegExp,\n // return '' to signify no filter\n return '';\n } // Could be a string, object or array, as needed by external filter function\n // We use `cloneDeep` to ensure we have a new copy of an object or array\n // without Vue's reactive observers\n\n\n return cloneDeep(criteria);\n },\n // Filter Function factories\n filterFnFactory: function filterFnFactory(filterFn, criteria) {\n // Wrapper factory for external filter functions\n // Wrap the provided filter-function and return a new function\n // Returns `null` if no filter-function defined or if criteria is falsey\n // Rather than directly grabbing `this.computedLocalFilterFn` or `this.filterFunction`\n // we have it passed, so that the caller computed prop will be reactive to changes\n // in the original filter-function (as this routine is a method)\n if (!filterFn || !isFunction(filterFn) || !criteria || looseEqual(criteria, []) || looseEqual(criteria, {})) {\n return null;\n } // Build the wrapped filter test function, passing the criteria to the provided function\n\n\n var fn = function fn(item) {\n // Generated function returns true if the criteria matches part\n // of the serialized data, otherwise false\n return filterFn(item, criteria);\n }; // Return the wrapped function\n\n\n return fn;\n },\n defaultFilterFnFactory: function defaultFilterFnFactory(criteria) {\n var _this3 = this;\n\n // Generates the default filter function, using the given filter criteria\n // Returns `null` if no criteria or criteria format not supported\n if (!criteria || !(isString(criteria) || isRegExp(criteria))) {\n // Built in filter can only support strings or RegExp criteria (at the moment)\n return null;\n } // Build the RegExp needed for filtering\n\n\n var regExp = criteria;\n\n if (isString(regExp)) {\n // Escape special RegExp characters in the string and convert contiguous\n // whitespace to \\s+ matches\n var pattern = escapeRegExp(criteria).replace(RX_SPACES, '\\\\s+'); // Build the RegExp (no need for global flag, as we only need\n // to find the value once in the string)\n\n regExp = new RegExp(\".*\".concat(pattern, \".*\"), 'i');\n } // Generate the wrapped filter test function to use\n\n\n var fn = function fn(item) {\n // This searches all row values (and sub property values) in the entire (excluding\n // special `_` prefixed keys), because we convert the record to a space-separated\n // string containing all the value properties (recursively), even ones that are\n // not visible (not specified in this.fields)\n // Users can ignore filtering on specific fields, or on only certain fields,\n // and can optionall specify searching results of fields with formatter\n //\n // TODO: Enable searching on scoped slots (optional, as it will be SLOW)\n //\n // Generated function returns true if the criteria matches part of\n // the serialized data, otherwise false\n //\n // We set `lastIndex = 0` on the `RegExp` in case someone specifies the `/g` global flag\n regExp.lastIndex = 0;\n return regExp.test(stringifyRecordValues(item, _this3.computedFilterIgnored, _this3.computedFilterIncluded, _this3.computedFieldsObj));\n }; // Return the generated function\n\n\n return fn;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_NUMBER_STRING } from '../../../constants/props';\nimport { mathMax } from '../../../utils/math';\nimport { toInteger } from '../../../utils/number';\nimport { makeProp } from '../../../utils/props'; // --- Props ---\n\nexport var props = {\n currentPage: makeProp(PROP_TYPE_NUMBER_STRING, 1),\n perPage: makeProp(PROP_TYPE_NUMBER_STRING, 0)\n}; // --- Mixin ---\n// @vue/component\n\nexport var paginationMixin = Vue.extend({\n props: props,\n computed: {\n localPaging: function localPaging() {\n return this.hasProvider ? !!this.noProviderPaging : true;\n },\n paginatedItems: function paginatedItems() {\n var items = this.sortedItems || this.filteredItems || this.localItems || [];\n var currentPage = mathMax(toInteger(this.currentPage, 1), 1);\n var perPage = mathMax(toInteger(this.perPage, 0), 0); // Apply local pagination\n\n if (this.localPaging && perPage) {\n // Grab the current page of data (which may be past filtered items limit)\n items = items.slice((currentPage - 1) * perPage, currentPage * perPage);\n } // Return the items to display in the table\n\n\n return items;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { NAME_TABLE } from '../../../constants/components';\nimport { EVENT_NAME_REFRESH, EVENT_NAME_REFRESHED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_FUNCTION, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { getRootActionEventName, getRootEventName } from '../../../utils/events';\nimport { isArray, isFunction, isPromise } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { clone } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { warn } from '../../../utils/warn';\nimport { listenOnRootMixin } from '../../../mixins/listen-on-root'; // --- Constants ---\n\nvar ROOT_EVENT_NAME_REFRESHED = getRootEventName(NAME_TABLE, EVENT_NAME_REFRESHED);\nvar ROOT_ACTION_EVENT_NAME_REFRESH = getRootActionEventName(NAME_TABLE, EVENT_NAME_REFRESH); // --- Props ---\n\nexport var props = {\n // Passed to the context object\n // Not used by `` directly\n apiUrl: makeProp(PROP_TYPE_STRING),\n // Adds in 'Function' support\n items: makeProp(PROP_TYPE_ARRAY_FUNCTION, []),\n noProviderFiltering: makeProp(PROP_TYPE_BOOLEAN, false),\n noProviderPaging: makeProp(PROP_TYPE_BOOLEAN, false),\n noProviderSorting: makeProp(PROP_TYPE_BOOLEAN, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var providerMixin = Vue.extend({\n mixins: [listenOnRootMixin],\n props: props,\n computed: {\n hasProvider: function hasProvider() {\n return isFunction(this.items);\n },\n providerTriggerContext: function providerTriggerContext() {\n // Used to trigger the provider function via a watcher. Only the fields that\n // are needed for triggering a provider update are included. Note that the\n // regular this.context is sent to the provider during fetches though, as they\n // may need all the prop info.\n var ctx = {\n apiUrl: this.apiUrl,\n filter: null,\n sortBy: null,\n sortDesc: null,\n perPage: null,\n currentPage: null\n };\n\n if (!this.noProviderFiltering) {\n // Either a string, or could be an object or array.\n ctx.filter = this.localFilter;\n }\n\n if (!this.noProviderSorting) {\n ctx.sortBy = this.localSortBy;\n ctx.sortDesc = this.localSortDesc;\n }\n\n if (!this.noProviderPaging) {\n ctx.perPage = this.perPage;\n ctx.currentPage = this.currentPage;\n }\n\n return clone(ctx);\n }\n },\n watch: {\n // Provider update triggering\n items: function items(newValue) {\n // If a new provider has been specified, trigger an update\n if (this.hasProvider || isFunction(newValue)) {\n this.$nextTick(this._providerUpdate);\n }\n },\n providerTriggerContext: function providerTriggerContext(newValue, oldValue) {\n // Trigger the provider to update as the relevant context values have changed.\n if (!looseEqual(newValue, oldValue)) {\n this.$nextTick(this._providerUpdate);\n }\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n // Call the items provider if necessary\n if (this.hasProvider && (!this.localItems || this.localItems.length === 0)) {\n // Fetch on mount if localItems is empty\n this._providerUpdate();\n } // Listen for global messages to tell us to force refresh the table\n\n\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REFRESH, function (id) {\n if (id === _this.id || id === _this) {\n _this.refresh();\n }\n });\n },\n methods: {\n refresh: function refresh() {\n var items = this.items,\n refresh = this.refresh; // Public Method: Force a refresh of the provider function\n\n this.$off(EVENT_NAME_REFRESHED, refresh);\n\n if (this.computedBusy) {\n // Can't force an update when forced busy by user (busy prop === true)\n if (this.localBusy && this.hasProvider) {\n // But if provider running (localBusy), re-schedule refresh once `refreshed` emitted\n this.$on(EVENT_NAME_REFRESHED, refresh);\n }\n } else {\n this.clearSelected();\n\n if (this.hasProvider) {\n this.$nextTick(this._providerUpdate);\n } else {\n /* istanbul ignore next */\n this.localItems = isArray(items) ? items.slice() : [];\n }\n }\n },\n // Provider related methods\n _providerSetLocal: function _providerSetLocal(items) {\n this.localItems = isArray(items) ? items.slice() : [];\n this.localBusy = false;\n this.$emit(EVENT_NAME_REFRESHED); // New root emit\n\n if (this.id) {\n this.emitOnRoot(ROOT_EVENT_NAME_REFRESHED, this.id);\n }\n },\n _providerUpdate: function _providerUpdate() {\n var _this2 = this;\n\n // Refresh the provider function items.\n if (!this.hasProvider) {\n // Do nothing if no provider\n return;\n } // If table is busy, wait until refreshed before calling again\n\n\n if (this.computedBusy) {\n // Schedule a new refresh once `refreshed` is emitted\n this.$nextTick(this.refresh);\n return;\n } // Set internal busy state\n\n\n this.localBusy = true; // Call provider function with context and optional callback after DOM is fully updated\n\n this.$nextTick(function () {\n try {\n // Call provider function passing it the context and optional callback\n var data = _this2.items(_this2.context, _this2._providerSetLocal);\n\n if (isPromise(data)) {\n // Provider returned Promise\n data.then(function (items) {\n // Provider resolved with items\n _this2._providerSetLocal(items);\n });\n } else if (isArray(data)) {\n // Provider returned Array data\n _this2._providerSetLocal(data);\n } else {\n /* istanbul ignore if */\n if (_this2.items.length !== 2) {\n // Check number of arguments provider function requested\n // Provider not using callback (didn't request second argument), so we clear\n // busy state as most likely there was an error in the provider function\n\n /* istanbul ignore next */\n warn(\"Provider function didn't request callback and did not return a promise or data.\", NAME_TABLE);\n _this2.localBusy = false;\n }\n }\n } catch (e)\n /* istanbul ignore next */\n {\n // Provider function borked on us, so we spew out a warning\n // and clear the busy state\n warn(\"Provider function error [\".concat(e.name, \"] \").concat(e.message, \".\"), NAME_TABLE);\n _this2.localBusy = false;\n\n _this2.$off(EVENT_NAME_REFRESHED, _this2.refresh);\n }\n });\n }\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_CONTEXT_CHANGED, EVENT_NAME_FILTERED, EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_SELECTED } from '../../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { arrayIncludes, createArray } from '../../../utils/array';\nimport { identity } from '../../../utils/identity';\nimport { isArray, isNumber } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax, mathMin } from '../../../utils/math';\nimport { makeProp } from '../../../utils/props';\nimport { sanitizeRow } from './sanitize-row'; // --- Constants ---\n\nvar SELECT_MODES = ['range', 'multi', 'single']; // --- Props ---\n\nexport var props = {\n // Disable use of click handlers for row selection\n noSelectOnClick: makeProp(PROP_TYPE_BOOLEAN, false),\n selectMode: makeProp(PROP_TYPE_STRING, 'multi', function (value) {\n return arrayIncludes(SELECT_MODES, value);\n }),\n selectable: makeProp(PROP_TYPE_BOOLEAN, false),\n selectedVariant: makeProp(PROP_TYPE_STRING, 'active')\n}; // --- Mixin ---\n// @vue/component\n\nexport var selectableMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n selectedRows: [],\n selectedLastRow: -1\n };\n },\n computed: {\n isSelectable: function isSelectable() {\n return this.selectable && this.selectMode;\n },\n hasSelectableRowClick: function hasSelectableRowClick() {\n return this.isSelectable && !this.noSelectOnClick;\n },\n supportsSelectableRows: function supportsSelectableRows() {\n return true;\n },\n selectableHasSelection: function selectableHasSelection() {\n var selectedRows = this.selectedRows;\n return this.isSelectable && selectedRows && selectedRows.length > 0 && selectedRows.some(identity);\n },\n selectableIsMultiSelect: function selectableIsMultiSelect() {\n return this.isSelectable && arrayIncludes(['range', 'multi'], this.selectMode);\n },\n selectableTableClasses: function selectableTableClasses() {\n var _ref;\n\n var isSelectable = this.isSelectable;\n return _ref = {\n 'b-table-selectable': isSelectable\n }, _defineProperty(_ref, \"b-table-select-\".concat(this.selectMode), isSelectable), _defineProperty(_ref, 'b-table-selecting', this.selectableHasSelection), _defineProperty(_ref, 'b-table-selectable-no-click', isSelectable && !this.hasSelectableRowClick), _ref;\n },\n selectableTableAttrs: function selectableTableAttrs() {\n return {\n // TODO:\n // Should this attribute not be included when no-select-on-click is set\n // since this attribute implies keyboard navigation?\n 'aria-multiselectable': !this.isSelectable ? null : this.selectableIsMultiSelect ? 'true' : 'false'\n };\n }\n },\n watch: {\n computedItems: function computedItems(newValue, oldValue) {\n // Reset for selectable\n var equal = false;\n\n if (this.isSelectable && this.selectedRows.length > 0) {\n // Quick check against array length\n equal = isArray(newValue) && isArray(oldValue) && newValue.length === oldValue.length;\n\n for (var i = 0; equal && i < newValue.length; i++) {\n // Look for the first non-loosely equal row, after ignoring reserved fields\n equal = looseEqual(sanitizeRow(newValue[i]), sanitizeRow(oldValue[i]));\n }\n }\n\n if (!equal) {\n this.clearSelected();\n }\n },\n selectable: function selectable(newValue) {\n this.clearSelected();\n this.setSelectionHandlers(newValue);\n },\n selectMode: function selectMode() {\n this.clearSelected();\n },\n hasSelectableRowClick: function hasSelectableRowClick(newValue) {\n this.clearSelected();\n this.setSelectionHandlers(!newValue);\n },\n selectedRows: function selectedRows(_selectedRows, oldValue) {\n var _this = this;\n\n if (this.isSelectable && !looseEqual(_selectedRows, oldValue)) {\n var items = []; // `.forEach()` skips over non-existent indices (on sparse arrays)\n\n _selectedRows.forEach(function (v, idx) {\n if (v) {\n items.push(_this.computedItems[idx]);\n }\n });\n\n this.$emit(EVENT_NAME_ROW_SELECTED, items);\n }\n }\n },\n beforeMount: function beforeMount() {\n // Set up handlers if needed\n if (this.isSelectable) {\n this.setSelectionHandlers(true);\n }\n },\n methods: {\n // Public methods\n selectRow: function selectRow(index) {\n // Select a particular row (indexed based on computedItems)\n if (this.isSelectable && isNumber(index) && index >= 0 && index < this.computedItems.length && !this.isRowSelected(index)) {\n var selectedRows = this.selectableIsMultiSelect ? this.selectedRows.slice() : [];\n selectedRows[index] = true;\n this.selectedLastClicked = -1;\n this.selectedRows = selectedRows;\n }\n },\n unselectRow: function unselectRow(index) {\n // Un-select a particular row (indexed based on `computedItems`)\n if (this.isSelectable && isNumber(index) && this.isRowSelected(index)) {\n var selectedRows = this.selectedRows.slice();\n selectedRows[index] = false;\n this.selectedLastClicked = -1;\n this.selectedRows = selectedRows;\n }\n },\n selectAllRows: function selectAllRows() {\n var length = this.computedItems.length;\n\n if (this.isSelectable && length > 0) {\n this.selectedLastClicked = -1;\n this.selectedRows = this.selectableIsMultiSelect ? createArray(length, true) : [true];\n }\n },\n isRowSelected: function isRowSelected(index) {\n // Determine if a row is selected (indexed based on `computedItems`)\n return !!(isNumber(index) && this.selectedRows[index]);\n },\n clearSelected: function clearSelected() {\n // Clear any active selected row(s)\n this.selectedLastClicked = -1;\n this.selectedRows = [];\n },\n // Internal private methods\n selectableRowClasses: function selectableRowClasses(index) {\n if (this.isSelectable && this.isRowSelected(index)) {\n var variant = this.selectedVariant;\n return _defineProperty({\n 'b-table-row-selected': true\n }, \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(variant), variant);\n }\n\n return {};\n },\n selectableRowAttrs: function selectableRowAttrs(index) {\n return {\n 'aria-selected': !this.isSelectable ? null : this.isRowSelected(index) ? 'true' : 'false'\n };\n },\n setSelectionHandlers: function setSelectionHandlers(on) {\n var method = on && !this.noSelectOnClick ? '$on' : '$off'; // Handle row-clicked event\n\n this[method](EVENT_NAME_ROW_CLICKED, this.selectionHandler); // Clear selection on filter, pagination, and sort changes\n\n this[method](EVENT_NAME_FILTERED, this.clearSelected);\n this[method](EVENT_NAME_CONTEXT_CHANGED, this.clearSelected);\n },\n selectionHandler: function selectionHandler(item, index, event) {\n /* istanbul ignore if: should never happen */\n if (!this.isSelectable || this.noSelectOnClick) {\n // Don't do anything if table is not in selectable mode\n this.clearSelected();\n return;\n }\n\n var selectMode = this.selectMode,\n selectedLastRow = this.selectedLastRow;\n var selectedRows = this.selectedRows.slice();\n var selected = !selectedRows[index]; // Note 'multi' mode needs no special event handling\n\n if (selectMode === 'single') {\n selectedRows = [];\n } else if (selectMode === 'range') {\n if (selectedLastRow > -1 && event.shiftKey) {\n // range\n for (var idx = mathMin(selectedLastRow, index); idx <= mathMax(selectedLastRow, index); idx++) {\n selectedRows[idx] = true;\n }\n\n selected = true;\n } else {\n if (!(event.ctrlKey || event.metaKey)) {\n // Clear range selection if any\n selectedRows = [];\n selected = true;\n }\n\n this.selectedLastRow = selected ? index : -1;\n }\n }\n\n selectedRows[index] = selected;\n this.selectedRows = selectedRows;\n }\n }\n});","var _props, _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_HEAD_CLICKED, EVENT_NAME_SORT_CHANGED, MODEL_EVENT_NAME_PREFIX } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_FUNCTION, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../../constants/props';\nimport { arrayIncludes } from '../../../utils/array';\nimport { isFunction, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { stableSort } from '../../../utils/stable-sort';\nimport { trim } from '../../../utils/string';\nimport { defaultSortCompare } from './default-sort-compare'; // --- Constants ---\n\nvar MODEL_PROP_NAME_SORT_BY = 'sortBy';\nvar MODEL_EVENT_NAME_SORT_BY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SORT_BY;\nvar MODEL_PROP_NAME_SORT_DESC = 'sortDesc';\nvar MODEL_EVENT_NAME_SORT_DESC = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SORT_DESC;\nvar SORT_DIRECTION_ASC = 'asc';\nvar SORT_DIRECTION_DESC = 'desc';\nvar SORT_DIRECTION_LAST = 'last';\nvar SORT_DIRECTIONS = [SORT_DIRECTION_ASC, SORT_DIRECTION_DESC, SORT_DIRECTION_LAST]; // --- Props ---\n\nexport var props = (_props = {\n labelSortAsc: makeProp(PROP_TYPE_STRING, 'Click to sort Ascending'),\n labelSortClear: makeProp(PROP_TYPE_STRING, 'Click to clear sorting'),\n labelSortDesc: makeProp(PROP_TYPE_STRING, 'Click to sort Descending'),\n noFooterSorting: makeProp(PROP_TYPE_BOOLEAN, false),\n noLocalSorting: makeProp(PROP_TYPE_BOOLEAN, false),\n // Another prop that should have had a better name\n // It should be `noSortClear` (on non-sortable headers)\n // We will need to make sure the documentation is clear on what\n // this prop does (as well as in the code for future reference)\n noSortReset: makeProp(PROP_TYPE_BOOLEAN, false)\n}, _defineProperty(_props, MODEL_PROP_NAME_SORT_BY, makeProp(PROP_TYPE_STRING)), _defineProperty(_props, \"sortCompare\", makeProp(PROP_TYPE_FUNCTION)), _defineProperty(_props, \"sortCompareLocale\", makeProp(PROP_TYPE_ARRAY_STRING)), _defineProperty(_props, \"sortCompareOptions\", makeProp(PROP_TYPE_OBJECT, {\n numeric: true\n})), _defineProperty(_props, MODEL_PROP_NAME_SORT_DESC, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_props, \"sortDirection\", makeProp(PROP_TYPE_STRING, SORT_DIRECTION_ASC, function (value) {\n return arrayIncludes(SORT_DIRECTIONS, value);\n})), _defineProperty(_props, \"sortIconLeft\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_props, \"sortNullLast\", makeProp(PROP_TYPE_BOOLEAN, false)), _props); // --- Mixin ---\n// @vue/component\n\nexport var sortingMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n localSortBy: this[MODEL_PROP_NAME_SORT_BY] || '',\n localSortDesc: this[MODEL_PROP_NAME_SORT_DESC] || false\n };\n },\n computed: {\n localSorting: function localSorting() {\n return this.hasProvider ? !!this.noProviderSorting : !this.noLocalSorting;\n },\n isSortable: function isSortable() {\n return this.computedFields.some(function (f) {\n return f.sortable;\n });\n },\n // Sorts the filtered items and returns a new array of the sorted items\n // When not sorted, the original items array will be returned\n sortedItems: function sortedItems() {\n var sortBy = this.localSortBy,\n sortDesc = this.localSortDesc,\n locale = this.sortCompareLocale,\n nullLast = this.sortNullLast,\n sortCompare = this.sortCompare,\n localSorting = this.localSorting;\n var items = (this.filteredItems || this.localItems || []).slice();\n\n var localeOptions = _objectSpread(_objectSpread({}, this.sortCompareOptions), {}, {\n usage: 'sort'\n });\n\n if (sortBy && localSorting) {\n var field = this.computedFieldsObj[sortBy] || {};\n var sortByFormatted = field.sortByFormatted;\n var formatter = isFunction(sortByFormatted) ?\n /* istanbul ignore next */\n sortByFormatted : sortByFormatted ? this.getFieldFormatter(sortBy) : undefined; // `stableSort` returns a new array, and leaves the original array intact\n\n return stableSort(items, function (a, b) {\n var result = null; // Call user provided `sortCompare` routine first\n\n if (isFunction(sortCompare)) {\n // TODO:\n // Change the `sortCompare` signature to the one of `defaultSortCompare`\n // with the next major version bump\n result = sortCompare(a, b, sortBy, sortDesc, formatter, localeOptions, locale);\n } // Fallback to built-in `defaultSortCompare` if `sortCompare`\n // is not defined or returns `null`/`false`\n\n\n if (isUndefinedOrNull(result) || result === false) {\n result = defaultSortCompare(a, b, {\n sortBy: sortBy,\n formatter: formatter,\n locale: locale,\n localeOptions: localeOptions,\n nullLast: nullLast\n });\n } // Negate result if sorting in descending order\n\n\n return (result || 0) * (sortDesc ? -1 : 1);\n });\n }\n\n return items;\n }\n },\n watch: (_watch = {\n /* istanbul ignore next: pain in the butt to test */\n isSortable: function isSortable(newValue) {\n if (newValue) {\n if (this.isSortable) {\n this.$on(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n } else {\n this.$off(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n }\n }, _defineProperty(_watch, MODEL_PROP_NAME_SORT_DESC, function (newValue) {\n /* istanbul ignore next */\n if (newValue === this.localSortDesc) {\n return;\n }\n\n this.localSortDesc = newValue || false;\n }), _defineProperty(_watch, MODEL_PROP_NAME_SORT_BY, function (newValue) {\n /* istanbul ignore next */\n if (newValue === this.localSortBy) {\n return;\n }\n\n this.localSortBy = newValue || '';\n }), _defineProperty(_watch, \"localSortDesc\", function localSortDesc(newValue, oldValue) {\n // Emit update to sort-desc.sync\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_SORT_DESC, newValue);\n }\n }), _defineProperty(_watch, \"localSortBy\", function localSortBy(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_SORT_BY, newValue);\n }\n }), _watch),\n created: function created() {\n if (this.isSortable) {\n this.$on(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n },\n methods: {\n // Handlers\n // Need to move from thead-mixin\n handleSort: function handleSort(key, field, event, isFoot) {\n var _this = this;\n\n if (!this.isSortable) {\n /* istanbul ignore next */\n return;\n }\n\n if (isFoot && this.noFooterSorting) {\n return;\n } // TODO: make this tri-state sorting\n // cycle desc => asc => none => desc => ...\n\n\n var sortChanged = false;\n\n var toggleLocalSortDesc = function toggleLocalSortDesc() {\n var sortDirection = field.sortDirection || _this.sortDirection;\n\n if (sortDirection === SORT_DIRECTION_ASC) {\n _this.localSortDesc = false;\n } else if (sortDirection === SORT_DIRECTION_DESC) {\n _this.localSortDesc = true;\n } else {// sortDirection === 'last'\n // Leave at last sort direction from previous column\n }\n };\n\n if (field.sortable) {\n var sortKey = !this.localSorting && field.sortKey ? field.sortKey : key;\n\n if (this.localSortBy === sortKey) {\n // Change sorting direction on current column\n this.localSortDesc = !this.localSortDesc;\n } else {\n // Start sorting this column ascending\n this.localSortBy = sortKey; // this.localSortDesc = false\n\n toggleLocalSortDesc();\n }\n\n sortChanged = true;\n } else if (this.localSortBy && !this.noSortReset) {\n this.localSortBy = '';\n toggleLocalSortDesc();\n sortChanged = true;\n }\n\n if (sortChanged) {\n // Sorting parameters changed\n this.$emit(EVENT_NAME_SORT_CHANGED, this.context);\n }\n },\n // methods to compute classes and attrs for thead>th cells\n sortTheadThClasses: function sortTheadThClasses(key, field, isFoot) {\n return {\n // If sortable and sortIconLeft are true, then place sort icon on the left\n 'b-table-sort-icon-left': field.sortable && this.sortIconLeft && !(isFoot && this.noFooterSorting)\n };\n },\n sortTheadThAttrs: function sortTheadThAttrs(key, field, isFoot) {\n if (!this.isSortable || isFoot && this.noFooterSorting) {\n // No attributes if not a sortable table\n return {};\n }\n\n var sortable = field.sortable; // Assemble the aria-sort attribute value\n\n var ariaSort = sortable && this.localSortBy === key ? this.localSortDesc ? 'descending' : 'ascending' : sortable ? 'none' : null; // Return the attribute\n\n return {\n 'aria-sort': ariaSort\n };\n },\n sortTheadThLabel: function sortTheadThLabel(key, field, isFoot) {\n // A label to be placed in an `.sr-only` element in the header cell\n if (!this.isSortable || isFoot && this.noFooterSorting) {\n // No label if not a sortable table\n return null;\n }\n\n var sortable = field.sortable; // The correctness of these labels is very important for screen-reader users.\n\n var labelSorting = '';\n\n if (sortable) {\n if (this.localSortBy === key) {\n // currently sorted sortable column.\n labelSorting = this.localSortDesc ? this.labelSortAsc : this.labelSortDesc;\n } else {\n // Not currently sorted sortable column.\n // Not using nested ternary's here for clarity/readability\n // Default for ariaLabel\n labelSorting = this.localSortDesc ? this.labelSortDesc : this.labelSortAsc; // Handle sortDirection setting\n\n var sortDirection = this.sortDirection || field.sortDirection;\n\n if (sortDirection === SORT_DIRECTION_ASC) {\n labelSorting = this.labelSortAsc;\n } else if (sortDirection === SORT_DIRECTION_DESC) {\n labelSorting = this.labelSortDesc;\n }\n }\n } else if (!this.noSortReset) {\n // Non sortable column\n labelSorting = this.localSortBy ? this.labelSortClear : '';\n } // Return the sr-only sort label or null if no label\n\n\n return trim(labelSorting) || null;\n }\n }\n});","import { get } from '../../../utils/get';\nimport { isDate, isFunction, isNumber, isNumeric, isUndefinedOrNull } from '../../../utils/inspect';\nimport { toFloat } from '../../../utils/number';\nimport { stringifyObjectValues } from '../../../utils/stringify-object-values';\n\nvar normalizeValue = function normalizeValue(value) {\n if (isUndefinedOrNull(value)) {\n return '';\n }\n\n if (isNumeric(value)) {\n return toFloat(value, value);\n }\n\n return value;\n}; // Default sort compare routine\n//\n// TODO:\n// Add option to sort by multiple columns (tri-state per column,\n// plus order of columns in sort) where `sortBy` could be an array\n// of objects `[ {key: 'foo', sortDir: 'asc'}, {key:'bar', sortDir: 'desc'} ...]`\n// or an array of arrays `[ ['foo','asc'], ['bar','desc'] ]`\n// Multisort will most likely be handled in `mixin-sort.js` by\n// calling this method for each sortBy\n\n\nexport var defaultSortCompare = function defaultSortCompare(a, b) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$sortBy = _ref.sortBy,\n sortBy = _ref$sortBy === void 0 ? null : _ref$sortBy,\n _ref$formatter = _ref.formatter,\n formatter = _ref$formatter === void 0 ? null : _ref$formatter,\n _ref$locale = _ref.locale,\n locale = _ref$locale === void 0 ? undefined : _ref$locale,\n _ref$localeOptions = _ref.localeOptions,\n localeOptions = _ref$localeOptions === void 0 ? {} : _ref$localeOptions,\n _ref$nullLast = _ref.nullLast,\n nullLast = _ref$nullLast === void 0 ? false : _ref$nullLast;\n\n // Get the value by `sortBy`\n var aa = get(a, sortBy, null);\n var bb = get(b, sortBy, null); // Apply user-provided formatter\n\n if (isFunction(formatter)) {\n aa = formatter(aa, sortBy, a);\n bb = formatter(bb, sortBy, b);\n } // Internally normalize value\n // `null` / `undefined` => ''\n // `'0'` => `0`\n\n\n aa = normalizeValue(aa);\n bb = normalizeValue(bb);\n\n if (isDate(aa) && isDate(bb) || isNumber(aa) && isNumber(bb)) {\n // Special case for comparing dates and numbers\n // Internally dates are compared via their epoch number values\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n } else if (nullLast && aa === '' && bb !== '') {\n // Special case when sorting `null` / `undefined` / '' last\n return 1;\n } else if (nullLast && aa !== '' && bb === '') {\n // Special case when sorting `null` / `undefined` / '' last\n return -1;\n } // Do localized string comparison\n\n\n return stringifyObjectValues(aa).localeCompare(stringifyObjectValues(bb), locale, localeOptions);\n};","import { Vue } from '../../../vue';\nimport { SLOT_NAME_TOP_ROW } from '../../../constants/slots';\nimport { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var topRowMixin = Vue.extend({\n methods: {\n renderTopRow: function renderTopRow() {\n var fields = this.computedFields,\n stacked = this.stacked,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Add static Top Row slot (hidden in visibly stacked mode as we can't control the data-label)\n // If in *always* stacked mode, we don't bother rendering the row\n\n if (!this.hasNormalizedSlot(SLOT_NAME_TOP_ROW) || stacked === true || stacked === '') {\n return h();\n }\n\n return h(BTr, {\n staticClass: 'b-table-top-row',\n class: [isFunction(tbodyTrClass) ? tbodyTrClass(null, 'row-top') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ? tbodyTrAttr(null, 'row-top') : tbodyTrAttr,\n key: 'b-top-row'\n }, [this.normalizeSlot(SLOT_NAME_TOP_ROW, {\n columns: fields.length,\n fields: fields\n })]);\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_TABLE } from '../../constants/components';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { hasListenerMixin } from '../../mixins/has-listener';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { bottomRowMixin, props as bottomRowProps } from './helpers/mixin-bottom-row';\nimport { busyMixin, props as busyProps } from './helpers/mixin-busy';\nimport { captionMixin, props as captionProps } from './helpers/mixin-caption';\nimport { colgroupMixin, props as colgroupProps } from './helpers/mixin-colgroup';\nimport { emptyMixin, props as emptyProps } from './helpers/mixin-empty';\nimport { filteringMixin, props as filteringProps } from './helpers/mixin-filtering';\nimport { itemsMixin, props as itemsProps } from './helpers/mixin-items';\nimport { paginationMixin, props as paginationProps } from './helpers/mixin-pagination';\nimport { providerMixin, props as providerProps } from './helpers/mixin-provider';\nimport { selectableMixin, props as selectableProps } from './helpers/mixin-selectable';\nimport { sortingMixin, props as sortingProps } from './helpers/mixin-sorting';\nimport { stackedMixin, props as stackedProps } from './helpers/mixin-stacked';\nimport { tableRendererMixin, props as tableRendererProps } from './helpers/mixin-table-renderer';\nimport { tbodyMixin, props as tbodyProps } from './helpers/mixin-tbody';\nimport { tfootMixin, props as tfootProps } from './helpers/mixin-tfoot';\nimport { theadMixin, props as theadProps } from './helpers/mixin-thead';\nimport { topRowMixin, props as topRowProps } from './helpers/mixin-top-row'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), bottomRowProps), busyProps), captionProps), colgroupProps), emptyProps), filteringProps), itemsProps), paginationProps), providerProps), selectableProps), sortingProps), stackedProps), tableRendererProps), tbodyProps), tfootProps), theadProps), topRowProps)), NAME_TABLE); // --- Main component ---\n// @vue/component\n\nexport var BTable = /*#__PURE__*/Vue.extend({\n name: NAME_TABLE,\n // Order of mixins is important!\n // They are merged from first to last, followed by this component\n mixins: [// General mixins\n attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin, // Required table mixins\n itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin, // Table features mixins\n stackedMixin, filteringMixin, sortingMixin, paginationMixin, captionMixin, colgroupMixin, selectableMixin, emptyMixin, topRowMixin, bottomRowMixin, busyMixin, providerMixin],\n props: props // Render function is provided by `tableRendererMixin`\n\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_HOVERED, EVENT_NAME_ROW_UNHOVERED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_OBJECT_FUNCTION } from '../../../constants/props';\nimport { SLOT_NAME_ROW_DETAILS } from '../../../constants/slots';\nimport { get } from '../../../utils/get';\nimport { isFunction, isString, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { toString } from '../../../utils/string';\nimport { BTr } from '../tr';\nimport { BTd } from '../td';\nimport { BTh } from '../th';\nimport { FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS } from './constants'; // --- Props ---\n\nexport var props = {\n detailsTdClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tbodyTrAttr: makeProp(PROP_TYPE_OBJECT_FUNCTION),\n tbodyTrClass: makeProp([].concat(_toConsumableArray(PROP_TYPE_ARRAY_OBJECT_STRING), [PROP_TYPE_FUNCTION]))\n}; // --- Mixin ---\n// @vue/component\n\nexport var tbodyRowMixin = Vue.extend({\n props: props,\n methods: {\n // Methods for computing classes, attributes and styles for table cells\n getTdValues: function getTdValues(item, key, tdValue, defaultValue) {\n var $parent = this.$parent;\n\n if (tdValue) {\n var value = get(item, key, '');\n\n if (isFunction(tdValue)) {\n return tdValue(value, key, item);\n } else if (isString(tdValue) && isFunction($parent[tdValue])) {\n return $parent[tdValue](value, key, item);\n }\n\n return tdValue;\n }\n\n return defaultValue;\n },\n getThValues: function getThValues(item, key, thValue, type, defaultValue) {\n var $parent = this.$parent;\n\n if (thValue) {\n var value = get(item, key, '');\n\n if (isFunction(thValue)) {\n return thValue(value, key, item, type);\n } else if (isString(thValue) && isFunction($parent[thValue])) {\n return $parent[thValue](value, key, item, type);\n }\n\n return thValue;\n }\n\n return defaultValue;\n },\n // Method to get the value for a field\n getFormattedValue: function getFormattedValue(item, field) {\n var key = field.key;\n var formatter = this.getFieldFormatter(key);\n var value = get(item, key, null);\n\n if (isFunction(formatter)) {\n value = formatter(value, key, item);\n }\n\n return isUndefinedOrNull(value) ? '' : value;\n },\n // Factory function methods\n toggleDetailsFactory: function toggleDetailsFactory(hasDetailsSlot, item) {\n var _this = this;\n\n // Returns a function to toggle a row's details slot\n return function () {\n if (hasDetailsSlot) {\n _this.$set(item, FIELD_KEY_SHOW_DETAILS, !item[FIELD_KEY_SHOW_DETAILS]);\n }\n };\n },\n // Row event handlers\n rowHovered: function rowHovered(event) {\n // `mouseenter` handler (non-bubbling)\n // `this.tbodyRowEvtStopped` from tbody mixin\n if (!this.tbodyRowEvtStopped(event)) {\n // `this.emitTbodyRowEvent` from tbody mixin\n this.emitTbodyRowEvent(EVENT_NAME_ROW_HOVERED, event);\n }\n },\n rowUnhovered: function rowUnhovered(event) {\n // `mouseleave` handler (non-bubbling)\n // `this.tbodyRowEvtStopped` from tbody mixin\n if (!this.tbodyRowEvtStopped(event)) {\n // `this.emitTbodyRowEvent` from tbody mixin\n this.emitTbodyRowEvent(EVENT_NAME_ROW_UNHOVERED, event);\n }\n },\n // Renders a TD or TH for a row's field\n renderTbodyRowCell: function renderTbodyRowCell(field, colIndex, item, rowIndex) {\n var _this2 = this;\n\n var isStacked = this.isStacked;\n var key = field.key,\n label = field.label,\n isRowHeader = field.isRowHeader;\n var h = this.$createElement;\n var hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n var formatted = this.getFormattedValue(item, field);\n var stickyColumn = !isStacked && (this.isResponsive || this.stickyHeader) && field.stickyColumn; // We only uses the helper components for sticky columns to\n // improve performance of BTable/BTableLite by reducing the\n // total number of vue instances created during render\n\n var cellTag = stickyColumn ? isRowHeader ? BTh : BTd : isRowHeader ? 'th' : 'td';\n var cellVariant = item[FIELD_KEY_CELL_VARIANT] && item[FIELD_KEY_CELL_VARIANT][key] ? item[FIELD_KEY_CELL_VARIANT][key] : field.variant || null;\n var data = {\n // For the Vue key, we concatenate the column index and\n // field key (as field keys could be duplicated)\n // TODO: Although we do prevent duplicate field keys...\n // So we could change this to: `row-${rowIndex}-cell-${key}`\n class: [field.class ? field.class : '', this.getTdValues(item, key, field.tdClass, '')],\n props: {},\n attrs: _objectSpread({\n 'aria-colindex': String(colIndex + 1)\n }, isRowHeader ? this.getThValues(item, key, field.thAttr, 'row', {}) : this.getTdValues(item, key, field.tdAttr, {})),\n key: \"row-\".concat(rowIndex, \"-cell-\").concat(colIndex, \"-\").concat(key)\n };\n\n if (stickyColumn) {\n // We are using the helper BTd or BTh\n data.props = {\n stackedHeading: isStacked ? label : null,\n stickyColumn: true,\n variant: cellVariant\n };\n } else {\n // Using native TD or TH element, so we need to\n // add in the attributes and variant class\n data.attrs['data-label'] = isStacked && !isUndefinedOrNull(label) ? toString(label) : null;\n data.attrs.role = isRowHeader ? 'rowheader' : 'cell';\n data.attrs.scope = isRowHeader ? 'row' : null; // Add in the variant class\n\n if (cellVariant) {\n data.class.push(\"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(cellVariant));\n }\n }\n\n var slotScope = {\n item: item,\n index: rowIndex,\n field: field,\n unformatted: get(item, key, ''),\n value: formatted,\n toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item),\n detailsShowing: Boolean(item[FIELD_KEY_SHOW_DETAILS])\n }; // If table supports selectable mode, then add in the following scope\n // this.supportsSelectableRows will be undefined if mixin isn't loaded\n\n if (this.supportsSelectableRows) {\n slotScope.rowSelected = this.isRowSelected(rowIndex);\n\n slotScope.selectRow = function () {\n return _this2.selectRow(rowIndex);\n };\n\n slotScope.unselectRow = function () {\n return _this2.unselectRow(rowIndex);\n };\n } // The new `v-slot` syntax doesn't like a slot name starting with\n // a square bracket and if using in-document HTML templates, the\n // v-slot attributes are lower-cased by the browser.\n // Switched to round bracket syntax to prevent confusion with\n // dynamic slot name syntax.\n // We look for slots in this order: `cell(${key})`, `cell(${key.toLowerCase()})`, 'cell()'\n // Slot names are now cached by mixin tbody in `this.$_bodyFieldSlotNameCache`\n // Will be `null` if no slot (or fallback slot) exists\n\n\n var slotName = this.$_bodyFieldSlotNameCache[key];\n var $childNodes = slotName ? this.normalizeSlot(slotName, slotScope) : toString(formatted);\n\n if (this.isStacked) {\n // We wrap in a DIV to ensure rendered as a single cell when visually stacked!\n $childNodes = [h('div', [$childNodes])];\n } // Render either a td or th cell\n\n\n return h(cellTag, data, [$childNodes]);\n },\n // Renders an item's row (or rows if details supported)\n renderTbodyRow: function renderTbodyRow(item, rowIndex) {\n var _this3 = this;\n\n var fields = this.computedFields,\n striped = this.striped,\n primaryKey = this.primaryKey,\n currentPage = this.currentPage,\n perPage = this.perPage,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement;\n var hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n var rowShowDetails = item[FIELD_KEY_SHOW_DETAILS] && hasDetailsSlot;\n var hasRowClickHandler = this.$listeners[EVENT_NAME_ROW_CLICKED] || this.hasSelectableRowClick; // We can return more than one TR if rowDetails enabled\n\n var $rows = []; // Details ID needed for `aria-details` when details showing\n // We set it to `null` when not showing so that attribute\n // does not appear on the element\n\n var detailsId = rowShowDetails ? this.safeId(\"_details_\".concat(rowIndex, \"_\")) : null; // For each item data field in row\n\n var $tds = fields.map(function (field, colIndex) {\n return _this3.renderTbodyRowCell(field, colIndex, item, rowIndex);\n }); // Calculate the row number in the dataset (indexed from 1)\n\n var ariaRowIndex = null;\n\n if (currentPage && perPage && perPage > 0) {\n ariaRowIndex = String((currentPage - 1) * perPage + rowIndex + 1);\n } // Create a unique :key to help ensure that sub components are re-rendered rather than\n // re-used, which can cause issues. If a primary key is not provided we use the rendered\n // rows index within the tbody.\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2410\n\n\n var primaryKeyValue = toString(get(item, primaryKey)) || null;\n var rowKey = primaryKeyValue || toString(rowIndex); // If primary key is provided, use it to generate a unique ID on each tbody > tr\n // In the format of '{tableId}__row_{primaryKeyValue}'\n\n var rowId = primaryKeyValue ? this.safeId(\"_row_\".concat(primaryKeyValue)) : null; // Selectable classes and attributes\n\n var selectableClasses = this.selectableRowClasses ? this.selectableRowClasses(rowIndex) : {};\n var selectableAttrs = this.selectableRowAttrs ? this.selectableRowAttrs(rowIndex) : {}; // Additional classes and attributes\n\n var userTrClasses = isFunction(tbodyTrClass) ? tbodyTrClass(item, 'row') : tbodyTrClass;\n var userTrAttrs = isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(item, 'row') : tbodyTrAttr; // Add the item row\n\n $rows.push(h(BTr, {\n class: [userTrClasses, selectableClasses, rowShowDetails ? 'b-table-has-details' : ''],\n props: {\n variant: item[FIELD_KEY_ROW_VARIANT] || null\n },\n attrs: _objectSpread(_objectSpread({\n id: rowId\n }, userTrAttrs), {}, {\n // Users cannot override the following attributes\n tabindex: hasRowClickHandler ? '0' : null,\n 'data-pk': primaryKeyValue || null,\n 'aria-details': detailsId,\n 'aria-owns': detailsId,\n 'aria-rowindex': ariaRowIndex\n }, selectableAttrs),\n on: {\n // Note: These events are not A11Y friendly!\n mouseenter: this.rowHovered,\n mouseleave: this.rowUnhovered\n },\n key: \"__b-table-row-\".concat(rowKey, \"__\"),\n ref: 'item-rows',\n refInFor: true\n }, $tds)); // Row Details slot\n\n if (rowShowDetails) {\n var detailsScope = {\n item: item,\n index: rowIndex,\n fields: fields,\n toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item)\n }; // If table supports selectable mode, then add in the following scope\n // this.supportsSelectableRows will be undefined if mixin isn't loaded\n\n if (this.supportsSelectableRows) {\n detailsScope.rowSelected = this.isRowSelected(rowIndex);\n\n detailsScope.selectRow = function () {\n return _this3.selectRow(rowIndex);\n };\n\n detailsScope.unselectRow = function () {\n return _this3.unselectRow(rowIndex);\n };\n } // Render the details slot in a TD\n\n\n var $details = h(BTd, {\n props: {\n colspan: fields.length\n },\n class: this.detailsTdClass\n }, [this.normalizeSlot(SLOT_NAME_ROW_DETAILS, detailsScope)]); // Add a hidden row to keep table row striping consistent when details showing\n // Only added if the table is striped\n\n if (striped) {\n $rows.push( // We don't use `BTr` here as we don't need the extra functionality\n h('tr', {\n staticClass: 'd-none',\n attrs: {\n 'aria-hidden': 'true',\n role: 'presentation'\n },\n key: \"__b-table-details-stripe__\".concat(rowKey)\n }));\n } // Add the actual details row\n\n\n var userDetailsTrClasses = isFunction(this.tbodyTrClass) ?\n /* istanbul ignore next */\n this.tbodyTrClass(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrClass;\n var userDetailsTrAttrs = isFunction(this.tbodyTrAttr) ?\n /* istanbul ignore next */\n this.tbodyTrAttr(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrAttr;\n $rows.push(h(BTr, {\n staticClass: 'b-table-details',\n class: [userDetailsTrClasses],\n props: {\n variant: item[FIELD_KEY_ROW_VARIANT] || null\n },\n attrs: _objectSpread(_objectSpread({}, userDetailsTrAttrs), {}, {\n // Users cannot override the following attributes\n id: detailsId,\n tabindex: '-1'\n }),\n key: \"__b-table-details__\".concat(rowKey)\n }, [$details]));\n } else if (hasDetailsSlot) {\n // Only add the placeholder if a the table has a row-details slot defined (but not shown)\n $rows.push(h());\n\n if (striped) {\n // Add extra placeholder if table is striped\n $rows.push(h());\n }\n } // Return the row(s)\n\n\n return $rows;\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_CONTEXTMENU, EVENT_NAME_ROW_DBLCLICKED, EVENT_NAME_ROW_MIDDLE_CLICKED } from '../../../constants/events';\nimport { CODE_DOWN, CODE_END, CODE_ENTER, CODE_HOME, CODE_SPACE, CODE_UP } from '../../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props';\nimport { arrayIncludes, from as arrayFrom } from '../../../utils/array';\nimport { attemptFocus, closest, isActiveElement, isElement } from '../../../utils/dom';\nimport { stopEvent } from '../../../utils/events';\nimport { sortKeys } from '../../../utils/object';\nimport { makeProp, pluckProps } from '../../../utils/props';\nimport { BTbody, props as BTbodyProps } from '../tbody';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active';\nimport { tbodyRowMixin, props as tbodyRowProps } from './mixin-tbody-row'; // --- Helper methods ---\n\nvar getCellSlotName = function getCellSlotName(value) {\n return \"cell(\".concat(value || '', \")\");\n}; // --- Props ---\n\n\nexport var props = sortKeys(_objectSpread(_objectSpread(_objectSpread({}, BTbodyProps), tbodyRowProps), {}, {\n tbodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n})); // --- Mixin ---\n// @vue/component\n\nexport var tbodyMixin = Vue.extend({\n mixins: [tbodyRowMixin],\n props: props,\n beforeDestroy: function beforeDestroy() {\n this.$_bodyFieldSlotNameCache = null;\n },\n methods: {\n // Returns all the item TR elements (excludes detail and spacer rows)\n // `this.$refs['item-rows']` is an array of item TR components/elements\n // Rows should all be `` components, but we map to TR elements\n // Also note that `this.$refs['item-rows']` may not always be in document order\n getTbodyTrs: function getTbodyTrs() {\n var $refs = this.$refs;\n var tbody = $refs.tbody ? $refs.tbody.$el || $refs.tbody : null;\n var trs = ($refs['item-rows'] || []).map(function (tr) {\n return tr.$el || tr;\n });\n return tbody && tbody.children && tbody.children.length > 0 && trs && trs.length > 0 ? arrayFrom(tbody.children).filter(function (tr) {\n return arrayIncludes(trs, tr);\n }) :\n /* istanbul ignore next */\n [];\n },\n // Returns index of a particular TBODY item TR\n // We set `true` on closest to include self in result\n getTbodyTrIndex: function getTbodyTrIndex(el) {\n /* istanbul ignore next: should not normally happen */\n if (!isElement(el)) {\n return -1;\n }\n\n var tr = el.tagName === 'TR' ? el : closest('tr', el, true);\n return tr ? this.getTbodyTrs().indexOf(tr) : -1;\n },\n // Emits a row event, with the item object, row index and original event\n emitTbodyRowEvent: function emitTbodyRowEvent(type, event) {\n if (type && this.hasListener(type) && event && event.target) {\n var rowIndex = this.getTbodyTrIndex(event.target);\n\n if (rowIndex > -1) {\n // The array of TRs correlate to the `computedItems` array\n var item = this.computedItems[rowIndex];\n this.$emit(type, item, rowIndex, event);\n }\n }\n },\n tbodyRowEvtStopped: function tbodyRowEvtStopped(event) {\n return this.stopIfBusy && this.stopIfBusy(event);\n },\n // Delegated row event handlers\n onTbodyRowKeydown: function onTbodyRowKeydown(event) {\n // Keyboard navigation and row click emulation\n var target = event.target,\n keyCode = event.keyCode;\n\n if (this.tbodyRowEvtStopped(event) || target.tagName !== 'TR' || !isActiveElement(target) || target.tabIndex !== 0) {\n // Early exit if not an item row TR\n return;\n }\n\n if (arrayIncludes([CODE_ENTER, CODE_SPACE], keyCode)) {\n // Emulated click for keyboard users, transfer to click handler\n stopEvent(event);\n this.onTBodyRowClicked(event);\n } else if (arrayIncludes([CODE_UP, CODE_DOWN, CODE_HOME, CODE_END], keyCode)) {\n // Keyboard navigation\n var rowIndex = this.getTbodyTrIndex(target);\n\n if (rowIndex > -1) {\n stopEvent(event);\n var trs = this.getTbodyTrs();\n var shift = event.shiftKey;\n\n if (keyCode === CODE_HOME || shift && keyCode === CODE_UP) {\n // Focus first row\n attemptFocus(trs[0]);\n } else if (keyCode === CODE_END || shift && keyCode === CODE_DOWN) {\n // Focus last row\n attemptFocus(trs[trs.length - 1]);\n } else if (keyCode === CODE_UP && rowIndex > 0) {\n // Focus previous row\n attemptFocus(trs[rowIndex - 1]);\n } else if (keyCode === CODE_DOWN && rowIndex < trs.length - 1) {\n // Focus next row\n attemptFocus(trs[rowIndex + 1]);\n }\n }\n }\n },\n onTBodyRowClicked: function onTBodyRowClicked(event) {\n // Don't emit event when the table is busy, the user clicked\n // on a non-disabled control or is selecting text\n if (this.tbodyRowEvtStopped(event) || filterEvent(event) || textSelectionActive(this.$el)) {\n return;\n }\n\n this.emitTbodyRowEvent(EVENT_NAME_ROW_CLICKED, event);\n },\n onTbodyRowMiddleMouseRowClicked: function onTbodyRowMiddleMouseRowClicked(event) {\n if (!this.tbodyRowEvtStopped(event) && event.which === 2) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_MIDDLE_CLICKED, event);\n }\n },\n onTbodyRowContextmenu: function onTbodyRowContextmenu(event) {\n if (!this.tbodyRowEvtStopped(event)) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_CONTEXTMENU, event);\n }\n },\n onTbodyRowDblClicked: function onTbodyRowDblClicked(event) {\n if (!this.tbodyRowEvtStopped(event) && !filterEvent(event)) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_DBLCLICKED, event);\n }\n },\n // Render the tbody element and children\n // Note:\n // Row hover handlers are handled by the tbody-row mixin\n // As mouseenter/mouseleave events do not bubble\n renderTbody: function renderTbody() {\n var _this = this;\n\n var items = this.computedItems,\n renderBusy = this.renderBusy,\n renderTopRow = this.renderTopRow,\n renderEmpty = this.renderEmpty,\n renderBottomRow = this.renderBottomRow;\n var h = this.$createElement;\n var hasRowClickHandler = this.hasListener(EVENT_NAME_ROW_CLICKED) || this.hasSelectableRowClick; // Prepare the tbody rows\n\n var $rows = []; // Add the item data rows or the busy slot\n\n var $busy = renderBusy ? renderBusy() : null;\n\n if ($busy) {\n // If table is busy and a busy slot, then return only the busy \"row\" indicator\n $rows.push($busy);\n } else {\n // Table isn't busy, or we don't have a busy slot\n // Create a slot cache for improved performance when looking up cell slot names\n // Values will be keyed by the field's `key` and will store the slot's name\n // Slots could be dynamic (i.e. `v-if`), so we must compute on each render\n // Used by tbody-row mixin render helper\n var cache = {};\n var defaultSlotName = getCellSlotName();\n defaultSlotName = this.hasNormalizedSlot(defaultSlotName) ? defaultSlotName : null;\n this.computedFields.forEach(function (field) {\n var key = field.key;\n var slotName = getCellSlotName(key);\n var lowercaseSlotName = getCellSlotName(key.toLowerCase());\n cache[key] = _this.hasNormalizedSlot(slotName) ? slotName : _this.hasNormalizedSlot(lowercaseSlotName) ?\n /* istanbul ignore next */\n lowercaseSlotName : defaultSlotName;\n }); // Created as a non-reactive property so to not trigger component updates\n // Must be a fresh object each render\n\n this.$_bodyFieldSlotNameCache = cache; // Add static top row slot (hidden in visibly stacked mode\n // as we can't control `data-label` attr)\n\n $rows.push(renderTopRow ? renderTopRow() : h()); // Render the rows\n\n items.forEach(function (item, rowIndex) {\n // Render the individual item row (rows if details slot)\n $rows.push(_this.renderTbodyRow(item, rowIndex));\n }); // Empty items / empty filtered row slot (only shows if `items.length < 1`)\n\n $rows.push(renderEmpty ? renderEmpty() : h()); // Static bottom row slot (hidden in visibly stacked mode\n // as we can't control `data-label` attr)\n\n $rows.push(renderBottomRow ? renderBottomRow() : h());\n } // Note: these events will only emit if a listener is registered\n\n\n var handlers = {\n auxclick: this.onTbodyRowMiddleMouseRowClicked,\n // TODO:\n // Perhaps we do want to automatically prevent the\n // default context menu from showing if there is a\n // `row-contextmenu` listener registered\n contextmenu: this.onTbodyRowContextmenu,\n // The following event(s) is not considered A11Y friendly\n dblclick: this.onTbodyRowDblClicked // Hover events (`mouseenter`/`mouseleave`) are handled by `tbody-row` mixin\n\n }; // Add in click/keydown listeners if needed\n\n if (hasRowClickHandler) {\n handlers.click = this.onTBodyRowClicked;\n handlers.keydown = this.onTbodyRowKeydown;\n } // Assemble rows into the tbody\n\n\n var $tbody = h(BTbody, {\n class: this.tbodyClass || null,\n props: pluckProps(BTbodyProps, this.$props),\n // BTbody transfers all native event listeners to the root element\n // TODO: Only set the handlers if the table is not busy\n on: handlers,\n ref: 'tbody'\n }, $rows); // Return the assembled tbody\n\n return $tbody;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_CAPTION } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { makeProp } from '../../../utils/props'; // --- Props ---\n\nexport var props = {\n caption: makeProp(PROP_TYPE_STRING),\n captionHtml: makeProp(PROP_TYPE_STRING) // `caption-top` is part of table-render mixin (styling)\n // captionTop: makeProp(PROP_TYPE_BOOLEAN, false)\n\n}; // --- Mixin ---\n// @vue/component\n\nexport var captionMixin = Vue.extend({\n props: props,\n computed: {\n captionId: function captionId() {\n // Even though `this.safeId` looks like a method, it is a computed prop\n // that returns a new function if the underlying ID changes\n return this.isStacked ? this.safeId('_caption_') : null;\n }\n },\n methods: {\n renderCaption: function renderCaption() {\n var caption = this.caption,\n captionHtml = this.captionHtml;\n var h = this.$createElement;\n var $caption = h();\n var hasCaptionSlot = this.hasNormalizedSlot(SLOT_NAME_TABLE_CAPTION);\n\n if (hasCaptionSlot || caption || captionHtml) {\n $caption = h('caption', {\n attrs: {\n id: this.captionId\n },\n domProps: hasCaptionSlot ? {} : htmlOrText(captionHtml, caption),\n key: 'caption'\n }, this.normalizeSlot(SLOT_NAME_TABLE_CAPTION));\n }\n\n return $caption;\n }\n }\n});","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ECommerceProductDetailsRelatedProducts.vue?vue&type=style&index=0&lang=scss&\"","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_IMG } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { concat } from '../../utils/array';\nimport { identity } from '../../utils/identity';\nimport { isString } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Constants --\n// Blank image with fill template\n\nvar BLANK_TEMPLATE = '' + '' + ''; // --- Helper methods ---\n\nvar makeBlankImgSrc = function makeBlankImgSrc(width, height, color) {\n var src = encodeURIComponent(BLANK_TEMPLATE.replace('%{w}', toString(width)).replace('%{h}', toString(height)).replace('%{f}', color));\n return \"data:image/svg+xml;charset=UTF-8,\".concat(src);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable({\n alt: makeProp(PROP_TYPE_STRING),\n blank: makeProp(PROP_TYPE_BOOLEAN, false),\n blankColor: makeProp(PROP_TYPE_STRING, 'transparent'),\n block: makeProp(PROP_TYPE_BOOLEAN, false),\n center: makeProp(PROP_TYPE_BOOLEAN, false),\n fluid: makeProp(PROP_TYPE_BOOLEAN, false),\n // Gives fluid images class `w-100` to make them grow to fit container\n fluidGrow: makeProp(PROP_TYPE_BOOLEAN, false),\n height: makeProp(PROP_TYPE_NUMBER_STRING),\n left: makeProp(PROP_TYPE_BOOLEAN, false),\n right: makeProp(PROP_TYPE_BOOLEAN, false),\n // Possible values:\n // `false`: no rounding of corners\n // `true`: slightly rounded corners\n // 'top': top corners rounded\n // 'right': right corners rounded\n // 'bottom': bottom corners rounded\n // 'left': left corners rounded\n // 'circle': circle/oval\n // '0': force rounding off\n rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n sizes: makeProp(PROP_TYPE_ARRAY_STRING),\n src: makeProp(PROP_TYPE_STRING),\n srcset: makeProp(PROP_TYPE_ARRAY_STRING),\n thumbnail: makeProp(PROP_TYPE_BOOLEAN, false),\n width: makeProp(PROP_TYPE_NUMBER_STRING)\n}, NAME_IMG); // --- Main component ---\n// @vue/component\n\nexport var BImg = /*#__PURE__*/Vue.extend({\n name: NAME_IMG,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data;\n var alt = props.alt,\n src = props.src,\n block = props.block,\n fluidGrow = props.fluidGrow,\n rounded = props.rounded;\n var width = toInteger(props.width) || null;\n var height = toInteger(props.height) || null;\n var align = null;\n var srcset = concat(props.srcset).filter(identity).join(',');\n var sizes = concat(props.sizes).filter(identity).join(',');\n\n if (props.blank) {\n if (!height && width) {\n height = width;\n } else if (!width && height) {\n width = height;\n }\n\n if (!width && !height) {\n width = 1;\n height = 1;\n } // Make a blank SVG image\n\n\n src = makeBlankImgSrc(width, height, props.blankColor || 'transparent'); // Disable srcset and sizes\n\n srcset = null;\n sizes = null;\n }\n\n if (props.left) {\n align = 'float-left';\n } else if (props.right) {\n align = 'float-right';\n } else if (props.center) {\n align = 'mx-auto';\n block = true;\n }\n\n return h('img', mergeData(data, {\n attrs: {\n src: src,\n alt: alt,\n width: width ? toString(width) : null,\n height: height ? toString(height) : null,\n srcset: srcset || null,\n sizes: sizes || null\n },\n class: (_class = {\n 'img-thumbnail': props.thumbnail,\n 'img-fluid': props.fluid || fluidGrow,\n 'w-100': fluidGrow,\n rounded: rounded === '' || rounded === true\n }, _defineProperty(_class, \"rounded-\".concat(rounded), isString(rounded) && rounded !== ''), _defineProperty(_class, align, align), _defineProperty(_class, 'd-block', block), _class)\n }));\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_TITLE } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n title: makeProp(PROP_TYPE_STRING),\n titleTag: makeProp(PROP_TYPE_STRING, 'h4')\n}, NAME_CARD_TITLE); // --- Main component ---\n// @vue/component\n\nexport var BCardTitle = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_TITLE,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.titleTag, mergeData(data, {\n staticClass: 'card-title'\n }), children || toString(props.title));\n }\n});","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar setInternalState = require('../internals/internal-state').set;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.github.io/ecma262/#sec-regexp-constructor\nif (FORCED) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = this instanceof RegExpWrapper;\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var sticky;\n\n if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) {\n return pattern;\n }\n\n if (CORRECT_NEW) {\n if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;\n } else if (pattern instanceof RegExpWrapper) {\n if (flagsAreUndefined) flags = getFlags.call(pattern);\n pattern = pattern.source;\n }\n\n if (UNSUPPORTED_Y) {\n sticky = !!flags && flags.indexOf('y') > -1;\n if (sticky) flags = flags.replace(/y/g, '');\n }\n\n var result = inheritIfRequired(\n CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags),\n thisIsRegExp ? this : RegExpPrototype,\n RegExpWrapper\n );\n\n if (UNSUPPORTED_Y && sticky) setInternalState(result, { sticky: sticky });\n\n return result;\n };\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n var keys = getOwnPropertyNames(NativeRegExp);\n var index = 0;\n while (keys.length > index) proxy(keys[index++]);\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_COLLAPSE } from '../../constants/components';\nimport { CLASS_NAME_SHOW } from '../../constants/classes';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_HIDDEN, EVENT_NAME_HIDE, EVENT_NAME_SHOW, EVENT_NAME_SHOWN, EVENT_OPTIONS_NO_CAPTURE } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { addClass, hasClass, removeClass, closest, matches, getCS } from '../../utils/dom';\nimport { getRootActionEventName, getRootEventName, eventOnOff } from '../../utils/events';\nimport { makeModelMixin } from '../../utils/model';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BVCollapse } from './helpers/bv-collapse'; // --- Constants ---\n\nvar ROOT_ACTION_EVENT_NAME_TOGGLE = getRootActionEventName(NAME_COLLAPSE, 'toggle');\nvar ROOT_ACTION_EVENT_NAME_REQUEST_STATE = getRootActionEventName(NAME_COLLAPSE, 'request-state');\nvar ROOT_EVENT_NAME_ACCORDION = getRootEventName(NAME_COLLAPSE, 'accordion');\nvar ROOT_EVENT_NAME_STATE = getRootEventName(NAME_COLLAPSE, 'state');\nvar ROOT_EVENT_NAME_SYNC_STATE = getRootEventName(NAME_COLLAPSE, 'sync-state');\n\nvar _makeModelMixin = makeModelMixin('visible', {\n type: PROP_TYPE_BOOLEAN,\n defaultValue: false\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), {}, {\n // If `true` (and `visible` is `true` on mount), animate initially visible\n accordion: makeProp(PROP_TYPE_STRING),\n appear: makeProp(PROP_TYPE_BOOLEAN, false),\n isNav: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n})), NAME_COLLAPSE); // --- Main component ---\n// @vue/component\n\nexport var BCollapse = /*#__PURE__*/Vue.extend({\n name: NAME_COLLAPSE,\n mixins: [idMixin, modelMixin, normalizeSlotMixin, listenOnRootMixin],\n props: props,\n data: function data() {\n return {\n show: this[MODEL_PROP_NAME],\n transitioning: false\n };\n },\n computed: {\n classObject: function classObject() {\n var transitioning = this.transitioning;\n return {\n 'navbar-collapse': this.isNav,\n collapse: !transitioning,\n show: this.show && !transitioning\n };\n },\n slotScope: function slotScope() {\n var _this = this;\n\n return {\n visible: this.show,\n close: function close() {\n _this.show = false;\n }\n };\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n if (newValue !== this.show) {\n this.show = newValue;\n }\n }), _defineProperty(_watch, \"show\", function show(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.emitState();\n }\n }), _watch),\n created: function created() {\n this.show = this[MODEL_PROP_NAME];\n },\n mounted: function mounted() {\n var _this2 = this;\n\n this.show = this[MODEL_PROP_NAME]; // Listen for toggle events to open/close us\n\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_TOGGLE, this.handleToggleEvt); // Listen to other collapses for accordion events\n\n this.listenOnRoot(ROOT_EVENT_NAME_ACCORDION, this.handleAccordionEvt);\n\n if (this.isNav) {\n // Set up handlers\n this.setWindowEvents(true);\n this.handleResize();\n }\n\n this.$nextTick(function () {\n _this2.emitState();\n }); // Listen for \"Sync state\" requests from `v-b-toggle`\n\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REQUEST_STATE, function (id) {\n if (id === _this2.safeId()) {\n _this2.$nextTick(_this2.emitSync);\n }\n });\n },\n updated: function updated() {\n // Emit a private event every time this component updates to ensure\n // the toggle button is in sync with the collapse's state\n // It is emitted regardless if the visible state changes\n this.emitSync();\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n if (this.isNav) {\n this.setWindowEvents(false);\n }\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n if (this.isNav) {\n this.setWindowEvents(true);\n }\n\n this.emitSync();\n },\n beforeDestroy: function beforeDestroy() {\n // Trigger state emit if needed\n this.show = false;\n\n if (this.isNav && IS_BROWSER) {\n this.setWindowEvents(false);\n }\n },\n methods: {\n setWindowEvents: function setWindowEvents(on) {\n eventOnOff(on, window, 'resize', this.handleResize, EVENT_OPTIONS_NO_CAPTURE);\n eventOnOff(on, window, 'orientationchange', this.handleResize, EVENT_OPTIONS_NO_CAPTURE);\n },\n toggle: function toggle() {\n this.show = !this.show;\n },\n onEnter: function onEnter() {\n this.transitioning = true; // This should be moved out so we can add cancellable events\n\n this.$emit(EVENT_NAME_SHOW);\n },\n onAfterEnter: function onAfterEnter() {\n this.transitioning = false;\n this.$emit(EVENT_NAME_SHOWN);\n },\n onLeave: function onLeave() {\n this.transitioning = true; // This should be moved out so we can add cancellable events\n\n this.$emit(EVENT_NAME_HIDE);\n },\n onAfterLeave: function onAfterLeave() {\n this.transitioning = false;\n this.$emit(EVENT_NAME_HIDDEN);\n },\n emitState: function emitState() {\n var show = this.show,\n accordion = this.accordion;\n var id = this.safeId();\n this.$emit(MODEL_EVENT_NAME, show); // Let `v-b-toggle` know the state of this collapse\n\n this.emitOnRoot(ROOT_EVENT_NAME_STATE, id, show);\n\n if (accordion && show) {\n // Tell the other collapses in this accordion to close\n this.emitOnRoot(ROOT_EVENT_NAME_ACCORDION, id, accordion);\n }\n },\n emitSync: function emitSync() {\n // Emit a private event every time this component updates to ensure\n // the toggle button is in sync with the collapse's state\n // It is emitted regardless if the visible state changes\n this.emitOnRoot(ROOT_EVENT_NAME_SYNC_STATE, this.safeId(), this.show);\n },\n checkDisplayBlock: function checkDisplayBlock() {\n // Check to see if the collapse has `display: block !important` set\n // We can't set `display: none` directly on `this.$el`, as it would\n // trigger a new transition to start (or cancel a current one)\n var $el = this.$el;\n var restore = hasClass($el, CLASS_NAME_SHOW);\n removeClass($el, CLASS_NAME_SHOW);\n var isBlock = getCS($el).display === 'block';\n\n if (restore) {\n addClass($el, CLASS_NAME_SHOW);\n }\n\n return isBlock;\n },\n clickHandler: function clickHandler(event) {\n var el = event.target; // If we are in a nav/navbar, close the collapse when non-disabled link clicked\n\n /* istanbul ignore next: can't test `getComputedStyle()` in JSDOM */\n\n if (!this.isNav || !el || getCS(this.$el).display !== 'block') {\n return;\n } // Only close the collapse if it is not forced to be `display: block !important`\n\n\n if ((matches(el, '.nav-link,.dropdown-item') || closest('.nav-link,.dropdown-item', el)) && !this.checkDisplayBlock()) {\n this.show = false;\n }\n },\n handleToggleEvt: function handleToggleEvt(id) {\n if (id === this.safeId()) {\n this.toggle();\n }\n },\n handleAccordionEvt: function handleAccordionEvt(openedId, openAccordion) {\n var accordion = this.accordion,\n show = this.show;\n\n if (!accordion || accordion !== openAccordion) {\n return;\n }\n\n var isThis = openedId === this.safeId(); // Open this collapse if not shown or\n // close this collapse if shown\n\n if (isThis && !show || !isThis && show) {\n this.toggle();\n }\n },\n handleResize: function handleResize() {\n // Handler for orientation/resize to set collapsed state in nav/navbar\n this.show = getCS(this.$el).display === 'block';\n }\n },\n render: function render(h) {\n var appear = this.appear;\n var $content = h(this.tag, {\n class: this.classObject,\n directives: [{\n name: 'show',\n value: this.show\n }],\n attrs: {\n id: this.safeId()\n },\n on: {\n click: this.clickHandler\n }\n }, this.normalizeSlot(SLOT_NAME_DEFAULT, this.slotScope));\n return h(BVCollapse, {\n props: {\n appear: appear\n },\n on: {\n enter: this.onEnter,\n afterEnter: this.onAfterEnter,\n leave: this.onLeave,\n afterLeave: this.onAfterLeave\n }\n }, [$content]);\n }\n});","export var CLASS_NAME_SHOW = 'show';\nexport var CLASS_NAME_FADE = 'fade';","// Generic collapse transion helper component\n//\n// Note:\n// Applies the classes `collapse`, `show` and `collapsing`\n// during the enter/leave transition phases only\n// Although it appears that Vue may be leaving the classes\n// in-place after the transition completes\nimport { Vue, mergeData } from '../../../vue';\nimport { NAME_COLLAPSE_HELPER } from '../../../constants/components';\nimport { getBCR, reflow, removeStyle, requestAF, setStyle } from '../../../utils/dom'; // --- Helper methods ---\n// Transition event handler helpers\n\nvar onEnter = function onEnter(el) {\n setStyle(el, 'height', 0); // In a `requestAF()` for `appear` to work\n\n requestAF(function () {\n reflow(el);\n setStyle(el, 'height', \"\".concat(el.scrollHeight, \"px\"));\n });\n};\n\nvar onAfterEnter = function onAfterEnter(el) {\n removeStyle(el, 'height');\n};\n\nvar onLeave = function onLeave(el) {\n setStyle(el, 'height', 'auto');\n setStyle(el, 'display', 'block');\n setStyle(el, 'height', \"\".concat(getBCR(el).height, \"px\"));\n reflow(el);\n setStyle(el, 'height', 0);\n};\n\nvar onAfterLeave = function onAfterLeave(el) {\n removeStyle(el, 'height');\n}; // --- Constants ---\n// Default transition props\n// `appear` will use the enter classes\n\n\nvar TRANSITION_PROPS = {\n css: true,\n enterClass: '',\n enterActiveClass: 'collapsing',\n enterToClass: 'collapse show',\n leaveClass: 'collapse show',\n leaveActiveClass: 'collapsing',\n leaveToClass: 'collapse'\n}; // Default transition handlers\n// `appear` will use the enter handlers\n\nvar TRANSITION_HANDLERS = {\n enter: onEnter,\n afterEnter: onAfterEnter,\n leave: onLeave,\n afterLeave: onAfterLeave\n}; // --- Main component ---\n// @vue/component\n\nexport var BVCollapse = /*#__PURE__*/Vue.extend({\n name: NAME_COLLAPSE_HELPER,\n functional: true,\n props: {\n appear: {\n // If `true` (and `visible` is `true` on mount), animate initially visible\n type: Boolean,\n default: false\n }\n },\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('transition', // We merge in the `appear` prop last\n mergeData(data, {\n props: TRANSITION_PROPS,\n on: TRANSITION_HANDLERS\n }, {\n props: props\n }), // Note: `` supports a single root element only\n children);\n }\n});","import { identity } from '../../../utils/identity';\nimport { isArray, isFunction, isObject, isString } from '../../../utils/inspect';\nimport { clone, keys } from '../../../utils/object';\nimport { startCase } from '../../../utils/string';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Private function to massage field entry into common object format\n\nvar processField = function processField(key, value) {\n var field = null;\n\n if (isString(value)) {\n // Label shortcut\n field = {\n key: key,\n label: value\n };\n } else if (isFunction(value)) {\n // Formatter shortcut\n field = {\n key: key,\n formatter: value\n };\n } else if (isObject(value)) {\n field = clone(value);\n field.key = field.key || key;\n } else if (value !== false) {\n // Fallback to just key\n\n /* istanbul ignore next */\n field = {\n key: key\n };\n }\n\n return field;\n}; // We normalize fields into an array of objects\n// [ { key:..., label:..., ...}, {...}, ..., {..}]\n\n\nexport var normalizeFields = function normalizeFields(origFields, items) {\n var fields = [];\n\n if (isArray(origFields)) {\n // Normalize array Form\n origFields.filter(identity).forEach(function (f) {\n if (isString(f)) {\n fields.push({\n key: f,\n label: startCase(f)\n });\n } else if (isObject(f) && f.key && isString(f.key)) {\n // Full object definition. We use assign so that we don't mutate the original\n fields.push(clone(f));\n } else if (isObject(f) && keys(f).length === 1) {\n // Shortcut object (i.e. { 'foo_bar': 'This is Foo Bar' }\n var key = keys(f)[0];\n var field = processField(key, f[key]);\n\n if (field) {\n fields.push(field);\n }\n }\n });\n } // If no field provided, take a sample from first record (if exits)\n\n\n if (fields.length === 0 && isArray(items) && items.length > 0) {\n var sample = items[0];\n keys(sample).forEach(function (k) {\n if (!IGNORED_FIELD_KEYS[k]) {\n fields.push({\n key: k,\n label: startCase(k)\n });\n }\n });\n } // Ensure we have a unique array of fields and that they have String labels\n\n\n var memo = {};\n return fields.filter(function (f) {\n if (!memo[f.key]) {\n memo[f.key] = true;\n f.label = isString(f.label) ? f.label : startCase(f.key);\n return true;\n }\n\n return false;\n });\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_CONTEXT_CHANGED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY, PROP_TYPE_STRING } from '../../../constants/props';\nimport { isArray, isFunction, isString } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax } from '../../../utils/math';\nimport { makeModelMixin } from '../../../utils/model';\nimport { toInteger } from '../../../utils/number';\nimport { clone, sortKeys } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { normalizeFields } from './normalize-fields'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_ARRAY,\n defaultValue: []\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // --- Props ---\n\nexport var props = sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, _defineProperty({\n fields: makeProp(PROP_TYPE_ARRAY, null),\n // Provider mixin adds in `Function` type\n items: makeProp(PROP_TYPE_ARRAY, []),\n // Primary key for record\n // If provided the value in each row must be unique!\n primaryKey: makeProp(PROP_TYPE_STRING)\n}, MODEL_PROP_NAME, makeProp(PROP_TYPE_ARRAY, [])))); // --- Mixin ---\n// @vue/component\n\nexport var itemsMixin = Vue.extend({\n mixins: [modelMixin],\n props: props,\n data: function data() {\n var items = this.items;\n return {\n // Our local copy of the items\n // Must be an array\n localItems: isArray(items) ? items.slice() : []\n };\n },\n computed: {\n computedFields: function computedFields() {\n // We normalize fields into an array of objects\n // `[ { key:..., label:..., ...}, {...}, ..., {..}]`\n return normalizeFields(this.fields, this.localItems);\n },\n computedFieldsObj: function computedFieldsObj() {\n // Fields as a simple lookup hash object\n // Mainly for formatter lookup and use in `scopedSlots` for convenience\n // If the field has a formatter, it normalizes formatter to a\n // function ref or `undefined` if no formatter\n var $parent = this.$parent;\n return this.computedFields.reduce(function (obj, f) {\n // We use object spread here so we don't mutate the original field object\n obj[f.key] = clone(f);\n\n if (f.formatter) {\n // Normalize formatter to a function ref or `undefined`\n var formatter = f.formatter;\n\n if (isString(formatter) && isFunction($parent[formatter])) {\n formatter = $parent[formatter];\n } else if (!isFunction(formatter)) {\n /* istanbul ignore next */\n formatter = undefined;\n } // Return formatter function or `undefined` if none\n\n\n obj[f.key].formatter = formatter;\n }\n\n return obj;\n }, {});\n },\n computedItems: function computedItems() {\n // Fallback if various mixins not provided\n return (this.paginatedItems || this.sortedItems || this.filteredItems || this.localItems ||\n /* istanbul ignore next */\n []).slice();\n },\n context: function context() {\n // Current state of sorting, filtering and pagination props/values\n return {\n filter: this.localFilter,\n sortBy: this.localSortBy,\n sortDesc: this.localSortDesc,\n perPage: mathMax(toInteger(this.perPage, 0), 0),\n currentPage: mathMax(toInteger(this.currentPage, 0), 1),\n apiUrl: this.apiUrl\n };\n }\n },\n watch: {\n items: function items(newValue) {\n // Set `localItems`/`filteredItems` to a copy of the provided array\n this.localItems = isArray(newValue) ? newValue.slice() : [];\n },\n // Watch for changes on `computedItems` and update the `v-model`\n computedItems: function computedItems(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n },\n // Watch for context changes\n context: function context(newValue, oldValue) {\n // Emit context information for external paging/filtering/sorting handling\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(EVENT_NAME_CONTEXT_CHANGED, newValue);\n }\n }\n },\n mounted: function mounted() {\n // Initially update the `v-model` of displayed items\n this.$emit(MODEL_EVENT_NAME, this.computedItems);\n },\n methods: {\n // Method to get the formatter method for a given field key\n getFieldFormatter: function getFieldFormatter(key) {\n var field = this.computedFieldsObj[key]; // `this.computedFieldsObj` has pre-normalized the formatter to a\n // function ref if present, otherwise `undefined`\n\n return field ? field.formatter : undefined;\n }\n }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { COMPONENT_UID_KEY, Vue } from '../../vue';\nimport { NAME_ALERT } from '../../constants/components';\nimport { EVENT_NAME_DISMISSED, EVENT_NAME_DISMISS_COUNT_DOWN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DISMISS } from '../../constants/slots';\nimport { requestAF } from '../../utils/dom';\nimport { isBoolean, isNumeric } from '../../utils/inspect';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BButtonClose } from '../button/button-close';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('show', {\n type: PROP_TYPE_BOOLEAN_NUMBER_STRING,\n defaultValue: false\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // --- Helper methods ---\n// Convert `show` value to a number\n\n\nvar parseCountDown = function parseCountDown(show) {\n if (show === '' || isBoolean(show)) {\n return 0;\n }\n\n show = toInteger(show, 0);\n return show > 0 ? show : 0;\n}; // Convert `show` value to a boolean\n\n\nvar parseShow = function parseShow(show) {\n if (show === '' || show === true) {\n return true;\n }\n\n if (toInteger(show, 0) < 1) {\n // Boolean will always return false for the above comparison\n return false;\n }\n\n return !!show;\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, {\n dismissLabel: makeProp(PROP_TYPE_STRING, 'Close'),\n dismissible: makeProp(PROP_TYPE_BOOLEAN, false),\n fade: makeProp(PROP_TYPE_BOOLEAN, false),\n variant: makeProp(PROP_TYPE_STRING, 'info')\n})), NAME_ALERT); // --- Main component ---\n// @vue/component\n\nexport var BAlert = /*#__PURE__*/Vue.extend({\n name: NAME_ALERT,\n mixins: [modelMixin, normalizeSlotMixin],\n props: props,\n data: function data() {\n return {\n countDown: 0,\n // If initially shown, we need to set these for SSR\n localShow: parseShow(this[MODEL_PROP_NAME])\n };\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n this.countDown = parseCountDown(newValue);\n this.localShow = parseShow(newValue);\n }), _defineProperty(_watch, \"countDown\", function countDown(newValue) {\n var _this = this;\n\n this.clearCountDownInterval();\n var show = this[MODEL_PROP_NAME]; // Ignore if `show` transitions to a boolean value\n\n if (isNumeric(show)) {\n this.$emit(EVENT_NAME_DISMISS_COUNT_DOWN, newValue); // Update the v-model if needed\n\n if (show !== newValue) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n\n if (newValue > 0) {\n this.localShow = true;\n this.$_countDownTimeout = setTimeout(function () {\n _this.countDown--;\n }, 1000);\n } else {\n // Slightly delay the hide to allow any UI updates\n this.$nextTick(function () {\n requestAF(function () {\n _this.localShow = false;\n });\n });\n }\n }\n }), _defineProperty(_watch, \"localShow\", function localShow(newValue) {\n var show = this[MODEL_PROP_NAME]; // Only emit dismissed events for dismissible or auto-dismissing alerts\n\n if (!newValue && (this.dismissible || isNumeric(show))) {\n this.$emit(EVENT_NAME_DISMISSED);\n } // Only emit booleans if we weren't passed a number via v-model\n\n\n if (!isNumeric(show) && show !== newValue) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n }), _watch),\n created: function created() {\n // Create private non-reactive props\n this.$_filterTimer = null;\n var show = this[MODEL_PROP_NAME];\n this.countDown = parseCountDown(show);\n this.localShow = parseShow(show);\n },\n beforeDestroy: function beforeDestroy() {\n this.clearCountDownInterval();\n },\n methods: {\n dismiss: function dismiss() {\n this.clearCountDownInterval();\n this.countDown = 0;\n this.localShow = false;\n },\n clearCountDownInterval: function clearCountDownInterval() {\n clearTimeout(this.$_countDownTimeout);\n this.$_countDownTimeout = null;\n }\n },\n render: function render(h) {\n var $alert = h();\n\n if (this.localShow) {\n var dismissible = this.dismissible,\n variant = this.variant;\n var $dismissButton = h();\n\n if (dismissible) {\n // Add dismiss button\n $dismissButton = h(BButtonClose, {\n attrs: {\n 'aria-label': this.dismissLabel\n },\n on: {\n click: this.dismiss\n }\n }, [this.normalizeSlot(SLOT_NAME_DISMISS)]);\n }\n\n $alert = h('div', {\n staticClass: 'alert',\n class: _defineProperty({\n 'alert-dismissible': dismissible\n }, \"alert-\".concat(variant), variant),\n attrs: {\n role: 'alert',\n 'aria-live': 'polite',\n 'aria-atomic': true\n },\n key: this[COMPONENT_UID_KEY]\n }, [$dismissButton, this.normalizeSlot()]);\n }\n\n return h(BVTransition, {\n props: {\n noFade: !this.fade\n }\n }, [$alert]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_BODY } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, pluckProps, prefixPropName } from '../../utils/props';\nimport { props as cardProps } from '../../mixins/card';\nimport { BCardTitle, props as titleProps } from './card-title';\nimport { BCardSubTitle, props as subTitleProps } from './card-sub-title'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, titleProps), subTitleProps), copyProps(cardProps, prefixPropName.bind(null, 'body'))), {}, {\n bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n overlay: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD_BODY); // --- Main component ---\n// @vue/component\n\nexport var BCardBody = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_BODY,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var bodyBgVariant = props.bodyBgVariant,\n bodyBorderVariant = props.bodyBorderVariant,\n bodyTextVariant = props.bodyTextVariant;\n var $title = h();\n\n if (props.title) {\n $title = h(BCardTitle, {\n props: pluckProps(titleProps, props)\n });\n }\n\n var $subTitle = h();\n\n if (props.subTitle) {\n $subTitle = h(BCardSubTitle, {\n props: pluckProps(subTitleProps, props),\n class: ['mb-2']\n });\n }\n\n return h(props.bodyTag, mergeData(data, {\n staticClass: 'card-body',\n class: [(_ref2 = {\n 'card-img-overlay': props.overlay\n }, _defineProperty(_ref2, \"bg-\".concat(bodyBgVariant), bodyBgVariant), _defineProperty(_ref2, \"border-\".concat(bodyBorderVariant), bodyBorderVariant), _defineProperty(_ref2, \"text-\".concat(bodyTextVariant), bodyTextVariant), _ref2), props.bodyClass]\n }), [$title, $subTitle, children]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_FOOTER } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { htmlOrText } from '../../utils/html';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, prefixPropName } from '../../utils/props';\nimport { props as BCardProps } from '../../mixins/card'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, copyProps(BCardProps, prefixPropName.bind(null, 'footer'))), {}, {\n footer: makeProp(PROP_TYPE_STRING),\n footerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n footerHtml: makeProp(PROP_TYPE_STRING)\n})), NAME_CARD_FOOTER); // --- Main component ---\n// @vue/component\n\nexport var BCardFooter = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_FOOTER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var footerBgVariant = props.footerBgVariant,\n footerBorderVariant = props.footerBorderVariant,\n footerTextVariant = props.footerTextVariant;\n return h(props.footerTag, mergeData(data, {\n staticClass: 'card-footer',\n class: [props.footerClass, (_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(footerBgVariant), footerBgVariant), _defineProperty(_ref2, \"border-\".concat(footerBorderVariant), footerBorderVariant), _defineProperty(_ref2, \"text-\".concat(footerTextVariant), footerTextVariant), _ref2)],\n domProps: children ? {} : htmlOrText(props.footerHtml, props.footer)\n }), children);\n }\n});","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppTimeline.vue?vue&type=style&index=0&id=879a380c&lang=scss&scoped=true&\"","\n/*!\n * vue-awesome-swiper v4.1.1\n * Copyright (c) Surmon. All rights reserved.\n * Released under the MIT License.\n * Surmon \n */\n\n(function(g,f){typeof exports==='object'&&typeof module!=='undefined'?f(exports,require('swiper'),require('vue')):typeof define==='function'&&define.amd?define(['exports','swiper','vue'],f):(g=g||self,f(g.VueAwesomeSwiper={},g.Swiper,g.Vue));}(this,(function(exports, SwiperClass, Vue){'use strict';SwiperClass=SwiperClass&&Object.prototype.hasOwnProperty.call(SwiperClass,'default')?SwiperClass['default']:SwiperClass;Vue=Vue&&Object.prototype.hasOwnProperty.call(Vue,'default')?Vue['default']:Vue;/**\r\n * @file vue-awesome-swiper\r\n * @module constants\r\n * @author Surmon \r\n */\r\nvar CoreNames;\r\n(function (CoreNames) {\r\n CoreNames[\"SwiperComponent\"] = \"Swiper\";\r\n CoreNames[\"SwiperSlideComponent\"] = \"SwiperSlide\";\r\n CoreNames[\"SwiperDirective\"] = \"swiper\";\r\n CoreNames[\"SwiperInstance\"] = \"$swiper\";\r\n})(CoreNames || (CoreNames = {}));\r\nvar DEFAULT_CLASSES = Object.freeze({\r\n containerClass: 'swiper-container',\r\n wrapperClass: 'swiper-wrapper',\r\n slideClass: 'swiper-slide'\r\n});\r\nvar ComponentEvents;\r\n(function (ComponentEvents) {\r\n ComponentEvents[\"Ready\"] = \"ready\";\r\n ComponentEvents[\"ClickSlide\"] = \"clickSlide\";\r\n})(ComponentEvents || (ComponentEvents = {}));\r\nvar ComponentPropNames;\r\n(function (ComponentPropNames) {\r\n ComponentPropNames[\"AutoUpdate\"] = \"autoUpdate\";\r\n ComponentPropNames[\"AutoDestroy\"] = \"autoDestroy\";\r\n ComponentPropNames[\"DeleteInstanceOnDestroy\"] = \"deleteInstanceOnDestroy\";\r\n ComponentPropNames[\"CleanupStylesOnDestroy\"] = \"cleanupStylesOnDestroy\";\r\n})(ComponentPropNames || (ComponentPropNames = {}));\r\n// https://swiperjs.com/api/#events\r\nvar SWIPER_EVENTS = [\r\n 'init',\r\n 'beforeDestroy',\r\n 'slideChange',\r\n 'slideChangeTransitionStart',\r\n 'slideChangeTransitionEnd',\r\n 'slideNextTransitionStart',\r\n 'slideNextTransitionEnd',\r\n 'slidePrevTransitionStart',\r\n 'slidePrevTransitionEnd',\r\n 'transitionStart',\r\n 'transitionEnd',\r\n 'touchStart',\r\n 'touchMove',\r\n 'touchMoveOpposite',\r\n 'sliderMove',\r\n 'touchEnd',\r\n 'click',\r\n 'tap',\r\n 'doubleTap',\r\n 'imagesReady',\r\n 'progress',\r\n 'reachBeginning',\r\n 'reachEnd',\r\n 'fromEdge',\r\n 'setTranslate',\r\n 'setTransition',\r\n 'resize',\r\n 'observerUpdate',\r\n 'beforeLoopFix',\r\n 'loopFix'\r\n];/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}/**\r\n * @file vue-awesome-swiper\r\n * @module utils\r\n * @author Surmon \r\n */\r\nvar kebabcase = function (string) {\r\n return string\r\n .replace(/([a-z])([A-Z])/g, '$1-$2')\r\n .replace(/\\s+/g, '-')\r\n .toLowerCase();\r\n};/**\r\n * @file vue-awesome-swiper\r\n * @module event\r\n * @author Surmon \r\n */\r\nvar handleClickSlideEvent = function (swiper, event, emit) {\r\n var _a, _b, _c;\r\n if (swiper && !(swiper.destroyed)) {\r\n var eventPath = ((_a = event.composedPath) === null || _a === void 0 ? void 0 : _a.call(event)) || event.path;\r\n if ((event === null || event === void 0 ? void 0 : event.target) && eventPath) {\r\n var slides_1 = Array.from(swiper.slides);\r\n var paths = Array.from(eventPath);\r\n // Click slide || slide[children]\r\n if (slides_1.includes(event.target) || paths.some(function (item) { return slides_1.includes(item); })) {\r\n var clickedIndex = swiper.clickedIndex;\r\n var reallyIndex = Number((_c = (_b = swiper.clickedSlide) === null || _b === void 0 ? void 0 : _b.dataset) === null || _c === void 0 ? void 0 : _c.swiperSlideIndex);\r\n var reallyIndexValue = Number.isInteger(reallyIndex) ? reallyIndex : null;\r\n emit(ComponentEvents.ClickSlide, clickedIndex, reallyIndexValue);\r\n emit(kebabcase(ComponentEvents.ClickSlide), clickedIndex, reallyIndexValue);\r\n }\r\n }\r\n }\r\n};\r\nvar bindSwiperEvents = function (swiper, emit) {\r\n SWIPER_EVENTS.forEach(function (eventName) {\r\n swiper.on(eventName, function () {\n var arguments$1 = arguments;\n\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments$1[_i];\r\n }\r\n emit.apply(void 0, __spreadArrays([eventName], args));\r\n var kebabcaseName = kebabcase(eventName);\r\n if (kebabcaseName !== eventName) {\r\n emit.apply(void 0, __spreadArrays([kebabcaseName], args));\r\n }\r\n });\r\n });\r\n};/**\r\n * @file vue-awesome-swiper\r\n * @module directive\r\n * @author Surmon \r\n */\r\nvar INSTANCE_NAME_KEY = 'instanceName';\r\nfunction getDirective(SwiperClass, globalOptions) {\r\n var getStandardisedOptionByAttrs = function (vnode, key) {\r\n var _a, _b, _c, _d;\r\n var value = (_b = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b[key];\r\n return value !== undefined\r\n ? value\r\n : (_d = (_c = vnode.data) === null || _c === void 0 ? void 0 : _c.attrs) === null || _d === void 0 ? void 0 : _d[kebabcase(key)];\r\n };\r\n // Get swiper instace name in directive\r\n var getSwiperInstanceName = function (element, binding, vnode) {\r\n return (binding.arg ||\r\n getStandardisedOptionByAttrs(vnode, INSTANCE_NAME_KEY) ||\r\n element.id ||\r\n CoreNames.SwiperInstance);\r\n };\r\n var getSwiperInstance = function (element, binding, vnode) {\r\n var instanceName = getSwiperInstanceName(element, binding, vnode);\r\n return vnode.context[instanceName] || null;\r\n };\r\n var getSwipeOptions = function (binding) {\r\n return binding.value || globalOptions;\r\n };\r\n var getBooleanValueByInput = function (input) {\r\n return [true, undefined, null, ''].includes(input);\r\n };\r\n // Emit event in Vue directive\r\n var getEventEmiter = function (vnode) {\r\n var _a, _b;\r\n var handlers = ((_a = vnode.data) === null || _a === void 0 ? void 0 : _a.on) || ((_b = vnode.componentOptions) === null || _b === void 0 ? void 0 : _b.listeners);\r\n return function (name) {\n var arguments$1 = arguments;\n\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments$1[_i];\r\n }\r\n var _a;\r\n var handle = (_a = handlers) === null || _a === void 0 ? void 0 : _a[name];\r\n if (handle) {\r\n handle.fns.apply(handle, args);\r\n }\r\n };\r\n };\r\n return {\r\n // Init\r\n bind: function (element, binding, vnode) {\r\n // auto class name\r\n if (element.className.indexOf(DEFAULT_CLASSES.containerClass) === -1) {\r\n element.className += ((element.className ? ' ' : '') + DEFAULT_CLASSES.containerClass);\r\n }\r\n // bind click event\r\n element.addEventListener('click', function (event) {\r\n var emitEvent = getEventEmiter(vnode);\r\n var swiper = getSwiperInstance(element, binding, vnode);\r\n handleClickSlideEvent(swiper, event, emitEvent);\r\n });\r\n },\r\n // DOM inserted\r\n inserted: function (element, binding, vnode) {\r\n var context = vnode.context;\r\n var swiperOptions = getSwipeOptions(binding);\r\n var instanceName = getSwiperInstanceName(element, binding, vnode);\r\n var emitEvent = getEventEmiter(vnode);\r\n var vueContext = context;\r\n var swiper = vueContext === null || vueContext === void 0 ? void 0 : vueContext[instanceName];\r\n // Swiper will destroy but not delete instance, when used \r\n if (!swiper || swiper.destroyed) {\r\n swiper = new SwiperClass(element, swiperOptions);\r\n vueContext[instanceName] = swiper;\r\n bindSwiperEvents(swiper, emitEvent);\r\n emitEvent(ComponentEvents.Ready, swiper);\r\n // MARK: Reinstance when the nexttick with \r\n // Vue.nextTick(instancing) | setTimeout(instancing)\r\n }\r\n },\r\n // On options changed or DOM updated\r\n componentUpdated: function (element, binding, vnode) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\r\n var autoUpdate = getStandardisedOptionByAttrs(vnode, ComponentPropNames.AutoUpdate);\r\n if (getBooleanValueByInput(autoUpdate)) {\r\n var swiper = getSwiperInstance(element, binding, vnode);\r\n if (swiper) {\r\n var swiperOptions = getSwipeOptions(binding);\r\n var isLoop = swiperOptions.loop;\r\n if (isLoop) {\r\n (_b = (_a = swiper) === null || _a === void 0 ? void 0 : _a.loopDestroy) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n (_c = swiper === null || swiper === void 0 ? void 0 : swiper.update) === null || _c === void 0 ? void 0 : _c.call(swiper);\r\n (_e = (_d = swiper.navigation) === null || _d === void 0 ? void 0 : _d.update) === null || _e === void 0 ? void 0 : _e.call(_d);\r\n (_g = (_f = swiper.pagination) === null || _f === void 0 ? void 0 : _f.render) === null || _g === void 0 ? void 0 : _g.call(_f);\r\n (_j = (_h = swiper.pagination) === null || _h === void 0 ? void 0 : _h.update) === null || _j === void 0 ? void 0 : _j.call(_h);\r\n if (isLoop) {\r\n (_l = (_k = swiper) === null || _k === void 0 ? void 0 : _k.loopCreate) === null || _l === void 0 ? void 0 : _l.call(_k);\r\n (_m = swiper === null || swiper === void 0 ? void 0 : swiper.update) === null || _m === void 0 ? void 0 : _m.call(swiper);\r\n }\r\n }\r\n }\r\n },\r\n // Destroy this directive\r\n unbind: function (element, binding, vnode) {\r\n var _a;\r\n var autoDestroy = getStandardisedOptionByAttrs(vnode, ComponentPropNames.AutoDestroy);\r\n if (getBooleanValueByInput(autoDestroy)) {\r\n var swiper = getSwiperInstance(element, binding, vnode);\r\n if (swiper && swiper.initialized) {\r\n (_a = swiper === null || swiper === void 0 ? void 0 : swiper.destroy) === null || _a === void 0 ? void 0 : _a.call(swiper, getBooleanValueByInput(getStandardisedOptionByAttrs(vnode, ComponentPropNames.DeleteInstanceOnDestroy)), getBooleanValueByInput(getStandardisedOptionByAttrs(vnode, ComponentPropNames.CleanupStylesOnDestroy)));\r\n }\r\n }\r\n }\r\n };\r\n}/**\r\n * @file vue-awesome-swiper\r\n * @module SwiperComponent\r\n * @author Surmon \r\n */\r\nvar SlotNames;\r\n(function (SlotNames) {\r\n SlotNames[\"ParallaxBg\"] = \"parallax-bg\";\r\n SlotNames[\"Pagination\"] = \"pagination\";\r\n SlotNames[\"Scrollbar\"] = \"scrollbar\";\r\n SlotNames[\"PrevButton\"] = \"button-prev\";\r\n SlotNames[\"NextButton\"] = \"button-next\";\r\n})(SlotNames || (SlotNames = {}));\r\nfunction getSwiperComponent(SwiperClass) {\r\n var _a;\r\n return Vue.extend({\r\n name: CoreNames.SwiperComponent,\r\n props: (_a = {\r\n defaultOptions: {\r\n type: Object,\r\n required: false,\r\n default: function () { return ({}); }\r\n },\r\n // eslint-disable-next-line vue/require-default-prop\r\n options: {\r\n type: Object,\r\n required: false\r\n }\r\n },\r\n _a[ComponentPropNames.AutoUpdate] = {\r\n type: Boolean,\r\n default: true\r\n },\r\n // https://github.com/surmon-china/vue-awesome-swiper/pull/550/files\r\n _a[ComponentPropNames.AutoDestroy] = {\r\n type: Boolean,\r\n default: true\r\n },\r\n // https://github.com/surmon-china/vue-awesome-swiper/pull/388\r\n _a[ComponentPropNames.DeleteInstanceOnDestroy] = {\r\n type: Boolean,\r\n required: false,\r\n default: true\r\n },\r\n _a[ComponentPropNames.CleanupStylesOnDestroy] = {\r\n type: Boolean,\r\n required: false,\r\n default: true\r\n },\r\n _a),\r\n data: function () {\r\n var _a;\r\n return _a = {},\r\n _a[CoreNames.SwiperInstance] = null,\r\n _a;\r\n },\r\n computed: {\r\n swiperInstance: {\r\n cache: false,\r\n set: function (swiper) {\r\n this[CoreNames.SwiperInstance] = swiper;\r\n },\r\n get: function () {\r\n return this[CoreNames.SwiperInstance];\r\n }\r\n },\r\n swiperOptions: function () {\r\n return this.options || this.defaultOptions;\r\n },\r\n wrapperClass: function () {\r\n return this.swiperOptions.wrapperClass || DEFAULT_CLASSES.wrapperClass;\r\n }\r\n },\r\n methods: {\r\n // Feature: click event\r\n handleSwiperClick: function (event) {\r\n handleClickSlideEvent(this.swiperInstance, event, this.$emit.bind(this));\r\n },\r\n autoReLoopSwiper: function () {\r\n var _a, _b;\r\n if (this.swiperInstance && this.swiperOptions.loop) {\r\n // https://github.com/surmon-china/vue-awesome-swiper/issues/593\r\n // https://github.com/surmon-china/vue-awesome-swiper/issues/544\r\n // https://github.com/surmon-china/vue-awesome-swiper/pull/545/files\r\n var swiper = this.swiperInstance;\r\n (_a = swiper === null || swiper === void 0 ? void 0 : swiper.loopDestroy) === null || _a === void 0 ? void 0 : _a.call(swiper);\r\n (_b = swiper === null || swiper === void 0 ? void 0 : swiper.loopCreate) === null || _b === void 0 ? void 0 : _b.call(swiper);\r\n }\r\n },\r\n updateSwiper: function () {\r\n var _a, _b, _c, _d, _e, _f, _g, _h;\r\n if (this[ComponentPropNames.AutoUpdate] && this.swiperInstance) {\r\n this.autoReLoopSwiper();\r\n (_b = (_a = this.swiperInstance) === null || _a === void 0 ? void 0 : _a.update) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n (_d = (_c = this.swiperInstance.navigation) === null || _c === void 0 ? void 0 : _c.update) === null || _d === void 0 ? void 0 : _d.call(_c);\r\n (_f = (_e = this.swiperInstance.pagination) === null || _e === void 0 ? void 0 : _e.render) === null || _f === void 0 ? void 0 : _f.call(_e);\r\n (_h = (_g = this.swiperInstance.pagination) === null || _g === void 0 ? void 0 : _g.update) === null || _h === void 0 ? void 0 : _h.call(_g);\r\n }\r\n },\r\n destroySwiper: function () {\r\n var _a, _b;\r\n if (this[ComponentPropNames.AutoDestroy] && this.swiperInstance) {\r\n // https://github.com/surmon-china/vue-awesome-swiper/pull/341\r\n // https://github.com/surmon-china/vue-awesome-swiper/issues/340\r\n if (this.swiperInstance.initialized) {\r\n (_b = (_a = this.swiperInstance) === null || _a === void 0 ? void 0 : _a.destroy) === null || _b === void 0 ? void 0 : _b.call(_a, this[ComponentPropNames.DeleteInstanceOnDestroy], this[ComponentPropNames.CleanupStylesOnDestroy]);\r\n }\r\n }\r\n },\r\n initSwiper: function () {\r\n this.swiperInstance = new SwiperClass(this.$el, this.swiperOptions);\r\n bindSwiperEvents(this.swiperInstance, this.$emit.bind(this));\r\n this.$emit(ComponentEvents.Ready, this.swiperInstance);\r\n }\r\n },\r\n mounted: function () {\r\n if (!this.swiperInstance) {\r\n this.initSwiper();\r\n }\r\n },\r\n // Update swiper when the parent component activated with `keep-alive`.\r\n activated: function () {\r\n this.updateSwiper();\r\n },\r\n updated: function () {\r\n this.updateSwiper();\r\n },\r\n beforeDestroy: function () {\r\n // https://github.com/surmon-china/vue-awesome-swiper/commit/2924a9d4d3d1cf51c0d46076410b1f804b2b8a43#diff-7f4e0261ac562c0f354cb91a1ca8864f\r\n this.$nextTick(this.destroySwiper);\r\n },\r\n render: function (createElement) {\r\n return createElement('div', {\r\n staticClass: DEFAULT_CLASSES.containerClass,\r\n on: {\r\n click: this.handleSwiperClick\r\n }\r\n }, [\r\n this.$slots[SlotNames.ParallaxBg],\r\n createElement('div', {\r\n class: this.wrapperClass\r\n }, this.$slots.default),\r\n this.$slots[SlotNames.Pagination],\r\n this.$slots[SlotNames.PrevButton],\r\n this.$slots[SlotNames.NextButton],\r\n this.$slots[SlotNames.Scrollbar]\r\n ]);\r\n }\r\n });\r\n}/**\r\n * @file vue-awesome-swiper\r\n * @module SwiperSlideComponent\r\n * @author Surmon \r\n */\r\nvar SwiperSlideComponent = Vue.extend({\r\n name: CoreNames.SwiperSlideComponent,\r\n computed: {\r\n slideClass: function () {\r\n var _a, _b;\r\n return ((_b = (_a = this.$parent) === null || _a === void 0 ? void 0 : _a.swiperOptions) === null || _b === void 0 ? void 0 : _b.slideClass) || DEFAULT_CLASSES.slideClass;\r\n }\r\n },\r\n methods: {\r\n update: function () {\r\n var _a;\r\n var parent = this.$parent;\r\n // https://github.com/surmon-china/vue-awesome-swiper/issues/632\r\n if (parent[ComponentPropNames.AutoUpdate]) {\r\n (_a = parent === null || parent === void 0 ? void 0 : parent.swiperInstance) === null || _a === void 0 ? void 0 : _a.update();\r\n }\r\n }\r\n },\r\n mounted: function () {\r\n this.update();\r\n },\r\n updated: function () {\r\n this.update();\r\n },\r\n render: function (createElement) {\r\n return createElement('div', {\r\n class: this.slideClass\r\n }, this.$slots.default);\r\n }\r\n});/**\r\n * @file vue-awesome-swiper\r\n * @module exporter\r\n * @author Surmon \r\n */\r\nvar getInstaller = function (SwiperClass) {\r\n var install = function (Vue, globalOptions) {\r\n if (install.installed)\r\n { return; }\r\n var SwiperComponent = getSwiperComponent(SwiperClass);\r\n if (globalOptions) {\r\n SwiperComponent.options.props.defaultOptions.default = function () { return globalOptions; };\r\n }\r\n Vue.component(CoreNames.SwiperComponent, SwiperComponent);\r\n Vue.component(CoreNames.SwiperSlideComponent, SwiperSlideComponent);\r\n Vue.directive(CoreNames.SwiperDirective, getDirective(SwiperClass, globalOptions));\r\n install.installed = true;\r\n };\r\n return install;\r\n};\r\nfunction exporter(SwiperClass) {\r\n var _a;\r\n return _a = {\r\n version: '4.1.1',\r\n install: getInstaller(SwiperClass),\r\n directive: getDirective(SwiperClass)\r\n },\r\n _a[CoreNames.SwiperComponent] = getSwiperComponent(SwiperClass),\r\n _a[CoreNames.SwiperSlideComponent] = SwiperSlideComponent,\r\n _a;\r\n}/**\r\n * @file vue-awesome-swiper\r\n * @module default-export\r\n * @author Surmon \r\n */\r\nvar VueAwesomeSwiper = exporter(SwiperClass);\r\nvar version = VueAwesomeSwiper.version;\r\nvar install = VueAwesomeSwiper.install;\r\nvar directive = VueAwesomeSwiper.directive;\r\nvar Swiper = VueAwesomeSwiper.Swiper;\r\nvar SwiperSlide = VueAwesomeSwiper.SwiperSlide;exports.Swiper=Swiper;exports.SwiperSlide=SwiperSlide;exports.default=VueAwesomeSwiper;exports.directive=directive;exports.install=install;exports.version=version;Object.defineProperty(exports,'__esModule',{value:true});})));","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Constants used by table helpers\nexport var FIELD_KEY_CELL_VARIANT = '_cellVariants';\nexport var FIELD_KEY_ROW_VARIANT = '_rowVariant';\nexport var FIELD_KEY_SHOW_DETAILS = '_showDetails'; // Object of item keys that should be ignored for headers and\n// stringification and filter events\n\nexport var IGNORED_FIELD_KEYS = [FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS].reduce(function (result, key) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, key, true));\n}, {}); // Filter CSS selector for click/dblclick/etc. events\n// If any of these selectors match the clicked element, we ignore the event\n\nexport var EVENT_FILTER = ['a', 'a *', // Include content inside links\n'button', 'button *', // Include content inside buttons\n'input:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'textarea:not(.disabled):not([disabled])', '[role=\"link\"]', '[role=\"link\"] *', '[role=\"button\"]', '[role=\"button\"] *', '[tabindex]:not(.disabled):not([disabled])'].join(',');","import { Vue } from '../../../vue';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_CUSTOM_FOOT } from '../../../constants/slots';\nimport { makeProp } from '../../../utils/props';\nimport { BTfoot } from '../tfoot'; // --- Props ---\n\nexport var props = {\n footClone: makeProp(PROP_TYPE_BOOLEAN, false),\n // Any Bootstrap theme variant (or custom)\n // Falls back to `headRowVariant`\n footRowVariant: makeProp(PROP_TYPE_STRING),\n // 'dark', 'light', or `null` (or custom)\n footVariant: makeProp(PROP_TYPE_STRING),\n tfootClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tfootTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var tfootMixin = Vue.extend({\n props: props,\n methods: {\n renderTFootCustom: function renderTFootCustom() {\n var h = this.$createElement;\n\n if (this.hasNormalizedSlot(SLOT_NAME_CUSTOM_FOOT)) {\n return h(BTfoot, {\n class: this.tfootClass || null,\n props: {\n footVariant: this.footVariant || this.headVariant || null\n },\n key: 'bv-tfoot-custom'\n }, this.normalizeSlot(SLOT_NAME_CUSTOM_FOOT, {\n items: this.computedItems.slice(),\n fields: this.computedFields.slice(),\n columns: this.computedFields.length\n }));\n }\n\n return h();\n },\n renderTfoot: function renderTfoot() {\n // Passing true to renderThead will make it render a tfoot\n return this.footClone ? this.renderThead(true) : this.renderTFootCustom();\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_BREADCRUMB_LINK } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { htmlOrText } from '../../utils/html';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, omit(BLinkProps, ['event', 'routerTag'])), {}, {\n ariaCurrent: makeProp(PROP_TYPE_STRING, 'location'),\n html: makeProp(PROP_TYPE_STRING),\n text: makeProp(PROP_TYPE_STRING)\n})), NAME_BREADCRUMB_LINK); // --- Main component ---\n// @vue/component\n\nexport var BBreadcrumbLink = /*#__PURE__*/Vue.extend({\n name: NAME_BREADCRUMB_LINK,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var suppliedProps = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var active = suppliedProps.active;\n var tag = active ? 'span' : BLink;\n var componentData = {\n attrs: {\n 'aria-current': active ? suppliedProps.ariaCurrent : null\n },\n props: pluckProps(props, suppliedProps)\n };\n\n if (!children) {\n componentData.domProps = htmlOrText(suppliedProps.html, suppliedProps.text);\n }\n\n return h(tag, mergeData(data, componentData), children);\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_BREADCRUMB_ITEM } from '../../constants/components';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BBreadcrumbLink, props as BBreadcrumbLinkProps } from './breadcrumb-link'; // --- Props ---\n\nexport var props = makePropsConfigurable(BBreadcrumbLinkProps, NAME_BREADCRUMB_ITEM); // --- Main component ---\n// @vue/component\n\nexport var BBreadcrumbItem = /*#__PURE__*/Vue.extend({\n name: NAME_BREADCRUMB_ITEM,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('li', mergeData(data, {\n staticClass: 'breadcrumb-item',\n class: {\n active: props.active\n }\n }), [h(BBreadcrumbLink, {\n props: props\n }, children)]);\n }\n});","import { ref } from '@vue/composition-api'\nimport store from '@/store'\n\nexport const useShopFiltersSortingAndPagination = () => {\n const filters = ref({\n q: '',\n priceRangeDefined: 'all',\n priceRange: [0, 1000],\n categories: '',\n brands: '',\n gender: '',\n ratings: 0,\n page: 1,\n perPage: 30,\n })\n\n const filterOptions = {\n priceRangeDefined: [\n { text: 'Tümü', value: 'all' },\n { text: '<= 10', value: '<=10' },\n { text: '10 - 100', value: '10-100' },\n { text: '100 - 500', value: '100-500' },\n { text: '>= 500', value: '>=500' },\n ],\n categories: [\n {text: \"\", value: \"\"},\n {text: \"Büyük Beden Yelek\", value: \"Büyük Beden Yelek\"},\n {text: \"Büyük Beden Hırka\", value: \"Büyük Beden Hırka\"},\n {text: \"Eşofman Takımı\", value: \"Eşofman Takımı\"},\n {text: \"Büyük Beden Eşofman Takımı\", value: \"Büyük Beden Eşofman Takımı\"},\n {text: \"Büyük Beden Etek\", value: \"Büyük Beden Etek\"},\n {text: \"Büyük Beden Elbise\", value: \"Büyük Beden Elbise\"},\n {text: \"Tunik\", value: \"Tunik\"},\n {text: \"Büyük Beden Kazak\", value: \"Büyük Beden Kazak\"},\n {text: \"Büyük Beden Tunik\", value: \"Büyük Beden Tunik\"},\n {text: \"Büyük Beden Ceket\", value: \"Büyük Beden Ceket\"},\n {text: \"Büyük Beden Tayt\", value: \"Büyük Beden Tayt\"},\n {text: \"Büyük Beden Bluz\", value: \"Büyük Beden Bluz\"},\n {text: \"Kazak\", value: \"Kazak\"},\n {text: \"Hırka\", value: \"Hırka\"},\n {text: \"Büyük Beden Gömlek\", value: \"Büyük Beden Gömlek\"},\n {text: \"Gömlek\", value: \"Gömlek\"},\n {text: \"Eşofman Altı\", value: \"Eşofman Altı\"},\n {text: \"Panço\", value: \"Panço\"},\n {text: \"Bluz\", value: \"Bluz\"},\n \n ],\n gender: [{text:'',value:''},{text:'Kadın',value:'Kadın'},{text:'Erkek',value:'Erkek'},{text:'Unisex',value:'Unisex'},{text:'Çocuk',value:'Çocuk'}],\n brands: [{text:'',value:''},{text:'Tusse',value:'Tusse'}],\n ratings: [\n { rating: 5, count: 212 },\n { rating: 4, count: 160 },\n { rating: 3, count: 176 },\n { rating: 2, count: 291 },\n { rating: 1, count: 190 },\n { rating: 0, count: 288 },\n ],\n }\n\n // Sorting\n const sortBy = ref({ text: 'Gelişmiş', value: 'featured' })\n const sortByOptions = [\n { text: 'Gelişmiş', value: 'featured' },\n { text: 'Düşük Fiyat', value: 'price-asc' },\n { text: 'Yüksek Fiyat', value: 'price-desc' },\n ]\n\n return {\n // Filter\n filters,\n filterOptions,\n\n // Sort\n sortBy,\n sortByOptions,\n }\n}\n\nexport const useShopUi = () => {\n const itemView = 'grid-view'\n const itemViewOptions = [\n { icon: 'GridIcon', value: 'grid-view' },\n { icon: 'ListIcon', value: 'list-view' },\n ]\n\n // Pagination count <= required by pagination component\n const totalProducts = ref(null)\n\n return {\n itemView,\n itemViewOptions,\n totalProducts,\n }\n}\n\nexport const useShopRemoteData = () => {\n const products = ref([])\n const fetchProducts = (...args) => store.dispatch('app-ecommerce/fetchProducts', ...args)\n\n return {\n products,\n fetchProducts,\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',{class:{'open': _vm.visible},attrs:{\"no-body\":\"\"},on:{\"mouseenter\":_vm.collapseOpen,\"mouseleave\":_vm.collapseClose}},[_c('b-card-header',{class:{'collapsed': !_vm.visible},attrs:{\"aria-expanded\":_vm.visible ? 'true' : 'false',\"aria-controls\":_vm.collapseItemID,\"role\":\"tab\",\"data-toggle\":\"collapse\"},on:{\"click\":function($event){return _vm.updateVisible(!_vm.visible)}}},[_vm._t(\"header\",[_c('span',{staticClass:\"lead collapse-title\"},[_vm._v(_vm._s(_vm.title))])])],2),_c('b-collapse',{attrs:{\"id\":_vm.collapseItemID,\"accordion\":_vm.accordion,\"role\":\"tabpanel\"},model:{value:(_vm.visible),callback:function ($$v) {_vm.visible=$$v},expression:\"visible\"}},[_c('b-card-body',[_vm._t(\"default\")],2)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppCollapseItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppCollapseItem.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppCollapseItem.vue?vue&type=template&id=af0845a4&\"\nimport script from \"./AppCollapseItem.vue?vue&type=script&lang=js&\"\nexport * from \"./AppCollapseItem.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { closest, getAttr, getById, matches, select } from '../../../utils/dom';\nimport { EVENT_FILTER } from './constants';\nvar TABLE_TAG_NAMES = ['TD', 'TH', 'TR']; // Returns `true` if we should ignore the click/double-click/keypress event\n// Avoids having the user need to use `@click.stop` on the form control\n\nexport var filterEvent = function filterEvent(event) {\n // Exit early when we don't have a target element\n if (!event || !event.target) {\n /* istanbul ignore next */\n return false;\n }\n\n var el = event.target; // Exit early when element is disabled or a table element\n\n if (el.disabled || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n return false;\n } // Ignore the click when it was inside a dropdown menu\n\n\n if (closest('.dropdown-menu', el)) {\n return true;\n }\n\n var label = el.tagName === 'LABEL' ? el : closest('label', el); // If the label's form control is not disabled then we don't propagate event\n // Modern browsers have `label.control` that references the associated input, but IE 11\n // does not have this property on the label element, so we resort to DOM lookups\n\n if (label) {\n var labelFor = getAttr(label, 'for');\n var input = labelFor ? getById(labelFor) : select('input, select, textarea', label);\n\n if (input && !input.disabled) {\n return true;\n }\n } // Otherwise check if the event target matches one of the selectors in the\n // event filter (i.e. anchors, non disabled inputs, etc.)\n // Return `true` if we should ignore the event\n\n\n return matches(el, EVENT_FILTER);\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { mergeData } from '../../vue';\nimport { NAME_COL } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { RX_COL_CLASS } from '../../constants/regex';\nimport { arrayIncludes } from '../../utils/array';\nimport { getBreakpointsUpCached } from '../../utils/config';\nimport { identity } from '../../utils/identity';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { memoize } from '../../utils/memoize';\nimport { assign, create, keys, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, suffixPropName } from '../../utils/props';\nimport { lowerCase } from '../../utils/string'; // --- Constants ---\n\nvar ALIGN_SELF_VALUES = ['auto', 'start', 'end', 'center', 'baseline', 'stretch']; // --- Helper methods ---\n// Compute a breakpoint class name\n\nvar computeBreakpoint = function computeBreakpoint(type, breakpoint, value) {\n var className = type;\n\n if (isUndefinedOrNull(value) || value === false) {\n return undefined;\n }\n\n if (breakpoint) {\n className += \"-\".concat(breakpoint);\n } // Handling the boolean style prop when accepting `[Boolean, String, Number]`\n // means Vue will not convert `` to `sm: true` for us\n // Since the default is `false`, '' indicates the prop's presence\n\n\n if (type === 'col' && (value === '' || value === true)) {\n // .col-md\n return lowerCase(className);\n } // .order-md-6\n\n\n className += \"-\".concat(value);\n return lowerCase(className);\n}; // Memoized function for better performance on generating class names\n\n\nvar computeBreakpointClass = memoize(computeBreakpoint); // Cached copy of the breakpoint prop names\n\nvar breakpointPropMap = create(null); // --- Props ---\n// Prop generator for lazy generation of props\n\nexport var generateProps = function generateProps() {\n // Grab the breakpoints from the cached config (exclude the '' (xs) breakpoint)\n var breakpoints = getBreakpointsUpCached().filter(identity); // i.e. 'col-sm', 'col-md-6', 'col-lg-auto', ...\n\n var breakpointCol = breakpoints.reduce(function (props, breakpoint) {\n props[breakpoint] = makeProp(PROP_TYPE_BOOLEAN_NUMBER_STRING);\n return props;\n }, create(null)); // i.e. 'offset-md-1', 'offset-lg-12', ...\n\n var breakpointOffset = breakpoints.reduce(function (props, breakpoint) {\n props[suffixPropName(breakpoint, 'offset')] = makeProp(PROP_TYPE_NUMBER_STRING);\n return props;\n }, create(null)); // i.e. 'order-md-1', 'order-lg-12', ...\n\n var breakpointOrder = breakpoints.reduce(function (props, breakpoint) {\n props[suffixPropName(breakpoint, 'order')] = makeProp(PROP_TYPE_NUMBER_STRING);\n return props;\n }, create(null)); // For loop doesn't need to check `.hasOwnProperty()`\n // when using an object created from `null`\n\n breakpointPropMap = assign(create(null), {\n col: keys(breakpointCol),\n offset: keys(breakpointOffset),\n order: keys(breakpointOrder)\n }); // Return the generated props\n\n return makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, breakpointCol), breakpointOffset), breakpointOrder), {}, {\n // Flex alignment\n alignSelf: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(ALIGN_SELF_VALUES, value);\n }),\n // Generic flexbox 'col' (xs)\n col: makeProp(PROP_TYPE_BOOLEAN, false),\n // i.e. 'col-1', 'col-2', 'col-auto', ...\n cols: makeProp(PROP_TYPE_NUMBER_STRING),\n offset: makeProp(PROP_TYPE_NUMBER_STRING),\n order: makeProp(PROP_TYPE_NUMBER_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n })), NAME_COL);\n}; // --- Main component ---\n// We do not use Vue.extend here as that would evaluate the props\n// immediately, which we do not want to happen\n// @vue/component\n\nexport var BCol = {\n name: NAME_COL,\n functional: true,\n\n get props() {\n // Allow props to be lazy evaled on first access and\n // then they become a non-getter afterwards.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n delete this.props; // eslint-disable-next-line no-return-assign\n\n return this.props = generateProps();\n },\n\n render: function render(h, _ref) {\n var _classList$push;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var cols = props.cols,\n offset = props.offset,\n order = props.order,\n alignSelf = props.alignSelf;\n var classList = []; // Loop through `col`, `offset`, `order` breakpoint props\n\n for (var type in breakpointPropMap) {\n // Returns colSm, offset, offsetSm, orderMd, etc.\n var _keys = breakpointPropMap[type];\n\n for (var i = 0; i < _keys.length; i++) {\n // computeBreakpoint(col, colSm => Sm, value=[String, Number, Boolean])\n var c = computeBreakpointClass(type, _keys[i].replace(type, ''), props[_keys[i]]); // If a class is returned, push it onto the array.\n\n if (c) {\n classList.push(c);\n }\n }\n }\n\n var hasColClasses = classList.some(function (className) {\n return RX_COL_CLASS.test(className);\n });\n classList.push((_classList$push = {\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: props.col || !hasColClasses && !cols\n }, _defineProperty(_classList$push, \"col-\".concat(cols), cols), _defineProperty(_classList$push, \"offset-\".concat(offset), offset), _defineProperty(_classList$push, \"order-\".concat(order), order), _defineProperty(_classList$push, \"align-self-\".concat(alignSelf), alignSelf), _classList$push));\n return h(props.tag, mergeData(data, {\n class: classList\n }), children);\n }\n};","/**\n * SSR Window 2.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: May 12, 2020\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 if (target === void 0) { target = {}; }\n if (src === void 0) { src = {}; }\n Object.keys(src).forEach(function (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\nvar doc = typeof document !== 'undefined' ? document : {};\nvar ssrDocument = {\n body: {},\n addEventListener: function () { },\n removeEventListener: function () { },\n activeElement: {\n blur: function () { },\n nodeName: '',\n },\n querySelector: function () {\n return null;\n },\n querySelectorAll: function () {\n return [];\n },\n getElementById: function () {\n return null;\n },\n createEvent: function () {\n return {\n initEvent: function () { },\n };\n },\n createElement: function () {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function () { },\n getElementsByTagName: function () {\n return [];\n },\n };\n },\n createElementNS: function () {\n return {};\n },\n importNode: function () {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nextend(doc, ssrDocument);\n\nvar win = typeof window !== 'undefined' ? window : {};\nvar 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: function () { },\n pushState: function () { },\n go: function () { },\n back: function () { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function () { },\n removeEventListener: function () { },\n getComputedStyle: function () {\n return {\n getPropertyValue: function () {\n return '';\n },\n };\n },\n Image: function () { },\n Date: function () { },\n screen: {},\n setTimeout: function () { },\n clearTimeout: function () { },\n matchMedia: function () {\n return {};\n },\n};\nextend(win, ssrWindow);\n\nexport { doc as document, extend, win as window };\n","/**\n * Dom7 2.1.5\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: May 15, 2020\n */\nimport { document, window } from 'ssr-window';\n\nclass Dom7 {\n constructor(arr) {\n const self = this;\n // Create array-like object\n for (let i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n self.length = arr.length;\n // Return collection with methods\n return this;\n }\n}\n\nfunction $(selector, context) {\n const arr = [];\n let i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n let els;\n let tempParent;\n const html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(':~]/)) {\n // Pure ID selector\n els = [document.getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || document).querySelectorAll(selector.trim());\n }\n for (i = 0; i < els.length; i += 1) {\n if (els[i]) arr.push(els[i]);\n }\n }\n } else if (selector.nodeType || selector === window || selector === document) {\n // Node/element\n arr.push(selector);\n } else if (selector.length > 0 && selector[0].nodeType) {\n // Array of elements or instance of Dom\n for (i = 0; i < selector.length; i += 1) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n}\n\n$.fn = Dom7.prototype;\n$.Class = Dom7;\n$.Dom7 = Dom7;\n\nfunction unique(arr) {\n const uniqueArray = [];\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group1) => group1.toUpperCase());\n}\n\nfunction requestAnimationFrame(callback) {\n if (window.requestAnimationFrame) return window.requestAnimationFrame(callback);\n else if (window.webkitRequestAnimationFrame) return window.webkitRequestAnimationFrame(callback);\n return window.setTimeout(callback, 1000 / 60);\n}\nfunction cancelAnimationFrame(id) {\n if (window.cancelAnimationFrame) return window.cancelAnimationFrame(id);\n else if (window.webkitCancelAnimationFrame) return window.webkitCancelAnimationFrame(id);\n return window.clearTimeout(id);\n}\n\n// Classes and attributes\nfunction addClass(className) {\n if (typeof className === 'undefined') {\n return this;\n }\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);\n }\n }\n return this;\n}\nfunction removeClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);\n }\n }\n return this;\n}\nfunction hasClass(className) {\n if (!this[0]) return false;\n return this[0].classList.contains(className);\n}\nfunction toggleClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);\n }\n }\n return this;\n}\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n }\n\n // Set attrs\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n // eslint-disable-next-line\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\n// eslint-disable-next-line\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 // eslint-disable-next-line\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n}\nfunction data(key, value) {\n let el;\n if (typeof value === 'undefined') {\n el = this[0];\n // Get value\n if (el) {\n if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n return undefined;\n }\n\n // Set value\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n}\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n if (el.dataset) {\n // eslint-disable-next-line\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 // eslint-disable-next-line\n const attr = el.attributes[i];\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n // eslint-disable-next-line\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;\n else if (dataset[key] === 'true') dataset[key] = true;\n else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n return dataset;\n}\nfunction val(value) {\n const dom = this;\n if (typeof value === 'undefined') {\n if (dom[0]) {\n if (dom[0].multiple && dom[0].nodeName.toLowerCase() === 'select') {\n const values = [];\n for (let i = 0; i < dom[0].selectedOptions.length; i += 1) {\n values.push(dom[0].selectedOptions[i].value);\n }\n return values;\n }\n return dom[0].value;\n }\n return undefined;\n }\n\n for (let i = 0; i < dom.length; i += 1) {\n const el = dom[i];\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 return dom;\n}\n// Transforms\n// eslint-disable-next-line\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n if (typeof duration !== 'string') {\n duration = `${duration}ms`; // eslint-disable-line\n }\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n return this;\n}\n// Events\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) listener.apply(target, eventData);\n else {\n const parents = $(target).parents(); // eslint-disable-line\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n const events = eventType.split(' ');\n let j;\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n return this;\n}\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n const events = eventType.split(' ');\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (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 return this;\n}\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\nfunction trigger(...args) {\n const events = args[0].split(' ');\n const eventData = args[1];\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let evt;\n try {\n evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n } catch (e) {\n evt = document.createEvent('Event');\n evt.initEvent(event, true, true);\n evt.detail = eventData;\n }\n // eslint-disable-next-line\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n const events = ['webkitTransitionEnd', 'transitionend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\nfunction animationEnd(callback) {\n const events = ['webkitAnimationEnd', 'animationend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\n// Sizing/Styles\nfunction width() {\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n return this[0].offsetWidth;\n }\n return null;\n}\nfunction height() {\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: (box.top + scrollTop) - clientTop,\n left: (box.left + scrollLeft) - clientLeft,\n };\n }\n\n return null;\n}\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n return this;\n}\nfunction show() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n return this;\n}\nfunction styles() {\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n let i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (let prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\n\n// Dom manipulation\nfunction toArray() {\n const arr = [];\n for (let i = 0; i < this.length; i += 1) {\n arr.push(this[i]);\n }\n return arr;\n}\n// Iterate over the collection passing elements to `callback`\nfunction each(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], i, this[i]) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction forEach(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], this[i], i) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction filter(callback) {\n const matchedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);\n }\n return new Dom7(matchedItems);\n}\nfunction map(callback) {\n const modifiedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n modifiedItems.push(callback.call(dom[i], i, dom[i]));\n }\n return new Dom7(modifiedItems);\n}\n// eslint-disable-next-line\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\n// eslint-disable-next-line\nfunction text(text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n return null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n } else if (selector === document) return el === document;\n else if (selector === window) return el === window;\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n return false;\n}\nfunction indexOf(el) {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i] === el) return i;\n }\n return -1;\n}\nfunction index() {\n let child = this[0];\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\n// eslint-disable-next-line\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n let returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) return new Dom7([]);\n return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n}\nfunction append(...args) {\n let newChild;\n\n for (let k = 0; k < args.length; k += 1) {\n newChild = args[k];\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n// eslint-disable-next-line\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\nfunction prepend(newChild) {\n let i;\n let j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\nfunction insertBefore(selector) {\n const before = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\nfunction insertAfter(selector) {\n const after = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\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 new Dom7([this[0].nextElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return new Dom7(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return new Dom7(prevEls);\n}\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(unique(parents));\n}\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(unique(parents));\n}\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n const foundElements = [];\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n}\nfunction children(selector) {\n const children = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].childNodes;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return new Dom7(unique(children));\n}\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n}\nfunction detach() {\n return this.remove();\n}\nfunction add(...args) {\n const dom = this;\n let i;\n let j;\n for (i = 0; i < args.length; i += 1) {\n const toAdd = $(args[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\n }\n return dom;\n}\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n el.textContent = '';\n }\n }\n return this;\n}\n\nfunction scrollTo(...args) {\n let [left, top, duration, easing, callback] = args;\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n if (typeof easing === 'undefined') easing = 'swing';\n\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n let scrollLeft; // eslint-disable-line\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n if (animateTop) {\n currentTop = el.scrollTop;\n if (!duration) {\n el.scrollTop = top;\n }\n }\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n if (!duration) return;\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 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 if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n requestAnimationFrame(render);\n }\n requestAnimationFrame(render);\n });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\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 /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n }, initialParams),\n\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - (Math.cos(progress * Math.PI) / 2);\n }\n if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop() {\n if (a.frameId) {\n cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done(complete) {\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n const elements = [];\n\n // Define & Cache Initials & Units\n a.elements.each((index, el) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n elements[index] = {\n container: el,\n };\n Object.keys(props).forEach((prop) => {\n initialFullValue = window.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\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress;\n // let el;\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n if (startTime === null) {\n startTime = time;\n }\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(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 { initialValue, finalValue, unit } = el[prop];\n el[prop].currentValue = initialValue + (easeProgress * (finalValue - initialValue));\n const currentValue = el[prop].currentValue;\n\n if (\n (finalValue > initialValue && currentValue >= finalValue) ||\n (finalValue < initialValue && currentValue <= finalValue)) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n if (done) {\n a.done(params.complete);\n return;\n }\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return;\n // Then call\n a.frameId = requestAnimationFrame(render);\n }\n a.frameId = requestAnimationFrame(render);\n return a;\n },\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = ('resize scroll').split(' ');\nfunction eventShortcut(name, ...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();\n else {\n $(this[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return this.on(name, ...args);\n}\n\nfunction click(...args) {\n return eventShortcut.bind(this)('click', ...args);\n}\nfunction blur(...args) {\n return eventShortcut.bind(this)('blur', ...args);\n}\nfunction focus(...args) {\n return eventShortcut.bind(this)('focus', ...args);\n}\nfunction focusin(...args) {\n return eventShortcut.bind(this)('focusin', ...args);\n}\nfunction focusout(...args) {\n return eventShortcut.bind(this)('focusout', ...args);\n}\nfunction keyup(...args) {\n return eventShortcut.bind(this)('keyup', ...args);\n}\nfunction keydown(...args) {\n return eventShortcut.bind(this)('keydown', ...args);\n}\nfunction keypress(...args) {\n return eventShortcut.bind(this)('keypress', ...args);\n}\nfunction submit(...args) {\n return eventShortcut.bind(this)('submit', ...args);\n}\nfunction change(...args) {\n return eventShortcut.bind(this)('change', ...args);\n}\nfunction mousedown(...args) {\n return eventShortcut.bind(this)('mousedown', ...args);\n}\nfunction mousemove(...args) {\n return eventShortcut.bind(this)('mousemove', ...args);\n}\nfunction mouseup(...args) {\n return eventShortcut.bind(this)('mouseup', ...args);\n}\nfunction mouseenter(...args) {\n return eventShortcut.bind(this)('mouseenter', ...args);\n}\nfunction mouseleave(...args) {\n return eventShortcut.bind(this)('mouseleave', ...args);\n}\nfunction mouseout(...args) {\n return eventShortcut.bind(this)('mouseout', ...args);\n}\nfunction mouseover(...args) {\n return eventShortcut.bind(this)('mouseover', ...args);\n}\nfunction touchstart(...args) {\n return eventShortcut.bind(this)('touchstart', ...args);\n}\nfunction touchend(...args) {\n return eventShortcut.bind(this)('touchend', ...args);\n}\nfunction touchmove(...args) {\n return eventShortcut.bind(this)('touchmove', ...args);\n}\nfunction resize(...args) {\n return eventShortcut.bind(this)('resize', ...args);\n}\nfunction scroll(...args) {\n return eventShortcut.bind(this)('scroll', ...args);\n}\n\nexport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, prop, data, removeData, dataset, val, transform, transition, on, off, once, trigger, transitionEnd, animationEnd, width, outerWidth, height, outerHeight, offset, hide, show, styles, css, toArray, each, forEach, filter, map, html, text, is, indexOf, index, eq, append, appendTo, prepend, prependTo, insertBefore, insertAfter, next, nextAll, prev, prevAll, siblings, parent, parents, closest, find, children, remove, detach, add, empty, scrollTo, scrollTop, scrollLeft, animate, stop, click, blur, focus, focusin, focusout, keyup, keydown, keypress, submit, change, mousedown, mousemove, mouseup, mouseenter, mouseleave, mouseout, mouseover, touchstart, touchend, touchmove, resize, scroll };\n","/**\n * Swiper 5.4.5\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * http://swiperjs.com\n *\n * Copyright 2014-2020 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: June 16, 2020\n */\n\nimport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, data, transform, transition as transition$1, on, off, trigger, transitionEnd as transitionEnd$1, outerWidth, outerHeight, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove, add, styles } from 'dom7/dist/dom7.modular';\nimport { window, document as document$1 } from 'ssr-window';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition: transition$1,\n on,\n off,\n trigger,\n transitionEnd: transitionEnd$1,\n outerWidth,\n outerHeight,\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 add,\n styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n});\n\nconst Utils = {\n deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n },\n nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n },\n now() {\n return Date.now();\n },\n getTranslate(el, axis = 'x') {\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = window.getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = 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;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n },\n parseUrlQuery(url) {\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n }\n }\n return query;\n },\n isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend(...args) {\n const to = Object(args[0]);\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n};\n\nconst Support = (function Support() {\n return {\n touch: !!(('ontouchstart' in window) || (window.DocumentTouch && document$1 instanceof window.DocumentTouch)),\n\n pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints >= 0,\n\n observer: (function checkObserver() {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n }()),\n };\n}());\n\nclass SwiperClass {\n constructor(params = {}) {\n const self = this;\n self.params = params;\n\n // Events\n self.eventsListeners = {};\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === 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) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach((event) => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n const moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach((m) => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nfunction updateSize () {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n Utils.extend(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n\nfunction updateSlides () {\n const swiper = this;\n const params = swiper.params;\n\n const {\n $wrapperEl, size: swiperSize, rtlTranslate: rtl, 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\n function slidesForMargin(slideIndex) {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.snapGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '' });\n\n let slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n }\n\n // Calc slides\n let slideSize;\n const slidesPerColumn = params.slidesPerColumn;\n const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0\n ? params.slidesPerGroup\n : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;\n\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - (column * slidesPerColumn);\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - (row * slidesPerRow);\n }\n slide.css(\n `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n );\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n const slideStyles = window.getComputedStyle(slide[0], null);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal()\n ? slide.outerWidth(true)\n : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n if (swiper.isHorizontal()) {\n const width = parseFloat(slideStyles.getPropertyValue('width'));\n const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n }\n } else {\n const height = parseFloat(slideStyles.getPropertyValue('height'));\n const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = height + marginTop + marginBottom;\n } else {\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n }\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n if (swiper.isHorizontal()) {\n slides[i].style.width = `${slideSize}px`;\n } else {\n slides[i].style.height = `${slideSize}px`;\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\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\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n let newSlidesGrid;\n\n if (\n rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Utils.extend(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}\n\nfunction updateAutoHeight (speed) {\n const swiper = this;\n const activeSlides = [];\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((index, 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) break;\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n\nfunction updateSlidesOffset () {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}\n\nfunction updateSlidesProgress (translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n const slideProgress = (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n || (slideAfter > 1 && slideAfter <= swiper.size)\n || (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n\nfunction updateProgress (translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / (translatesDiff);\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Utils.extend(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses () {\n const swiper = this;\n\n const {\n slides, params, $wrapperEl, activeIndex, realIndex,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n}\n\nfunction updateActiveIndex (newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (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 }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide (e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) slideFound = true;\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = $(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n\nfunction getTranslate (axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const {\n params, rtlTranslate: rtl, translate, $wrapperEl,\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n\nfunction setTranslate (translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl, params, $wrapperEl, wrapperEl, 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 swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate () {\n return (-this.snapGrid[0]);\n}\n\nfunction maxTranslate () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n\nfunction translateTo (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n\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;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\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}\n\nvar translate = {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n\nfunction setTransition (duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionStart (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, params, previousIndex } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}\n\nfunction transitionEnd (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, previousIndex, params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n\nfunction slideTo (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n let t = -translate;\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('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 swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n\nfunction slideToLoop (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating } = swiper;\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params, animating, snapGrid, slidesGrid, rtlTranslate,\n } = swiper;\n\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));\n\n const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach((snap) => {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n let prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction 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\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n\nfunction loopCreate () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document$1.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((index, el) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n\nfunction loopFix () {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy () {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n\nfunction setGrabCursor (moving) {\n const swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n const el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n\nfunction unsetGrabCursor () {\n const swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n swiper.el.style.cursor = '';\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor,\n};\n\nfunction appendSlide (slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n}\n\nfunction prependSlide (slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide (index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide (slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides () {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nvar manipulation = {\n appendSlide,\n prependSlide,\n addSlide,\n removeSlide,\n removeAllSlides,\n};\n\nconst Device = (function Device() {\n const platform = window.navigator.platform;\n const ua = window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!(window.cordova || window.phonegap),\n phonegap: !!(window.cordova || window.phonegap),\n electron: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n if (!ipad\n && macos\n && Support.touch\n && (\n (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9\n || (screenWidth === 834 && screenHeight === 1194) // Pro 11\n || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5\n || (screenWidth === 768 && screenHeight === 1024) // other\n )\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone))\n || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron;\n if (device.desktop) {\n device.electron = electron;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Export object\n return device;\n}());\n\nfunction onTouchStart (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection\n && ((startX <= edgeSwipeThreshold)\n || (startX >= window.screen.width - edgeSwipeThreshold))\n ) {\n return;\n }\n\n Utils.extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.formElements)) preventDefault = false;\n if (\n document$1.activeElement\n && $(document$1.activeElement).is(data.formElements)\n && document$1.activeElement !== $targetEl[0]\n ) {\n document$1.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = Utils.now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document$1.activeElement) {\n if (e.target === document$1.activeElement && $(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\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 if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n disableParentSwiper = false;\n if (params.resistance) 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 }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? 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;\n\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const {\n params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = Utils.now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = Utils.now();\n Utils.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 data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeModeMomentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeModeSticky) {\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\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 if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize () {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if ((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 }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick (e) {\n const swiper = this;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll () {\n const swiper = this;\n const { wrapperEl, rtlTranslate } = swiper;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n const swiper = this;\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document$1.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document$1.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n if (!dummyEventAttached) {\n document$1.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n document$1.addEventListener('mousemove', swiper.onTouchMove, capture);\n document$1.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\n\nfunction detachEvents() {\n const swiper = this;\n\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document$1.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document$1.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n document$1.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document$1.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nvar events = {\n attachEvents,\n detachEvents,\n};\n\nfunction setBreakpoint () {\n const swiper = this;\n const {\n activeIndex, initialized, loopedSlides = 0, params, $el,\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {\n const paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = params.slidesPerColumn > 1;\n const isMultiRow = breakpointParams.slidesPerColumn > 1;\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}multirow`);\n if (breakpointParams.slidesPerColumnFill === 'column') {\n $el.addClass(`${params.containerModifierClass}multirow-column`);\n }\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 Utils.extend(swiper.params, breakpointParams);\n\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n swiper.currentBreakpoint = breakpoint;\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n }\n}\n\nfunction getBreakpoint (breakpoints) {\n // Get breakpoint for window width\n if (!breakpoints) return undefined;\n let breakpoint = false;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = window.innerHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (value <= window.innerWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = { setBreakpoint, getBreakpoint };\n\nfunction addClasses () {\n const swiper = this;\n const {\n classNames, params, rtl, $el,\n } = swiper;\n const suffixes = [];\n\n suffixes.push('initialized');\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n if (params.slidesPerColumnFill === 'column') {\n suffixes.push('multirow-column');\n }\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n\n if (params.cssMode) {\n suffixes.push('css-mode');\n }\n\n suffixes.forEach((suffix) => {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n}\n\nfunction removeClasses () {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n}\n\nvar classes = { addClasses, removeClasses };\n\nfunction loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {\n let image;\n function onReady() {\n if (callback) callback();\n }\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n\nfunction preloadImages () {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady\n );\n }\n}\n\nvar images = {\n loadImage,\n preloadImages,\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const params = swiper.params;\n const wasLocked = swiper.isLocked;\n const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\n\n // events\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n if (swiper.navigation) swiper.navigation.update();\n }\n}\n\nvar checkOverflow$1 = { checkOverflow };\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n //\n preventInteractionOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n};\n\n/* eslint no-param-reassign: \"off\" */\n\nconst prototypes = {\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n manipulation,\n events,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = Utils.extend({}, params);\n if (el && !params.el) params.el = el;\n\n super(params);\n\n Object.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n const swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach((moduleName) => {\n const module = swiper.modules[moduleName];\n if (module.params) {\n const moduleParamName = Object.keys(module.params)[0];\n const moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object'\n && !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n }\n });\n\n // Extend defaults with modules params\n const swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n\n // Save Dom lib\n swiper.$ = $;\n\n // Find el\n const $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n const swipers = [];\n $el.each((index, containerEl) => {\n const newParams = Utils.extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper);\n\n // Find Wrapper\n let $wrapperEl;\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n // Children needs to return slot items\n $wrapperEl.children = (options) => $el.children(options);\n } else {\n $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n }\n // Extend Swiper\n Utils.extend(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // 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 // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n let desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return 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 formElements: 'input, select, option, textarea, button, video, label',\n // Last click time\n lastClickTime: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n\n });\n\n // Install Modules\n swiper.useModules();\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n slidesPerViewDynamic() {\n const swiper = this;\n const {\n params, slides, slidesGrid, size: swiperSize, activeIndex,\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode) {\n setTranslate();\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 if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideIndex, slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n init() {\n const swiper = this;\n if (swiper.initialized) return;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params, $el, $wrapperEl, slides,\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n Utils.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 get Class() {\n return SwiperClass;\n }\n\n static get $() {\n return $;\n }\n}\n\nvar Device$1 = {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n};\n\nvar Support$1 = {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n};\n\nconst Browser = (function Browser() {\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n return {\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}());\n\nvar Browser$1 = {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n};\n\nvar Resize = {\n name: 'resize',\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n // Emit resize\n window.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy() {\n const swiper = this;\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\n\nconst Observer = {\n func: window.MutationObserver || window.WebkitMutationObserver,\n attach(target, options = {}) {\n const swiper = this;\n\n const ObserverFunc = Observer.func;\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 swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n swiper.observer.observers.push(observer);\n },\n init() {\n const swiper = this;\n if (!Support.observer || !swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy() {\n const swiper = this;\n swiper.observer.observers.forEach((observer) => {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n};\n\nvar Observer$1 = {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.observer.init();\n },\n destroy() {\n const swiper = this;\n swiper.observer.destroy();\n },\n },\n};\n\nconst Virtual = {\n update(force) {\n const swiper = this;\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n renderSlide,\n offset: previousOffset,\n } = swiper.virtual;\n swiper.updateActiveIndex();\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n slidesBefore = slidesPerGroup + addSlidesAfter;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Utils.extend(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()),\n });\n onRendered();\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n },\n renderSlide(slide, index) {\n const swiper = this;\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(`
${slide}
`);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n },\n appendSlide(slides) {\n const swiper = this;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n swiper.virtual.update(true);\n },\n prependSlide(slides) {\n const swiper = this;\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide(slidesIndexes) {\n const swiper = this;\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n swiper.virtual.update(true);\n swiper.slideTo(activeIndex, 0);\n },\n removeAllSlides() {\n const swiper = this;\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\n },\n};\n\nvar Virtual$1 = {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n virtual: {\n update: Virtual.update.bind(swiper),\n appendSlide: Virtual.appendSlide.bind(swiper),\n prependSlide: Virtual.prependSlide.bind(swiper),\n removeSlide: Virtual.removeSlide.bind(swiper),\n removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n renderSlide: Virtual.renderSlide.bind(swiper),\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n const overwriteParams = {\n watchSlidesProgress: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n },\n },\n};\n\nconst Keyboard = {\n handle(event) {\n const swiper = this;\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && ((swiper.isHorizontal() && isArrowRight) || (swiper.isVertical() && isArrowDown) || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && isArrowLeft) || (swiper.isVertical() && isArrowUp) || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document$1.activeElement && document$1.activeElement.nodeName && (document$1.activeElement.nodeName.toLowerCase() === 'input' || document$1.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 && point[0] <= windowWidth\n && point[1] >= 0 && point[1] <= windowHeight\n ) {\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl)) swiper.slideNext();\n if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl)) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable() {\n const swiper = this;\n if (swiper.keyboard.enabled) return;\n $(document$1).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable() {\n const swiper = this;\n if (!swiper.keyboard.enabled) return;\n $(document$1).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n};\n\nvar Keyboard$1 = {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n keyboard: {\n enabled: false,\n enable: Keyboard.enable.bind(swiper),\n disable: Keyboard.disable.bind(swiper),\n handle: Keyboard.handle.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n};\n\nfunction isEventSupported() {\n const eventName = 'onwheel';\n let isSupported = eventName in document$1;\n\n if (!isSupported) {\n const element = document$1.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported\n && document$1.implementation\n && document$1.implementation.hasFeature\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n && document$1.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document$1.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\nconst Mousewheel = {\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event() {\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n },\n normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n },\n handleMouseEnter() {\n const swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave() {\n const swiper = this;\n swiper.mouseEntered = false;\n },\n handle(event) {\n let e = event;\n const swiper = this;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n if (!swiper.params.freeMode) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: Utils.now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n swiper.mousewheel.animateSlider(newEvent);\n }\n } else {\n swiper.mousewheel.animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (swiper.mousewheel.releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };\n const { lastEventBeforeSnap } = swiper.mousewheel;\n const ignoreWheelEvents = lastEventBeforeSnap\n && newEvent.time < lastEventBeforeSnap.time + 500\n && newEvent.delta <= lastEventBeforeSnap.delta\n && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + (delta * params.sensitivity);\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeModeSticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momuntum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = undefined;\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15\n && newEvent.time - firstEvent.time < 500\n && firstEvent.delta - newEvent.delta >= 1\n && newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!swiper.mousewheel.timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n const snapToThreshold = 0.5;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) swiper.emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n },\n animateSlider(newEvent) {\n const swiper = this;\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n // Return false as a default\n return false;\n },\n releaseScroll(newEvent) {\n const swiper = this;\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n },\n enable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (!swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.off(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n};\n\nvar Mousewheel$1 = {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarged: 'container',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n mousewheel: {\n enabled: false,\n enable: Mousewheel.enable.bind(swiper),\n disable: Mousewheel.disable.bind(swiper),\n handle: Mousewheel.handle.bind(swiper),\n handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n animateSlider: Mousewheel.animateSlider.bind(swiper),\n releaseScroll: Mousewheel.releaseScroll.bind(swiper),\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n swiper.mousewheel.disable();\n }\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy() {\n const swiper = this;\n if (swiper.params.cssMode) {\n swiper.mousewheel.enable();\n }\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n },\n },\n};\n\nconst Navigation = {\n update() {\n // Update Navigation Buttons\n const swiper = this;\n const params = swiper.params.navigation;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n onPrevClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init() {\n const swiper = this;\n const params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n\n let $nextEl;\n let $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.nextEl === 'string'\n && $nextEl.length > 1\n && swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.prevEl === 'string'\n && $prevEl.length > 1\n && swiper.$el.find(params.prevEl).length === 1\n ) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n Utils.extend(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy() {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n};\n\nvar Navigation$1 = {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n navigation: {\n init: Navigation.init.bind(swiper),\n update: Navigation.update.bind(swiper),\n destroy: Navigation.destroy.bind(swiper),\n onNextClick: Navigation.onNextClick.bind(swiper),\n onPrevClick: Navigation.onPrevClick.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n fromEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n destroy() {\n const swiper = this;\n swiper.navigation.destroy();\n },\n click(e) {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if (\n swiper.params.navigation.hideOnClick\n && !$(e.target).is($prevEl)\n && !$(e.target).is($nextEl)\n ) {\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n swiper.emit('navigationShow', swiper);\n } else {\n swiper.emit('navigationHide', swiper);\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n },\n },\n};\n\nconst Pagination = {\n update() {\n // Render || Update Pagination bullets/items\n const swiper = this;\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n current -= (slidesLength - (swiper.loopedSlides * 2));\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n if ($el.length > 1) {\n bullets.each((index, bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n $bullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render() {\n // Render Container\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = ``\n + ' / '\n + ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (\n swiper.params.uniqueNavElements\n && typeof params.el === 'string'\n && $el.length > 1\n ) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Utils.extend(swiper.pagination, {\n $el,\n el: $el[0],\n });\n },\n destroy() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', `.${params.bulletClass}`);\n }\n },\n};\n\nvar Pagination$1 = {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy() {\n const swiper = this;\n swiper.pagination.destroy();\n },\n click(e) {\n const swiper = this;\n if (\n swiper.params.pagination.el\n && swiper.params.pagination.hideOnClick\n && swiper.pagination.$el.length > 0\n && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow', swiper);\n } else {\n swiper.emit('paginationHide', swiper);\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n};\n\nconst Scrollbar = {\n setTranslate() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const {\n dragSize, trackSize, $dragEl, $el,\n } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n const divider = swiper.size / swiper.virtualSize;\n const moveDivider = divider * (trackSize / swiper.size);\n let dragSize;\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize,\n divider,\n moveDivider,\n dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n getPointerPosition(e) {\n const swiper = this;\n if (swiper.isHorizontal()) {\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);\n }\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);\n },\n setDragPosition(e) {\n const swiper = this;\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const {\n $el,\n dragSize,\n trackSize,\n dragStartPos,\n } = scrollbar;\n\n let positionRatio;\n positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart(e) {\n const swiper = this;\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n swiper.scrollbar.isTouched = true;\n swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove(e) {\n const swiper = this;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd(e) {\n const swiper = this;\n\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document$1.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document$1.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document$1.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document$1.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const { scrollbar, $el: $swiperEl } = swiper;\n const params = swiper.params.scrollbar;\n\n let $el = $(params.el);\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Utils.extend(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n};\n\nvar Scrollbar$1 = {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate() {\n const swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n};\n\nconst Parallax = {\n setTransform(el, progress) {\n const swiper = this;\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if ((x).indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if ((y).indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n },\n setTranslate() {\n const swiper = this;\n const {\n $el, slides, progress, snapGrid,\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each((slideIndex, slideEl) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition(duration = this.params.speed) {\n const swiper = this;\n const { $el } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n },\n};\n\nvar Parallax$1 = {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n parallax: {\n setTransform: Parallax.setTransform.bind(swiper),\n setTranslate: Parallax.setTranslate.bind(swiper),\n setTransition: Parallax.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTransition(duration);\n },\n },\n};\n\nconst Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));\n return distance;\n },\n // Events\n onGestureStart(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n swiper.zoom.isScaling = true;\n },\n onGestureChange(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (Support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n onGestureEnd(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (Device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !zoom.isScaling) {\n if (\n swiper.isHorizontal()\n && (\n (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n )\n ) {\n image.isTouched = false;\n return;\n } if (\n !swiper.isHorizontal()\n && (\n (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n )\n ) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);\n }\n if (image.currentX > image.maxX) {\n image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);\n }\n\n if (image.currentY < image.minY) {\n image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);\n }\n if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTouchEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTransitionEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in(e) {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture, image } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = (offsetX + (slideWidth / 2)) - touchX;\n diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n out() {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n },\n // Attach/Detach Events\n enable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n disable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n\n swiper.zoom.enabled = false;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n};\n\nvar Zoom$1 = {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n },\n create() {\n const swiper = this;\n const zoom = {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n };\n\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom,\n });\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.zoom.disable();\n },\n touchStart(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap(e) {\n const swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n};\n\nconst Lazy = {\n loadInSlide(index, loadInDuplicate = true) {\n const swiper = this;\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n : swiper.slides.eq(index);\n\n let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images = $images.add($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageIndex, imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n\n swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if ($pictureEl.length) {\n $pictureEl.children('source').each((sourceIndex, sourceEl) => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load() {\n const swiper = this;\n const {\n $wrapperEl, params: swiperParams, slides, activeIndex,\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n },\n};\n\nvar Lazy$1 = {\n name: 'lazy',\n params: {\n lazy: {\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n lazy: {\n initialImageLoaded: false,\n load: Lazy.load.bind(swiper),\n loadInSlide: Lazy.loadInSlide.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll() {\n const swiper = this;\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n swiper.lazy.load();\n }\n },\n },\n};\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\n\nconst Controller = {\n LinearSpline: function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }());\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n };\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction(c) {\n const swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate(setTranslate, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition(duration, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n Utils.nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n },\n};\nvar Controller$1 = {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n controller: {\n control: swiper.params.controller.control,\n getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n setTranslate: Controller.setTranslate.bind(swiper),\n setTransition: Controller.setTransition.bind(swiper),\n },\n });\n },\n on: {\n update() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate(translate, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n },\n },\n};\n\nconst a11y = {\n makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n return $el;\n },\n addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey(e) {\n const swiper = this;\n const params = swiper.params.a11y;\n if (e.keyCode !== 13) return;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n $targetEl[0].click();\n }\n },\n notify(message) {\n const swiper = this;\n const notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation() {\n const swiper = this;\n\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n swiper.a11y.makeElNotFocusable($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n swiper.a11y.makeElFocusable($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n swiper.a11y.makeElNotFocusable($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n swiper.a11y.makeElFocusable($nextEl);\n }\n }\n },\n updatePagination() {\n const swiper = this;\n const params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n const $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n });\n }\n },\n init() {\n const swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n const params = swiper.params.a11y;\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n swiper.a11y.makeElFocusable($nextEl);\n swiper.a11y.addElRole($nextEl, 'button');\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n swiper.a11y.makeElFocusable($prevEl);\n swiper.a11y.addElRole($prevEl, 'button');\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n};\nvar A11y = {\n name: 'a11y',\n params: {\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $(``),\n },\n });\n Object.keys(a11y).forEach((methodName) => {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n },\n },\n};\n\nconst History = {\n init() {\n const swiper = this;\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n const history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues();\n if (!history.paths.key && !history.paths.value) return;\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState() {\n const swiper = this;\n swiper.history.paths = History.getPathValues();\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues() {\n const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n },\n setHistory(key, index) {\n const swiper = this;\n if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n const slide = swiper.slides.eq(index);\n let value = History.slugify(slide.attr('data-history'));\n if (!window.location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n },\n slugify(text) {\n return text.toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide(speed, value, runCallbacks) {\n const swiper = this;\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = History.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n },\n};\n\nvar History$1 = {\n name: 'history',\n params: {\n history: {\n enabled: false,\n replaceState: false,\n key: 'slides',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n history: {\n init: History.init.bind(swiper),\n setHistory: History.setHistory.bind(swiper),\n setHistoryPopState: History.setHistoryPopState.bind(swiper),\n scrollToSlide: History.scrollToSlide.bind(swiper),\n destroy: History.destroy.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.history.initialized && swiper.params.cssMode) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n },\n};\n\nconst HashNavigation = {\n onHashCange() {\n const swiper = this;\n swiper.emit('hashChange');\n const newHash = document$1.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n },\n setHash() {\n const swiper = this;\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));\n swiper.emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document$1.location.hash = hash || '';\n swiper.emit('hashSet');\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;\n swiper.hashNavigation.initialized = true;\n const hash = document$1.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n};\nvar HashNavigation$1 = {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n hashNavigation: {\n initialized: false,\n init: HashNavigation.init.bind(swiper),\n destroy: HashNavigation.destroy.bind(swiper),\n setHash: HashNavigation.setHash.bind(swiper),\n onHashCange: HashNavigation.onHashCange.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n swiper.hashNavigation.setHash();\n }\n },\n },\n};\n\n/* eslint no-underscore-dangle: \"off\" */\n\nconst Autoplay = {\n run() {\n const swiper = this;\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = Utils.nextTick(() => {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();\n }, delay);\n },\n start() {\n const swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop() {\n const swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause(speed) {\n const swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n};\n\nvar Autoplay$1 = {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n onVisibilityChange() {\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n },\n beforeTransitionStart(speed, internal) {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove() {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n touchEnd() {\n const swiper = this;\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n },\n },\n};\n\nconst Fade = {\n setTranslate() {\n const swiper = this;\n const { slides } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, $wrapperEl } = swiper;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n slides.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nvar EffectFade = {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n fadeEffect: {\n setTranslate: Fade.setTranslate.bind(swiper),\n setTransition: Fade.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n },\n },\n};\n\nconst Cube = {\n setTranslate() {\n const swiper = this;\n const {\n $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + (round * 4 * swiperSize);\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = (3 * swiperSize) + (swiperSize * 4 * round);\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = (slideIndex * 90) + (progress * 90);\n if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n const multiplier = 1.5 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n const zFactor = (Browser.isSafari || Browser.isWebView) ? (-swiperSize / 2) : 0;\n $wrapperEl\n .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n },\n setTransition(duration) {\n const swiper = this;\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n },\n};\n\nvar EffectCube = {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n cubeEffect: {\n setTranslate: Cube.setTranslate.bind(swiper),\n setTransition: Cube.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTransition(duration);\n },\n },\n};\n\nconst Flip = {\n setTranslate() {\n const swiper = this;\n const { slides, rtlTranslate: rtl } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n $slideEl\n .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, activeIndex, $wrapperEl } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n // eslint-disable-next-line\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nvar EffectFlip = {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n flipEffect: {\n setTranslate: Flip.setTranslate.bind(swiper),\n setTransition: Flip.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTransition(duration);\n },\n },\n};\n\nconst Coverflow = {\n setTranslate() {\n const swiper = this;\n const {\n width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = ((parseFloat(params.stretch) / 100) * slideSize);\n }\n let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);\n let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;\n\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $(`
`);\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $(`
`);\n $slideEl.append($shadowAfterEl);\n }\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n }\n }\n\n // Set correct perspective for IE10\n if (Support.pointerEvents || Support.prefixedPointerEvents) {\n const ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = `${center}px 50%`;\n }\n },\n setTransition(duration) {\n const swiper = this;\n swiper.slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n },\n};\n\nvar EffectCoverflow = {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n coverflowEffect: {\n setTranslate: Coverflow.setTranslate.bind(swiper),\n setTransition: Coverflow.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n\n swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n};\n\nconst Thumbs = {\n init() {\n const swiper = this;\n const { thumbs: thumbsParams } = swiper.params;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Utils.extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Utils.extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (Utils.isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n }));\n swiper.thumbs.swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n },\n onThumbClick() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n },\n update(initial) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;\n else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;\n else newThumbsIndex = prevThumbsIndex;\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n },\n};\nvar Thumbs$1 = {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n thumbs: {\n swiper: null,\n init: Thumbs.init.bind(swiper),\n update: Thumbs.update.bind(swiper),\n onThumbClick: Thumbs.onThumbClick.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n update() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n resize() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n setTransition(duration) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n },\n },\n};\n\n// Swiper Class\n\nconst components = [\n Device$1,\n Support$1,\n Browser$1,\n Resize,\n Observer$1,\n Virtual$1,\n Keyboard$1,\n Mousewheel$1,\n Navigation$1,\n Pagination$1,\n Scrollbar$1,\n Parallax$1,\n Zoom$1,\n Lazy$1,\n Controller$1,\n A11y,\n History$1,\n HashNavigation$1,\n Autoplay$1,\n EffectFade,\n EffectCube,\n EffectFlip,\n EffectCoverflow,\n Thumbs$1\n];\n\nif (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\nexport default Swiper;\n//# sourceMappingURL=swiper.esm.bundle.js.map\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_HEADER } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { htmlOrText } from '../../utils/html';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, prefixPropName } from '../../utils/props';\nimport { props as BCardProps } from '../../mixins/card'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, copyProps(BCardProps, prefixPropName.bind(null, 'header'))), {}, {\n header: makeProp(PROP_TYPE_STRING),\n headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n headerHtml: makeProp(PROP_TYPE_STRING)\n})), NAME_CARD_HEADER); // --- Main component ---\n// @vue/component\n\nexport var BCardHeader = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_HEADER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var headerBgVariant = props.headerBgVariant,\n headerBorderVariant = props.headerBorderVariant,\n headerTextVariant = props.headerTextVariant;\n return h(props.headerTag, mergeData(data, {\n staticClass: 'card-header',\n class: [props.headerClass, (_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(headerBgVariant), headerBgVariant), _defineProperty(_ref2, \"border-\".concat(headerBorderVariant), headerBorderVariant), _defineProperty(_ref2, \"text-\".concat(headerTextVariant), headerTextVariant), _ref2)],\n domProps: children ? {} : htmlOrText(props.headerHtml, props.header)\n }), children);\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_SUB_TITLE } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n subTitle: makeProp(PROP_TYPE_STRING),\n subTitleTag: makeProp(PROP_TYPE_STRING, 'h6'),\n subTitleTextVariant: makeProp(PROP_TYPE_STRING, 'muted')\n}, NAME_CARD_SUB_TITLE); // --- Main component ---\n// @vue/component\n\nexport var BCardSubTitle = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_SUB_TITLE,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.subTitleTag, mergeData(data, {\n staticClass: 'card-subtitle',\n class: [props.subTitleTextVariant ? \"text-\".concat(props.subTitleTextVariant) : null]\n }), children || toString(props.subTitle));\n }\n});","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppTimelineItem.vue?vue&type=style&index=0&id=4d50203e&lang=scss&scoped=true&\"","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_HEAD_CLICKED } from '../../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_THEAD_TOP } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { htmlOrText } from '../../../utils/html';\nimport { identity } from '../../../utils/identity';\nimport { isUndefinedOrNull } from '../../../utils/inspect';\nimport { noop } from '../../../utils/noop';\nimport { makeProp } from '../../../utils/props';\nimport { startCase } from '../../../utils/string';\nimport { BThead } from '../thead';\nimport { BTfoot } from '../tfoot';\nimport { BTr } from '../tr';\nimport { BTh } from '../th';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active'; // --- Helper methods ---\n\nvar getHeadSlotName = function getHeadSlotName(value) {\n return \"head(\".concat(value || '', \")\");\n};\n\nvar getFootSlotName = function getFootSlotName(value) {\n return \"foot(\".concat(value || '', \")\");\n}; // --- Props ---\n\n\nexport var props = {\n // Any Bootstrap theme variant (or custom)\n headRowVariant: makeProp(PROP_TYPE_STRING),\n // 'light', 'dark' or `null` (or custom)\n headVariant: makeProp(PROP_TYPE_STRING),\n theadClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n theadTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var theadMixin = Vue.extend({\n props: props,\n methods: {\n fieldClasses: function fieldClasses(field) {\n // Header field () classes\n return [field.class ? field.class : '', field.thClass ? field.thClass : ''];\n },\n headClicked: function headClicked(event, field, isFoot) {\n if (this.stopIfBusy && this.stopIfBusy(event)) {\n // If table is busy (via provider) then don't propagate\n return;\n } else if (filterEvent(event)) {\n // Clicked on a non-disabled control so ignore\n return;\n } else if (textSelectionActive(this.$el)) {\n // User is selecting text, so ignore\n\n /* istanbul ignore next: JSDOM doesn't support getSelection() */\n return;\n }\n\n stopEvent(event);\n this.$emit(EVENT_NAME_HEAD_CLICKED, field.key, field, event, isFoot);\n },\n renderThead: function renderThead() {\n var _this = this;\n\n var isFoot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var fields = this.computedFields,\n isSortable = this.isSortable,\n isSelectable = this.isSelectable,\n headVariant = this.headVariant,\n footVariant = this.footVariant,\n headRowVariant = this.headRowVariant,\n footRowVariant = this.footRowVariant;\n var h = this.$createElement; // In always stacked mode, we don't bother rendering the head/foot\n // Or if no field headings (empty table)\n\n if (this.isStackedAlways || fields.length === 0) {\n return h();\n }\n\n var hasHeadClickListener = isSortable || this.hasListener(EVENT_NAME_HEAD_CLICKED); // Reference to `selectAllRows` and `clearSelected()`, if table is selectable\n\n var selectAllRows = isSelectable ? this.selectAllRows : noop;\n var clearSelected = isSelectable ? this.clearSelected : noop; // Helper function to generate a field cell\n\n var makeCell = function makeCell(field, colIndex) {\n var label = field.label,\n labelHtml = field.labelHtml,\n variant = field.variant,\n stickyColumn = field.stickyColumn,\n key = field.key;\n var ariaLabel = null;\n\n if (!field.label.trim() && !field.headerTitle) {\n // In case field's label and title are empty/blank\n // We need to add a hint about what the column is about for non-sighted users\n\n /* istanbul ignore next */\n ariaLabel = startCase(field.key);\n }\n\n var on = {};\n\n if (hasHeadClickListener) {\n on.click = function (event) {\n _this.headClicked(event, field, isFoot);\n };\n\n on.keydown = function (event) {\n var keyCode = event.keyCode;\n\n if (keyCode === CODE_ENTER || keyCode === CODE_SPACE) {\n _this.headClicked(event, field, isFoot);\n }\n };\n }\n\n var sortAttrs = isSortable ? _this.sortTheadThAttrs(key, field, isFoot) : {};\n var sortClass = isSortable ? _this.sortTheadThClasses(key, field, isFoot) : null;\n var sortLabel = isSortable ? _this.sortTheadThLabel(key, field, isFoot) : null;\n var data = {\n class: [_this.fieldClasses(field), sortClass],\n props: {\n variant: variant,\n stickyColumn: stickyColumn\n },\n style: field.thStyle || {},\n attrs: _objectSpread(_objectSpread({\n // We only add a `tabindex` of `0` if there is a head-clicked listener\n // and the current field is sortable\n tabindex: hasHeadClickListener && field.sortable ? '0' : null,\n abbr: field.headerAbbr || null,\n title: field.headerTitle || null,\n 'aria-colindex': colIndex + 1,\n 'aria-label': ariaLabel\n }, _this.getThValues(null, key, field.thAttr, isFoot ? 'foot' : 'head', {})), sortAttrs),\n on: on,\n key: key\n }; // Handle edge case where in-document templates are used with new\n // `v-slot:name` syntax where the browser lower-cases the v-slot's\n // name (attributes become lower cased when parsed by the browser)\n // We have replaced the square bracket syntax with round brackets\n // to prevent confusion with dynamic slot names\n\n var slotNames = [getHeadSlotName(key), getHeadSlotName(key.toLowerCase()), getHeadSlotName()]; // Footer will fallback to header slot names\n\n if (isFoot) {\n slotNames = [getFootSlotName(key), getFootSlotName(key.toLowerCase()), getFootSlotName()].concat(_toConsumableArray(slotNames));\n }\n\n var scope = {\n label: label,\n column: key,\n field: field,\n isFoot: isFoot,\n // Add in row select methods\n selectAllRows: selectAllRows,\n clearSelected: clearSelected\n };\n var $content = _this.normalizeSlot(slotNames, scope) || h('div', {\n domProps: htmlOrText(labelHtml, label)\n });\n var $srLabel = sortLabel ? h('span', {\n staticClass: 'sr-only'\n }, \" (\".concat(sortLabel, \")\")) : null; // Return the header cell\n\n return h(BTh, data, [$content, $srLabel].filter(identity));\n }; // Generate the array of cells\n\n\n var $cells = fields.map(makeCell).filter(identity); // Generate the row(s)\n\n var $trs = [];\n\n if (isFoot) {\n $trs.push(h(BTr, {\n class: this.tfootTrClass,\n props: {\n variant: isUndefinedOrNull(footRowVariant) ? headRowVariant :\n /* istanbul ignore next */\n footRowVariant\n }\n }, $cells));\n } else {\n var scope = {\n columns: fields.length,\n fields: fields,\n // Add in row select methods\n selectAllRows: selectAllRows,\n clearSelected: clearSelected\n };\n $trs.push(this.normalizeSlot(SLOT_NAME_THEAD_TOP, scope) || h());\n $trs.push(h(BTr, {\n class: this.theadTrClass,\n props: {\n variant: headRowVariant\n }\n }, $cells));\n }\n\n return h(isFoot ? BTfoot : BThead, {\n class: (isFoot ? this.tfootClass : this.theadClass) || null,\n props: isFoot ? {\n footVariant: footVariant || headVariant || null\n } : {\n headVariant: headVariant || null\n },\n key: isFoot ? 'bv-tfoot' : 'bv-thead'\n }, $trs);\n }\n }\n});","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"collapse-icon\",class:_vm.collapseClasses,attrs:{\"role\":\"tablist\"}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppCollapse.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppCollapse.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppCollapse.vue?vue&type=template&id=20c0c53e&\"\nimport script from \"./AppCollapse.vue?vue&type=script&lang=js&\"\nexport * from \"./AppCollapse.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import router from '@/router'\n// eslint-disable-next-line object-curly-newline\nimport { reactive, getCurrentInstance, watch, toRefs } from '@vue/composition-api'\n\nexport const isObject = obj => typeof obj === 'object' && obj !== null\n\nexport const isToday = date => {\n const today = new Date()\n return (\n /* eslint-disable operator-linebreak */\n date.getDate() === today.getDate() &&\n date.getMonth() === today.getMonth() &&\n date.getFullYear() === today.getFullYear()\n /* eslint-enable */\n )\n}\n\nconst getRandomFromArray = array => array[Math.floor(Math.random() * array.length)]\n\n// ? Light and Dark variant is not included\n// prettier-ignore\nexport const getRandomBsVariant = () => getRandomFromArray(['primary', 'secondary', 'success', 'warning', 'danger', 'info'])\n\nexport const isDynamicRouteActive = route => {\n const { route: resolvedRoute } = router.resolve(route)\n return resolvedRoute.path === router.currentRoute.path\n}\n\n// Thanks: https://medium.com/better-programming/reactive-vue-routes-with-the-composition-api-18c1abd878d1\nexport const useRouter = () => {\n const vm = getCurrentInstance().proxy\n const state = reactive({\n route: vm.$route,\n })\n\n watch(\n () => vm.$route,\n r => {\n state.route = r\n },\n )\n\n return { ...toRefs(state), router: vm.$router }\n}\n\n/**\n * This is just enhancement over Object.extend [Gives deep extend]\n * @param {target} a Object which contains values to be overridden\n * @param {source} b Object which contains values to override\n */\n// export const objectExtend = (a, b) => {\n// // Don't touch 'null' or 'undefined' objects.\n// if (a == null || b == null) {\n// return a\n// }\n\n// Object.keys(b).forEach(key => {\n// if (Object.prototype.toString.call(b[key]) === '[object Object]') {\n// if (Object.prototype.toString.call(a[key]) !== '[object Object]') {\n// // eslint-disable-next-line no-param-reassign\n// a[key] = b[key]\n// } else {\n// // eslint-disable-next-line no-param-reassign\n// a[key] = objectExtend(a[key], b[key])\n// }\n// } else {\n// // eslint-disable-next-line no-param-reassign\n// a[key] = b[key]\n// }\n// })\n\n// return a\n// }\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"app-ecommerce-details\"},[_c('b-alert',{attrs:{\"variant\":\"danger\",\"show\":_vm.product === undefined}},[_c('h4',{staticClass:\"alert-heading\"},[_vm._v(\" Error fetching product data \")]),_c('div',{staticClass:\"alert-body\"},[_vm._v(\" No item found with this item slug. Check \"),_c('b-link',{staticClass:\"alert-link\",attrs:{\"to\":{ name: 'apps-e-commerce-shop'}}},[_vm._v(\" Shop \")]),_vm._v(\" for other items. \")],1)]),_c('b-row',{staticClass:\"breadcrumbs-top\"},[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('h2',{staticClass:\"content-header-title float-left pr-1 mb-0\"},[_vm._v(\" \"+_vm._s(_vm.$route.meta.pageTitle)+\" \")]),_c('div',{staticClass:\"breadcrumb-wrapper\"},[_c('b-breadcrumb',[_c('b-breadcrumb-item',{attrs:{\"to\":\"/\"}},[_c('feather-icon',{staticClass:\"align-text-top\",attrs:{\"icon\":\"HomeIcon\",\"size\":\"16\"}})],1),_vm._l((_vm.breadcrumb),function(item,index){return _c('b-breadcrumb-item',{key:index,style:(item==_vm.product.categoryName? 'font-weight: bold':'font-weight: normal'),attrs:{\"to\":{name:'apps-e-commerce-shop',params:{category: item}}}},[_vm._v(\" \"+_vm._s(item)+\" \")])})],2)],1)])],1),_c('p'),(_vm.product)?_c('b-card',{attrs:{\"no-body\":\"\"}},[_c('b-card-body',[_c('b-row',{staticClass:\"my-2\"},[_c('b-col',{staticClass:\"d-flex justify-content-top mb-2 mb-md-0\",attrs:{\"cols\":\"12\",\"md\":\"5\"}},[_c('div',[_c('b-carousel',{staticClass:\"d-flex\",attrs:{\"id\":\"carousel-example-generic\",\"controls\":\"\",\"indicators\":\"\",\"img-width\":\"400\",\"img-height\":\"280\"}},_vm._l((_vm.product.images),function(image,index){return _c('div',{key:index},[_c('b-carousel-slide',{attrs:{\"img-src\":image,\"fluid\":\"\",\"alt\":(\"Image of \" + (_vm.product.name))}})],1)}),0)],1)]),_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"7\"}},[_c('h4',[_vm._v(_vm._s(_vm.product.name))]),_c('b-card-text',{staticClass:\"item-company mb-0\"},[_c('b-link',{staticClass:\"company-name\",attrs:{\"to\":{name:'apps-e-commerce-shop-brand',params:{brand: _vm.product.brand}}}},[_vm._v(\" \"+_vm._s(_vm.product.brand)+\" \")])],1),_c('h5',[_vm._v(_vm._s(_vm.product.productCode))]),_c('div',{staticClass:\"ecommerce-details-price d-flex flex-wrap mt-1\"},[_c('h4',{staticClass:\"item-price mr-2\",staticStyle:{\"text-decoration\":\"line-through\"}},[_vm._v(\" \"+_vm._s(_vm.product.prices.originalPrice)+\" \")]),_c('h4',{staticClass:\"item-price mr-1\"},[_vm._v(\" \"+_vm._s(_vm.product.price)+\" \")]),_c('ul',{staticClass:\"unstyled-list list-inline pl-1 border-left\"},[_vm._l((5),function(star){return _c('li',{key:star,staticClass:\"ratings-list-item mr-25\"},[_c('feather-icon',{class:[{'fill-current': star <= _vm.product.rating}, star <= _vm.product.rating ? 'text-warning' : 'text-muted'],attrs:{\"icon\":\"StarIcon\",\"size\":\"18\"}})],1)}),(_vm.product.ratingScore)?_c('li',[_vm._v(_vm._s(_vm.product.ratingScore.totalCount ||'')+\" değerlendirme\")]):_vm._e()],2)]),_c('b-card-text',[_vm._v(_vm._s(_vm.$t('instock'))+\" - \"),(_vm.product.hasStock)?_c('span',{staticClass:\"text-success\"},[_vm._v(_vm._s(_vm.$t('mevcut')))]):_c('span',{staticClass:\"text-danger\"},[_vm._v(_vm._s(_vm.$t('Tükendi')))])]),_c('hr'),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.product.colors.length),expression:\"product.colors.length\"}],staticClass:\"product-color-options\"},[_c('h6',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.product.colors.length),expression:\"product.colors.length\"}]},[_vm._v(_vm._s(_vm.$t('Colors')))]),_c('ul',{staticClass:\"list-unstyled mb-0\",attrs:{\"fluid\":\"\"}},_vm._l((_vm.product.colors),function(color,index){return _c('li',{key:index,staticClass:\"d-inline-block\",class:{'selected': _vm.selectedColor === color.name},on:{\"click\":function($event){_vm.selectedColor = color.name;_vm.yenile(color.id)}}},[_c('div',{staticClass:\"color-option\",class:\"b-primary\"},[_c('b-img',{staticClass:\"product-img\",staticStyle:{\"width\":\"80px\",\"height\":\"100px\"},attrs:{\"src\":color.imageUrl,\"alt\":(\"Image of \" + (color.name)),\"fluid\":\"\",\"thumbnail\":\"\"}}),_c('div',{staticClass:\"d-flex align-items-center justify-content-center\",staticStyle:{\"font-size\":\"7px\"}},[_vm._v(_vm._s(color.name))])],1)])}),0)]),_c('div',{staticClass:\"product-color-options\"},[_c('h6',[_vm._v(_vm._s(_vm.$t('Bedenler')))]),_c('ul',{staticClass:\"list-unstyled mb-0\"},_vm._l((_vm.product.variants),function(color,index){return _c('li',{key:index,staticClass:\"d-inline-block\",class:{'selected': _vm.selectedSize === color.attributeValue },on:{\"click\":function($event){_vm.selectedSize = color.attributeValue}}},[_c('div',{staticClass:\"color-option\",class:\"b-primary\"},[_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 159, 67, 0.15)'),expression:\"'rgba(255, 159, 67, 0.15)'\",modifiers:{\"400\":true}}],attrs:{\"variant\":color.stock<=0? 'secondary':'outline-warning',\"pressed\":_vm.selectedSize === color.attributeValue,\"disabled\":color.stock<=0}},[_c('span',{style:(color.stock<=0? 'text-decoration:line-through':'strong')},[_vm._v(_vm._s(color.attributeValue))])])],1)])}),0)]),_c('hr'),_c('div',{staticClass:\"d-flex flex-column flex-sm-row pt-1\"},[_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],staticClass:\"btn-cart mr-0 mr-sm-1 mb-1 mb-sm-0\",attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.handleCartActionClick(_vm.product)}}},[_c('feather-icon',{staticClass:\"mr-50\",attrs:{\"icon\":\"ShoppingCartIcon\"}}),_c('span',[_vm._v(_vm._s(_vm.product.isInCart ? _vm.$t('viewincart') : _vm.$t('addtocart')))])],1),_c('b-button',{staticClass:\"btn-wishlist mr-0 mr-sm-1 mb-1 mb-sm-0\",attrs:{\"variant\":\"outline-secondary\"},on:{\"click\":function($event){return _vm.toggleProductInWishlist(_vm.product)}}},[_c('feather-icon',{staticClass:\"mr-50\",class:{'text-danger': _vm.product.isInWishlist},attrs:{\"icon\":\"HeartIcon\"}}),_c('span',[_vm._v(\"Favori\")])],1),_c('b-dropdown',{staticClass:\"btn-share\",attrs:{\"variant\":\"outline-secondary\",\"no-caret\":\"\",\"toggle-class\":\"btn-icon\",\"right\":\"\"},scopedSlots:_vm._u([{key:\"button-content\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"Share2Icon\"}})]},proxy:true}],null,false,4254340102)},_vm._l(([ 'FacebookIcon', 'TwitterIcon', 'YoutubeIcon', 'InstagramIcon','MessageCircleIcon' ]),function(icon){return _c('b-dropdown-item',{key:icon},[_c('feather-icon',{attrs:{\"icon\":icon}})],1)}),1)],1),_c('hr'),_c('b-row',[_c('app-collapse',{staticStyle:{\"width\":\"100%\"},attrs:{\"accordion\":\"\",\"type\":\"margin\"}},[_c('app-collapse-item',{staticStyle:{\"width\":\"100%\"},attrs:{\"title\":\"Ürün Bilgileri\",\"isVisible\":\"\"}},[_c('b-card-body',[_c('b-card-text',[_vm._v(_vm._s(_vm.product.description))]),_vm._l((_vm.product.contentDescriptions),function(description,index){return _c('b-card-text',{key:index},[_c('li',[_vm._v(_vm._s(description.description))])])}),_c('ul',{staticClass:\"product-features list-unstyled\"},[(_vm.product.hasFreeShipping)?_c('li',[_c('feather-icon',{attrs:{\"icon\":\"ShoppingCartIcon\"}}),_c('span',[_vm._v(_vm._s(_vm.$t('ucretsizkargo')))])],1):_vm._e()])],2)],1),(_vm.product.attributes.length)?_c('app-collapse-item',{staticStyle:{\"width\":\"100%\"},attrs:{\"title\":\"Teknik Bilgiler\"}},[_c('b-table',{attrs:{\"striped\":\"\",\"hover\":\"\",\"items\":_vm.product.attributes,\"fields\":['key','value'],\"responsive\":\"xl\"}})],1):_vm._e(),(_vm.product.productReviews.length)?_c('app-collapse-item',{staticStyle:{\"width\":\"100%\"},attrs:{\"title\":'Değerlendirmeler' + ' (' +_vm.product.productReviews.length + ')',\"variant\":\"warning\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('strong',[_vm._v(\"Yorumlar\")]),_vm._v(\" \"),_c('b-badge',{attrs:{\"pill\":\"\",\"variant\":\"warning\"}},[_vm._v(\" \"+_vm._s(_vm.product.productReviews.length)+\" \")])]},proxy:true}],null,false,154968801)},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.product.productReviews.length),expression:\"product.productReviews.length\"}]},_vm._l((_vm.product.productReviews),function(productView){return _c('app-timeline',{key:productView.id},[_c('hr'),_c('app-timeline-item',{attrs:{\"title\":productView.userFullName,\"subtitle\":productView.comment,\"time\":productView.commentDateISOtype,\"icon\":\"StarIcon\",\"variant\":\"warning\"}})],1)}),1)]):_vm._e()],1)],1)],1)],1)],1),_c('e-commerce-product-details-related-products',{attrs:{\"data\":_vm.product}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function _readOnlyError(name) {\n throw new TypeError(\"\\\"\" + name + \"\\\" is read-only\");\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"item-features\"},[_c('div',{staticClass:\"row text-center\"},[_c('div',{staticClass:\"col-12 col-md-4 mb-4 mb-md-0\"},[_c('div',{staticClass:\"w-75 mx-auto\"},[_c('feather-icon',{attrs:{\"icon\":\"AwardIcon\",\"size\":\"35\"}}),_c('h4',{staticClass:\"mt-2 mb-1\"},[_vm._v(\" 100% Orjinal \")])],1)]),_c('div',{staticClass:\"col-12 col-md-4 mb-4 mb-md-0\"},[_c('div',{staticClass:\"w-75 mx-auto\"},[_c('feather-icon',{attrs:{\"icon\":\"ClockIcon\",\"size\":\"35\"}}),_c('h4',{staticClass:\"mt-2 mb-1\"},[_vm._v(\" 10 günde İade/Değişim \")])],1)]),_c('div',{staticClass:\"col-12 col-md-4 mb-4 mb-md-0\"},[_c('div',{staticClass:\"w-75 mx-auto\"},[_c('feather-icon',{attrs:{\"icon\":\"ShieldIcon\",\"size\":\"35\"}}),_c('h4',{staticClass:\"mt-2 mb-1\"},[_vm._v(\" 1 Yıl Garanti \")])],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ECommerceProductDetailsItemFeatures.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ECommerceProductDetailsItemFeatures.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ECommerceProductDetailsItemFeatures.vue?vue&type=template&id=6c4320dd&\"\nimport script from \"./ECommerceProductDetailsItemFeatures.vue?vue&type=script&lang=js&\"\nexport * from \"./ECommerceProductDetailsItemFeatures.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card-body',[_c('div',{staticClass:\"mt-4 mb-2 text-center\"},[_c('h4',[_vm._v(\"Benzer Ürünler\")]),_c('b-card-text',[_vm._v(\"Müşteriler bu ürünlere de baktı\")])],1),_c('swiper',{staticClass:\"swiper-responsive-breakpoints px-4 py-2\",attrs:{\"options\":_vm.swiperOptions}},[_vm._l((_vm.products),function(product,index){return _c('swiper-slide',{key:index},[_c('b-link',[_c('div',{staticClass:\"item-heading\"},[_c('h5',{staticClass:\"text-truncate mb-0\"},[_vm._v(\" \"+_vm._s(product.name)+\" \")]),_c('small',{staticClass:\"text-body\"},[_vm._v(\"by \"+_vm._s(product.brand))])]),_c('div',{staticClass:\"img-container w-100 mx-auto py-75\"},[_c('b-img',{staticStyle:{\"height\":\"220px\",\"width\":\"80%\"},attrs:{\"src\":product.image,\"fluid\":\"\"},on:{\"click\":function($event){return _vm.yenile(product.id,product.name)}}})],1),_c('div',{staticClass:\"item-meta\"},[_c('ul',{staticClass:\"unstyled-list list-inline mb-25\"},[_vm._l((5),function(star){return _c('li',{key:star,staticClass:\"ratings-list-item\"},[_c('feather-icon',{staticClass:\"mr-25\",class:[{'fill-current': star <= product.rating}, star <= product.rating ? 'text-warning' : 'text-muted'],attrs:{\"icon\":\"StarIcon\",\"size\":\"18\"}})],1)}),(product.ratingScore)?_c('li',[_vm._v(\"(\"+_vm._s(product.ratingScore.totalCount ||'')+\")\")]):_vm._e()],2),_c('p',{staticClass:\"card-text text-primary mb-0\"},[_vm._v(\" \"+_vm._s(product.price)+\" \")])])])],1)}),_c('div',{staticClass:\"swiper-button-next\",attrs:{\"slot\":\"button-next\"},slot:\"button-next\"}),_c('div',{staticClass:\"swiper-button-prev\",attrs:{\"slot\":\"button-prev\"},slot:\"button-prev\"})],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ECommerceProductDetailsRelatedProducts.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ECommerceProductDetailsRelatedProducts.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ECommerceProductDetailsRelatedProducts.vue?vue&type=template&id=39bfe31e&\"\nimport script from \"./ECommerceProductDetailsRelatedProducts.vue?vue&type=script&lang=js&\"\nexport * from \"./ECommerceProductDetailsRelatedProducts.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ECommerceProductDetailsRelatedProducts.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ECommerceProductDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ECommerceProductDetails.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ECommerceProductDetails.vue?vue&type=template&id=7049b0c2&\"\nimport script from \"./ECommerceProductDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./ECommerceProductDetails.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ECommerceProductDetails.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { getSel, isElement } from '../../../utils/dom'; // Helper to determine if a there is an active text selection on the document page\n// Used to filter out click events caused by the mouse up at end of selection\n//\n// Accepts an element as only argument to test to see if selection overlaps or is\n// contained within the element\n\nexport var textSelectionActive = function textSelectionActive() {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n var sel = getSel();\n return sel && sel.toString().trim() !== '' && sel.containsNode && isElement(el) ?\n /* istanbul ignore next */\n sel.containsNode(el, true) : false;\n};","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_CAROUSEL } from '../../constants/components';\nimport { IS_BROWSER, HAS_POINTER_EVENT_SUPPORT, HAS_TOUCH_SUPPORT } from '../../constants/env';\nimport { EVENT_NAME_PAUSED, EVENT_NAME_SLIDING_END, EVENT_NAME_SLIDING_START, EVENT_NAME_UNPAUSED, EVENT_OPTIONS_NO_CAPTURE } from '../../constants/events';\nimport { CODE_ENTER, CODE_LEFT, CODE_RIGHT, CODE_SPACE } from '../../constants/key-codes';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { addClass, getActiveElement, reflow, removeClass, requestAF, selectAll, setAttr } from '../../utils/dom';\nimport { eventOn, eventOff, stopEvent } from '../../utils/events';\nimport { isUndefined } from '../../utils/inspect';\nimport { mathAbs, mathFloor, mathMax, mathMin } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { noop } from '../../utils/noop';\nimport { sortKeys } from '../../utils/object';\nimport { observeDom } from '../../utils/observe-dom';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_NUMBER,\n defaultValue: 0\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // Slide directional classes\n\n\nvar DIRECTION = {\n next: {\n dirClass: 'carousel-item-left',\n overlayClass: 'carousel-item-next'\n },\n prev: {\n dirClass: 'carousel-item-right',\n overlayClass: 'carousel-item-prev'\n }\n}; // Fallback Transition duration (with a little buffer) in ms\n\nvar TRANS_DURATION = 600 + 50; // Time for mouse compat events to fire after touch\n\nvar TOUCH_EVENT_COMPAT_WAIT = 500; // Number of pixels to consider touch move a swipe\n\nvar SWIPE_THRESHOLD = 40; // PointerEvent pointer types\n\nvar PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n}; // Transition Event names\n\nvar TransitionEndEvents = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'otransitionend oTransitionEnd',\n transition: 'transitionend'\n}; // --- Helper methods ---\n// Return the browser specific transitionEnd event name\n\nvar getTransitionEndEvent = function getTransitionEndEvent(el) {\n for (var name in TransitionEndEvents) {\n if (!isUndefined(el.style[name])) {\n return TransitionEndEvents[name];\n }\n } // Fallback\n\n /* istanbul ignore next */\n\n\n return null;\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), {}, {\n background: makeProp(PROP_TYPE_STRING),\n controls: makeProp(PROP_TYPE_BOOLEAN, false),\n // Enable cross-fade animation instead of slide animation\n fade: makeProp(PROP_TYPE_BOOLEAN, false),\n // Sniffed by carousel-slide\n imgHeight: makeProp(PROP_TYPE_NUMBER_STRING),\n // Sniffed by carousel-slide\n imgWidth: makeProp(PROP_TYPE_NUMBER_STRING),\n indicators: makeProp(PROP_TYPE_BOOLEAN, false),\n interval: makeProp(PROP_TYPE_NUMBER, 5000),\n labelGotoSlide: makeProp(PROP_TYPE_STRING, 'Goto slide'),\n labelIndicators: makeProp(PROP_TYPE_STRING, 'Select a slide to display'),\n labelNext: makeProp(PROP_TYPE_STRING, 'Next slide'),\n labelPrev: makeProp(PROP_TYPE_STRING, 'Previous slide'),\n // Disable slide/fade animation\n noAnimation: makeProp(PROP_TYPE_BOOLEAN, false),\n // Disable pause on hover\n noHoverPause: makeProp(PROP_TYPE_BOOLEAN, false),\n // Sniffed by carousel-slide\n noTouch: makeProp(PROP_TYPE_BOOLEAN, false),\n // Disable wrapping/looping when start/end is reached\n noWrap: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CAROUSEL); // --- Main component ---\n// @vue/component\n\nexport var BCarousel = /*#__PURE__*/Vue.extend({\n name: NAME_CAROUSEL,\n mixins: [idMixin, modelMixin, normalizeSlotMixin],\n provide: function provide() {\n return {\n bvCarousel: this\n };\n },\n props: props,\n data: function data() {\n return {\n index: this[MODEL_PROP_NAME] || 0,\n isSliding: false,\n transitionEndEvent: null,\n slides: [],\n direction: null,\n isPaused: !(toInteger(this.interval, 0) > 0),\n // Touch event handling values\n touchStartX: 0,\n touchDeltaX: 0\n };\n },\n computed: {\n numSlides: function numSlides() {\n return this.slides.length;\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n this.setSlide(toInteger(newValue, 0));\n }\n }), _defineProperty(_watch, \"interval\", function interval(newValue, oldValue) {\n /* istanbul ignore next */\n if (newValue === oldValue) {\n return;\n }\n\n if (!newValue) {\n // Pausing slide show\n this.pause(false);\n } else {\n // Restarting or Changing interval\n this.pause(true);\n this.start(false);\n }\n }), _defineProperty(_watch, \"isPaused\", function isPaused(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.$emit(newValue ? EVENT_NAME_PAUSED : EVENT_NAME_UNPAUSED);\n }\n }), _defineProperty(_watch, \"index\", function index(to, from) {\n /* istanbul ignore next */\n if (to === from || this.isSliding) {\n return;\n }\n\n this.doSlide(to, from);\n }), _watch),\n created: function created() {\n // Create private non-reactive props\n this.$_interval = null;\n this.$_animationTimeout = null;\n this.$_touchTimeout = null;\n this.$_observer = null; // Set initial paused state\n\n this.isPaused = !(toInteger(this.interval, 0) > 0);\n },\n mounted: function mounted() {\n // Cache current browser transitionend event name\n this.transitionEndEvent = getTransitionEndEvent(this.$el) || null; // Get all slides\n\n this.updateSlides(); // Observe child changes so we can update slide list\n\n this.setObserver(true);\n },\n beforeDestroy: function beforeDestroy() {\n this.clearInterval();\n this.clearAnimationTimeout();\n this.clearTouchTimeout();\n this.setObserver(false);\n },\n methods: {\n clearInterval: function (_clearInterval) {\n function clearInterval() {\n return _clearInterval.apply(this, arguments);\n }\n\n clearInterval.toString = function () {\n return _clearInterval.toString();\n };\n\n return clearInterval;\n }(function () {\n clearInterval(this.$_interval);\n this.$_interval = null;\n }),\n clearAnimationTimeout: function clearAnimationTimeout() {\n clearTimeout(this.$_animationTimeout);\n this.$_animationTimeout = null;\n },\n clearTouchTimeout: function clearTouchTimeout() {\n clearTimeout(this.$_touchTimeout);\n this.$_touchTimeout = null;\n },\n setObserver: function setObserver() {\n var on = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n this.$_observer && this.$_observer.disconnect();\n this.$_observer = null;\n\n if (on) {\n this.$_observer = observeDom(this.$refs.inner, this.updateSlides.bind(this), {\n subtree: false,\n childList: true,\n attributes: true,\n attributeFilter: ['id']\n });\n }\n },\n // Set slide\n setSlide: function setSlide(slide) {\n var _this = this;\n\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n // Don't animate when page is not visible\n\n /* istanbul ignore if: difficult to test */\n if (IS_BROWSER && document.visibilityState && document.hidden) {\n return;\n }\n\n var noWrap = this.noWrap;\n var numSlides = this.numSlides; // Make sure we have an integer (you never know!)\n\n slide = mathFloor(slide); // Don't do anything if nothing to slide to\n\n if (numSlides === 0) {\n return;\n } // Don't change slide while transitioning, wait until transition is done\n\n\n if (this.isSliding) {\n // Schedule slide after sliding complete\n this.$once(EVENT_NAME_SLIDING_END, function () {\n // Wrap in `requestAF()` to allow the slide to properly finish to avoid glitching\n requestAF(function () {\n return _this.setSlide(slide, direction);\n });\n });\n return;\n }\n\n this.direction = direction; // Set new slide index\n // Wrap around if necessary (if no-wrap not enabled)\n\n this.index = slide >= numSlides ? noWrap ? numSlides - 1 : 0 : slide < 0 ? noWrap ? 0 : numSlides - 1 : slide; // Ensure the v-model is synched up if no-wrap is enabled\n // and user tried to slide pass either ends\n\n if (noWrap && this.index !== slide && this.index !== this[MODEL_PROP_NAME]) {\n this.$emit(MODEL_EVENT_NAME, this.index);\n }\n },\n // Previous slide\n prev: function prev() {\n this.setSlide(this.index - 1, 'prev');\n },\n // Next slide\n next: function next() {\n this.setSlide(this.index + 1, 'next');\n },\n // Pause auto rotation\n pause: function pause(event) {\n if (!event) {\n this.isPaused = true;\n }\n\n this.clearInterval();\n },\n // Start auto rotate slides\n start: function start(event) {\n if (!event) {\n this.isPaused = false;\n }\n /* istanbul ignore next: most likely will never happen, but just in case */\n\n\n this.clearInterval(); // Don't start if no interval, or less than 2 slides\n\n if (this.interval && this.numSlides > 1) {\n this.$_interval = setInterval(this.next, mathMax(1000, this.interval));\n }\n },\n // Restart auto rotate slides when focus/hover leaves the carousel\n\n /* istanbul ignore next */\n restart: function restart() {\n if (!this.$el.contains(getActiveElement())) {\n this.start();\n }\n },\n doSlide: function doSlide(to, from) {\n var _this2 = this;\n\n var isCycling = Boolean(this.interval); // Determine sliding direction\n\n var direction = this.calcDirection(this.direction, from, to);\n var overlayClass = direction.overlayClass;\n var dirClass = direction.dirClass; // Determine current and next slides\n\n var currentSlide = this.slides[from];\n var nextSlide = this.slides[to]; // Don't do anything if there aren't any slides to slide to\n\n if (!currentSlide || !nextSlide) {\n /* istanbul ignore next */\n return;\n } // Start animating\n\n\n this.isSliding = true;\n\n if (isCycling) {\n this.pause(false);\n }\n\n this.$emit(EVENT_NAME_SLIDING_START, to); // Update v-model\n\n this.$emit(MODEL_EVENT_NAME, this.index);\n\n if (this.noAnimation) {\n addClass(nextSlide, 'active');\n removeClass(currentSlide, 'active');\n this.isSliding = false; // Notify ourselves that we're done sliding (slid)\n\n this.$nextTick(function () {\n return _this2.$emit(EVENT_NAME_SLIDING_END, to);\n });\n } else {\n addClass(nextSlide, overlayClass); // Trigger a reflow of next slide\n\n reflow(nextSlide);\n addClass(currentSlide, dirClass);\n addClass(nextSlide, dirClass); // Transition End handler\n\n var called = false;\n /* istanbul ignore next: difficult to test */\n\n var onceTransEnd = function onceTransEnd() {\n if (called) {\n return;\n }\n\n called = true;\n /* istanbul ignore if: transition events cant be tested in JSDOM */\n\n if (_this2.transitionEndEvent) {\n var events = _this2.transitionEndEvent.split(/\\s+/);\n\n events.forEach(function (event) {\n return eventOff(nextSlide, event, onceTransEnd, EVENT_OPTIONS_NO_CAPTURE);\n });\n }\n\n _this2.clearAnimationTimeout();\n\n removeClass(nextSlide, dirClass);\n removeClass(nextSlide, overlayClass);\n addClass(nextSlide, 'active');\n removeClass(currentSlide, 'active');\n removeClass(currentSlide, dirClass);\n removeClass(currentSlide, overlayClass);\n setAttr(currentSlide, 'aria-current', 'false');\n setAttr(nextSlide, 'aria-current', 'true');\n setAttr(currentSlide, 'aria-hidden', 'true');\n setAttr(nextSlide, 'aria-hidden', 'false');\n _this2.isSliding = false;\n _this2.direction = null; // Notify ourselves that we're done sliding (slid)\n\n _this2.$nextTick(function () {\n return _this2.$emit(EVENT_NAME_SLIDING_END, to);\n });\n }; // Set up transitionend handler\n\n /* istanbul ignore if: transition events cant be tested in JSDOM */\n\n\n if (this.transitionEndEvent) {\n var events = this.transitionEndEvent.split(/\\s+/);\n events.forEach(function (event) {\n return eventOn(nextSlide, event, onceTransEnd, EVENT_OPTIONS_NO_CAPTURE);\n });\n } // Fallback to setTimeout()\n\n\n this.$_animationTimeout = setTimeout(onceTransEnd, TRANS_DURATION);\n }\n\n if (isCycling) {\n this.start(false);\n }\n },\n // Update slide list\n updateSlides: function updateSlides() {\n this.pause(true); // Get all slides as DOM elements\n\n this.slides = selectAll('.carousel-item', this.$refs.inner);\n var numSlides = this.slides.length; // Keep slide number in range\n\n var index = mathMax(0, mathMin(mathFloor(this.index), numSlides - 1));\n this.slides.forEach(function (slide, idx) {\n var n = idx + 1;\n\n if (idx === index) {\n addClass(slide, 'active');\n setAttr(slide, 'aria-current', 'true');\n } else {\n removeClass(slide, 'active');\n setAttr(slide, 'aria-current', 'false');\n }\n\n setAttr(slide, 'aria-posinset', String(n));\n setAttr(slide, 'aria-setsize', String(numSlides));\n }); // Set slide as active\n\n this.setSlide(index);\n this.start(this.isPaused);\n },\n calcDirection: function calcDirection() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var curIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var nextIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n if (!direction) {\n return nextIndex > curIndex ? DIRECTION.next : DIRECTION.prev;\n }\n\n return DIRECTION[direction];\n },\n handleClick: function handleClick(event, fn) {\n var keyCode = event.keyCode;\n\n if (event.type === 'click' || keyCode === CODE_SPACE || keyCode === CODE_ENTER) {\n stopEvent(event);\n fn();\n }\n },\n\n /* istanbul ignore next: JSDOM doesn't support touch events */\n handleSwipe: function handleSwipe() {\n var absDeltaX = mathAbs(this.touchDeltaX);\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n\n var direction = absDeltaX / this.touchDeltaX; // Reset touch delta X\n // https://github.com/twbs/bootstrap/pull/28558\n\n this.touchDeltaX = 0;\n\n if (direction > 0) {\n // Swipe left\n this.prev();\n } else if (direction < 0) {\n // Swipe right\n this.next();\n }\n },\n\n /* istanbul ignore next: JSDOM doesn't support touch events */\n touchStart: function touchStart(event) {\n if (HAS_POINTER_EVENT_SUPPORT && PointerType[event.pointerType.toUpperCase()]) {\n this.touchStartX = event.clientX;\n } else if (!HAS_POINTER_EVENT_SUPPORT) {\n this.touchStartX = event.touches[0].clientX;\n }\n },\n\n /* istanbul ignore next: JSDOM doesn't support touch events */\n touchMove: function touchMove(event) {\n // Ensure swiping with one touch and not pinching\n if (event.touches && event.touches.length > 1) {\n this.touchDeltaX = 0;\n } else {\n this.touchDeltaX = event.touches[0].clientX - this.touchStartX;\n }\n },\n\n /* istanbul ignore next: JSDOM doesn't support touch events */\n touchEnd: function touchEnd(event) {\n if (HAS_POINTER_EVENT_SUPPORT && PointerType[event.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.clientX - this.touchStartX;\n }\n\n this.handleSwipe(); // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause(false);\n this.clearTouchTimeout();\n this.$_touchTimeout = setTimeout(this.start, TOUCH_EVENT_COMPAT_WAIT + mathMax(1000, this.interval));\n }\n },\n render: function render(h) {\n var _this3 = this;\n\n var indicators = this.indicators,\n background = this.background,\n noAnimation = this.noAnimation,\n noHoverPause = this.noHoverPause,\n noTouch = this.noTouch,\n index = this.index,\n isSliding = this.isSliding,\n pause = this.pause,\n restart = this.restart,\n touchStart = this.touchStart,\n touchEnd = this.touchEnd;\n var idInner = this.safeId('__BV_inner_'); // Wrapper for slides\n\n var $inner = h('div', {\n staticClass: 'carousel-inner',\n attrs: {\n id: idInner,\n role: 'list'\n },\n ref: 'inner'\n }, [this.normalizeSlot()]); // Prev and next controls\n\n var $controls = h();\n\n if (this.controls) {\n var makeControl = function makeControl(direction, label, handler) {\n var handlerWrapper = function handlerWrapper(event) {\n /* istanbul ignore next */\n if (!isSliding) {\n _this3.handleClick(event, handler);\n } else {\n stopEvent(event, {\n propagation: false\n });\n }\n };\n\n return h('a', {\n staticClass: \"carousel-control-\".concat(direction),\n attrs: {\n href: '#',\n role: 'button',\n 'aria-controls': idInner,\n 'aria-disabled': isSliding ? 'true' : null\n },\n on: {\n click: handlerWrapper,\n keydown: handlerWrapper\n }\n }, [h('span', {\n staticClass: \"carousel-control-\".concat(direction, \"-icon\"),\n attrs: {\n 'aria-hidden': 'true'\n }\n }), h('span', {\n class: 'sr-only'\n }, [label])]);\n };\n\n $controls = [makeControl('prev', this.labelPrev, this.prev), makeControl('next', this.labelNext, this.next)];\n } // Indicators\n\n\n var $indicators = h('ol', {\n staticClass: 'carousel-indicators',\n directives: [{\n name: 'show',\n value: indicators\n }],\n attrs: {\n id: this.safeId('__BV_indicators_'),\n 'aria-hidden': indicators ? 'false' : 'true',\n 'aria-label': this.labelIndicators,\n 'aria-owns': idInner\n }\n }, this.slides.map(function (slide, i) {\n var handler = function handler(event) {\n _this3.handleClick(event, function () {\n _this3.setSlide(i);\n });\n };\n\n return h('li', {\n class: {\n active: i === index\n },\n attrs: {\n role: 'button',\n id: _this3.safeId(\"__BV_indicator_\".concat(i + 1, \"_\")),\n tabindex: indicators ? '0' : '-1',\n 'aria-current': i === index ? 'true' : 'false',\n 'aria-label': \"\".concat(_this3.labelGotoSlide, \" \").concat(i + 1),\n 'aria-describedby': slide.id || null,\n 'aria-controls': idInner\n },\n on: {\n click: handler,\n keydown: handler\n },\n key: \"slide_\".concat(i)\n });\n }));\n var on = {\n mouseenter: noHoverPause ? noop : pause,\n mouseleave: noHoverPause ? noop : restart,\n focusin: pause,\n focusout: restart,\n keydown: function keydown(event) {\n /* istanbul ignore next */\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n var keyCode = event.keyCode;\n\n if (keyCode === CODE_LEFT || keyCode === CODE_RIGHT) {\n stopEvent(event);\n\n _this3[keyCode === CODE_LEFT ? 'prev' : 'next']();\n }\n }\n }; // Touch support event handlers for environment\n\n if (HAS_TOUCH_SUPPORT && !noTouch) {\n // Attach appropriate listeners (prepend event name with '&' for passive mode)\n\n /* istanbul ignore next: JSDOM doesn't support touch events */\n if (HAS_POINTER_EVENT_SUPPORT) {\n on['&pointerdown'] = touchStart;\n on['&pointerup'] = touchEnd;\n } else {\n on['&touchstart'] = touchStart;\n on['&touchmove'] = this.touchMove;\n on['&touchend'] = touchEnd;\n }\n } // Return the carousel\n\n\n return h('div', {\n staticClass: 'carousel',\n class: {\n slide: !noAnimation,\n 'carousel-fade': !noAnimation && this.fade,\n 'pointer-event': HAS_TOUCH_SUPPORT && HAS_POINTER_EVENT_SUPPORT && !noTouch\n },\n style: {\n background: background\n },\n attrs: {\n role: 'region',\n id: this.safeId(),\n 'aria-busy': isSliding ? 'true' : 'false'\n },\n on: on\n }, [$inner, $controls, $indicators]);\n }\n});","import { Vue } from '../vue';\nimport { NAME_CARD } from '../constants/components';\nimport { PROP_TYPE_STRING } from '../constants/props';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n bgVariant: makeProp(PROP_TYPE_STRING),\n borderVariant: makeProp(PROP_TYPE_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n textVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_CARD); // --- Mixin ---\n// @vue/component\n\nexport var cardMixin = Vue.extend({\n props: props\n});","import { Vue } from '../../../vue';\nimport { SLOT_NAME_TABLE_COLGROUP } from '../../../constants/slots'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var colgroupMixin = Vue.extend({\n methods: {\n renderColgroup: function renderColgroup() {\n var fields = this.computedFields;\n var h = this.$createElement;\n var $colgroup = h();\n\n if (this.hasNormalizedSlot(SLOT_NAME_TABLE_COLGROUP)) {\n $colgroup = h('colgroup', {\n key: 'colgroup'\n }, [this.normalizeSlot(SLOT_NAME_TABLE_COLGROUP, {\n columns: fields.length,\n fields: fields\n })]);\n }\n\n return $colgroup;\n }\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_TEXT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n textTag: makeProp(PROP_TYPE_STRING, 'p')\n}, NAME_CARD_TEXT); // --- Main component ---\n// @vue/component\n\nexport var BCardText = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_TEXT,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.textTag, mergeData(data, {\n staticClass: 'card-text'\n }), children);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_BREADCRUMB } from '../../constants/components';\nimport { PROP_TYPE_ARRAY } from '../../constants/props';\nimport { isArray, isObject } from '../../utils/inspect';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { BBreadcrumbItem } from './breadcrumb-item'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n items: makeProp(PROP_TYPE_ARRAY)\n}, NAME_BREADCRUMB); // --- Main component ---\n// @vue/component\n\nexport var BBreadcrumb = /*#__PURE__*/Vue.extend({\n name: NAME_BREADCRUMB,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var items = props.items; // Build child nodes from items, if given\n\n var childNodes = children;\n\n if (isArray(items)) {\n var activeDefined = false;\n childNodes = items.map(function (item, idx) {\n if (!isObject(item)) {\n item = {\n text: toString(item)\n };\n } // Copy the value here so we can normalize it\n\n\n var _item = item,\n active = _item.active;\n\n if (active) {\n activeDefined = true;\n } // Auto-detect active by position in list\n\n\n if (!active && !activeDefined) {\n active = idx + 1 === items.length;\n }\n\n return h(BBreadcrumbItem, {\n props: _objectSpread(_objectSpread({}, item), {}, {\n active: active\n })\n });\n });\n }\n\n return h('ol', mergeData(data, {\n staticClass: 'breadcrumb'\n }), childNodes);\n }\n});","import store from '@/store'\nimport { useRouter } from '@core/utils/utils'\n\nexport const useEcommerce = () => {\n // eslint-disable-next-line arrow-body-style\n const addProductInWishlist = productId => {\n return store.dispatch('app-ecommerce/addProductInWishlist', { productId })\n }\n\n // eslint-disable-next-line arrow-body-style\n const removeProductFromWishlist = productId => {\n return store.dispatch('app-ecommerce/removeProductFromWishlist', { productId })\n }\n\n // eslint-disable-next-line arrow-body-style\n const addProductInCart = productId => {\n return store.dispatch('app-ecommerce/addProductInCart', { productId })\n }\n\n // eslint-disable-next-line arrow-body-style\n const removeProductFromCart = productId => {\n return store.dispatch('app-ecommerce/removeProductFromCart', { productId })\n }\n\n // eslint-disable-next-line arrow-body-style\n const updateItemQuantity = (productId, qty) => {\n return store.dispatch('app-ecommerce/updateItemQuantity', { productId, qty })\n }\n\n return {\n addProductInWishlist,\n removeProductFromWishlist,\n addProductInCart,\n removeProductFromCart,\n updateItemQuantity,\n }\n}\n\nexport const useEcommerceUi = () => {\n const { router } = useRouter()\n\n const toggleProductInWishlist = product => {\n const { addProductInWishlist, removeProductFromWishlist } = useEcommerce()\n if (product.isInWishlist) {\n removeProductFromWishlist(product.id).then(() => {\n // eslint-disable-next-line no-param-reassign\n product.isInWishlist = false\n })\n } else {\n addProductInWishlist(product.id).then(() => {\n // eslint-disable-next-line no-param-reassign\n product.isInWishlist = true\n })\n }\n }\n\n const handleCartActionClick = product => {\n const { addProductInCart } = useEcommerce()\n\n if (product.isInCart) {\n router.push({ name: 'apps-e-commerce-checkout' })\n } else {\n addProductInCart(product.id).then(() => {\n // eslint-disable-next-line no-param-reassign\n product.isInCart = true\n\n // Update cart items count\n store.commit('app-ecommerce/UPDATE_CART_ITEMS_COUNT', store.state['app-ecommerce'].cartItemsCount + 1)\n store.commit('app-ecommerce/toplamhesapla',product)\n\n })\n }\n }\n\n const handleWishlistCartActionClick = (product, removeProductFromWishlistUi) => {\n const { addProductInCart, removeProductFromWishlist } = useEcommerce()\n\n if (product.isInCart) {\n router.push({ name: 'apps-e-commerce-checkout' })\n } else {\n addProductInCart(product.id)\n .then(() => {\n // eslint-disable-next-line no-param-reassign\n product.isInCart = true\n removeProductFromWishlist(product.id)\n\n // Update cart items count\n store.commit('app-ecommerce/UPDATE_CART_ITEMS_COUNT', store.state['app-ecommerce'].cartItemsCount + 1)\n })\n .then(() => {\n // eslint-disable-next-line no-param-reassign\n product.isInWishlist = false\n removeProductFromWishlistUi(product)\n })\n }\n }\n return {\n toggleProductInWishlist,\n handleCartActionClick,\n handleWishlistCartActionClick,\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"app-timeline\"},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppTimeline.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppTimeline.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppTimeline.vue?vue&type=template&id=879a380c&scoped=true&\"\nimport script from \"./AppTimeline.vue?vue&type=script&lang=js&\"\nexport * from \"./AppTimeline.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppTimeline.vue?vue&type=style&index=0&id=879a380c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"879a380c\",\n null\n \n)\n\nexport default component.exports","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_BADGE } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { isLink } from '../../utils/router';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Props ---\n\nvar linkProps = omit(BLinkProps, ['event', 'routerTag']);\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, linkProps), {}, {\n pill: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'span'),\n variant: makeProp(PROP_TYPE_STRING, 'secondary')\n})), NAME_BADGE); // --- Main component ---\n// @vue/component\n\nexport var BBadge = /*#__PURE__*/Vue.extend({\n name: NAME_BADGE,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var active = props.active,\n disabled = props.disabled;\n var link = isLink(props);\n var tag = link ? BLink : props.tag;\n var variant = props.variant || 'secondary';\n return h(tag, mergeData(data, {\n staticClass: 'badge',\n class: [\"badge-\".concat(variant), {\n 'badge-pill': props.pill,\n active: active,\n disabled: disabled\n }],\n props: link ? pluckProps(linkProps, props) : {}\n }), children);\n }\n});","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","export var noop = function noop() {};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_CAROUSEL_SLIDE } from '../../constants/components';\nimport { HAS_TOUCH_SUPPORT } from '../../constants/env';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_IMG } from '../../constants/slots';\nimport { stopEvent } from '../../utils/events';\nimport { htmlOrText } from '../../utils/html';\nimport { identity } from '../../utils/identity';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps, unprefixPropName } from '../../utils/props';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BImg } from '../image/img'; // --- Props ---\n\nvar imgProps = {\n imgAlt: makeProp(PROP_TYPE_STRING),\n imgBlank: makeProp(PROP_TYPE_BOOLEAN, false),\n imgBlankColor: makeProp(PROP_TYPE_STRING, 'transparent'),\n imgHeight: makeProp(PROP_TYPE_NUMBER_STRING),\n imgSrc: makeProp(PROP_TYPE_STRING),\n imgWidth: makeProp(PROP_TYPE_NUMBER_STRING)\n};\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), imgProps), {}, {\n background: makeProp(PROP_TYPE_STRING),\n caption: makeProp(PROP_TYPE_STRING),\n captionHtml: makeProp(PROP_TYPE_STRING),\n captionTag: makeProp(PROP_TYPE_STRING, 'h3'),\n contentTag: makeProp(PROP_TYPE_STRING, 'div'),\n contentVisibleUp: makeProp(PROP_TYPE_STRING),\n text: makeProp(PROP_TYPE_STRING),\n textHtml: makeProp(PROP_TYPE_STRING),\n textTag: makeProp(PROP_TYPE_STRING, 'p')\n})), NAME_CAROUSEL_SLIDE); // --- Main component ---\n// @vue/component\n\nexport var BCarouselSlide = /*#__PURE__*/Vue.extend({\n name: NAME_CAROUSEL_SLIDE,\n mixins: [idMixin, normalizeSlotMixin],\n inject: {\n bvCarousel: {\n // Explicitly disable touch if not a child of carousel\n default: function _default() {\n return {\n noTouch: true\n };\n }\n }\n },\n props: props,\n computed: {\n contentClasses: function contentClasses() {\n return [this.contentVisibleUp ? 'd-none' : '', this.contentVisibleUp ? \"d-\".concat(this.contentVisibleUp, \"-block\") : ''];\n },\n computedWidth: function computedWidth() {\n // Use local width, or try parent width\n return this.imgWidth || this.bvCarousel.imgWidth || null;\n },\n computedHeight: function computedHeight() {\n // Use local height, or try parent height\n return this.imgHeight || this.bvCarousel.imgHeight || null;\n }\n },\n render: function render(h) {\n var $img = this.normalizeSlot(SLOT_NAME_IMG);\n\n if (!$img && (this.imgSrc || this.imgBlank)) {\n var on = {}; // Touch support event handler\n\n /* istanbul ignore if: difficult to test in JSDOM */\n\n if (!this.bvCarousel.noTouch && HAS_TOUCH_SUPPORT) {\n on.dragstart = function (event) {\n return stopEvent(event, {\n propagation: false\n });\n };\n }\n\n $img = h(BImg, {\n props: _objectSpread(_objectSpread({}, pluckProps(imgProps, this.$props, unprefixPropName.bind(null, 'img'))), {}, {\n width: this.computedWidth,\n height: this.computedHeight,\n fluidGrow: true,\n block: true\n }),\n on: on\n });\n }\n\n var $contentChildren = [// Caption\n this.caption || this.captionHtml ? h(this.captionTag, {\n domProps: htmlOrText(this.captionHtml, this.caption)\n }) : false, // Text\n this.text || this.textHtml ? h(this.textTag, {\n domProps: htmlOrText(this.textHtml, this.text)\n }) : false, // Children\n this.normalizeSlot() || false];\n var $content = h();\n\n if ($contentChildren.some(identity)) {\n $content = h(this.contentTag, {\n staticClass: 'carousel-caption',\n class: this.contentClasses\n }, $contentChildren.map(function ($child) {\n return $child || h();\n }));\n }\n\n return h('div', {\n staticClass: 'carousel-item',\n style: {\n background: this.background || this.bvCarousel.background || null\n },\n attrs: {\n id: this.safeId(),\n role: 'listitem'\n }\n }, [$img, $content]);\n }\n});"],"sourceRoot":""}