{"version":3,"mappings":"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AGFA,QACFA,QACFA,QACAA,kBACEA,kBACEA,kBACEA,sBAGFA,QACFA,QACAA,oBACEA,mBACEA,iBAGFA,QACFA,QACFA,QACFA,+BA5ByGA,gDAMjEA,mDAUiEA,gDAMjEA,8EAOxCA,SACEA,kBACEA,mBACEA,iBACEA,sBAGFA,QACFA,QACAA,mBACEA,kBACEA,gBAGFA,QACFA,QACFA,QACAA,kBACEA,mBACEA,kBACEA,uBAGFA,QACFA,QACAA,oBACEA,mBACEA,iBAGFA,QACFA,QACFA,QACFA,+BA5BqHA,gDAM7EA,mDAU6EA,gDAM7EA,8EAOxCA,SACEA,kBACEA,mBACEA,iBACEA,sBAGFA,QACFA,QACAA,mBACEA,kBACEA,gBAGFA,QACFA,QACFA,QACFA,+BAZiHA,gDAMzEA,8EAOxCA,SACEA,kBACEA,mBACEA,iBACEA,sBAGFA,QACFA,QACAA,mBACEA,kBACEA,gBAGFA,QACFA,QACFA,QACAA,kBACEA,mBACEA,kBACEA,uBAGFA,QACFA,QACAA,oBACEA,mBACEA,iBAGFA,QACFA,QACFA,QACAA,mBACEA,oBACEA,kBACEA,uBAGFA,QACFA,QACAA,oBACEA,mBACEA,iBAGFA,QACFA,QACFA,QACFA,+BA5C2IA,gDAMnGA,mDAUmGA,gDAMnGA,mDAUmGA,gDAMnGA,8EAOxCA,SACEA,kBACEA,mBACEA,iBACEA,sBAGFA,QACFA,QACAA,mBACEA,kBACEA,gBAGFA,QACFA,QACFA,QACAA,kBACEA,mBACEA,kBACEA,uBAGFA,QACFA,QACAA,oBACEA,mBACEA,iBAGFA,QACFA,QACFA,QACAA,mBACEA,oBACEA,kBACEA,uBAGFA,QACFA,QACAA,oBACEA,mBACEA,iBAGFA,QACFA,QACFA,QACAA,mBACEA,oBACEA,kBACEA,uBAGFA,QACFA,QACAA,oBACEA,mBACEA,iBAGFA,QACFA,QACFA,QACFA,+BA5DyIA,gDAMjGA,mDAUiGA,gDAMjGA,mDAUiGA,gDAMjGA,mDAUiGA,gDAMjGA,8EAOxCA,SACEA,kBACEA,mBACEA,iBACEA,sBAGFA,QACFA,QACAA,mB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","names":["productFeature","createFeatureSelector","PRODUCT_FEATURE","selectLoading","createSelector","state","products_list","isLoading","selectPayload","payload","selectConfiguration","data","configuration","selectItems","selectPageSize","pageSize","selectPageNo","pageIndex","selectCount","count","selectTotalData","totalCount","selectTotalPage","totalPages","getMergedRoute","mergedRoute","params","id","layoutFeature","LAYOUT_FEATURE_KEY","selectCategoryTreeLoading","o","categoryTree","_a","selectCategoryTree","selectCategoryTreeView","children","filter","x","value","parentCategory","forEach","t","map","c","push","TreeviewItem","text","defaultThrottleConfig","leading","trailing","duration","scheduler","async","config","source","lift","ThrottleTimeOperator","constructor","this","call","subscriber","subscribe","ThrottleTimeSubscriber","Subscriber","destination","super","_hasTrailingValue","_trailingValue","_next","throttled","add","schedule","dispatchNext","next","_complete","complete","clearThrottle","unsubscribe","remove","arg","w","window","screen","navigator","matchMedia","matches","bind","passiveOptionAccessed","noop","addEventListener","removeEventListener","supportsPassiveEvents","onTouchStartInWindow","userAgent","test","Math","min","width","height","_c0","_c1","_c2","_c3","_c4","_c5","_c6","_c7","_c8","_c9","_c10","_c11","_c12","rf","ctx","ɵngcc0","t_r13","$implicit","ctx_r14","tooltipTemplate","valueTooltip","valueTooltipPlacement","legend","_c13","a0","SliderComponent_span_28_ngx_slider_tooltip_wrapper_2_Template","SliderComponent_span_28_span_3_Template","ctx_r12","selected","style","tooltip","tooltipPlacement","TooltipWrapperComponent_ng_container_0_1_ng_template_0_Template","_c14","a1","a2","placement","content","TooltipWrapperComponent_ng_container_0_1_Template","undefined","ctx_r0","template","ctx_r1","LabelType","Low","High","Floor","Ceil","TickValue","floor","ceil","step","minRange","maxRange","pushRange","minLimit","maxLimit","translate","combineLabels","getLegend","getStepLegend","stepsArray","bindIndexForStepsArray","draggableRange","draggableRangeOnly","showSelectionBar","showSelectionBarEnd","showSelectionBarFromValue","showOuterSelectionBars","hidePointerLabels","hideLimitLabels","autoHideLimitLabels","readOnly","disabled","showTicks","showTicksValues","tickStep","tickValueStep","ticksArray","ticksTooltip","ticksValuesTooltip","vertical","getSelectionBarColor","getTickColor","getPointerColor","keyboardSupport","scale","rotate","enforceStep","enforceRange","enforceStepsArray","noSwitching","onlyBindHandles","rightToLeft","reversedControls","boundPointerLabels","logScale","customValueToPosition","customPositionToValue","precisionLimit","selectionBarGradient","ariaLabel","ariaLabelledBy","ariaLabelHigh","ariaLabelledByHigh","handleDimension","barDimension","animate","animateOnMove","PointerType","Min","Max","isNullOrUndefined","areArraysEqual","array1","array2","length","i","val","minVal","maxVal","range","log","percent","exp","modelValue","differences","abs","minDifferenceIndex","index","isTouchEvent","event","TouchEvent","touches","ResizeObserver","roundToPrecisionLimit","toPrecision","modulo","limit","pow","max","eventName","events","eventsSubscription","teardownCallback","renderer","attachPassiveEventListener","nativeElement","callback","throttleInterval","attachEventListener","listener","EventListener","Subject","observerCallback","passive","capture","pipe","ValueHelper","tap","throttleTime","detachEventListener","eventListener","listen","SliderElementDirective","elemRef","changeDetectionRef","_position","_dimension","_alwaysHide","_vertical","_scale","_rotate","opacity","visibility","left","bottom","transform","eventListeners","eventListenerHelper","EventListenerHelper","setAlwaysHide","hide","e","show","alwaysHide","isVisible","setVertical","setScale","setRotate","getRotate","setPosition","pos","isRefDestroyed","markForCheck","round","calculateDimension","getBoundingClientRect","top","right","setDimension","dim","on","debounceInterval","onPassive","off","listenersToKeep","listenersToRemove","destroyed","ɵfac","ɵdir","type","selectors","hostVars","hostBindings","SliderHandleDirective","active","role","tabindex","ariaOrientation","ariaValueNow","ariaValueText","ariaValueMin","ariaValueMax","focus","features","SliderLabelDirective","_value","setValue","recalculateDimension","dimension","innerHTML","difference","position","lowLimit","highLimit","compare","y","highValue","ModelValues","forceChange","NGX_SLIDER_CONTROL_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","SliderComponent","multi","elementRef","zone","valueChange","EventEmitter","highValueChange","options","Options","userChangeStart","userChange","userChangeEnd","initHasRun","inputModelChangeSubject","inputModelChangeSubscription","outputModelChangeSubject","outputModelChangeSubscription","viewLowValue","viewHighValue","viewOptions","handleHalfDimension","maxHandlePosition","currentTrackingPointer","currentFocusPointer","firstKeyDown","touchId","dragging","Dragging","sliderElementVerticalClass","sliderElementAnimateClass","sliderElementWithLegendClass","sliderElementDisabledAttr","sliderElementAriaLabel","barStyle","minPointerStyle","maxPointerStyle","fullBarTransparentClass","selectionBarDraggableClass","ticksUnderValuesClass","intermediateTicks","ticks","onMoveEventListener","onEndEventListener","moving","resizeObserver","onTouchedCallback","onChangeCallback","manualRefresh","unsubscribeManualRefresh","manualRefreshSubscription","setTimeout","calculateViewDimensionsAndDetectChanges","triggerFocus","unsubscribeTriggerFocus","triggerFocusSubscription","pointerType","focusPointer","ngOnInit","Object","assign","updateDisabledState","updateVerticalState","updateAriaLabel","ngAfterViewInit","applyOptions","subscribeInputModelChangeSubject","subscribeOutputModelChangeSubject","renormaliseModelValues","modelValueToViewValue","manageElementsStyle","calculateViewDimensions","addAccessibility","updateCeilLabel","updateFloorLabel","initHandles","manageEventsBindings","subscribeResizeObserver","detectChanges","ngOnChanges","changes","JSON","stringify","previousValue","currentValue","onChangeOptions","internalChange","ngOnDestroy","unbindEvents","unsubscribeResizeObserver","unsubscribeInputModelChangeSubject","unsubscribeOutputModelChangeSubject","writeValue","obj","Array","registerOnChange","registerOnTouched","setDisabledState","isDisabled","setAriaLabel","onResize","distinctUntilChanged","ModelChange","modelChange","applyInputModelChange","publishOutputModelChange","CompatibilityHelper","isResizeObserverAvailable","observe","disconnect","unsubscribeOnMove","unsubscribeOnEnd","getPointerElement","minHandleElement","maxHandleElement","getCurrentTrackingValue","NaN","findStepIndex","viewValueToModelValue","viewValue","getStepValue","sliderValue","applyViewChange","userEventInitiated","normalisedModelChange","normaliseModelValues","normalisationChange","updateLowHandle","valueToPosition","updateHighHandle","updateSelectionBar","updateTicksScale","updateAriaAttributes","updateCombinedLabel","emitOutputs","emit","getChangeContext","input","normalisedInput","valueIndex","highValueIndex","roundStep","MathHelper","clampToRange","tempValue","previousModelValues","normalisedModelValues","previousOptionsInfluencingEventBindings","getOptionsInfluencingEventBindings","newOptionsInfluencingEventBindings","rebindEvents","resetSlider","applyFloorCeilOptions","applyStepsArrayOptions","minValue","maxValue","Error","String","refocusPointerIfNeeded","onPointerFocus","element","updateScale","floorLabelElement","ceilLabelElement","hideLabelsForTicks","minHandleLabelElement","maxHandleLabelElement","combinedLabelElement","selectionBarElement","leftOuterSelectionBarElement","rightOuterSelectionBarElement","updateRotate","bindEvents","getAllSliderElements","fullBarElement","ticksElement","toString","handleWidth","getTicksArray","reverse","hasAtLeastOneLegend","newTicks","translation","tick","Tick","isTickSelected","isModuloWithinPrecisionLimit","getDisplayValue","numberOfValues","center","updateHandles","which","newPos","getHandleLabelPos","labelType","labelDimension","nearHandlePos","endOfBarPos","backgroundColor","updateFloorAndCeilLabelsVisibility","floorLabelHidden","ceilLabelHidden","isMinLabelAtFloor","isLabelBelowFloorLabel","isMinLabelAtCeil","isLabelAboveCeilLabel","isMaxLabelAtCeil","isCombinedLabelAtFloor","isCombinedLabelAtCeil","a","hideCeil","hideFloor","d","label","floorPos","ceilPos","isSelectionBarFromRight","positionForRange","centerPosition","offset","reversed","backgroundImage","from","to","backgroundPosition","backgroundSize","color","isLabelOverlap","lowDisplayValue","highDisplayValue","combinedLabelValue","customStep","steppedDifference","fn","linearValueToPosition","logValueToPosition","positionToValue","linearPositionToValue","logPositionToValue","getEventXY","targetTouchId","MouseEvent","clientY","clientX","touchIndex","identifier","getEventPosition","sliderElementBoundingRect","sliderPos","eventPos","getNearestHandle","distanceMin","distanceMax","onBarStart","onStart","bindMove","bindEnd","simulateImmediateMove","simulateImmediateEnd","onDragStart","stopPropagation","preventDefault","pointerElement","onMoveCallback","onDragMove","onMove","document","onEndCallback","onEnd","changedTouches","fromTick","touchForThisSlider","newValue","n","positionTrackingHandle","onPointerBlur","onKeyboardEvent","onKeyUp","pointer","getKeyActions","valueRange","increaseStep","decreaseStep","increasePage","decreasePage","actions","UP","DOWN","LEFT","RIGHT","PAGEUP","PAGEDOWN","HOME","END","keyCode","action","actionValue","newMinValue","newMaxValue","positionTrackingBar","getMinValue","outOfBounds","isAbove","isRTL","s","getMaxValue","ceilLimit","floorLimit","floorHandleElement","ceilHandleElement","isOverCeilLimit","applyMinMaxLimit","applyPushRange","applyMinMaxRange","changeContext","ChangeContext","ɵcmp","contentQueries","dirIndex","_t","first","viewQuery","hostAttrs","$event","inputs","outputs","decls","vars","consts","SliderComponent_span_28_Template","directives","ɵngcc1","TooltipWrapperComponent","styles","TooltipWrapperComponent_ng_container_0_Template","TooltipWrapperComponent_ng_container_1_Template","NgxSliderModule","ɵmod","ɵinj","imports","CommonModule","CategoryTreeviewI18n","DefaultTreeviewI18n","getText","selection","uncheckedItems","checkedItems","getFilterNoItemsFoundText","factory","i0","ProductTab1Component","PushToCartComponent","store","productService","modalService","urlService","metaService","titleService","route","router","platformId","background","data$","of","isLoading$","isPlatformBrowser","select","productsSelectors","loading$","count$","pushToCart","product","itemImg","$","code","find","eq","flyToElement","ViewTypeEnum","openDetails","modalRef","open","ProductDetailsDlgComponent","size","modalDialogClass","componentInstance","provider","productProvider","result","then","navigate","PLATFORM_ID","period","SampleTimeSubscriber","hasValue","dispatchNotification","lastValue","notifyNext","selector","scrollWindow","defaultElement","fromRoot","hasWindow","documentElement","container","containerIsString","customRoot","querySelector","prop","firstChange","VerticalProps","clientHeight","offsetHeight","scrollHeight","pageYOffset","offsetTop","scrollTop","HorizontalProps","propsMap","clientHeightKey","offsetHeightKey","scrollHeightKey","pageYOffsetKey","offsetTopKey","scrollTopKey","topKey","windowElement","some","prototype","includes","isContainerWindow","resolver","isWindow","axis","extractHeightPropKeys","getElementHeight","scrolled","getElementPageYOffset","getDocumentElement","nativeElementHeight","totalToScroll","elem","isNaN","docElem","ownerDocument","defaultView","distance","scrollingDown","remaining","containerBreakpoint","scrolledUntilNow","down","up","lastScrollPosition","lastTotalToScroll","triggered","updateScrollPosition","updateTotalToScroll","updateScroll","updateTriggeredFlag","scroll","isScrollingDown","isTriggeredScroll","scrollContainer","isElementWindow","AxisResolver","horizontal","resolveContainerElement","scrollState","ScrollState","calculatePoints","upDistance","downDistance","obs","fromEvent","throttle","SampleTimeOperator","mergeMap","positionStats","stats","scrollDown","fire","shouldFireScrollEvent","alwaysCallback","isTriggeredCurrentTotal","toInfiniteScrollAction","response","currentScrollPosition","InfiniteScrollDirective","scrolledUp","infiniteScrollDistance","infiniteScrollUpDistance","infiniteScrollThrottle","infiniteScrollDisabled","infiniteScrollContainer","immediateCheck","setup","containerChanged","inputPropChanged","disabledChanged","distanceChanged","shouldSetup","destroyScroller","runOutsideAngular","disposeScroller","createScroller","disable","run","handleOnScroll","InfiniteScrollModule","providers","ProductTab2Component","ProductListComponent","ConfigurationPagedComponent","ConfigurationPagedSelectorModel","_seoContent","categoryCode","name","sectionId","checked","TreeviewConfig","hasAllCheckBox","hasCollapseExpand","decoupleChildFromParent","maxHeight","BehaviorSubject","metas","isBrowser","dispatch","productsActions","locationType","locations","leafCategories","ListProducts","ratingsCounter","Number","rating","toFixed","res","price","slice","items$","asObservable","countSubject$","f","nav","key","categoriesLocalInfo","previousPage","loadProducts","pagingStrategy","locationResolver","searchTerms","sortingArgs","categories","priceRange","low","high","supplierCode","request$","productSelectors","categoryTree$","categoryTreeSelector","loadingCategoryTree$","selectCategoryTreeView$","user$","authSelectors","categoryName$","categorySelectors","provider$","searchSelectors","stateAnimate","title","description","keywords","h1","loadPrerender","subscriptions","selectCategorySubject","debounceTime","items","changeUrl","url","footer","onScroll","take","toPromise","console","info","loadSelectScript","loadSortScript","_subscriptions","sortingItems","onChangeSlider","onSelectCategories","values","categoryValues","sb","cancelRequest","TreeviewI18n","useClass","trigger","transition","related_products","RelatedProductsComponent","relatedSelectors","getDetails","currentUrl","Utils","navigateByUrl","skipLocationChange","detailsActions","relatedActions","ProductDimensionsComponent","dimensions$","currentKey$","l","counter","_r8","closeLightbox","closeButtonText","EventService","emitter","ReplaySubject","emitChangeEvent","ɵprov","token","LightboxCommonComponent","eventService","currentImageIndex","indexCurrentSlide","containerStyles","currImageLoadingState","isMobile","mobileCheck","check","vendor","substr","_lightboxImage","lightboxImage","lightboxImageElement","naturalHeight","naturalWidth","lightboxData","properties","images","image","thumbnailImage","lightboxImageNaturalHeight","imageAspectRatio","windowWidth","body","clientWidth","windowHeight","innerHeight","isImageLargerWindow","lightboxImageNaturalWidth","parseInt","showState","containerScale","thumbnailImagePosition","virtualImageDimension","loop","isLastImage","latestImageIndex","backgroundOpacity","animationDuration","animationMode","animationTimingFunction","counterSeparator","emitState","setShowState","setClosingState","closingState","setAnimationDuration","hostStyleTransition","setBackgroundColor","hostStyleBackgroundColor","getContainerHeight","showThumbnailImage","hideThumbnailImage","updateThumbnailPosition","containerInitialPosition","_imageFirst","_imageSecond","_imageLast","encapsulation","__decorate","Input","HostBinding","ViewChild","static","LightboxComponent","ref","spinnerHeight","minTimeout","preloaderTimeout","spinnerStyles","configThumbnailPreloader","hostShown","hideControls","simpleMode","currImagePath","path","fullImage","prevImagePath","prevIndex","isFirstImage","isZoomIn","imageOrientation","scrolling","onKeyDown","prev","onMouseEnter","transitionEnd","propertyName","hostAnimation","initialLightbox","showLightboxAnimation","onImageLoaded","initialLightboxVirtualImage","hideThumbnail","onImageError","initialLightboxDefault","onContainerClick","target","lightboxContainerElem","setMaxDimensions","initialLightboxThumbnailImage","containerFullscreenPosition","showLightboxAnimationEnd","closeLightboxInitial","closeLightboxAnimation","getContainerWidth","closeLightboxAnimationEnd","handleLightboxTransitionEnd","imageMaxHeight","maxWidth","imageMaxWidth","handlePinchZoomEvents","prevImageElem","hostLightTheme","LightboxComponent_div_0_Template","LightboxComponent_div_1_Template","LightboxComponent_div_2_Template","LightboxComponent_div_5_Template","LightboxComponent_div_6_Template","isPreloader","isHiddenPrevArrow","isHiddenNextArrow","HostListener","DefaultProperties","gestureEnable","CrystalLightbox","componentFactoryResolver","appRef","injector","appendComponentToBody","component","componentRef","resolveComponentFactory","create","instance","attachView","hostView","appendChild","rootNodes","detachView","destroy","applyPropertieDefaults","getLightboxComponent","defaultProperties","_defaultProperties","LightboxDirective","lightbox","hostLightboxGroup","globalEventsSubscription","handleGlobalEvents","closest","onClick","isGroupImage","getImage","getProperties","src","hostSimpleMode","Output","LightboxGroupDirective","thumbnailImages","_lightboxDirectiveList","toArray","thumbnailImageElement","getThumbnailImages","thumbnailImageIndex","getThumbnailImageIndex","thumbnailLightboxDirective","getThumbnailLightboxDirective","getImages","lightboxDirectiveList","el","ContentChildren","descendants","CrystalLightboxModule","ProductDetailsComponent","storageService","toastr","contactsActions","detailsSelectors","shipping$","isLoadingPushToCart$","cartSelectors","location$","locationSelectors","quantity$","selectedContact$","contactSelectors","loadContacts","success","updateMetaTags","shortText","getShakeAnimation","getShakeAnimationTiming","iterations","validateAttr","attibutes","attributes","matched","p","valId","targetAttrElement","error","attrText","toLowerCase","shipping","targetElement","availability","shippingType","attributesToShow","valText","join","item","attrId","showActive","removeClass","addClass","selectLocation","isAuthenticated","ContactsComponent","firstContact","finally","SelectLocationComponent","DOCUMENT","ClearCartComponent","modal","close","cartActions","ShoppingShippingComponent","viewType","shippings$","selectedShippingType$","routes","SeoContent","message$","success$","closeAction","shoppingCart$","notification$","pullFromCart","deleteFromCart","clearCart","ShoppingCartComponent","redirectTo","pathMatch","ProductRoutingModule","RouterModule","ProductsEffects","actions$","service","createEffect","ofType","withLatestFrom","routerSelectors","location","term","category","ProductProviderEnum","environment","codes","searhTerm","categoryTreeActions","getCategoryCode","categoryActions","switchMap","r","takeUntil","catchError","RelatedProductsEffects","GetRelatedProducts","ProductsModule","NgbDatepickerModule","NgbNavModule","NgbTooltipModule","NgbPaginationModule","StoreModule","featuresReducers","EffectsModule","ProductsDetailsEffects","NgxSkeletonLoaderModule","animation","SharedModule","TreeviewModule","ReactiveFormsModule"],"sources":["webpack:///src/app/marketplace/products/state/product-list/list-selectors.ts","webpack:///src/app/marketplace/categories/state/category-tree/category-tree-selectors.ts","webpack:///node_modules/rxjs/_esm2015/internal/operators/throttle.js","webpack:///node_modules/rxjs/_esm2015/internal/operators/throttleTime.js","webpack:///node_modules/detect-it/dist/detect-it.esm.js","webpack:///node_modules/@angular-slider/ngx-slider/__ivy_ngcc__/fesm2015/angular-slider-ngx-slider.js","webpack:///src/app/marketplace/shared/_components/dropdown-treeview-select/dropdown-treeview-select-sub-category-i18n.ts","webpack:///src/app/marketplace/products/product-tab1/product-tab1.component.html","webpack:///src/app/marketplace/products/product-tab1/product-tab1.component.ts","webpack:///node_modules/rxjs/_esm2015/internal/operators/sampleTime.js","webpack:///node_modules/ngx-infinite-scroll/__ivy_ngcc__/modules/ngx-infinite-scroll.js","webpack:///src/app/marketplace/products/product-tab2/product-tab2.component.html","webpack:///src/app/marketplace/products/product-tab2/product-tab2.component.ts","webpack:///src/app/marketplace/products/product-list/product-list.component.html","webpack:///src/app/marketplace/products/product-list/product-list.component.ts","webpack:///src/app/marketplace/products/state/related-product/related-selectors.ts","webpack:///src/app/marketplace/products/related-products/related-products.component.html","webpack:///src/app/marketplace/products/related-products/related-products.component.ts","webpack:///src/app/marketplace/products/product-dimensions/product-dimensions.component.html","webpack:///src/app/marketplace/products/product-dimensions/product-dimensions.component.ts","webpack:///node_modules/tslib/tslib.es6.js","webpack:///node_modules/@crystalui/angular-lightbox/__ivy_ngcc__/fesm2015/crystalui-angular-lightbox.js","webpack:///src/app/marketplace/products/product-details/product-details.component.html","webpack:///src/app/marketplace/products/product-details/product-details.component.ts","webpack:///src/app/marketplace/products/shopping-cart/actions/clear-cart.component.ts","webpack:///src/app/marketplace/products/shopping-cart/actions/clear-cart.component.html","webpack:///src/app/marketplace/products/shopping-shipping/shopping-shipping.component.html","webpack:///src/app/marketplace/products/shopping-shipping/shopping-shipping.component.ts","webpack:///src/app/marketplace/products/shopping-cart/shopping-cart.component.html","webpack:///src/app/marketplace/products/products-routing.module.ts","webpack:///src/app/marketplace/products/shopping-cart/shopping-cart.component.ts","webpack:///src/app/marketplace/products/state/product-list/list-effects.ts","webpack:///src/app/marketplace/products/state/related-product/related-effects.ts","webpack:///src/app/marketplace/products/products.module.ts"],"sourcesContent":["import { createFeatureSelector, createSelector } from \"@ngrx/store\";\r\nimport { AppState, PRODUCT_FEATURE } from \"../../../app.state\";\r\nimport { getMergedRoute } from \"@app/marketplace/route/router-state.selectors\";\r\n\r\nexport const productFeature = createFeatureSelector(PRODUCT_FEATURE.stateKey);\r\nexport const selectLoading = createSelector(\r\n productFeature,\r\n (state: AppState) =>{\r\n return state.products_list.isLoading\r\n }\r\n);\r\nexport const selectPayload = createSelector(\r\n productFeature,\r\n (state: AppState) => state.products_list.payload\r\n);\r\nexport const selectResponse = createSelector(\r\n productFeature,\r\n (state: AppState) => state.products_list.data\r\n);\r\nexport const selectConfiguration = createSelector(\r\n productFeature,\r\n (state: AppState) => state.products_list.data.configuration\r\n);\r\nexport const selectItems = createSelector(\r\n productFeature,\r\n (state: AppState) => state.products_list.data.data\r\n);\r\nexport const selectPageSize = createSelector(\r\n productFeature,\r\n (state: AppState) => state.products_list.data.pageSize\r\n);\r\nexport const selectPageNo = createSelector(\r\n productFeature,\r\n (state: AppState) => state.products_list.data.pageIndex\r\n);\r\nexport const selectCount = createSelector(\r\n productFeature,\r\n (state: AppState) => state.products_list.data.count\r\n);\r\nexport const selectTotalData = createSelector(\r\n productFeature,\r\n (state: AppState) => state.products_list.data.totalCount\r\n);\r\nexport const selectTotalPage = createSelector(\r\n productFeature,\r\n (state: AppState) => state.products_list.data.totalPages\r\n);\r\nexport const selectedCategory= createSelector(getMergedRoute,(mergedRoute) => {\r\n return mergedRoute.params.id\r\n});\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport { AppState, CATEGORY_FEATURE_KEY } from '../../../app.state';\r\nimport { LAYOUT_FEATURE_KEY } from '@app/marketplace/storage/storage.state';\r\nimport { TreeviewItem } from 'ngx-treeview';\r\nimport * as fromStorage from '@app/marketplace/storage/storage.state';\r\n\r\nexport const layoutFeature = createFeatureSelector(LAYOUT_FEATURE_KEY);\r\nexport const selectCategoryTreeLoading = createSelector(\r\n layoutFeature,\r\n (state: fromStorage.AppStorageState) => state.categoryTree?.isLoading\r\n);\r\nexport const selectCategoryTree = createSelector(\r\n layoutFeature,\r\n (state: fromStorage.AppStorageState) => state.categoryTree?.data\r\n);\r\nexport const selectCategoryTreeView = createSelector(\r\n layoutFeature,\r\n (state: fromStorage.AppStorageState) => {\r\n let children = [];\r\n state.categoryTree.data?.data.filter(x => x.value == state.categoryTree.parentCategory).forEach(t => {\r\n t.children.map(c => {\r\n children.push(new TreeviewItem({\r\n text: c.text,\r\n value: c.value\r\n }))\r\n });\r\n });\r\n return children;\r\n }\r\n);","import { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\nexport const defaultThrottleConfig = {\n leading: true,\n trailing: false\n};\nexport function throttle(durationSelector, config = defaultThrottleConfig) {\n return (source) => source.lift(new ThrottleOperator(durationSelector, !!config.leading, !!config.trailing));\n}\nclass ThrottleOperator {\n constructor(durationSelector, leading, trailing) {\n this.durationSelector = durationSelector;\n this.leading = leading;\n this.trailing = trailing;\n }\n call(subscriber, source) {\n return source.subscribe(new ThrottleSubscriber(subscriber, this.durationSelector, this.leading, this.trailing));\n }\n}\nclass ThrottleSubscriber extends SimpleOuterSubscriber {\n constructor(destination, durationSelector, _leading, _trailing) {\n super(destination);\n this.destination = destination;\n this.durationSelector = durationSelector;\n this._leading = _leading;\n this._trailing = _trailing;\n this._hasValue = false;\n }\n _next(value) {\n this._hasValue = true;\n this._sendValue = value;\n if (!this._throttled) {\n if (this._leading) {\n this.send();\n }\n else {\n this.throttle(value);\n }\n }\n }\n send() {\n const { _hasValue, _sendValue } = this;\n if (_hasValue) {\n this.destination.next(_sendValue);\n this.throttle(_sendValue);\n }\n this._hasValue = false;\n this._sendValue = undefined;\n }\n throttle(value) {\n const duration = this.tryDurationSelector(value);\n if (!!duration) {\n this.add(this._throttled = innerSubscribe(duration, new SimpleInnerSubscriber(this)));\n }\n }\n tryDurationSelector(value) {\n try {\n return this.durationSelector(value);\n }\n catch (err) {\n this.destination.error(err);\n return null;\n }\n }\n throttlingDone() {\n const { _throttled, _trailing } = this;\n if (_throttled) {\n _throttled.unsubscribe();\n }\n this._throttled = undefined;\n if (_trailing) {\n this.send();\n }\n }\n notifyNext() {\n this.throttlingDone();\n }\n notifyComplete() {\n this.throttlingDone();\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nimport { defaultThrottleConfig } from './throttle';\nexport function throttleTime(duration, scheduler = async, config = defaultThrottleConfig) {\n return (source) => source.lift(new ThrottleTimeOperator(duration, scheduler, config.leading, config.trailing));\n}\nclass ThrottleTimeOperator {\n constructor(duration, scheduler, leading, trailing) {\n this.duration = duration;\n this.scheduler = scheduler;\n this.leading = leading;\n this.trailing = trailing;\n }\n call(subscriber, source) {\n return source.subscribe(new ThrottleTimeSubscriber(subscriber, this.duration, this.scheduler, this.leading, this.trailing));\n }\n}\nclass ThrottleTimeSubscriber extends Subscriber {\n constructor(destination, duration, scheduler, leading, trailing) {\n super(destination);\n this.duration = duration;\n this.scheduler = scheduler;\n this.leading = leading;\n this.trailing = trailing;\n this._hasTrailingValue = false;\n this._trailingValue = null;\n }\n _next(value) {\n if (this.throttled) {\n if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n }\n else {\n this.add(this.throttled = this.scheduler.schedule(dispatchNext, this.duration, { subscriber: this }));\n if (this.leading) {\n this.destination.next(value);\n }\n else if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n }\n }\n _complete() {\n if (this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this.destination.complete();\n }\n else {\n this.destination.complete();\n }\n }\n clearThrottle() {\n const throttled = this.throttled;\n if (throttled) {\n if (this.trailing && this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this._trailingValue = null;\n this._hasTrailingValue = false;\n }\n throttled.unsubscribe();\n this.remove(throttled);\n this.throttled = null;\n }\n }\n}\nfunction dispatchNext(arg) {\n const { subscriber } = arg;\n subscriber.clearThrottle();\n}\n","// so it doesn't throw if no window or matchMedia\r\nvar w = typeof window !== 'undefined' ? window : { screen: {}, navigator: {} };\r\nvar matchMedia = (w.matchMedia || (function () { return ({ matches: false }); })).bind(w);\r\n// passive events test\r\n// adapted from https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\r\nvar passiveOptionAccessed = false;\r\nvar options = {\r\n get passive() {\r\n return (passiveOptionAccessed = true);\r\n },\r\n};\r\n// have to set and remove a no-op listener instead of null\r\n// (which was used previously), because Edge v15 throws an error\r\n// when providing a null callback.\r\n// https://github.com/rafgraph/detect-passive-events/pull/3\r\n// eslint-disable-next-line @typescript-eslint/no-empty-function\r\nvar noop = function () { };\r\nw.addEventListener && w.addEventListener('p', noop, options);\r\nw.removeEventListener && w.removeEventListener('p', noop, false);\r\nvar supportsPassiveEvents = passiveOptionAccessed;\r\nvar supportsPointerEvents = 'PointerEvent' in w;\r\nvar onTouchStartInWindow = 'ontouchstart' in w;\r\nvar touchEventInWindow = 'TouchEvent' in w;\r\n// onTouchStartInWindow is the old-old-legacy way to determine a touch device\r\n// and many websites interpreted it to mean that the device is a touch only phone,\r\n// so today browsers on a desktop/laptop computer with a touch screen (primary input mouse)\r\n// have onTouchStartInWindow as false (to prevent from being confused with a\r\n// touchOnly phone) even though they support the TouchEvents API, so need to check\r\n// both onTouchStartInWindow and touchEventInWindow for TouchEvent support,\r\n// however, some browsers (chromium) support the TouchEvents API even when running on\r\n// a mouse only device (touchEventInWindow true, but onTouchStartInWindow false)\r\n// so the touchEventInWindow check needs to include an coarse pointer media query\r\nvar supportsTouchEvents = onTouchStartInWindow ||\r\n (touchEventInWindow && matchMedia('(any-pointer: coarse)').matches);\r\nvar hasTouch = (w.navigator.maxTouchPoints || 0) > 0 || supportsTouchEvents;\r\n// userAgent is used as a backup to correct for known device/browser bugs\r\n// and when the browser doesn't support interaction media queries (pointer and hover)\r\n// see https://caniuse.com/css-media-interaction\r\nvar userAgent = w.navigator.userAgent || '';\r\n// iPads now support a mouse that can hover, however the media query interaction\r\n// feature results always say iPads only have a coarse pointer that can't hover\r\n// even when a mouse is connected (anyFine and anyHover are always false),\r\n// this unfortunately indicates a touch only device but iPads should\r\n// be classified as a hybrid device, so determine if it is an iPad\r\n// to indicate it should be treated as a hybrid device with anyHover true\r\nvar isIPad = matchMedia('(pointer: coarse)').matches &&\r\n // both iPad and iPhone can \"request desktop site\", which sets the userAgent to Macintosh\r\n // so need to check both userAgents to determine if it is an iOS device\r\n // and screen size to separate iPad from iPhone\r\n /iPad|Macintosh/.test(userAgent) &&\r\n Math.min(w.screen.width || 0, w.screen.height || 0) >= 768;\r\nvar hasCoarsePrimaryPointer = (matchMedia('(pointer: coarse)').matches ||\r\n // if the pointer is not coarse and not fine then the browser doesn't support\r\n // interaction media queries (see https://caniuse.com/css-media-interaction)\r\n // so if it has onTouchStartInWindow assume it has a coarse primary pointer\r\n (!matchMedia('(pointer: fine)').matches && onTouchStartInWindow)) &&\r\n // bug in firefox (as of v81) on hybrid windows devices where the interaction media queries\r\n // always indicate a touch only device (only has a coarse pointer that can't hover)\r\n // so assume that the primary pointer is not coarse for firefox windows\r\n !/Windows.*Firefox/.test(userAgent);\r\nvar hasAnyHoverOrAnyFinePointer = matchMedia('(any-pointer: fine)').matches ||\r\n matchMedia('(any-hover: hover)').matches ||\r\n // iPads might have an input device that can hover, so assume it has anyHover\r\n isIPad ||\r\n // if no onTouchStartInWindow then the browser is indicating that it is not a touch only device\r\n // see above note for supportsTouchEvents\r\n !onTouchStartInWindow;\r\n// a hybrid device is one that both hasTouch and\r\n// any input can hover or has a fine pointer, or the primary pointer is not coarse\r\n// if it's not a hybrid, then if it hasTouch it's touchOnly, otherwise it's mouseOnly\r\nvar deviceType = hasTouch && (hasAnyHoverOrAnyFinePointer || !hasCoarsePrimaryPointer)\r\n ? 'hybrid'\r\n : hasTouch\r\n ? 'touchOnly'\r\n : 'mouseOnly';\r\nvar primaryInput = deviceType === 'mouseOnly'\r\n ? 'mouse'\r\n : deviceType === 'touchOnly'\r\n ? 'touch'\r\n : // if the device is a hybrid, then if the primary pointer is coarse\r\n // assume the primaryInput is touch, otherwise assume it's mouse\r\n hasCoarsePrimaryPointer\r\n ? 'touch'\r\n : 'mouse';\n\nexport { deviceType, primaryInput, supportsPassiveEvents, supportsPointerEvents, supportsTouchEvents };\n","import { Subject } from 'rxjs';\nimport { throttleTime, tap, distinctUntilChanged, filter } from 'rxjs/operators';\nimport { supportsPassiveEvents } from 'detect-passive-events';\nimport { Directive, ElementRef, Renderer2, HostBinding, ChangeDetectorRef, Component, ViewChild, HostListener, Input, EventEmitter, Output, ContentChild, forwardRef, NgZone, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @enum {number} */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\n\nconst _c0 = [\"tooltipTemplate\"];\nconst _c1 = [\"leftOuterSelectionBar\"];\nconst _c2 = [\"rightOuterSelectionBar\"];\nconst _c3 = [\"fullBar\"];\nconst _c4 = [\"selectionBar\"];\nconst _c5 = [\"minHandle\"];\nconst _c6 = [\"maxHandle\"];\nconst _c7 = [\"floorLabel\"];\nconst _c8 = [\"ceilLabel\"];\nconst _c9 = [\"minHandleLabel\"];\nconst _c10 = [\"maxHandleLabel\"];\nconst _c11 = [\"combinedLabel\"];\nconst _c12 = [\"ticksElement\"];\nfunction SliderComponent_span_28_ngx_slider_tooltip_wrapper_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"ngx-slider-tooltip-wrapper\", 31);\n} if (rf & 2) {\n const t_r13 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r14 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"template\", ctx_r14.tooltipTemplate)(\"tooltip\", t_r13.valueTooltip)(\"placement\", t_r13.valueTooltipPlacement)(\"content\", t_r13.value);\n} }\nfunction SliderComponent_span_28_span_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 32);\n} if (rf & 2) {\n const t_r13 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵproperty(\"innerHTML\", t_r13.legend, ɵngcc0.ɵɵsanitizeHtml);\n} }\nconst _c13 = function (a0) { return { \"ngx-slider-selected\": a0 }; };\nfunction SliderComponent_span_28_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 27);\n ɵngcc0.ɵɵelement(1, \"ngx-slider-tooltip-wrapper\", 28);\n ɵngcc0.ɵɵtemplate(2, SliderComponent_span_28_ngx_slider_tooltip_wrapper_2_Template, 1, 4, \"ngx-slider-tooltip-wrapper\", 29);\n ɵngcc0.ɵɵtemplate(3, SliderComponent_span_28_span_3_Template, 1, 1, \"span\", 30);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const t_r13 = ctx.$implicit;\n const ctx_r12 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(7, _c13, t_r13.selected))(\"ngStyle\", t_r13.style);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"template\", ctx_r12.tooltipTemplate)(\"tooltip\", t_r13.tooltip)(\"placement\", t_r13.tooltipPlacement);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", t_r13.value != null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", t_r13.legend != null);\n} }\nfunction TooltipWrapperComponent_ng_container_0_1_ng_template_0_Template(rf, ctx) { }\nfunction TooltipWrapperComponent_ng_container_0_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TooltipWrapperComponent_ng_container_0_1_ng_template_0_Template, 0, 0, \"ng-template\");\n} }\nconst _c14 = function (a0, a1, a2) { return { tooltip: a0, placement: a1, content: a2 }; };\nfunction TooltipWrapperComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, TooltipWrapperComponent_ng_container_0_1_Template, 1, 0, undefined, 1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.template)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(2, _c14, ctx_r0.tooltip, ctx_r0.placement, ctx_r0.content));\n} }\nfunction TooltipWrapperComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 2);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r1.tooltip)(\"data-tooltip-placement\", ctx_r1.placement);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.content, \" \");\n} }\nconst LabelType = {\n /** Label above low pointer */\n Low: 0,\n /** Label above high pointer */\n High: 1,\n /** Label for minimum slider value */\n Floor: 2,\n /** Label for maximum slider value */\n Ceil: 3,\n /** Label below legend tick */\n TickValue: 4,\n};\nLabelType[LabelType.Low] = 'Low';\nLabelType[LabelType.High] = 'High';\nLabelType[LabelType.Floor] = 'Floor';\nLabelType[LabelType.Ceil] = 'Ceil';\nLabelType[LabelType.TickValue] = 'TickValue';\n/**\n * Slider options\n */\nclass Options {\n constructor() {\n /**\n * Minimum value for a slider.\n * Not applicable when using stepsArray.\n */\n this.floor = 0;\n /**\n * Maximum value for a slider.\n * Not applicable when using stepsArray.\n */\n this.ceil = null;\n /**\n * Step between each value.\n * Not applicable when using stepsArray.\n */\n this.step = 1;\n /**\n * The minimum range authorized on the slider.\n * Applies to range slider only.\n * When using stepsArray, expressed as index into stepsArray.\n */\n this.minRange = null;\n /**\n * The maximum range authorized on the slider.\n * Applies to range slider only.\n * When using stepsArray, expressed as index into stepsArray.\n */\n this.maxRange = null;\n /**\n * Set to true to have a push behavior. When the min handle goes above the max,\n * the max is moved as well (and vice-versa). The range between min and max is\n * defined by the step option (defaults to 1) and can also be overriden by\n * the minRange option. Applies to range slider only.\n */\n this.pushRange = false;\n /**\n * The minimum value authorized on the slider.\n * When using stepsArray, expressed as index into stepsArray.\n */\n this.minLimit = null;\n /**\n * The maximum value authorized on the slider.\n * When using stepsArray, expressed as index into stepsArray.\n */\n this.maxLimit = null;\n /**\n * Custom translate function. Use this if you want to translate values displayed\n * on the slider.\n */\n this.translate = null;\n /**\n * Custom function for combining overlapping labels in range slider.\n * It takes the min and max values (already translated with translate fuction)\n * and should return how these two values should be combined.\n * If not provided, the default function will join the two values with\n * ' - ' as separator.\n */\n this.combineLabels = null;\n /**\n * Use to display legend under ticks (thus, it needs to be used along with\n * showTicks or showTicksValues). The function will be called with each tick\n * value and returned content will be displayed under the tick as a legend.\n * If the returned value is null, then no legend is displayed under\n * the corresponding tick.You can also directly provide the legend values\n * in the stepsArray option.\n */\n this.getLegend = null;\n /**\n * Use to display a custom legend of a stepItem from stepsArray.\n * It will be the same as getLegend but for stepsArray.\n */\n this.getStepLegend = null;\n /**\n * If you want to display a slider with non linear/number steps.\n * Just pass an array with each slider value and that's it; the floor, ceil and step settings\n * of the slider will be computed automatically.\n * By default, the value model and valueHigh model values will be the value of the selected item\n * in the stepsArray.\n * They can also be bound to the index of the selected item by setting the bindIndexForStepsArray\n * option to true.\n */\n this.stepsArray = null;\n /**\n * Set to true to bind the index of the selected item to value model and valueHigh model.\n */\n this.bindIndexForStepsArray = false;\n /**\n * When set to true and using a range slider, the range can be dragged by the selection bar.\n * Applies to range slider only.\n */\n this.draggableRange = false;\n /**\n * Same as draggableRange but the slider range can't be changed.\n * Applies to range slider only.\n */\n this.draggableRangeOnly = false;\n /**\n * Set to true to always show the selection bar before the slider handle.\n */\n this.showSelectionBar = false;\n /**\n * Set to true to always show the selection bar after the slider handle.\n */\n this.showSelectionBarEnd = false;\n /**\n * Set a number to draw the selection bar between this value and the slider handle.\n * When using stepsArray, expressed as index into stepsArray.\n */\n this.showSelectionBarFromValue = null;\n /**\n * Only for range slider. Set to true to visualize in different colour the areas\n * on the left/right (top/bottom for vertical range slider) of selection bar between the handles.\n */\n this.showOuterSelectionBars = false;\n /**\n * Set to true to hide pointer labels\n */\n this.hidePointerLabels = false;\n /**\n * Set to true to hide min / max labels\n */\n this.hideLimitLabels = false;\n /**\n * Set to false to disable the auto-hiding behavior of the limit labels.\n */\n this.autoHideLimitLabels = true;\n /**\n * Set to true to make the slider read-only.\n */\n this.readOnly = false;\n /**\n * Set to true to disable the slider.\n */\n this.disabled = false;\n /**\n * Set to true to display a tick for each step of the slider.\n */\n this.showTicks = false;\n /**\n * Set to true to display a tick and the step value for each step of the slider..\n */\n this.showTicksValues = false;\n /* The step between each tick to display. If not set, the step value is used.\n Not used when ticksArray is specified. */\n this.tickStep = null;\n /* The step between displaying each tick step value.\n If not set, then tickStep or step is used, depending on which one is set. */\n this.tickValueStep = null;\n /**\n * Use to display ticks at specific positions.\n * The array contains the index of the ticks that should be displayed.\n * For example, [0, 1, 5] will display a tick for the first, second and sixth values.\n */\n this.ticksArray = null;\n /**\n * Used to display a tooltip when a tick is hovered.\n * Set to a function that returns the tooltip content for a given value.\n */\n this.ticksTooltip = null;\n /**\n * Same as ticksTooltip but for ticks values.\n */\n this.ticksValuesTooltip = null;\n /**\n * Set to true to display the slider vertically.\n * The slider will take the full height of its parent.\n * Changing this value at runtime is not currently supported.\n */\n this.vertical = false;\n /**\n * Function that returns the current color of the selection bar.\n * If your color won't change, don't use this option but set it through CSS.\n * If the returned color depends on a model value (either value or valueHigh),\n * you should use the argument passed to the function.\n * Indeed, when the function is called, there is no certainty that the model\n * has already been updated.\n */\n this.getSelectionBarColor = null;\n /**\n * Function that returns the color of a tick. showTicks must be enabled.\n */\n this.getTickColor = null;\n /**\n * Function that returns the current color of a pointer.\n * If your color won't change, don't use this option but set it through CSS.\n * If the returned color depends on a model value (either value or valueHigh),\n * you should use the argument passed to the function.\n * Indeed, when the function is called, there is no certainty that the model has already been updated.\n * To handle range slider pointers independently, you should evaluate pointerType within the given\n * function where \"min\" stands for value model and \"max\" for valueHigh model values.\n */\n this.getPointerColor = null;\n /**\n * Handles are focusable (on click or with tab) and can be modified using the following keyboard controls:\n * Left/bottom arrows: -1\n * Right/top arrows: +1\n * Page-down: -10%\n * Page-up: +10%\n * Home: minimum value\n * End: maximum value\n */\n this.keyboardSupport = true;\n /**\n * If you display the slider in an element that uses transform: scale(0.5), set the scale value to 2\n * so that the slider is rendered properly and the events are handled correctly.\n */\n this.scale = 1;\n /**\n * If you display the slider in an element that uses transform: rotate(90deg), set the rotate value to 90\n * so that the slider is rendered properly and the events are handled correctly. Value is in degrees.\n */\n this.rotate = 0;\n /**\n * Set to true to force the value(s) to be rounded to the step, even when modified from the outside.\n * When set to false, if the model values are modified from outside the slider, they are not rounded\n * and can be between two steps.\n */\n this.enforceStep = true;\n /**\n * Set to true to force the value(s) to be normalised to allowed range (floor to ceil), even when modified from the outside.\n * When set to false, if the model values are modified from outside the slider, and they are outside allowed range,\n * the slider may be rendered incorrectly. However, setting this to false may be useful if you want to perform custom normalisation.\n */\n this.enforceRange = true;\n /**\n * Set to true to force the value(s) to be rounded to the nearest step value, even when modified from the outside.\n * When set to false, if the model values are modified from outside the slider, and they are outside allowed range,\n * the slider may be rendered incorrectly. However, setting this to false may be useful if you want to perform custom normalisation.\n */\n this.enforceStepsArray = true;\n /**\n * Set to true to prevent to user from switching the min and max handles. Applies to range slider only.\n */\n this.noSwitching = false;\n /**\n * Set to true to only bind events on slider handles.\n */\n this.onlyBindHandles = false;\n /**\n * Set to true to show graphs right to left.\n * If vertical is true it will be from top to bottom and left / right arrow functions reversed.\n */\n this.rightToLeft = false;\n /**\n * Set to true to reverse keyboard navigation:\n * Right/top arrows: -1\n * Left/bottom arrows: +1\n * Page-up: -10%\n * Page-down: +10%\n * End: minimum value\n * Home: maximum value\n */\n this.reversedControls = false;\n /**\n * Set to true to keep the slider labels inside the slider bounds.\n */\n this.boundPointerLabels = true;\n /**\n * Set to true to use a logarithmic scale to display the slider.\n */\n this.logScale = false;\n /**\n * Function that returns the position on the slider for a given value.\n * The position must be a percentage between 0 and 1.\n * The function should be monotonically increasing or decreasing; otherwise the slider may behave incorrectly.\n */\n this.customValueToPosition = null;\n /**\n * Function that returns the value for a given position on the slider.\n * The position is a percentage between 0 and 1.\n * The function should be monotonically increasing or decreasing; otherwise the slider may behave incorrectly.\n */\n this.customPositionToValue = null;\n /**\n * Precision limit for calculated values.\n * Values used in calculations will be rounded to this number of significant digits\n * to prevent accumulating small floating-point errors.\n */\n this.precisionLimit = 12;\n /**\n * Use to display the selection bar as a gradient.\n * The given object must contain from and to properties which are colors.\n */\n this.selectionBarGradient = null;\n /**\n * Use to add a label directly to the slider for accessibility. Adds the aria-label attribute.\n */\n this.ariaLabel = 'ngx-slider';\n /**\n * Use instead of ariaLabel to reference the id of an element which will be used to label the slider.\n * Adds the aria-labelledby attribute.\n */\n this.ariaLabelledBy = null;\n /**\n * Use to add a label directly to the slider range for accessibility. Adds the aria-label attribute.\n */\n this.ariaLabelHigh = 'ngx-slider-max';\n /**\n * Use instead of ariaLabelHigh to reference the id of an element which will be used to label the slider range.\n * Adds the aria-labelledby attribute.\n */\n this.ariaLabelledByHigh = null;\n /**\n * Use to increase rendering performance. If the value is not provided, the slider calculates the with/height of the handle\n */\n this.handleDimension = null;\n /**\n * Use to increase rendering performance. If the value is not provided, the slider calculates the with/height of the bar\n */\n this.barDimension = null;\n /**\n * Enable/disable CSS animations\n */\n this.animate = true;\n /**\n * Enable/disable CSS animations while moving the slider\n */\n this.animateOnMove = false;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @enum {number} */\nconst PointerType = {\n /** Low pointer */\n Min: 0,\n /** High pointer */\n Max: 1,\n};\nPointerType[PointerType.Min] = 'Min';\nPointerType[PointerType.Max] = 'Max';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass ChangeContext {\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Collection of functions to handle conversions/lookups of values\n */\nclass ValueHelper {\n /**\n * @param {?} value\n * @return {?}\n */\n static isNullOrUndefined(value) {\n return value === undefined || value === null;\n }\n /**\n * @param {?} array1\n * @param {?} array2\n * @return {?}\n */\n static areArraysEqual(array1, array2) {\n if (array1.length !== array2.length) {\n return false;\n }\n for (let i = 0; i < array1.length; ++i) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n }\n /**\n * @param {?} val\n * @param {?} minVal\n * @param {?} maxVal\n * @return {?}\n */\n static linearValueToPosition(val, minVal, maxVal) {\n /** @type {?} */\n const range = maxVal - minVal;\n return (val - minVal) / range;\n }\n /**\n * @param {?} val\n * @param {?} minVal\n * @param {?} maxVal\n * @return {?}\n */\n static logValueToPosition(val, minVal, maxVal) {\n val = Math.log(val);\n minVal = Math.log(minVal);\n maxVal = Math.log(maxVal);\n /** @type {?} */\n const range = maxVal - minVal;\n return (val - minVal) / range;\n }\n /**\n * @param {?} percent\n * @param {?} minVal\n * @param {?} maxVal\n * @return {?}\n */\n static linearPositionToValue(percent, minVal, maxVal) {\n return percent * (maxVal - minVal) + minVal;\n }\n /**\n * @param {?} percent\n * @param {?} minVal\n * @param {?} maxVal\n * @return {?}\n */\n static logPositionToValue(percent, minVal, maxVal) {\n minVal = Math.log(minVal);\n maxVal = Math.log(maxVal);\n /** @type {?} */\n const value = percent * (maxVal - minVal) + minVal;\n return Math.exp(value);\n }\n /**\n * @param {?} modelValue\n * @param {?} stepsArray\n * @return {?}\n */\n static findStepIndex(modelValue, stepsArray) {\n /** @type {?} */\n const differences = stepsArray.map((step) => Math.abs(modelValue - step.value));\n /** @type {?} */\n let minDifferenceIndex = 0;\n for (let index = 0; index < stepsArray.length; index++) {\n if (differences[index] !== differences[minDifferenceIndex] && differences[index] < differences[minDifferenceIndex]) {\n minDifferenceIndex = index;\n }\n }\n return minDifferenceIndex;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Helper with compatibility functions to support different browsers\n */\nclass CompatibilityHelper {\n /**\n * Workaround for TouchEvent constructor sadly not being available on all browsers (e.g. Firefox, Safari)\n * @param {?} event\n * @return {?}\n */\n static isTouchEvent(event) {\n if ((/** @type {?} */ (window)).TouchEvent !== undefined) {\n return event instanceof TouchEvent;\n }\n return event.touches !== undefined;\n }\n /**\n * Detect presence of ResizeObserver API\n * @return {?}\n */\n static isResizeObserverAvailable() {\n return (/** @type {?} */ (window)).ResizeObserver !== undefined;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Helper with mathematical functions\n */\nclass MathHelper {\n /**\n * @param {?} value\n * @param {?} precisionLimit\n * @return {?}\n */\n static roundToPrecisionLimit(value, precisionLimit) {\n return +(value.toPrecision(precisionLimit));\n }\n /**\n * @param {?} value\n * @param {?} modulo\n * @param {?} precisionLimit\n * @return {?}\n */\n static isModuloWithinPrecisionLimit(value, modulo, precisionLimit) {\n /** @type {?} */\n const limit = Math.pow(10, -precisionLimit);\n return Math.abs(value % modulo) <= limit || Math.abs(Math.abs(value % modulo) - modulo) <= limit;\n }\n /**\n * @param {?} value\n * @param {?} floor\n * @param {?} ceil\n * @return {?}\n */\n static clampToRange(value, floor, ceil) {\n return Math.min(Math.max(value, floor), ceil);\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass EventListener {\n constructor() {\n this.eventName = null;\n this.events = null;\n this.eventsSubscription = null;\n this.teardownCallback = null;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Helper class to attach event listeners to DOM elements with debounce support using rxjs\n */\nclass EventListenerHelper {\n /**\n * @param {?} renderer\n */\n constructor(renderer) {\n this.renderer = renderer;\n }\n /**\n * @param {?} nativeElement\n * @param {?} eventName\n * @param {?} callback\n * @param {?=} throttleInterval\n * @return {?}\n */\n attachPassiveEventListener(nativeElement, eventName, callback, throttleInterval) {\n // Only use passive event listeners if the browser supports it\n if (supportsPassiveEvents !== true) {\n return this.attachEventListener(nativeElement, eventName, callback, throttleInterval);\n }\n /** @type {?} */\n const listener = new EventListener();\n listener.eventName = eventName;\n listener.events = new Subject();\n /** @type {?} */\n const observerCallback = (event) => {\n listener.events.next(event);\n };\n nativeElement.addEventListener(eventName, observerCallback, { passive: true, capture: false });\n listener.teardownCallback = () => {\n nativeElement.removeEventListener(eventName, observerCallback, { passive: true, capture: false });\n };\n listener.eventsSubscription = listener.events\n .pipe((!ValueHelper.isNullOrUndefined(throttleInterval))\n ? throttleTime(throttleInterval, undefined, { leading: true, trailing: true })\n : tap(() => { }) // no-op\n )\n .subscribe((event) => {\n callback(event);\n });\n return listener;\n }\n /**\n * @param {?} eventListener\n * @return {?}\n */\n detachEventListener(eventListener) {\n if (!ValueHelper.isNullOrUndefined(eventListener.eventsSubscription)) {\n eventListener.eventsSubscription.unsubscribe();\n eventListener.eventsSubscription = null;\n }\n if (!ValueHelper.isNullOrUndefined(eventListener.events)) {\n eventListener.events.complete();\n eventListener.events = null;\n }\n if (!ValueHelper.isNullOrUndefined(eventListener.teardownCallback)) {\n eventListener.teardownCallback();\n eventListener.teardownCallback = null;\n }\n }\n /**\n * @param {?} nativeElement\n * @param {?} eventName\n * @param {?} callback\n * @param {?=} throttleInterval\n * @return {?}\n */\n attachEventListener(nativeElement, eventName, callback, throttleInterval) {\n /** @type {?} */\n const listener = new EventListener();\n listener.eventName = eventName;\n listener.events = new Subject();\n /** @type {?} */\n const observerCallback = (event) => {\n listener.events.next(event);\n };\n listener.teardownCallback = this.renderer.listen(nativeElement, eventName, observerCallback);\n listener.eventsSubscription = listener.events\n .pipe((!ValueHelper.isNullOrUndefined(throttleInterval))\n ? throttleTime(throttleInterval, undefined, { leading: true, trailing: true })\n : tap(() => { }) // no-op\n )\n .subscribe((event) => { callback(event); });\n return listener;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass SliderElementDirective {\n /**\n * @param {?} elemRef\n * @param {?} renderer\n * @param {?} changeDetectionRef\n */\n constructor(elemRef, renderer, changeDetectionRef) {\n this.elemRef = elemRef;\n this.renderer = renderer;\n this.changeDetectionRef = changeDetectionRef;\n this._position = 0;\n this._dimension = 0;\n this._alwaysHide = false;\n this._vertical = false;\n this._scale = 1;\n this._rotate = 0;\n this.opacity = 1;\n this.visibility = 'visible';\n this.left = '';\n this.bottom = '';\n this.height = '';\n this.width = '';\n this.transform = '';\n this.eventListeners = [];\n this.eventListenerHelper = new EventListenerHelper(this.renderer);\n }\n /**\n * @return {?}\n */\n get position() {\n return this._position;\n }\n /**\n * @return {?}\n */\n get dimension() {\n return this._dimension;\n }\n /**\n * @return {?}\n */\n get alwaysHide() {\n return this._alwaysHide;\n }\n /**\n * @return {?}\n */\n get vertical() {\n return this._vertical;\n }\n /**\n * @return {?}\n */\n get scale() {\n return this._scale;\n }\n /**\n * @return {?}\n */\n get rotate() {\n return this._rotate;\n }\n /**\n * @param {?} hide\n * @return {?}\n */\n setAlwaysHide(hide) {\n this._alwaysHide = hide;\n if (hide) {\n this.visibility = 'hidden';\n }\n else {\n this.visibility = 'visible';\n }\n }\n /**\n * @return {?}\n */\n hide() {\n this.opacity = 0;\n }\n /**\n * @return {?}\n */\n show() {\n if (this.alwaysHide) {\n return;\n }\n this.opacity = 1;\n }\n /**\n * @return {?}\n */\n isVisible() {\n if (this.alwaysHide) {\n return false;\n }\n return this.opacity !== 0;\n }\n /**\n * @param {?} vertical\n * @return {?}\n */\n setVertical(vertical) {\n this._vertical = vertical;\n if (this._vertical) {\n this.left = '';\n this.width = '';\n }\n else {\n this.bottom = '';\n this.height = '';\n }\n }\n /**\n * @param {?} scale\n * @return {?}\n */\n setScale(scale) {\n this._scale = scale;\n }\n /**\n * @param {?} rotate\n * @return {?}\n */\n setRotate(rotate) {\n this._rotate = rotate;\n this.transform = 'rotate(' + rotate + 'deg)';\n }\n /**\n * @return {?}\n */\n getRotate() {\n return this._rotate;\n }\n /**\n * @param {?} pos\n * @return {?}\n */\n setPosition(pos) {\n if (this._position !== pos && !this.isRefDestroyed()) {\n this.changeDetectionRef.markForCheck();\n }\n this._position = pos;\n if (this._vertical) {\n this.bottom = Math.round(pos) + 'px';\n }\n else {\n this.left = Math.round(pos) + 'px';\n }\n }\n /**\n * @return {?}\n */\n calculateDimension() {\n /** @type {?} */\n const val = this.getBoundingClientRect();\n if (this.vertical) {\n this._dimension = (val.bottom - val.top) * this.scale;\n }\n else {\n this._dimension = (val.right - val.left) * this.scale;\n }\n }\n /**\n * @param {?} dim\n * @return {?}\n */\n setDimension(dim) {\n if (this._dimension !== dim && !this.isRefDestroyed()) {\n this.changeDetectionRef.markForCheck();\n }\n this._dimension = dim;\n if (this._vertical) {\n this.height = Math.round(dim) + 'px';\n }\n else {\n this.width = Math.round(dim) + 'px';\n }\n }\n /**\n * @return {?}\n */\n getBoundingClientRect() {\n return this.elemRef.nativeElement.getBoundingClientRect();\n }\n /**\n * @param {?} eventName\n * @param {?} callback\n * @param {?=} debounceInterval\n * @return {?}\n */\n on(eventName, callback, debounceInterval) {\n /** @type {?} */\n const listener = this.eventListenerHelper.attachEventListener(this.elemRef.nativeElement, eventName, callback, debounceInterval);\n this.eventListeners.push(listener);\n }\n /**\n * @param {?} eventName\n * @param {?} callback\n * @param {?=} debounceInterval\n * @return {?}\n */\n onPassive(eventName, callback, debounceInterval) {\n /** @type {?} */\n const listener = this.eventListenerHelper.attachPassiveEventListener(this.elemRef.nativeElement, eventName, callback, debounceInterval);\n this.eventListeners.push(listener);\n }\n /**\n * @param {?=} eventName\n * @return {?}\n */\n off(eventName) {\n /** @type {?} */\n let listenersToKeep;\n /** @type {?} */\n let listenersToRemove;\n if (!ValueHelper.isNullOrUndefined(eventName)) {\n listenersToKeep = this.eventListeners.filter((event) => event.eventName !== eventName);\n listenersToRemove = this.eventListeners.filter((event) => event.eventName === eventName);\n }\n else {\n listenersToKeep = [];\n listenersToRemove = this.eventListeners;\n }\n for (const listener of listenersToRemove) {\n this.eventListenerHelper.detachEventListener(listener);\n }\n this.eventListeners = listenersToKeep;\n }\n /**\n * @return {?}\n */\n isRefDestroyed() {\n return ValueHelper.isNullOrUndefined(this.changeDetectionRef) || this.changeDetectionRef['destroyed'];\n }\n}\nSliderElementDirective.ɵfac = function SliderElementDirective_Factory(t) { return new (t || SliderElementDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nSliderElementDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SliderElementDirective, selectors: [[\"\", \"ngxSliderElement\", \"\"]], hostVars: 14, hostBindings: function SliderElementDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"opacity\", ctx.opacity)(\"visibility\", ctx.visibility)(\"left\", ctx.left)(\"bottom\", ctx.bottom)(\"height\", ctx.height)(\"width\", ctx.width)(\"transform\", ctx.transform);\n } } });\n/** @nocollapse */\nSliderElementDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 },\n { type: ChangeDetectorRef }\n];\nSliderElementDirective.propDecorators = {\n opacity: [{ type: HostBinding, args: ['style.opacity',] }],\n visibility: [{ type: HostBinding, args: ['style.visibility',] }],\n left: [{ type: HostBinding, args: ['style.left',] }],\n bottom: [{ type: HostBinding, args: ['style.bottom',] }],\n height: [{ type: HostBinding, args: ['style.height',] }],\n width: [{ type: HostBinding, args: ['style.width',] }],\n transform: [{ type: HostBinding, args: ['style.transform',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SliderElementDirective, [{\n type: Directive,\n args: [{\n selector: '[ngxSliderElement]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }]; }, { opacity: [{\n type: HostBinding,\n args: ['style.opacity']\n }], visibility: [{\n type: HostBinding,\n args: ['style.visibility']\n }], left: [{\n type: HostBinding,\n args: ['style.left']\n }], bottom: [{\n type: HostBinding,\n args: ['style.bottom']\n }], height: [{\n type: HostBinding,\n args: ['style.height']\n }], width: [{\n type: HostBinding,\n args: ['style.width']\n }], transform: [{\n type: HostBinding,\n args: ['style.transform']\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass SliderHandleDirective extends SliderElementDirective {\n /**\n * @param {?} elemRef\n * @param {?} renderer\n * @param {?} changeDetectionRef\n */\n constructor(elemRef, renderer, changeDetectionRef) {\n super(elemRef, renderer, changeDetectionRef);\n this.active = false;\n this.role = '';\n this.tabindex = '';\n this.ariaOrientation = '';\n this.ariaLabel = '';\n this.ariaLabelledBy = '';\n this.ariaValueNow = '';\n this.ariaValueText = '';\n this.ariaValueMin = '';\n this.ariaValueMax = '';\n }\n /**\n * @return {?}\n */\n focus() {\n this.elemRef.nativeElement.focus();\n }\n}\nSliderHandleDirective.ɵfac = function SliderHandleDirective_Factory(t) { return new (t || SliderHandleDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nSliderHandleDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SliderHandleDirective, selectors: [[\"\", \"ngxSliderHandle\", \"\"]], hostVars: 11, hostBindings: function SliderHandleDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.role)(\"tabindex\", ctx.tabindex)(\"aria-orientation\", ctx.ariaOrientation)(\"aria-label\", ctx.ariaLabel)(\"aria-labelledby\", ctx.ariaLabelledBy)(\"aria-valuenow\", ctx.ariaValueNow)(\"aria-valuetext\", ctx.ariaValueText)(\"aria-valuemin\", ctx.ariaValueMin)(\"aria-valuemax\", ctx.ariaValueMax);\n ɵngcc0.ɵɵclassProp(\"ngx-slider-active\", ctx.active);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nSliderHandleDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 },\n { type: ChangeDetectorRef }\n];\nSliderHandleDirective.propDecorators = {\n active: [{ type: HostBinding, args: ['class.ngx-slider-active',] }],\n role: [{ type: HostBinding, args: ['attr.role',] }],\n tabindex: [{ type: HostBinding, args: ['attr.tabindex',] }],\n ariaOrientation: [{ type: HostBinding, args: ['attr.aria-orientation',] }],\n ariaLabel: [{ type: HostBinding, args: ['attr.aria-label',] }],\n ariaLabelledBy: [{ type: HostBinding, args: ['attr.aria-labelledby',] }],\n ariaValueNow: [{ type: HostBinding, args: ['attr.aria-valuenow',] }],\n ariaValueText: [{ type: HostBinding, args: ['attr.aria-valuetext',] }],\n ariaValueMin: [{ type: HostBinding, args: ['attr.aria-valuemin',] }],\n ariaValueMax: [{ type: HostBinding, args: ['attr.aria-valuemax',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SliderHandleDirective, [{\n type: Directive,\n args: [{\n selector: '[ngxSliderHandle]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }]; }, { active: [{\n type: HostBinding,\n args: ['class.ngx-slider-active']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], tabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], ariaOrientation: [{\n type: HostBinding,\n args: ['attr.aria-orientation']\n }], ariaLabel: [{\n type: HostBinding,\n args: ['attr.aria-label']\n }], ariaLabelledBy: [{\n type: HostBinding,\n args: ['attr.aria-labelledby']\n }], ariaValueNow: [{\n type: HostBinding,\n args: ['attr.aria-valuenow']\n }], ariaValueText: [{\n type: HostBinding,\n args: ['attr.aria-valuetext']\n }], ariaValueMin: [{\n type: HostBinding,\n args: ['attr.aria-valuemin']\n }], ariaValueMax: [{\n type: HostBinding,\n args: ['attr.aria-valuemax']\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass SliderLabelDirective extends SliderElementDirective {\n /**\n * @param {?} elemRef\n * @param {?} renderer\n * @param {?} changeDetectionRef\n */\n constructor(elemRef, renderer, changeDetectionRef) {\n super(elemRef, renderer, changeDetectionRef);\n this._value = null;\n }\n /**\n * @return {?}\n */\n get value() {\n return this._value;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n setValue(value) {\n /** @type {?} */\n let recalculateDimension = false;\n if (!this.alwaysHide &&\n (ValueHelper.isNullOrUndefined(this.value) ||\n this.value.length !== value.length ||\n (this.value.length > 0 && this.dimension === 0))) {\n recalculateDimension = true;\n }\n this._value = value;\n this.elemRef.nativeElement.innerHTML = value;\n // Update dimension only when length of the label have changed\n if (recalculateDimension) {\n this.calculateDimension();\n }\n }\n}\nSliderLabelDirective.ɵfac = function SliderLabelDirective_Factory(t) { return new (t || SliderLabelDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nSliderLabelDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SliderLabelDirective, selectors: [[\"\", \"ngxSliderLabel\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nSliderLabelDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 },\n { type: ChangeDetectorRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SliderLabelDirective, [{\n type: Directive,\n args: [{\n selector: '[ngxSliderLabel]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass Tick {\n constructor() {\n this.selected = false;\n this.style = {};\n this.tooltip = null;\n this.tooltipPlacement = null;\n this.value = null;\n this.valueTooltip = null;\n this.valueTooltipPlacement = null;\n this.legend = null;\n }\n}\nclass Dragging {\n constructor() {\n this.active = false;\n this.value = 0;\n this.difference = 0;\n this.position = 0;\n this.lowLimit = 0;\n this.highLimit = 0;\n }\n}\nclass ModelValues {\n /**\n * @param {?=} x\n * @param {?=} y\n * @return {?}\n */\n static compare(x, y) {\n if (ValueHelper.isNullOrUndefined(x) && ValueHelper.isNullOrUndefined(y)) {\n return false;\n }\n if (ValueHelper.isNullOrUndefined(x) !== ValueHelper.isNullOrUndefined(y)) {\n return false;\n }\n return x.value === y.value && x.highValue === y.highValue;\n }\n}\nclass ModelChange extends ModelValues {\n /**\n * @param {?=} x\n * @param {?=} y\n * @return {?}\n */\n static compare(x, y) {\n if (ValueHelper.isNullOrUndefined(x) && ValueHelper.isNullOrUndefined(y)) {\n return false;\n }\n if (ValueHelper.isNullOrUndefined(x) !== ValueHelper.isNullOrUndefined(y)) {\n return false;\n }\n return x.value === y.value &&\n x.highValue === y.highValue &&\n x.forceChange === y.forceChange;\n }\n}\n/** @type {?} */\nconst NGX_SLIDER_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => SliderComponent),\n multi: true,\n};\nclass SliderComponent {\n /**\n * @param {?} renderer\n * @param {?} elementRef\n * @param {?} changeDetectionRef\n * @param {?} zone\n */\n constructor(renderer, elementRef, changeDetectionRef, zone) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n this.changeDetectionRef = changeDetectionRef;\n this.zone = zone;\n // Model for low value of slider. For simple slider, this is the only input. For range slider, this is the low value.\n this.value = null;\n // Output for low value slider to support two-way bindings\n this.valueChange = new EventEmitter();\n // Model for high value of slider. Not used in simple slider. For range slider, this is the high value.\n this.highValue = null;\n // Output for high value slider to support two-way bindings\n this.highValueChange = new EventEmitter();\n // An object with all the other options of the slider.\n // Each option can be updated at runtime and the slider will automatically be re-rendered.\n this.options = new Options();\n // Event emitted when user starts interaction with the slider\n this.userChangeStart = new EventEmitter();\n // Event emitted on each change coming from user interaction\n this.userChange = new EventEmitter();\n // Event emitted when user finishes interaction with the slider\n this.userChangeEnd = new EventEmitter();\n this.initHasRun = false;\n this.inputModelChangeSubject = new Subject();\n this.inputModelChangeSubscription = null;\n this.outputModelChangeSubject = new Subject();\n this.outputModelChangeSubscription = null;\n this.viewLowValue = null;\n this.viewHighValue = null;\n this.viewOptions = new Options();\n this.handleHalfDimension = 0;\n this.maxHandlePosition = 0;\n this.currentTrackingPointer = null;\n this.currentFocusPointer = null;\n this.firstKeyDown = false;\n this.touchId = null;\n this.dragging = new Dragging();\n // Host element class bindings\n this.sliderElementVerticalClass = false;\n this.sliderElementAnimateClass = false;\n this.sliderElementWithLegendClass = false;\n this.sliderElementDisabledAttr = null;\n this.sliderElementAriaLabel = 'ngx-slider';\n this.barStyle = {};\n this.minPointerStyle = {};\n this.maxPointerStyle = {};\n this.fullBarTransparentClass = false;\n this.selectionBarDraggableClass = false;\n this.ticksUnderValuesClass = false;\n this.intermediateTicks = false;\n this.ticks = [];\n this.eventListenerHelper = null;\n this.onMoveEventListener = null;\n this.onEndEventListener = null;\n this.moving = false;\n this.resizeObserver = null;\n this.onTouchedCallback = null;\n this.onChangeCallback = null;\n this.eventListenerHelper = new EventListenerHelper(this.renderer);\n }\n /**\n * @param {?} manualRefresh\n * @return {?}\n */\n set manualRefresh(manualRefresh) {\n this.unsubscribeManualRefresh();\n this.manualRefreshSubscription = manualRefresh.subscribe(() => {\n setTimeout(() => this.calculateViewDimensionsAndDetectChanges());\n });\n }\n /**\n * @param {?} triggerFocus\n * @return {?}\n */\n set triggerFocus(triggerFocus) {\n this.unsubscribeTriggerFocus();\n this.triggerFocusSubscription = triggerFocus.subscribe((pointerType) => {\n this.focusPointer(pointerType);\n });\n }\n /**\n * @return {?}\n */\n get range() {\n return !ValueHelper.isNullOrUndefined(this.value) && !ValueHelper.isNullOrUndefined(this.highValue);\n }\n /**\n * @return {?}\n */\n get showTicks() {\n return this.viewOptions.showTicks;\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this.viewOptions = new Options();\n Object.assign(this.viewOptions, this.options);\n // We need to run these two things first, before the rest of the init in ngAfterViewInit(),\n // because these two settings are set through @HostBinding and Angular change detection\n // mechanism doesn't like them changing in ngAfterViewInit()\n this.updateDisabledState();\n this.updateVerticalState();\n this.updateAriaLabel();\n }\n /**\n * @return {?}\n */\n ngAfterViewInit() {\n this.applyOptions();\n this.subscribeInputModelChangeSubject();\n this.subscribeOutputModelChangeSubject();\n // Once we apply options, we need to normalise model values for the first time\n this.renormaliseModelValues();\n this.viewLowValue = this.modelValueToViewValue(this.value);\n if (this.range) {\n this.viewHighValue = this.modelValueToViewValue(this.highValue);\n }\n else {\n this.viewHighValue = null;\n }\n this.updateVerticalState(); // need to run this again to cover changes to slider elements\n this.manageElementsStyle();\n this.updateDisabledState();\n this.calculateViewDimensions();\n this.addAccessibility();\n this.updateCeilLabel();\n this.updateFloorLabel();\n this.initHandles();\n this.manageEventsBindings();\n this.updateAriaLabel();\n this.subscribeResizeObserver();\n this.initHasRun = true;\n // Run change detection manually to resolve some issues when init procedure changes values used in the view\n if (!this.isRefDestroyed()) {\n this.changeDetectionRef.detectChanges();\n }\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n // Always apply options first\n if (!ValueHelper.isNullOrUndefined(changes[\"options\"]) &&\n JSON.stringify(changes[\"options\"].previousValue) !== JSON.stringify(changes[\"options\"].currentValue)) {\n this.onChangeOptions();\n }\n // Then value changes\n if (!ValueHelper.isNullOrUndefined(changes[\"value\"]) ||\n !ValueHelper.isNullOrUndefined(changes[\"highValue\"])) {\n this.inputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n forceChange: false,\n internalChange: false\n });\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.unbindEvents();\n this.unsubscribeResizeObserver();\n this.unsubscribeInputModelChangeSubject();\n this.unsubscribeOutputModelChangeSubject();\n this.unsubscribeManualRefresh();\n this.unsubscribeTriggerFocus();\n }\n /**\n * @param {?} obj\n * @return {?}\n */\n writeValue(obj) {\n if (obj instanceof Array) {\n this.value = obj[0];\n this.highValue = obj[1];\n }\n else {\n this.value = obj;\n }\n // ngOnChanges() is not called in this instance, so we need to communicate the change manually\n this.inputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n forceChange: false,\n internalChange: false\n });\n }\n /**\n * @param {?} onChangeCallback\n * @return {?}\n */\n registerOnChange(onChangeCallback) {\n this.onChangeCallback = onChangeCallback;\n }\n /**\n * @param {?} onTouchedCallback\n * @return {?}\n */\n registerOnTouched(onTouchedCallback) {\n this.onTouchedCallback = onTouchedCallback;\n }\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n setDisabledState(isDisabled) {\n this.viewOptions.disabled = isDisabled;\n this.updateDisabledState();\n }\n /**\n * @param {?} ariaLabel\n * @return {?}\n */\n setAriaLabel(ariaLabel) {\n this.viewOptions.ariaLabel = ariaLabel;\n this.updateAriaLabel();\n }\n /**\n * @param {?} event\n * @return {?}\n */\n onResize(event) {\n this.calculateViewDimensionsAndDetectChanges();\n }\n /**\n * @return {?}\n */\n subscribeInputModelChangeSubject() {\n this.inputModelChangeSubscription = this.inputModelChangeSubject\n .pipe(distinctUntilChanged(ModelChange.compare), \n // Hack to reset the status of the distinctUntilChanged() - if a \"fake\" event comes through with forceChange=true,\n // we forcefully by-pass distinctUntilChanged(), but otherwise drop the event\n filter((modelChange) => !modelChange.forceChange && !modelChange.internalChange))\n .subscribe((modelChange) => this.applyInputModelChange(modelChange));\n }\n /**\n * @return {?}\n */\n subscribeOutputModelChangeSubject() {\n this.outputModelChangeSubscription = this.outputModelChangeSubject\n .pipe(distinctUntilChanged(ModelChange.compare))\n .subscribe((modelChange) => this.publishOutputModelChange(modelChange));\n }\n /**\n * @return {?}\n */\n subscribeResizeObserver() {\n if (CompatibilityHelper.isResizeObserverAvailable()) {\n this.resizeObserver = new ResizeObserver(() => this.calculateViewDimensionsAndDetectChanges());\n this.resizeObserver.observe(this.elementRef.nativeElement);\n }\n }\n /**\n * @return {?}\n */\n unsubscribeResizeObserver() {\n if (CompatibilityHelper.isResizeObserverAvailable() && this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n }\n /**\n * @return {?}\n */\n unsubscribeOnMove() {\n if (!ValueHelper.isNullOrUndefined(this.onMoveEventListener)) {\n this.eventListenerHelper.detachEventListener(this.onMoveEventListener);\n this.onMoveEventListener = null;\n }\n }\n /**\n * @return {?}\n */\n unsubscribeOnEnd() {\n if (!ValueHelper.isNullOrUndefined(this.onEndEventListener)) {\n this.eventListenerHelper.detachEventListener(this.onEndEventListener);\n this.onEndEventListener = null;\n }\n }\n /**\n * @return {?}\n */\n unsubscribeInputModelChangeSubject() {\n if (!ValueHelper.isNullOrUndefined(this.inputModelChangeSubscription)) {\n this.inputModelChangeSubscription.unsubscribe();\n this.inputModelChangeSubscription = null;\n }\n }\n /**\n * @return {?}\n */\n unsubscribeOutputModelChangeSubject() {\n if (!ValueHelper.isNullOrUndefined(this.outputModelChangeSubscription)) {\n this.outputModelChangeSubscription.unsubscribe();\n this.outputModelChangeSubscription = null;\n }\n }\n /**\n * @return {?}\n */\n unsubscribeManualRefresh() {\n if (!ValueHelper.isNullOrUndefined(this.manualRefreshSubscription)) {\n this.manualRefreshSubscription.unsubscribe();\n this.manualRefreshSubscription = null;\n }\n }\n /**\n * @return {?}\n */\n unsubscribeTriggerFocus() {\n if (!ValueHelper.isNullOrUndefined(this.triggerFocusSubscription)) {\n this.triggerFocusSubscription.unsubscribe();\n this.triggerFocusSubscription = null;\n }\n }\n /**\n * @param {?} pointerType\n * @return {?}\n */\n getPointerElement(pointerType) {\n if (pointerType === PointerType.Min) {\n return this.minHandleElement;\n }\n else if (pointerType === PointerType.Max) {\n return this.maxHandleElement;\n }\n return null;\n }\n /**\n * @return {?}\n */\n getCurrentTrackingValue() {\n if (this.currentTrackingPointer === PointerType.Min) {\n return this.viewLowValue;\n }\n else if (this.currentTrackingPointer === PointerType.Max) {\n return this.viewHighValue;\n }\n return null;\n }\n /**\n * @param {?} modelValue\n * @return {?}\n */\n modelValueToViewValue(modelValue) {\n if (ValueHelper.isNullOrUndefined(modelValue)) {\n return NaN;\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray) && !this.viewOptions.bindIndexForStepsArray) {\n return ValueHelper.findStepIndex(+modelValue, this.viewOptions.stepsArray);\n }\n return +modelValue;\n }\n /**\n * @param {?} viewValue\n * @return {?}\n */\n viewValueToModelValue(viewValue) {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray) && !this.viewOptions.bindIndexForStepsArray) {\n return this.getStepValue(viewValue);\n }\n return viewValue;\n }\n /**\n * @param {?} sliderValue\n * @return {?}\n */\n getStepValue(sliderValue) {\n /** @type {?} */\n const step = this.viewOptions.stepsArray[sliderValue];\n return (!ValueHelper.isNullOrUndefined(step)) ? step.value : NaN;\n }\n /**\n * @return {?}\n */\n applyViewChange() {\n this.value = this.viewValueToModelValue(this.viewLowValue);\n if (this.range) {\n this.highValue = this.viewValueToModelValue(this.viewHighValue);\n }\n this.outputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n userEventInitiated: true,\n forceChange: false\n });\n // At this point all changes are applied and outputs are emitted, so we should be done.\n // However, input changes are communicated in different stream and we need to be ready to\n // act on the next input change even if it is exactly the same as last input change.\n // Therefore, we send a special event to reset the stream.\n this.inputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n forceChange: false,\n internalChange: true\n });\n }\n /**\n * @param {?} modelChange\n * @return {?}\n */\n applyInputModelChange(modelChange) {\n /** @type {?} */\n const normalisedModelChange = this.normaliseModelValues(modelChange);\n /** @type {?} */\n const normalisationChange = !ModelValues.compare(modelChange, normalisedModelChange);\n if (normalisationChange) {\n this.value = normalisedModelChange.value;\n this.highValue = normalisedModelChange.highValue;\n }\n this.viewLowValue = this.modelValueToViewValue(normalisedModelChange.value);\n if (this.range) {\n this.viewHighValue = this.modelValueToViewValue(normalisedModelChange.highValue);\n }\n else {\n this.viewHighValue = null;\n }\n this.updateLowHandle(this.valueToPosition(this.viewLowValue));\n if (this.range) {\n this.updateHighHandle(this.valueToPosition(this.viewHighValue));\n }\n this.updateSelectionBar();\n this.updateTicksScale();\n this.updateAriaAttributes();\n if (this.range) {\n this.updateCombinedLabel();\n }\n // At the end, we need to communicate the model change to the outputs as well\n // Normalisation changes are also always forced out to ensure that subscribers always end up in correct state\n this.outputModelChangeSubject.next({\n value: normalisedModelChange.value,\n highValue: normalisedModelChange.highValue,\n forceChange: normalisationChange,\n userEventInitiated: false\n });\n }\n /**\n * @param {?} modelChange\n * @return {?}\n */\n publishOutputModelChange(modelChange) {\n /** @type {?} */\n const emitOutputs = () => {\n this.valueChange.emit(modelChange.value);\n if (this.range) {\n this.highValueChange.emit(modelChange.highValue);\n }\n if (!ValueHelper.isNullOrUndefined(this.onChangeCallback)) {\n if (this.range) {\n this.onChangeCallback([modelChange.value, modelChange.highValue]);\n }\n else {\n this.onChangeCallback(modelChange.value);\n }\n }\n if (!ValueHelper.isNullOrUndefined(this.onTouchedCallback)) {\n if (this.range) {\n this.onTouchedCallback([modelChange.value, modelChange.highValue]);\n }\n else {\n this.onTouchedCallback(modelChange.value);\n }\n }\n };\n if (modelChange.userEventInitiated) {\n // If this change was initiated by a user event, we can emit outputs in the same tick\n emitOutputs();\n this.userChange.emit(this.getChangeContext());\n }\n else {\n // But, if the change was initated by something else like a change in input bindings,\n // we need to wait until next tick to emit the outputs to keep Angular change detection happy\n setTimeout(() => { emitOutputs(); });\n }\n }\n /**\n * @param {?} input\n * @return {?}\n */\n normaliseModelValues(input) {\n /** @type {?} */\n const normalisedInput = new ModelValues();\n normalisedInput.value = input.value;\n normalisedInput.highValue = input.highValue;\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray)) {\n // When using steps array, only round to nearest step in the array\n // No other enforcement can be done, as the step array may be out of order, and that is perfectly fine\n if (this.viewOptions.enforceStepsArray) {\n /** @type {?} */\n const valueIndex = ValueHelper.findStepIndex(normalisedInput.value, this.viewOptions.stepsArray);\n normalisedInput.value = this.viewOptions.stepsArray[valueIndex].value;\n if (this.range) {\n /** @type {?} */\n const highValueIndex = ValueHelper.findStepIndex(normalisedInput.highValue, this.viewOptions.stepsArray);\n normalisedInput.highValue = this.viewOptions.stepsArray[highValueIndex].value;\n }\n }\n return normalisedInput;\n }\n if (this.viewOptions.enforceStep) {\n normalisedInput.value = this.roundStep(normalisedInput.value);\n if (this.range) {\n normalisedInput.highValue = this.roundStep(normalisedInput.highValue);\n }\n }\n if (this.viewOptions.enforceRange) {\n normalisedInput.value = MathHelper.clampToRange(normalisedInput.value, this.viewOptions.floor, this.viewOptions.ceil);\n if (this.range) {\n normalisedInput.highValue = MathHelper.clampToRange(normalisedInput.highValue, this.viewOptions.floor, this.viewOptions.ceil);\n }\n // Make sure that range slider invariant (value <= highValue) is always satisfied\n if (this.range && input.value > input.highValue) {\n // We know that both values are now clamped correctly, they may just be in the wrong order\n // So the easy solution is to swap them... except swapping is sometimes disabled in options, so we make the two values the same\n if (this.viewOptions.noSwitching) {\n normalisedInput.value = normalisedInput.highValue;\n }\n else {\n /** @type {?} */\n const tempValue = input.value;\n normalisedInput.value = input.highValue;\n normalisedInput.highValue = tempValue;\n }\n }\n }\n return normalisedInput;\n }\n /**\n * @return {?}\n */\n renormaliseModelValues() {\n /** @type {?} */\n const previousModelValues = {\n value: this.value,\n highValue: this.highValue\n };\n /** @type {?} */\n const normalisedModelValues = this.normaliseModelValues(previousModelValues);\n if (!ModelValues.compare(normalisedModelValues, previousModelValues)) {\n this.value = normalisedModelValues.value;\n this.highValue = normalisedModelValues.highValue;\n this.outputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n forceChange: true,\n userEventInitiated: false\n });\n }\n }\n /**\n * @return {?}\n */\n onChangeOptions() {\n if (!this.initHasRun) {\n return;\n }\n /** @type {?} */\n const previousOptionsInfluencingEventBindings = this.getOptionsInfluencingEventBindings(this.viewOptions);\n this.applyOptions();\n /** @type {?} */\n const newOptionsInfluencingEventBindings = this.getOptionsInfluencingEventBindings(this.viewOptions);\n /** @type {?} */\n const rebindEvents = !ValueHelper.areArraysEqual(previousOptionsInfluencingEventBindings, newOptionsInfluencingEventBindings);\n // With new options, we need to re-normalise model values if necessary\n this.renormaliseModelValues();\n this.viewLowValue = this.modelValueToViewValue(this.value);\n if (this.range) {\n this.viewHighValue = this.modelValueToViewValue(this.highValue);\n }\n else {\n this.viewHighValue = null;\n }\n this.resetSlider(rebindEvents);\n }\n /**\n * @return {?}\n */\n applyOptions() {\n this.viewOptions = new Options();\n Object.assign(this.viewOptions, this.options);\n this.viewOptions.draggableRange = this.range && this.viewOptions.draggableRange;\n this.viewOptions.draggableRangeOnly = this.range && this.viewOptions.draggableRangeOnly;\n if (this.viewOptions.draggableRangeOnly) {\n this.viewOptions.draggableRange = true;\n }\n this.viewOptions.showTicks = this.viewOptions.showTicks ||\n this.viewOptions.showTicksValues ||\n !ValueHelper.isNullOrUndefined(this.viewOptions.ticksArray);\n if (this.viewOptions.showTicks &&\n (!ValueHelper.isNullOrUndefined(this.viewOptions.tickStep) || !ValueHelper.isNullOrUndefined(this.viewOptions.ticksArray))) {\n this.intermediateTicks = true;\n }\n this.viewOptions.showSelectionBar = this.viewOptions.showSelectionBar ||\n this.viewOptions.showSelectionBarEnd ||\n !ValueHelper.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue);\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray)) {\n this.applyStepsArrayOptions();\n }\n else {\n this.applyFloorCeilOptions();\n }\n if (ValueHelper.isNullOrUndefined(this.viewOptions.combineLabels)) {\n this.viewOptions.combineLabels = (minValue, maxValue) => {\n return minValue + ' - ' + maxValue;\n };\n }\n if (this.viewOptions.logScale && this.viewOptions.floor === 0) {\n throw Error('Can\\'t use floor=0 with logarithmic scale');\n }\n }\n /**\n * @return {?}\n */\n applyStepsArrayOptions() {\n this.viewOptions.floor = 0;\n this.viewOptions.ceil = this.viewOptions.stepsArray.length - 1;\n this.viewOptions.step = 1;\n if (ValueHelper.isNullOrUndefined(this.viewOptions.translate)) {\n this.viewOptions.translate = (modelValue) => {\n if (this.viewOptions.bindIndexForStepsArray) {\n return String(this.getStepValue(modelValue));\n }\n return String(modelValue);\n };\n }\n }\n /**\n * @return {?}\n */\n applyFloorCeilOptions() {\n if (ValueHelper.isNullOrUndefined(this.viewOptions.step)) {\n this.viewOptions.step = 1;\n }\n else {\n this.viewOptions.step = +this.viewOptions.step;\n if (this.viewOptions.step <= 0) {\n this.viewOptions.step = 1;\n }\n }\n if (ValueHelper.isNullOrUndefined(this.viewOptions.ceil) ||\n ValueHelper.isNullOrUndefined(this.viewOptions.floor)) {\n throw Error('floor and ceil options must be supplied');\n }\n this.viewOptions.ceil = +this.viewOptions.ceil;\n this.viewOptions.floor = +this.viewOptions.floor;\n if (ValueHelper.isNullOrUndefined(this.viewOptions.translate)) {\n this.viewOptions.translate = (value) => String(value);\n }\n }\n /**\n * @param {?=} rebindEvents\n * @return {?}\n */\n resetSlider(rebindEvents = true) {\n this.manageElementsStyle();\n this.addAccessibility();\n this.updateCeilLabel();\n this.updateFloorLabel();\n if (rebindEvents) {\n this.unbindEvents();\n this.manageEventsBindings();\n }\n this.updateDisabledState();\n this.updateAriaLabel();\n this.calculateViewDimensions();\n this.refocusPointerIfNeeded();\n }\n /**\n * @param {?} pointerType\n * @return {?}\n */\n focusPointer(pointerType) {\n // If not supplied, use min pointer as default\n if (pointerType !== PointerType.Min && pointerType !== PointerType.Max) {\n pointerType = PointerType.Min;\n }\n if (pointerType === PointerType.Min) {\n this.minHandleElement.focus();\n }\n else if (this.range && pointerType === PointerType.Max) {\n this.maxHandleElement.focus();\n }\n }\n /**\n * @return {?}\n */\n refocusPointerIfNeeded() {\n if (!ValueHelper.isNullOrUndefined(this.currentFocusPointer)) {\n this.onPointerFocus(this.currentFocusPointer);\n /** @type {?} */\n const element = this.getPointerElement(this.currentFocusPointer);\n element.focus();\n }\n }\n /**\n * @return {?}\n */\n manageElementsStyle() {\n this.updateScale();\n this.floorLabelElement.setAlwaysHide(this.viewOptions.showTicksValues || this.viewOptions.hideLimitLabels);\n this.ceilLabelElement.setAlwaysHide(this.viewOptions.showTicksValues || this.viewOptions.hideLimitLabels);\n /** @type {?} */\n const hideLabelsForTicks = this.viewOptions.showTicksValues && !this.intermediateTicks;\n this.minHandleLabelElement.setAlwaysHide(hideLabelsForTicks || this.viewOptions.hidePointerLabels);\n this.maxHandleLabelElement.setAlwaysHide(hideLabelsForTicks || !this.range || this.viewOptions.hidePointerLabels);\n this.combinedLabelElement.setAlwaysHide(hideLabelsForTicks || !this.range || this.viewOptions.hidePointerLabels);\n this.selectionBarElement.setAlwaysHide(!this.range && !this.viewOptions.showSelectionBar);\n this.leftOuterSelectionBarElement.setAlwaysHide(!this.range || !this.viewOptions.showOuterSelectionBars);\n this.rightOuterSelectionBarElement.setAlwaysHide(!this.range || !this.viewOptions.showOuterSelectionBars);\n this.fullBarTransparentClass = this.range && this.viewOptions.showOuterSelectionBars;\n this.selectionBarDraggableClass = this.viewOptions.draggableRange && !this.viewOptions.onlyBindHandles;\n this.ticksUnderValuesClass = this.intermediateTicks && this.options.showTicksValues;\n if (this.sliderElementVerticalClass !== this.viewOptions.vertical) {\n this.updateVerticalState();\n // The above change in host component class will not be applied until the end of this cycle\n // However, functions calculating the slider position expect the slider to be already styled as vertical\n // So as a workaround, we need to reset the slider once again to compute the correct values\n setTimeout(() => { this.resetSlider(); });\n }\n // Changing animate class may interfere with slider reset/initialisation, so we should set it separately,\n // after all is properly set up\n if (this.sliderElementAnimateClass !== this.viewOptions.animate) {\n setTimeout(() => { this.sliderElementAnimateClass = this.viewOptions.animate; });\n }\n this.updateRotate();\n }\n /**\n * @return {?}\n */\n manageEventsBindings() {\n if (this.viewOptions.disabled || this.viewOptions.readOnly) {\n this.unbindEvents();\n }\n else {\n this.bindEvents();\n }\n }\n /**\n * @return {?}\n */\n updateDisabledState() {\n this.sliderElementDisabledAttr = this.viewOptions.disabled ? 'disabled' : null;\n }\n /**\n * @return {?}\n */\n updateAriaLabel() {\n this.sliderElementAriaLabel = this.viewOptions.ariaLabel || 'nxg-slider';\n }\n /**\n * @return {?}\n */\n updateVerticalState() {\n this.sliderElementVerticalClass = this.viewOptions.vertical;\n for (const element of this.getAllSliderElements()) {\n // This is also called before ngAfterInit, so need to check that view child bindings work\n if (!ValueHelper.isNullOrUndefined(element)) {\n element.setVertical(this.viewOptions.vertical);\n }\n }\n }\n /**\n * @return {?}\n */\n updateScale() {\n for (const element of this.getAllSliderElements()) {\n element.setScale(this.viewOptions.scale);\n }\n }\n /**\n * @return {?}\n */\n updateRotate() {\n for (const element of this.getAllSliderElements()) {\n element.setRotate(this.viewOptions.rotate);\n }\n }\n /**\n * @return {?}\n */\n getAllSliderElements() {\n return [this.leftOuterSelectionBarElement,\n this.rightOuterSelectionBarElement,\n this.fullBarElement,\n this.selectionBarElement,\n this.minHandleElement,\n this.maxHandleElement,\n this.floorLabelElement,\n this.ceilLabelElement,\n this.minHandleLabelElement,\n this.maxHandleLabelElement,\n this.combinedLabelElement,\n this.ticksElement\n ];\n }\n /**\n * @return {?}\n */\n initHandles() {\n this.updateLowHandle(this.valueToPosition(this.viewLowValue));\n /*\n the order here is important since the selection bar should be\n updated after the high handle but before the combined label\n */\n if (this.range) {\n this.updateHighHandle(this.valueToPosition(this.viewHighValue));\n }\n this.updateSelectionBar();\n if (this.range) {\n this.updateCombinedLabel();\n }\n this.updateTicksScale();\n }\n /**\n * @return {?}\n */\n addAccessibility() {\n this.updateAriaAttributes();\n this.minHandleElement.role = 'slider';\n if (this.viewOptions.keyboardSupport &&\n !(this.viewOptions.readOnly || this.viewOptions.disabled)) {\n this.minHandleElement.tabindex = '0';\n }\n else {\n this.minHandleElement.tabindex = '';\n }\n this.minHandleElement.ariaOrientation = (this.viewOptions.vertical || this.viewOptions.rotate !== 0) ? 'vertical' : 'horizontal';\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.ariaLabel)) {\n this.minHandleElement.ariaLabel = this.viewOptions.ariaLabel;\n }\n else if (!ValueHelper.isNullOrUndefined(this.viewOptions.ariaLabelledBy)) {\n this.minHandleElement.ariaLabelledBy = this.viewOptions.ariaLabelledBy;\n }\n if (this.range) {\n this.maxHandleElement.role = 'slider';\n if (this.viewOptions.keyboardSupport &&\n !(this.viewOptions.readOnly || this.viewOptions.disabled)) {\n this.maxHandleElement.tabindex = '0';\n }\n else {\n this.maxHandleElement.tabindex = '';\n }\n this.maxHandleElement.ariaOrientation = (this.viewOptions.vertical || this.viewOptions.rotate !== 0) ? 'vertical' : 'horizontal';\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.ariaLabelHigh)) {\n this.maxHandleElement.ariaLabel = this.viewOptions.ariaLabelHigh;\n }\n else if (!ValueHelper.isNullOrUndefined(this.viewOptions.ariaLabelledByHigh)) {\n this.maxHandleElement.ariaLabelledBy = this.viewOptions.ariaLabelledByHigh;\n }\n }\n }\n /**\n * @return {?}\n */\n updateAriaAttributes() {\n this.minHandleElement.ariaValueNow = (+this.value).toString();\n this.minHandleElement.ariaValueText = this.viewOptions.translate(+this.value, LabelType.Low);\n this.minHandleElement.ariaValueMin = this.viewOptions.floor.toString();\n this.minHandleElement.ariaValueMax = this.viewOptions.ceil.toString();\n if (this.range) {\n this.maxHandleElement.ariaValueNow = (+this.highValue).toString();\n this.maxHandleElement.ariaValueText = this.viewOptions.translate(+this.highValue, LabelType.High);\n this.maxHandleElement.ariaValueMin = this.viewOptions.floor.toString();\n this.maxHandleElement.ariaValueMax = this.viewOptions.ceil.toString();\n }\n }\n /**\n * @return {?}\n */\n calculateViewDimensions() {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.handleDimension)) {\n this.minHandleElement.setDimension(this.viewOptions.handleDimension);\n }\n else {\n this.minHandleElement.calculateDimension();\n }\n /** @type {?} */\n const handleWidth = this.minHandleElement.dimension;\n this.handleHalfDimension = handleWidth / 2;\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.barDimension)) {\n this.fullBarElement.setDimension(this.viewOptions.barDimension);\n }\n else {\n this.fullBarElement.calculateDimension();\n }\n this.maxHandlePosition = this.fullBarElement.dimension - handleWidth;\n if (this.initHasRun) {\n this.updateFloorLabel();\n this.updateCeilLabel();\n this.initHandles();\n }\n }\n /**\n * @return {?}\n */\n calculateViewDimensionsAndDetectChanges() {\n this.calculateViewDimensions();\n if (!this.isRefDestroyed()) {\n this.changeDetectionRef.detectChanges();\n }\n }\n /**\n * If the slider reference is already destroyed\n * @return {?} boolean - true if ref is destroyed\n */\n isRefDestroyed() {\n return this.changeDetectionRef['destroyed'];\n }\n /**\n * @return {?}\n */\n updateTicksScale() {\n if (!this.viewOptions.showTicks) {\n setTimeout(() => { this.sliderElementWithLegendClass = false; });\n return;\n }\n /** @type {?} */\n const ticksArray = !ValueHelper.isNullOrUndefined(this.viewOptions.ticksArray)\n ? this.viewOptions.ticksArray\n : this.getTicksArray();\n /** @type {?} */\n const translate = this.viewOptions.vertical ? 'translateY' : 'translateX';\n if (this.viewOptions.rightToLeft) {\n ticksArray.reverse();\n }\n /** @type {?} */\n const tickValueStep = !ValueHelper.isNullOrUndefined(this.viewOptions.tickValueStep) ? this.viewOptions.tickValueStep :\n (!ValueHelper.isNullOrUndefined(this.viewOptions.tickStep) ? this.viewOptions.tickStep : this.viewOptions.step);\n /** @type {?} */\n let hasAtLeastOneLegend = false;\n /** @type {?} */\n const newTicks = ticksArray.map((value) => {\n /** @type {?} */\n let position = this.valueToPosition(value);\n if (this.viewOptions.vertical) {\n position = this.maxHandlePosition - position;\n }\n /** @type {?} */\n const translation = translate + '(' + Math.round(position) + 'px)';\n /** @type {?} */\n const tick = new Tick();\n tick.selected = this.isTickSelected(value);\n tick.style = {\n '-webkit-transform': translation,\n '-moz-transform': translation,\n '-o-transform': translation,\n '-ms-transform': translation,\n transform: translation,\n };\n if (tick.selected && !ValueHelper.isNullOrUndefined(this.viewOptions.getSelectionBarColor)) {\n tick.style['background-color'] = this.getSelectionBarColor();\n }\n if (!tick.selected && !ValueHelper.isNullOrUndefined(this.viewOptions.getTickColor)) {\n tick.style['background-color'] = this.getTickColor(value);\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.ticksTooltip)) {\n tick.tooltip = this.viewOptions.ticksTooltip(value);\n tick.tooltipPlacement = this.viewOptions.vertical ? 'right' : 'top';\n }\n if (this.viewOptions.showTicksValues && !ValueHelper.isNullOrUndefined(tickValueStep) &&\n MathHelper.isModuloWithinPrecisionLimit(value, tickValueStep, this.viewOptions.precisionLimit)) {\n tick.value = this.getDisplayValue(value, LabelType.TickValue);\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.ticksValuesTooltip)) {\n tick.valueTooltip = this.viewOptions.ticksValuesTooltip(value);\n tick.valueTooltipPlacement = this.viewOptions.vertical\n ? 'right'\n : 'top';\n }\n }\n /** @type {?} */\n let legend = null;\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray)) {\n /** @type {?} */\n const step = this.viewOptions.stepsArray[value];\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.getStepLegend)) {\n legend = this.viewOptions.getStepLegend(step);\n }\n else if (!ValueHelper.isNullOrUndefined(step)) {\n legend = step.legend;\n }\n }\n else if (!ValueHelper.isNullOrUndefined(this.viewOptions.getLegend)) {\n legend = this.viewOptions.getLegend(value);\n }\n if (!ValueHelper.isNullOrUndefined(legend)) {\n tick.legend = legend;\n hasAtLeastOneLegend = true;\n }\n return tick;\n });\n setTimeout(() => { this.sliderElementWithLegendClass = hasAtLeastOneLegend; });\n // We should avoid re-creating the ticks array if possible\n // This both improves performance and makes CSS animations work correctly\n if (!ValueHelper.isNullOrUndefined(this.ticks) && this.ticks.length === newTicks.length) {\n for (let i = 0; i < newTicks.length; ++i) {\n Object.assign(this.ticks[i], newTicks[i]);\n }\n }\n else {\n this.ticks = newTicks;\n }\n if (!this.isRefDestroyed()) {\n this.changeDetectionRef.detectChanges();\n }\n }\n /**\n * @return {?}\n */\n getTicksArray() {\n /** @type {?} */\n const step = (!ValueHelper.isNullOrUndefined(this.viewOptions.tickStep)) ? this.viewOptions.tickStep : this.viewOptions.step;\n /** @type {?} */\n const ticksArray = [];\n /** @type {?} */\n const numberOfValues = 1 + Math.floor(MathHelper.roundToPrecisionLimit(Math.abs(this.viewOptions.ceil - this.viewOptions.floor) / step, this.viewOptions.precisionLimit));\n for (let index = 0; index < numberOfValues; ++index) {\n ticksArray.push(MathHelper.roundToPrecisionLimit(this.viewOptions.floor + step * index, this.viewOptions.precisionLimit));\n }\n return ticksArray;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n isTickSelected(value) {\n if (!this.range) {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue)) {\n /** @type {?} */\n const center = this.viewOptions.showSelectionBarFromValue;\n if (this.viewLowValue > center &&\n value >= center &&\n value <= this.viewLowValue) {\n return true;\n }\n else if (this.viewLowValue < center &&\n value <= center &&\n value >= this.viewLowValue) {\n return true;\n }\n }\n else if (this.viewOptions.showSelectionBarEnd) {\n if (value >= this.viewLowValue) {\n return true;\n }\n }\n else if (this.viewOptions.showSelectionBar && value <= this.viewLowValue) {\n return true;\n }\n }\n if (this.range && value >= this.viewLowValue && value <= this.viewHighValue) {\n return true;\n }\n return false;\n }\n /**\n * @return {?}\n */\n updateFloorLabel() {\n if (!this.floorLabelElement.alwaysHide) {\n this.floorLabelElement.setValue(this.getDisplayValue(this.viewOptions.floor, LabelType.Floor));\n this.floorLabelElement.calculateDimension();\n /** @type {?} */\n const position = this.viewOptions.rightToLeft\n ? this.fullBarElement.dimension - this.floorLabelElement.dimension\n : 0;\n this.floorLabelElement.setPosition(position);\n }\n }\n /**\n * @return {?}\n */\n updateCeilLabel() {\n if (!this.ceilLabelElement.alwaysHide) {\n this.ceilLabelElement.setValue(this.getDisplayValue(this.viewOptions.ceil, LabelType.Ceil));\n this.ceilLabelElement.calculateDimension();\n /** @type {?} */\n const position = this.viewOptions.rightToLeft\n ? 0\n : this.fullBarElement.dimension - this.ceilLabelElement.dimension;\n this.ceilLabelElement.setPosition(position);\n }\n }\n /**\n * @param {?} which\n * @param {?} newPos\n * @return {?}\n */\n updateHandles(which, newPos) {\n if (which === PointerType.Min) {\n this.updateLowHandle(newPos);\n }\n else if (which === PointerType.Max) {\n this.updateHighHandle(newPos);\n }\n this.updateSelectionBar();\n this.updateTicksScale();\n if (this.range) {\n this.updateCombinedLabel();\n }\n }\n /**\n * @param {?} labelType\n * @param {?} newPos\n * @return {?}\n */\n getHandleLabelPos(labelType, newPos) {\n /** @type {?} */\n const labelDimension = (labelType === PointerType.Min)\n ? this.minHandleLabelElement.dimension\n : this.maxHandleLabelElement.dimension;\n /** @type {?} */\n const nearHandlePos = newPos - labelDimension / 2 + this.handleHalfDimension;\n /** @type {?} */\n const endOfBarPos = this.fullBarElement.dimension - labelDimension;\n if (!this.viewOptions.boundPointerLabels) {\n return nearHandlePos;\n }\n if ((this.viewOptions.rightToLeft && labelType === PointerType.Min) ||\n (!this.viewOptions.rightToLeft && labelType === PointerType.Max)) {\n return Math.min(nearHandlePos, endOfBarPos);\n }\n else {\n return Math.min(Math.max(nearHandlePos, 0), endOfBarPos);\n }\n }\n /**\n * @param {?} newPos\n * @return {?}\n */\n updateLowHandle(newPos) {\n this.minHandleElement.setPosition(newPos);\n this.minHandleLabelElement.setValue(this.getDisplayValue(this.viewLowValue, LabelType.Low));\n this.minHandleLabelElement.setPosition(this.getHandleLabelPos(PointerType.Min, newPos));\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.getPointerColor)) {\n this.minPointerStyle = {\n backgroundColor: this.getPointerColor(PointerType.Min),\n };\n }\n if (this.viewOptions.autoHideLimitLabels) {\n this.updateFloorAndCeilLabelsVisibility();\n }\n }\n /**\n * @param {?} newPos\n * @return {?}\n */\n updateHighHandle(newPos) {\n this.maxHandleElement.setPosition(newPos);\n this.maxHandleLabelElement.setValue(this.getDisplayValue(this.viewHighValue, LabelType.High));\n this.maxHandleLabelElement.setPosition(this.getHandleLabelPos(PointerType.Max, newPos));\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.getPointerColor)) {\n this.maxPointerStyle = {\n backgroundColor: this.getPointerColor(PointerType.Max),\n };\n }\n if (this.viewOptions.autoHideLimitLabels) {\n this.updateFloorAndCeilLabelsVisibility();\n }\n }\n /**\n * @return {?}\n */\n updateFloorAndCeilLabelsVisibility() {\n // Show based only on hideLimitLabels if pointer labels are hidden\n if (this.viewOptions.hidePointerLabels) {\n return;\n }\n /** @type {?} */\n let floorLabelHidden = false;\n /** @type {?} */\n let ceilLabelHidden = false;\n /** @type {?} */\n const isMinLabelAtFloor = this.isLabelBelowFloorLabel(this.minHandleLabelElement);\n /** @type {?} */\n const isMinLabelAtCeil = this.isLabelAboveCeilLabel(this.minHandleLabelElement);\n /** @type {?} */\n const isMaxLabelAtCeil = this.isLabelAboveCeilLabel(this.maxHandleLabelElement);\n /** @type {?} */\n const isCombinedLabelAtFloor = this.isLabelBelowFloorLabel(this.combinedLabelElement);\n /** @type {?} */\n const isCombinedLabelAtCeil = this.isLabelAboveCeilLabel(this.combinedLabelElement);\n if (isMinLabelAtFloor) {\n floorLabelHidden = true;\n this.floorLabelElement.hide();\n }\n else {\n floorLabelHidden = false;\n this.floorLabelElement.show();\n }\n if (isMinLabelAtCeil) {\n ceilLabelHidden = true;\n this.ceilLabelElement.hide();\n }\n else {\n ceilLabelHidden = false;\n this.ceilLabelElement.show();\n }\n if (this.range) {\n /** @type {?} */\n const hideCeil = this.combinedLabelElement.isVisible() ? isCombinedLabelAtCeil : isMaxLabelAtCeil;\n /** @type {?} */\n const hideFloor = this.combinedLabelElement.isVisible() ? isCombinedLabelAtFloor : isMinLabelAtFloor;\n if (hideCeil) {\n this.ceilLabelElement.hide();\n }\n else if (!ceilLabelHidden) {\n this.ceilLabelElement.show();\n }\n // Hide or show floor label\n if (hideFloor) {\n this.floorLabelElement.hide();\n }\n else if (!floorLabelHidden) {\n this.floorLabelElement.show();\n }\n }\n }\n /**\n * @param {?} label\n * @return {?}\n */\n isLabelBelowFloorLabel(label) {\n /** @type {?} */\n const pos = label.position;\n /** @type {?} */\n const dim = label.dimension;\n /** @type {?} */\n const floorPos = this.floorLabelElement.position;\n /** @type {?} */\n const floorDim = this.floorLabelElement.dimension;\n return this.viewOptions.rightToLeft\n ? pos + dim >= floorPos - 2\n : pos <= floorPos + floorDim + 2;\n }\n /**\n * @param {?} label\n * @return {?}\n */\n isLabelAboveCeilLabel(label) {\n /** @type {?} */\n const pos = label.position;\n /** @type {?} */\n const dim = label.dimension;\n /** @type {?} */\n const ceilPos = this.ceilLabelElement.position;\n /** @type {?} */\n const ceilDim = this.ceilLabelElement.dimension;\n return this.viewOptions.rightToLeft\n ? pos <= ceilPos + ceilDim + 2\n : pos + dim >= ceilPos - 2;\n }\n /**\n * @return {?}\n */\n updateSelectionBar() {\n /** @type {?} */\n let position = 0;\n /** @type {?} */\n let dimension = 0;\n /** @type {?} */\n const isSelectionBarFromRight = this.viewOptions.rightToLeft\n ? !this.viewOptions.showSelectionBarEnd\n : this.viewOptions.showSelectionBarEnd;\n /** @type {?} */\n const positionForRange = this.viewOptions.rightToLeft\n ? this.maxHandleElement.position + this.handleHalfDimension\n : this.minHandleElement.position + this.handleHalfDimension;\n if (this.range) {\n dimension = Math.abs(this.maxHandleElement.position - this.minHandleElement.position);\n position = positionForRange;\n }\n else {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue)) {\n /** @type {?} */\n const center = this.viewOptions.showSelectionBarFromValue;\n /** @type {?} */\n const centerPosition = this.valueToPosition(center);\n /** @type {?} */\n const isModelGreaterThanCenter = this.viewOptions.rightToLeft\n ? this.viewLowValue <= center\n : this.viewLowValue > center;\n if (isModelGreaterThanCenter) {\n dimension = this.minHandleElement.position - centerPosition;\n position = centerPosition + this.handleHalfDimension;\n }\n else {\n dimension = centerPosition - this.minHandleElement.position;\n position = this.minHandleElement.position + this.handleHalfDimension;\n }\n }\n else if (isSelectionBarFromRight) {\n dimension = Math.ceil(Math.abs(this.maxHandlePosition - this.minHandleElement.position) + this.handleHalfDimension);\n position = Math.floor(this.minHandleElement.position + this.handleHalfDimension);\n }\n else {\n dimension = this.minHandleElement.position + this.handleHalfDimension;\n position = 0;\n }\n }\n this.selectionBarElement.setDimension(dimension);\n this.selectionBarElement.setPosition(position);\n if (this.range && this.viewOptions.showOuterSelectionBars) {\n if (this.viewOptions.rightToLeft) {\n this.rightOuterSelectionBarElement.setDimension(position);\n this.rightOuterSelectionBarElement.setPosition(0);\n this.fullBarElement.calculateDimension();\n this.leftOuterSelectionBarElement.setDimension(this.fullBarElement.dimension - (position + dimension));\n this.leftOuterSelectionBarElement.setPosition(position + dimension);\n }\n else {\n this.leftOuterSelectionBarElement.setDimension(position);\n this.leftOuterSelectionBarElement.setPosition(0);\n this.fullBarElement.calculateDimension();\n this.rightOuterSelectionBarElement.setDimension(this.fullBarElement.dimension - (position + dimension));\n this.rightOuterSelectionBarElement.setPosition(position + dimension);\n }\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.getSelectionBarColor)) {\n /** @type {?} */\n const color = this.getSelectionBarColor();\n this.barStyle = {\n backgroundColor: color,\n };\n }\n else if (!ValueHelper.isNullOrUndefined(this.viewOptions.selectionBarGradient)) {\n /** @type {?} */\n const offset = (!ValueHelper.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue))\n ? this.valueToPosition(this.viewOptions.showSelectionBarFromValue)\n : 0;\n /** @type {?} */\n const reversed = (offset - position > 0 && !isSelectionBarFromRight) || (offset - position <= 0 && isSelectionBarFromRight);\n /** @type {?} */\n const direction = this.viewOptions.vertical\n ? reversed ? 'bottom' : 'top'\n : reversed ? 'left' : 'right';\n this.barStyle = {\n backgroundImage: 'linear-gradient(to ' +\n direction +\n ', ' +\n this.viewOptions.selectionBarGradient.from +\n ' 0%,' +\n this.viewOptions.selectionBarGradient.to +\n ' 100%)',\n };\n if (this.viewOptions.vertical) {\n this.barStyle.backgroundPosition =\n 'center ' +\n (offset +\n dimension +\n position +\n (reversed ? -this.handleHalfDimension : 0)) +\n 'px';\n this.barStyle.backgroundSize =\n '100% ' + (this.fullBarElement.dimension - this.handleHalfDimension) + 'px';\n }\n else {\n this.barStyle.backgroundPosition =\n offset -\n position +\n (reversed ? this.handleHalfDimension : 0) +\n 'px center';\n this.barStyle.backgroundSize =\n this.fullBarElement.dimension - this.handleHalfDimension + 'px 100%';\n }\n }\n }\n /**\n * @return {?}\n */\n getSelectionBarColor() {\n if (this.range) {\n return this.viewOptions.getSelectionBarColor(this.value, this.highValue);\n }\n return this.viewOptions.getSelectionBarColor(this.value);\n }\n /**\n * @param {?} pointerType\n * @return {?}\n */\n getPointerColor(pointerType) {\n if (pointerType === PointerType.Max) {\n return this.viewOptions.getPointerColor(this.highValue, pointerType);\n }\n return this.viewOptions.getPointerColor(this.value, pointerType);\n }\n /**\n * @param {?} value\n * @return {?}\n */\n getTickColor(value) {\n return this.viewOptions.getTickColor(value);\n }\n /**\n * @return {?}\n */\n updateCombinedLabel() {\n /** @type {?} */\n let isLabelOverlap = null;\n if (this.viewOptions.rightToLeft) {\n isLabelOverlap =\n this.minHandleLabelElement.position - this.minHandleLabelElement.dimension - 10 <= this.maxHandleLabelElement.position;\n }\n else {\n isLabelOverlap =\n this.minHandleLabelElement.position + this.minHandleLabelElement.dimension + 10 >= this.maxHandleLabelElement.position;\n }\n if (isLabelOverlap) {\n /** @type {?} */\n const lowDisplayValue = this.getDisplayValue(this.viewLowValue, LabelType.Low);\n /** @type {?} */\n const highDisplayValue = this.getDisplayValue(this.viewHighValue, LabelType.High);\n /** @type {?} */\n const combinedLabelValue = this.viewOptions.rightToLeft\n ? this.viewOptions.combineLabels(highDisplayValue, lowDisplayValue)\n : this.viewOptions.combineLabels(lowDisplayValue, highDisplayValue);\n this.combinedLabelElement.setValue(combinedLabelValue);\n /** @type {?} */\n const pos = this.viewOptions.boundPointerLabels\n ? Math.min(Math.max(this.selectionBarElement.position +\n this.selectionBarElement.dimension / 2 -\n this.combinedLabelElement.dimension / 2, 0), this.fullBarElement.dimension - this.combinedLabelElement.dimension)\n : this.selectionBarElement.position + this.selectionBarElement.dimension / 2 - this.combinedLabelElement.dimension / 2;\n this.combinedLabelElement.setPosition(pos);\n this.minHandleLabelElement.hide();\n this.maxHandleLabelElement.hide();\n this.combinedLabelElement.show();\n }\n else {\n this.updateHighHandle(this.valueToPosition(this.viewHighValue));\n this.updateLowHandle(this.valueToPosition(this.viewLowValue));\n this.maxHandleLabelElement.show();\n this.minHandleLabelElement.show();\n this.combinedLabelElement.hide();\n }\n if (this.viewOptions.autoHideLimitLabels) {\n this.updateFloorAndCeilLabelsVisibility();\n }\n }\n /**\n * @param {?} value\n * @param {?} which\n * @return {?}\n */\n getDisplayValue(value, which) {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray) && !this.viewOptions.bindIndexForStepsArray) {\n value = this.getStepValue(value);\n }\n return this.viewOptions.translate(value, which);\n }\n /**\n * @param {?} value\n * @param {?=} customStep\n * @return {?}\n */\n roundStep(value, customStep) {\n /** @type {?} */\n const step = !ValueHelper.isNullOrUndefined(customStep) ? customStep : this.viewOptions.step;\n /** @type {?} */\n let steppedDifference = MathHelper.roundToPrecisionLimit((value - this.viewOptions.floor) / step, this.viewOptions.precisionLimit);\n steppedDifference = Math.round(steppedDifference) * step;\n return MathHelper.roundToPrecisionLimit(this.viewOptions.floor + steppedDifference, this.viewOptions.precisionLimit);\n }\n /**\n * @param {?} val\n * @return {?}\n */\n valueToPosition(val) {\n /** @type {?} */\n let fn = ValueHelper.linearValueToPosition;\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.customValueToPosition)) {\n fn = this.viewOptions.customValueToPosition;\n }\n else if (this.viewOptions.logScale) {\n fn = ValueHelper.logValueToPosition;\n }\n val = MathHelper.clampToRange(val, this.viewOptions.floor, this.viewOptions.ceil);\n /** @type {?} */\n let percent = fn(val, this.viewOptions.floor, this.viewOptions.ceil);\n if (ValueHelper.isNullOrUndefined(percent)) {\n percent = 0;\n }\n if (this.viewOptions.rightToLeft) {\n percent = 1 - percent;\n }\n return percent * this.maxHandlePosition;\n }\n /**\n * @param {?} position\n * @return {?}\n */\n positionToValue(position) {\n /** @type {?} */\n let percent = position / this.maxHandlePosition;\n if (this.viewOptions.rightToLeft) {\n percent = 1 - percent;\n }\n /** @type {?} */\n let fn = ValueHelper.linearPositionToValue;\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.customPositionToValue)) {\n fn = this.viewOptions.customPositionToValue;\n }\n else if (this.viewOptions.logScale) {\n fn = ValueHelper.logPositionToValue;\n }\n /** @type {?} */\n const value = fn(percent, this.viewOptions.floor, this.viewOptions.ceil);\n return !ValueHelper.isNullOrUndefined(value) ? value : 0;\n }\n /**\n * @param {?} event\n * @param {?=} targetTouchId\n * @return {?}\n */\n getEventXY(event, targetTouchId) {\n if (event instanceof MouseEvent) {\n return (this.viewOptions.vertical || this.viewOptions.rotate !== 0) ? event.clientY : event.clientX;\n }\n /** @type {?} */\n let touchIndex = 0;\n /** @type {?} */\n const touches = event.touches;\n if (!ValueHelper.isNullOrUndefined(targetTouchId)) {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i].identifier === targetTouchId) {\n touchIndex = i;\n break;\n }\n }\n }\n // Return the target touch or if the target touch was not found in the event\n // returns the coordinates of the first touch\n return (this.viewOptions.vertical || this.viewOptions.rotate !== 0) ? touches[touchIndex].clientY : touches[touchIndex].clientX;\n }\n /**\n * @param {?} event\n * @param {?=} targetTouchId\n * @return {?}\n */\n getEventPosition(event, targetTouchId) {\n /** @type {?} */\n const sliderElementBoundingRect = this.elementRef.nativeElement.getBoundingClientRect();\n /** @type {?} */\n const sliderPos = (this.viewOptions.vertical || this.viewOptions.rotate !== 0) ?\n sliderElementBoundingRect.bottom : sliderElementBoundingRect.left;\n /** @type {?} */\n let eventPos = 0;\n if (this.viewOptions.vertical || this.viewOptions.rotate !== 0) {\n eventPos = -this.getEventXY(event, targetTouchId) + sliderPos;\n }\n else {\n eventPos = this.getEventXY(event, targetTouchId) - sliderPos;\n }\n return eventPos * this.viewOptions.scale - this.handleHalfDimension;\n }\n /**\n * @param {?} event\n * @return {?}\n */\n getNearestHandle(event) {\n if (!this.range) {\n return PointerType.Min;\n }\n /** @type {?} */\n const position = this.getEventPosition(event);\n /** @type {?} */\n const distanceMin = Math.abs(position - this.minHandleElement.position);\n /** @type {?} */\n const distanceMax = Math.abs(position - this.maxHandleElement.position);\n if (distanceMin < distanceMax) {\n return PointerType.Min;\n }\n else if (distanceMin > distanceMax) {\n return PointerType.Max;\n }\n else if (!this.viewOptions.rightToLeft) {\n // if event is at the same distance from min/max then if it's at left of minH, we return minH else maxH\n return position < this.minHandleElement.position ? PointerType.Min : PointerType.Max;\n }\n // reverse in rtl\n return position > this.minHandleElement.position ? PointerType.Min : PointerType.Max;\n }\n /**\n * @return {?}\n */\n bindEvents() {\n /** @type {?} */\n const draggableRange = this.viewOptions.draggableRange;\n if (!this.viewOptions.onlyBindHandles) {\n this.selectionBarElement.on('mousedown', (event) => this.onBarStart(null, draggableRange, event, true, true, true));\n }\n if (this.viewOptions.draggableRangeOnly) {\n this.minHandleElement.on('mousedown', (event) => this.onBarStart(PointerType.Min, draggableRange, event, true, true));\n this.maxHandleElement.on('mousedown', (event) => this.onBarStart(PointerType.Max, draggableRange, event, true, true));\n }\n else {\n this.minHandleElement.on('mousedown', (event) => this.onStart(PointerType.Min, event, true, true));\n if (this.range) {\n this.maxHandleElement.on('mousedown', (event) => this.onStart(PointerType.Max, event, true, true));\n }\n if (!this.viewOptions.onlyBindHandles) {\n this.fullBarElement.on('mousedown', (event) => this.onStart(null, event, true, true, true));\n this.ticksElement.on('mousedown', (event) => this.onStart(null, event, true, true, true, true));\n }\n }\n if (!this.viewOptions.onlyBindHandles) {\n this.selectionBarElement.onPassive('touchstart', (event) => this.onBarStart(null, draggableRange, event, true, true, true));\n }\n if (this.viewOptions.draggableRangeOnly) {\n this.minHandleElement.onPassive('touchstart', (event) => this.onBarStart(PointerType.Min, draggableRange, event, true, true));\n this.maxHandleElement.onPassive('touchstart', (event) => this.onBarStart(PointerType.Max, draggableRange, event, true, true));\n }\n else {\n this.minHandleElement.onPassive('touchstart', (event) => this.onStart(PointerType.Min, event, true, true));\n if (this.range) {\n this.maxHandleElement.onPassive('touchstart', (event) => this.onStart(PointerType.Max, event, true, true));\n }\n if (!this.viewOptions.onlyBindHandles) {\n this.fullBarElement.onPassive('touchstart', (event) => this.onStart(null, event, true, true, true));\n this.ticksElement.onPassive('touchstart', (event) => this.onStart(null, event, false, false, true, true));\n }\n }\n if (this.viewOptions.keyboardSupport) {\n this.minHandleElement.on('focus', () => this.onPointerFocus(PointerType.Min));\n if (this.range) {\n this.maxHandleElement.on('focus', () => this.onPointerFocus(PointerType.Max));\n }\n }\n }\n /**\n * @param {?} options\n * @return {?}\n */\n getOptionsInfluencingEventBindings(options) {\n return [\n options.disabled,\n options.readOnly,\n options.draggableRange,\n options.draggableRangeOnly,\n options.onlyBindHandles,\n options.keyboardSupport\n ];\n }\n /**\n * @return {?}\n */\n unbindEvents() {\n this.unsubscribeOnMove();\n this.unsubscribeOnEnd();\n for (const element of this.getAllSliderElements()) {\n if (!ValueHelper.isNullOrUndefined(element)) {\n element.off();\n }\n }\n }\n /**\n * @param {?} pointerType\n * @param {?} draggableRange\n * @param {?} event\n * @param {?} bindMove\n * @param {?} bindEnd\n * @param {?=} simulateImmediateMove\n * @param {?=} simulateImmediateEnd\n * @return {?}\n */\n onBarStart(pointerType, draggableRange, event, bindMove, bindEnd, simulateImmediateMove, simulateImmediateEnd) {\n if (draggableRange) {\n this.onDragStart(pointerType, event, bindMove, bindEnd);\n }\n else {\n this.onStart(pointerType, event, bindMove, bindEnd, simulateImmediateMove, simulateImmediateEnd);\n }\n }\n /**\n * @param {?} pointerType\n * @param {?} event\n * @param {?} bindMove\n * @param {?} bindEnd\n * @param {?=} simulateImmediateMove\n * @param {?=} simulateImmediateEnd\n * @return {?}\n */\n onStart(pointerType, event, bindMove, bindEnd, simulateImmediateMove, simulateImmediateEnd) {\n event.stopPropagation();\n // Only call preventDefault() when handling non-passive events (passive events don't need it)\n if (!CompatibilityHelper.isTouchEvent(event) && !supportsPassiveEvents) {\n event.preventDefault();\n }\n this.moving = false;\n // We have to do this in case the HTML where the sliders are on\n // have been animated into view.\n this.calculateViewDimensions();\n if (ValueHelper.isNullOrUndefined(pointerType)) {\n pointerType = this.getNearestHandle(event);\n }\n this.currentTrackingPointer = pointerType;\n /** @type {?} */\n const pointerElement = this.getPointerElement(pointerType);\n pointerElement.active = true;\n if (this.viewOptions.keyboardSupport) {\n pointerElement.focus();\n }\n if (bindMove) {\n this.unsubscribeOnMove();\n /** @type {?} */\n const onMoveCallback = (e) => this.dragging.active ? this.onDragMove(e) : this.onMove(e);\n if (CompatibilityHelper.isTouchEvent(event)) {\n this.onMoveEventListener = this.eventListenerHelper.attachPassiveEventListener(document, 'touchmove', onMoveCallback);\n }\n else {\n this.onMoveEventListener = this.eventListenerHelper.attachEventListener(document, 'mousemove', onMoveCallback);\n }\n }\n if (bindEnd) {\n this.unsubscribeOnEnd();\n /** @type {?} */\n const onEndCallback = (e) => this.onEnd(e);\n if (CompatibilityHelper.isTouchEvent(event)) {\n this.onEndEventListener = this.eventListenerHelper.attachPassiveEventListener(document, 'touchend', onEndCallback);\n }\n else {\n this.onEndEventListener = this.eventListenerHelper.attachEventListener(document, 'mouseup', onEndCallback);\n }\n }\n this.userChangeStart.emit(this.getChangeContext());\n if (CompatibilityHelper.isTouchEvent(event) && !ValueHelper.isNullOrUndefined((/** @type {?} */ (event)).changedTouches)) {\n // Store the touch identifier\n if (ValueHelper.isNullOrUndefined(this.touchId)) {\n this.touchId = (/** @type {?} */ (event)).changedTouches[0].identifier;\n }\n }\n // Click events, either with mouse or touch gesture are weird. Sometimes they result in full\n // start, move, end sequence, and sometimes, they don't - they only invoke mousedown\n // As a workaround, we simulate the first move event and the end event if it's necessary\n if (simulateImmediateMove) {\n this.onMove(event, true);\n }\n if (simulateImmediateEnd) {\n this.onEnd(event);\n }\n }\n /**\n * @param {?} event\n * @param {?=} fromTick\n * @return {?}\n */\n onMove(event, fromTick) {\n /** @type {?} */\n let touchForThisSlider = null;\n if (CompatibilityHelper.isTouchEvent(event)) {\n /** @type {?} */\n const changedTouches = (/** @type {?} */ (event)).changedTouches;\n for (let i = 0; i < changedTouches.length; i++) {\n if (changedTouches[i].identifier === this.touchId) {\n touchForThisSlider = changedTouches[i];\n break;\n }\n }\n if (ValueHelper.isNullOrUndefined(touchForThisSlider)) {\n return;\n }\n }\n if (this.viewOptions.animate && !this.viewOptions.animateOnMove) {\n if (this.moving) {\n this.sliderElementAnimateClass = false;\n }\n }\n this.moving = true;\n /** @type {?} */\n const newPos = !ValueHelper.isNullOrUndefined(touchForThisSlider)\n ? this.getEventPosition(event, touchForThisSlider.identifier)\n : this.getEventPosition(event);\n /** @type {?} */\n let newValue;\n /** @type {?} */\n const ceilValue = this.viewOptions.rightToLeft\n ? this.viewOptions.floor\n : this.viewOptions.ceil;\n /** @type {?} */\n const floorValue = this.viewOptions.rightToLeft ? this.viewOptions.ceil : this.viewOptions.floor;\n if (newPos <= 0) {\n newValue = floorValue;\n }\n else if (newPos >= this.maxHandlePosition) {\n newValue = ceilValue;\n }\n else {\n newValue = this.positionToValue(newPos);\n if (fromTick && !ValueHelper.isNullOrUndefined(this.viewOptions.tickStep)) {\n newValue = this.roundStep(newValue, this.viewOptions.tickStep);\n }\n else {\n newValue = this.roundStep(newValue);\n }\n }\n this.positionTrackingHandle(newValue);\n }\n /**\n * @param {?} event\n * @return {?}\n */\n onEnd(event) {\n if (CompatibilityHelper.isTouchEvent(event)) {\n /** @type {?} */\n const changedTouches = (/** @type {?} */ (event)).changedTouches;\n if (changedTouches[0].identifier !== this.touchId) {\n return;\n }\n }\n this.moving = false;\n if (this.viewOptions.animate) {\n this.sliderElementAnimateClass = true;\n }\n this.touchId = null;\n if (!this.viewOptions.keyboardSupport) {\n this.minHandleElement.active = false;\n this.maxHandleElement.active = false;\n this.currentTrackingPointer = null;\n }\n this.dragging.active = false;\n this.unsubscribeOnMove();\n this.unsubscribeOnEnd();\n this.userChangeEnd.emit(this.getChangeContext());\n }\n /**\n * @param {?} pointerType\n * @return {?}\n */\n onPointerFocus(pointerType) {\n /** @type {?} */\n const pointerElement = this.getPointerElement(pointerType);\n pointerElement.on('blur', () => this.onPointerBlur(pointerElement));\n pointerElement.on('keydown', (event) => this.onKeyboardEvent(event));\n pointerElement.on('keyup', () => this.onKeyUp());\n pointerElement.active = true;\n this.currentTrackingPointer = pointerType;\n this.currentFocusPointer = pointerType;\n this.firstKeyDown = true;\n }\n /**\n * @return {?}\n */\n onKeyUp() {\n this.firstKeyDown = true;\n this.userChangeEnd.emit(this.getChangeContext());\n }\n /**\n * @param {?} pointer\n * @return {?}\n */\n onPointerBlur(pointer) {\n pointer.off('blur');\n pointer.off('keydown');\n pointer.off('keyup');\n pointer.active = false;\n if (ValueHelper.isNullOrUndefined(this.touchId)) {\n this.currentTrackingPointer = null;\n this.currentFocusPointer = null;\n }\n }\n /**\n * @param {?} currentValue\n * @return {?}\n */\n getKeyActions(currentValue) {\n /** @type {?} */\n const valueRange = this.viewOptions.ceil - this.viewOptions.floor;\n /** @type {?} */\n let increaseStep = currentValue + this.viewOptions.step;\n /** @type {?} */\n let decreaseStep = currentValue - this.viewOptions.step;\n /** @type {?} */\n let increasePage = currentValue + valueRange / 10;\n /** @type {?} */\n let decreasePage = currentValue - valueRange / 10;\n if (this.viewOptions.reversedControls) {\n increaseStep = currentValue - this.viewOptions.step;\n decreaseStep = currentValue + this.viewOptions.step;\n increasePage = currentValue - valueRange / 10;\n decreasePage = currentValue + valueRange / 10;\n }\n /** @type {?} */\n const actions = {\n UP: increaseStep,\n DOWN: decreaseStep,\n LEFT: decreaseStep,\n RIGHT: increaseStep,\n PAGEUP: increasePage,\n PAGEDOWN: decreasePage,\n HOME: this.viewOptions.reversedControls ? this.viewOptions.ceil : this.viewOptions.floor,\n END: this.viewOptions.reversedControls ? this.viewOptions.floor : this.viewOptions.ceil,\n };\n // right to left means swapping right and left arrows\n if (this.viewOptions.rightToLeft) {\n actions[\"LEFT\"] = increaseStep;\n actions[\"RIGHT\"] = decreaseStep;\n // right to left and vertical means we also swap up and down\n if (this.viewOptions.vertical || this.viewOptions.rotate !== 0) {\n actions[\"UP\"] = decreaseStep;\n actions[\"DOWN\"] = increaseStep;\n }\n }\n return actions;\n }\n /**\n * @param {?} event\n * @return {?}\n */\n onKeyboardEvent(event) {\n /** @type {?} */\n const currentValue = this.getCurrentTrackingValue();\n /** @type {?} */\n const keyCode = !ValueHelper.isNullOrUndefined(event.keyCode)\n ? event.keyCode\n : event.which;\n /** @type {?} */\n const keys = {\n 38: 'UP',\n 40: 'DOWN',\n 37: 'LEFT',\n 39: 'RIGHT',\n 33: 'PAGEUP',\n 34: 'PAGEDOWN',\n 36: 'HOME',\n 35: 'END',\n };\n /** @type {?} */\n const actions = this.getKeyActions(currentValue);\n /** @type {?} */\n const key = keys[keyCode];\n /** @type {?} */\n const action = actions[key];\n if (ValueHelper.isNullOrUndefined(action) || ValueHelper.isNullOrUndefined(this.currentTrackingPointer)) {\n return;\n }\n event.preventDefault();\n if (this.firstKeyDown) {\n this.firstKeyDown = false;\n this.userChangeStart.emit(this.getChangeContext());\n }\n /** @type {?} */\n const actionValue = MathHelper.clampToRange(action, this.viewOptions.floor, this.viewOptions.ceil);\n /** @type {?} */\n const newValue = this.roundStep(actionValue);\n if (!this.viewOptions.draggableRangeOnly) {\n this.positionTrackingHandle(newValue);\n }\n else {\n /** @type {?} */\n const difference = this.viewHighValue - this.viewLowValue;\n /** @type {?} */\n let newMinValue;\n /** @type {?} */\n let newMaxValue;\n if (this.currentTrackingPointer === PointerType.Min) {\n newMinValue = newValue;\n newMaxValue = newValue + difference;\n if (newMaxValue > this.viewOptions.ceil) {\n newMaxValue = this.viewOptions.ceil;\n newMinValue = newMaxValue - difference;\n }\n }\n else if (this.currentTrackingPointer === PointerType.Max) {\n newMaxValue = newValue;\n newMinValue = newValue - difference;\n if (newMinValue < this.viewOptions.floor) {\n newMinValue = this.viewOptions.floor;\n newMaxValue = newMinValue + difference;\n }\n }\n this.positionTrackingBar(newMinValue, newMaxValue);\n }\n }\n /**\n * @param {?} pointerType\n * @param {?} event\n * @param {?} bindMove\n * @param {?} bindEnd\n * @return {?}\n */\n onDragStart(pointerType, event, bindMove, bindEnd) {\n /** @type {?} */\n const position = this.getEventPosition(event);\n this.dragging = new Dragging();\n this.dragging.active = true;\n this.dragging.value = this.positionToValue(position);\n this.dragging.difference = this.viewHighValue - this.viewLowValue;\n this.dragging.lowLimit = this.viewOptions.rightToLeft\n ? this.minHandleElement.position - position\n : position - this.minHandleElement.position;\n this.dragging.highLimit = this.viewOptions.rightToLeft\n ? position - this.maxHandleElement.position\n : this.maxHandleElement.position - position;\n this.onStart(pointerType, event, bindMove, bindEnd);\n }\n /**\n * Get min value depending on whether the newPos is outOfBounds above or below the bar and rightToLeft\n * @param {?} newPos\n * @param {?} outOfBounds\n * @param {?} isAbove\n * @return {?}\n */\n getMinValue(newPos, outOfBounds, isAbove) {\n /** @type {?} */\n const isRTL = this.viewOptions.rightToLeft;\n /** @type {?} */\n let value = null;\n if (outOfBounds) {\n if (isAbove) {\n value = isRTL\n ? this.viewOptions.floor\n : this.viewOptions.ceil - this.dragging.difference;\n }\n else {\n value = isRTL\n ? this.viewOptions.ceil - this.dragging.difference\n : this.viewOptions.floor;\n }\n }\n else {\n value = isRTL\n ? this.positionToValue(newPos + this.dragging.lowLimit)\n : this.positionToValue(newPos - this.dragging.lowLimit);\n }\n return this.roundStep(value);\n }\n /**\n * Get max value depending on whether the newPos is outOfBounds above or below the bar and rightToLeft\n * @param {?} newPos\n * @param {?} outOfBounds\n * @param {?} isAbove\n * @return {?}\n */\n getMaxValue(newPos, outOfBounds, isAbove) {\n /** @type {?} */\n const isRTL = this.viewOptions.rightToLeft;\n /** @type {?} */\n let value = null;\n if (outOfBounds) {\n if (isAbove) {\n value = isRTL\n ? this.viewOptions.floor + this.dragging.difference\n : this.viewOptions.ceil;\n }\n else {\n value = isRTL\n ? this.viewOptions.ceil\n : this.viewOptions.floor + this.dragging.difference;\n }\n }\n else {\n if (isRTL) {\n value =\n this.positionToValue(newPos + this.dragging.lowLimit) +\n this.dragging.difference;\n }\n else {\n value =\n this.positionToValue(newPos - this.dragging.lowLimit) +\n this.dragging.difference;\n }\n }\n return this.roundStep(value);\n }\n /**\n * @param {?=} event\n * @return {?}\n */\n onDragMove(event) {\n /** @type {?} */\n const newPos = this.getEventPosition(event);\n if (this.viewOptions.animate && !this.viewOptions.animateOnMove) {\n if (this.moving) {\n this.sliderElementAnimateClass = false;\n }\n }\n this.moving = true;\n /** @type {?} */\n let ceilLimit;\n /** @type {?} */\n let floorLimit;\n /** @type {?} */\n let floorHandleElement;\n /** @type {?} */\n let ceilHandleElement;\n if (this.viewOptions.rightToLeft) {\n ceilLimit = this.dragging.lowLimit;\n floorLimit = this.dragging.highLimit;\n floorHandleElement = this.maxHandleElement;\n ceilHandleElement = this.minHandleElement;\n }\n else {\n ceilLimit = this.dragging.highLimit;\n floorLimit = this.dragging.lowLimit;\n floorHandleElement = this.minHandleElement;\n ceilHandleElement = this.maxHandleElement;\n }\n /** @type {?} */\n const isUnderFloorLimit = (newPos <= floorLimit);\n /** @type {?} */\n const isOverCeilLimit = (newPos >= this.maxHandlePosition - ceilLimit);\n /** @type {?} */\n let newMinValue;\n /** @type {?} */\n let newMaxValue;\n if (isUnderFloorLimit) {\n if (floorHandleElement.position === 0) {\n return;\n }\n newMinValue = this.getMinValue(newPos, true, false);\n newMaxValue = this.getMaxValue(newPos, true, false);\n }\n else if (isOverCeilLimit) {\n if (ceilHandleElement.position === this.maxHandlePosition) {\n return;\n }\n newMaxValue = this.getMaxValue(newPos, true, true);\n newMinValue = this.getMinValue(newPos, true, true);\n }\n else {\n newMinValue = this.getMinValue(newPos, false, false);\n newMaxValue = this.getMaxValue(newPos, false, false);\n }\n this.positionTrackingBar(newMinValue, newMaxValue);\n }\n /**\n * @param {?} newMinValue\n * @param {?} newMaxValue\n * @return {?}\n */\n positionTrackingBar(newMinValue, newMaxValue) {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.minLimit) &&\n newMinValue < this.viewOptions.minLimit) {\n newMinValue = this.viewOptions.minLimit;\n newMaxValue = MathHelper.roundToPrecisionLimit(newMinValue + this.dragging.difference, this.viewOptions.precisionLimit);\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.maxLimit) &&\n newMaxValue > this.viewOptions.maxLimit) {\n newMaxValue = this.viewOptions.maxLimit;\n newMinValue = MathHelper.roundToPrecisionLimit(newMaxValue - this.dragging.difference, this.viewOptions.precisionLimit);\n }\n this.viewLowValue = newMinValue;\n this.viewHighValue = newMaxValue;\n this.applyViewChange();\n this.updateHandles(PointerType.Min, this.valueToPosition(newMinValue));\n this.updateHandles(PointerType.Max, this.valueToPosition(newMaxValue));\n }\n /**\n * @param {?} newValue\n * @return {?}\n */\n positionTrackingHandle(newValue) {\n newValue = this.applyMinMaxLimit(newValue);\n if (this.range) {\n if (this.viewOptions.pushRange) {\n newValue = this.applyPushRange(newValue);\n }\n else {\n if (this.viewOptions.noSwitching) {\n if (this.currentTrackingPointer === PointerType.Min &&\n newValue > this.viewHighValue) {\n newValue = this.applyMinMaxRange(this.viewHighValue);\n }\n else if (this.currentTrackingPointer === PointerType.Max &&\n newValue < this.viewLowValue) {\n newValue = this.applyMinMaxRange(this.viewLowValue);\n }\n }\n newValue = this.applyMinMaxRange(newValue);\n /* This is to check if we need to switch the min and max handles */\n if (this.currentTrackingPointer === PointerType.Min && newValue > this.viewHighValue) {\n this.viewLowValue = this.viewHighValue;\n this.applyViewChange();\n this.updateHandles(PointerType.Min, this.maxHandleElement.position);\n this.updateAriaAttributes();\n this.currentTrackingPointer = PointerType.Max;\n this.minHandleElement.active = false;\n this.maxHandleElement.active = true;\n if (this.viewOptions.keyboardSupport) {\n this.maxHandleElement.focus();\n }\n }\n else if (this.currentTrackingPointer === PointerType.Max &&\n newValue < this.viewLowValue) {\n this.viewHighValue = this.viewLowValue;\n this.applyViewChange();\n this.updateHandles(PointerType.Max, this.minHandleElement.position);\n this.updateAriaAttributes();\n this.currentTrackingPointer = PointerType.Min;\n this.maxHandleElement.active = false;\n this.minHandleElement.active = true;\n if (this.viewOptions.keyboardSupport) {\n this.minHandleElement.focus();\n }\n }\n }\n }\n if (this.getCurrentTrackingValue() !== newValue) {\n if (this.currentTrackingPointer === PointerType.Min) {\n this.viewLowValue = newValue;\n this.applyViewChange();\n }\n else if (this.currentTrackingPointer === PointerType.Max) {\n this.viewHighValue = newValue;\n this.applyViewChange();\n }\n this.updateHandles(this.currentTrackingPointer, this.valueToPosition(newValue));\n this.updateAriaAttributes();\n }\n }\n /**\n * @param {?} newValue\n * @return {?}\n */\n applyMinMaxLimit(newValue) {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.minLimit) && newValue < this.viewOptions.minLimit) {\n return this.viewOptions.minLimit;\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.maxLimit) && newValue > this.viewOptions.maxLimit) {\n return this.viewOptions.maxLimit;\n }\n return newValue;\n }\n /**\n * @param {?} newValue\n * @return {?}\n */\n applyMinMaxRange(newValue) {\n /** @type {?} */\n const oppositeValue = (this.currentTrackingPointer === PointerType.Min)\n ? this.viewHighValue\n : this.viewLowValue;\n /** @type {?} */\n const difference = Math.abs(newValue - oppositeValue);\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.minRange)) {\n if (difference < this.viewOptions.minRange) {\n if (this.currentTrackingPointer === PointerType.Min) {\n return MathHelper.roundToPrecisionLimit(this.viewHighValue - this.viewOptions.minRange, this.viewOptions.precisionLimit);\n }\n else if (this.currentTrackingPointer === PointerType.Max) {\n return MathHelper.roundToPrecisionLimit(this.viewLowValue + this.viewOptions.minRange, this.viewOptions.precisionLimit);\n }\n }\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.maxRange)) {\n if (difference > this.viewOptions.maxRange) {\n if (this.currentTrackingPointer === PointerType.Min) {\n return MathHelper.roundToPrecisionLimit(this.viewHighValue - this.viewOptions.maxRange, this.viewOptions.precisionLimit);\n }\n else if (this.currentTrackingPointer === PointerType.Max) {\n return MathHelper.roundToPrecisionLimit(this.viewLowValue + this.viewOptions.maxRange, this.viewOptions.precisionLimit);\n }\n }\n }\n return newValue;\n }\n /**\n * @param {?} newValue\n * @return {?}\n */\n applyPushRange(newValue) {\n /** @type {?} */\n const difference = (this.currentTrackingPointer === PointerType.Min)\n ? this.viewHighValue - newValue\n : newValue - this.viewLowValue;\n /** @type {?} */\n const minRange = (!ValueHelper.isNullOrUndefined(this.viewOptions.minRange))\n ? this.viewOptions.minRange\n : this.viewOptions.step;\n /** @type {?} */\n const maxRange = this.viewOptions.maxRange;\n // if smaller than minRange\n if (difference < minRange) {\n if (this.currentTrackingPointer === PointerType.Min) {\n this.viewHighValue = MathHelper.roundToPrecisionLimit(Math.min(newValue + minRange, this.viewOptions.ceil), this.viewOptions.precisionLimit);\n newValue = MathHelper.roundToPrecisionLimit(this.viewHighValue - minRange, this.viewOptions.precisionLimit);\n this.applyViewChange();\n this.updateHandles(PointerType.Max, this.valueToPosition(this.viewHighValue));\n }\n else if (this.currentTrackingPointer === PointerType.Max) {\n this.viewLowValue = MathHelper.roundToPrecisionLimit(Math.max(newValue - minRange, this.viewOptions.floor), this.viewOptions.precisionLimit);\n newValue = MathHelper.roundToPrecisionLimit(this.viewLowValue + minRange, this.viewOptions.precisionLimit);\n this.applyViewChange();\n this.updateHandles(PointerType.Min, this.valueToPosition(this.viewLowValue));\n }\n this.updateAriaAttributes();\n }\n else if (!ValueHelper.isNullOrUndefined(maxRange) && difference > maxRange) {\n // if greater than maxRange\n if (this.currentTrackingPointer === PointerType.Min) {\n this.viewHighValue = MathHelper.roundToPrecisionLimit(newValue + maxRange, this.viewOptions.precisionLimit);\n this.applyViewChange();\n this.updateHandles(PointerType.Max, this.valueToPosition(this.viewHighValue));\n }\n else if (this.currentTrackingPointer === PointerType.Max) {\n this.viewLowValue = MathHelper.roundToPrecisionLimit(newValue - maxRange, this.viewOptions.precisionLimit);\n this.applyViewChange();\n this.updateHandles(PointerType.Min, this.valueToPosition(this.viewLowValue));\n }\n this.updateAriaAttributes();\n }\n return newValue;\n }\n /**\n * @return {?}\n */\n getChangeContext() {\n /** @type {?} */\n const changeContext = new ChangeContext();\n changeContext.pointerType = this.currentTrackingPointer;\n changeContext.value = +this.value;\n if (this.range) {\n changeContext.highValue = +this.highValue;\n }\n return changeContext;\n }\n}\nSliderComponent.ɵfac = function SliderComponent_Factory(t) { return new (t || SliderComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nSliderComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SliderComponent, selectors: [[\"ngx-slider\"]], contentQueries: function SliderComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c0, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, viewQuery: function SliderComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c1, 5, SliderElementDirective);\n ɵngcc0.ɵɵviewQuery(_c2, 5, SliderElementDirective);\n ɵngcc0.ɵɵviewQuery(_c3, 5, SliderElementDirective);\n ɵngcc0.ɵɵviewQuery(_c4, 5, SliderElementDirective);\n ɵngcc0.ɵɵviewQuery(_c5, 5, SliderHandleDirective);\n ɵngcc0.ɵɵviewQuery(_c6, 5, SliderHandleDirective);\n ɵngcc0.ɵɵviewQuery(_c7, 5, SliderLabelDirective);\n ɵngcc0.ɵɵviewQuery(_c8, 5, SliderLabelDirective);\n ɵngcc0.ɵɵviewQuery(_c9, 5, SliderLabelDirective);\n ɵngcc0.ɵɵviewQuery(_c10, 5, SliderLabelDirective);\n ɵngcc0.ɵɵviewQuery(_c11, 5, SliderLabelDirective);\n ɵngcc0.ɵɵviewQuery(_c12, 5, SliderElementDirective);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.leftOuterSelectionBarElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.rightOuterSelectionBarElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fullBarElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.selectionBarElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.minHandleElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.maxHandleElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.floorLabelElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ceilLabelElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.minHandleLabelElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.maxHandleLabelElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.combinedLabelElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ticksElement = _t.first);\n } }, hostAttrs: [1, \"ngx-slider\"], hostVars: 8, hostBindings: function SliderComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"resize\", function SliderComponent_resize_HostBindingHandler($event) { return ctx.onResize($event); }, false, ɵngcc0.ɵɵresolveWindow);\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"disabled\", ctx.sliderElementDisabledAttr)(\"aria-label\", ctx.sliderElementAriaLabel);\n ɵngcc0.ɵɵclassProp(\"vertical\", ctx.sliderElementVerticalClass)(\"animate\", ctx.sliderElementAnimateClass)(\"with-legend\", ctx.sliderElementWithLegendClass);\n } }, inputs: { value: \"value\", highValue: \"highValue\", options: \"options\", manualRefresh: \"manualRefresh\", triggerFocus: \"triggerFocus\" }, outputs: { valueChange: \"valueChange\", highValueChange: \"highValueChange\", userChangeStart: \"userChangeStart\", userChange: \"userChange\", userChangeEnd: \"userChangeEnd\" }, features: [ɵngcc0.ɵɵProvidersFeature([NGX_SLIDER_CONTROL_VALUE_ACCESSOR]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 29, vars: 13, consts: [[\"ngxSliderElement\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bar-wrapper\", \"ngx-slider-left-out-selection\"], [\"leftOuterSelectionBar\", \"\"], [1, \"ngx-slider-span\", \"ngx-slider-bar\"], [\"ngxSliderElement\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bar-wrapper\", \"ngx-slider-right-out-selection\"], [\"rightOuterSelectionBar\", \"\"], [\"ngxSliderElement\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bar-wrapper\", \"ngx-slider-full-bar\"], [\"fullBar\", \"\"], [\"ngxSliderElement\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bar-wrapper\", \"ngx-slider-selection-bar\"], [\"selectionBar\", \"\"], [1, \"ngx-slider-span\", \"ngx-slider-bar\", \"ngx-slider-selection\", 3, \"ngStyle\"], [\"ngxSliderHandle\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-pointer\", \"ngx-slider-pointer-min\", 3, \"ngStyle\"], [\"minHandle\", \"\"], [\"ngxSliderHandle\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-pointer\", \"ngx-slider-pointer-max\", 3, \"ngStyle\"], [\"maxHandle\", \"\"], [\"ngxSliderLabel\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bubble\", \"ngx-slider-limit\", \"ngx-slider-floor\"], [\"floorLabel\", \"\"], [\"ngxSliderLabel\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bubble\", \"ngx-slider-limit\", \"ngx-slider-ceil\"], [\"ceilLabel\", \"\"], [\"ngxSliderLabel\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bubble\", \"ngx-slider-model-value\"], [\"minHandleLabel\", \"\"], [\"ngxSliderLabel\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bubble\", \"ngx-slider-model-high\"], [\"maxHandleLabel\", \"\"], [\"ngxSliderLabel\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bubble\", \"ngx-slider-combined\"], [\"combinedLabel\", \"\"], [\"ngxSliderElement\", \"\", 1, \"ngx-slider-ticks\", 3, \"hidden\"], [\"ticksElement\", \"\"], [\"class\", \"ngx-slider-tick\", 3, \"ngClass\", \"ngStyle\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngx-slider-tick\", 3, \"ngClass\", \"ngStyle\"], [3, \"template\", \"tooltip\", \"placement\"], [\"class\", \"ngx-slider-span ngx-slider-tick-value\", 3, \"template\", \"tooltip\", \"placement\", \"content\", 4, \"ngIf\"], [\"class\", \"ngx-slider-span ngx-slider-tick-legend\", 3, \"innerHTML\", 4, \"ngIf\"], [1, \"ngx-slider-span\", \"ngx-slider-tick-value\", 3, \"template\", \"tooltip\", \"placement\", \"content\"], [1, \"ngx-slider-span\", \"ngx-slider-tick-legend\", 3, \"innerHTML\"]], template: function SliderComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 0, 1);\n ɵngcc0.ɵɵelement(2, \"span\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"span\", 3, 4);\n ɵngcc0.ɵɵelement(5, \"span\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"span\", 5, 6);\n ɵngcc0.ɵɵelement(8, \"span\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(9, \"span\", 7, 8);\n ɵngcc0.ɵɵelement(11, \"span\", 9);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(12, \"span\", 10, 11);\n ɵngcc0.ɵɵelement(14, \"span\", 12, 13);\n ɵngcc0.ɵɵelement(16, \"span\", 14, 15);\n ɵngcc0.ɵɵelement(18, \"span\", 16, 17);\n ɵngcc0.ɵɵelement(20, \"span\", 18, 19);\n ɵngcc0.ɵɵelement(22, \"span\", 20, 21);\n ɵngcc0.ɵɵelement(24, \"span\", 22, 23);\n ɵngcc0.ɵɵelementStart(26, \"span\", 24, 25);\n ɵngcc0.ɵɵtemplate(28, SliderComponent_span_28_Template, 4, 9, \"span\", 26);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(6);\n ɵngcc0.ɵɵclassProp(\"ngx-slider-transparent\", ctx.fullBarTransparentClass);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵclassProp(\"ngx-slider-draggable\", ctx.selectionBarDraggableClass);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx.barStyle);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx.minPointerStyle);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵstyleProp(\"display\", ctx.range ? \"inherit\" : \"none\");\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx.maxPointerStyle);\n ɵngcc0.ɵɵadvance(12);\n ɵngcc0.ɵɵclassProp(\"ngx-slider-ticks-values-under\", ctx.ticksUnderValuesClass);\n ɵngcc0.ɵɵproperty(\"hidden\", !ctx.showTicks);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks);\n } }, directives: function () { return [SliderElementDirective, ɵngcc1.NgStyle, SliderHandleDirective, SliderLabelDirective, ɵngcc1.NgForOf, ɵngcc1.NgClass, TooltipWrapperComponent, ɵngcc1.NgIf]; }, styles: [\".ngx-slider{display:inline-block;position:relative;height:4px;width:100%;margin:35px 0 15px;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;touch-action:pan-y} .ngx-slider.with-legend{margin-bottom:40px} .ngx-slider[disabled]{cursor:not-allowed} .ngx-slider[disabled] .ngx-slider-pointer{cursor:not-allowed;background-color:#d8e0f3} .ngx-slider[disabled] .ngx-slider-draggable{cursor:not-allowed} .ngx-slider[disabled] .ngx-slider-selection{background:#8b91a2} .ngx-slider[disabled] .ngx-slider-tick{cursor:not-allowed} .ngx-slider[disabled] .ngx-slider-tick.ngx-slider-selected{background:#8b91a2} .ngx-slider .ngx-slider-span{white-space:nowrap;position:absolute;display:inline-block} .ngx-slider .ngx-slider-base{width:100%;height:100%;padding:0} .ngx-slider .ngx-slider-bar-wrapper{left:0;box-sizing:border-box;margin-top:-16px;padding-top:16px;width:100%;height:32px;z-index:1} .ngx-slider .ngx-slider-draggable{cursor:move} .ngx-slider .ngx-slider-bar{left:0;width:100%;height:4px;z-index:1;background:#d8e0f3;border-radius:2px} .ngx-slider .ngx-slider-bar-wrapper.ngx-slider-transparent .ngx-slider-bar{background:0 0} .ngx-slider .ngx-slider-bar-wrapper.ngx-slider-left-out-selection .ngx-slider-bar{background:#df002d} .ngx-slider .ngx-slider-bar-wrapper.ngx-slider-right-out-selection .ngx-slider-bar{background:#03a688} .ngx-slider .ngx-slider-selection{z-index:2;background:#0db9f0;border-radius:2px} .ngx-slider .ngx-slider-pointer{cursor:pointer;width:32px;height:32px;top:-14px;background-color:#0db9f0;z-index:3;border-radius:16px} .ngx-slider .ngx-slider-pointer:after{content:'';width:8px;height:8px;position:absolute;top:12px;left:12px;border-radius:4px;background:#fff} .ngx-slider .ngx-slider-pointer:hover:after{background-color:#fff} .ngx-slider .ngx-slider-pointer.ngx-slider-active{z-index:4} .ngx-slider .ngx-slider-pointer.ngx-slider-active:after{background-color:#451aff} .ngx-slider .ngx-slider-bubble{cursor:default;bottom:16px;padding:1px 3px;color:#55637d;font-size:16px} .ngx-slider .ngx-slider-bubble.ngx-slider-limit{color:#55637d} .ngx-slider .ngx-slider-ticks{box-sizing:border-box;width:100%;height:0;position:absolute;left:0;top:-3px;margin:0;z-index:1;list-style:none} .ngx-slider .ngx-slider-ticks-values-under .ngx-slider-tick-value{top:auto;bottom:-36px} .ngx-slider .ngx-slider-tick{text-align:center;cursor:pointer;width:10px;height:10px;background:#d8e0f3;border-radius:50%;position:absolute;top:0;left:0;margin-left:11px} .ngx-slider .ngx-slider-tick.ngx-slider-selected{background:#0db9f0} .ngx-slider .ngx-slider-tick-value{position:absolute;top:-34px;-webkit-transform:translate(-50%,0);transform:translate(-50%,0)} .ngx-slider .ngx-slider-tick-legend{position:absolute;top:24px;-webkit-transform:translate(-50%,0);transform:translate(-50%,0);max-width:50px;white-space:normal} .ngx-slider.vertical{position:relative;width:4px;height:100%;margin:0 20px;padding:0;vertical-align:baseline;touch-action:pan-x} .ngx-slider.vertical .ngx-slider-base{width:100%;height:100%;padding:0} .ngx-slider.vertical .ngx-slider-bar-wrapper{top:auto;left:0;margin:0 0 0 -16px;padding:0 0 0 16px;height:100%;width:32px} .ngx-slider.vertical .ngx-slider-bar{bottom:0;left:auto;width:4px;height:100%} .ngx-slider.vertical .ngx-slider-pointer{left:-14px!important;top:auto;bottom:0} .ngx-slider.vertical .ngx-slider-bubble{left:16px!important;bottom:0} .ngx-slider.vertical .ngx-slider-ticks{height:100%;width:0;left:-3px;top:0;z-index:1} .ngx-slider.vertical .ngx-slider-tick{vertical-align:middle;margin-left:auto;margin-top:11px} .ngx-slider.vertical .ngx-slider-tick-value{left:24px;top:auto;-webkit-transform:translate(0,-28%);transform:translate(0,-28%)} .ngx-slider.vertical .ngx-slider-tick-legend{top:auto;right:24px;-webkit-transform:translate(0,-28%);transform:translate(0,-28%);max-width:none;white-space:nowrap} .ngx-slider.vertical .ngx-slider-ticks-values-under .ngx-slider-tick-value{bottom:auto;left:auto;right:24px} .ngx-slider *{transition:none} .ngx-slider.animate .ngx-slider-bar-wrapper{transition:.3s linear} .ngx-slider.animate .ngx-slider-selection{transition:background-color .3s linear} .ngx-slider.animate .ngx-slider-pointer{transition:.3s linear} .ngx-slider.animate .ngx-slider-pointer:after{transition:.3s linear} .ngx-slider.animate .ngx-slider-bubble{transition:.3s linear} .ngx-slider.animate .ngx-slider-bubble.ngx-slider-limit{transition:opacity .3s linear} .ngx-slider.animate .ngx-slider-bubble.ngx-slider-combined{transition:opacity .3s linear} .ngx-slider.animate .ngx-slider-tick{transition:background-color .3s linear}\"] });\n/** @nocollapse */\nSliderComponent.ctorParameters = () => [\n { type: Renderer2 },\n { type: ElementRef },\n { type: ChangeDetectorRef },\n { type: NgZone }\n];\nSliderComponent.propDecorators = {\n value: [{ type: Input }],\n valueChange: [{ type: Output }],\n highValue: [{ type: Input }],\n highValueChange: [{ type: Output }],\n options: [{ type: Input }],\n userChangeStart: [{ type: Output }],\n userChange: [{ type: Output }],\n userChangeEnd: [{ type: Output }],\n manualRefresh: [{ type: Input }],\n triggerFocus: [{ type: Input }],\n leftOuterSelectionBarElement: [{ type: ViewChild, args: ['leftOuterSelectionBar', { read: SliderElementDirective },] }],\n rightOuterSelectionBarElement: [{ type: ViewChild, args: ['rightOuterSelectionBar', { read: SliderElementDirective },] }],\n fullBarElement: [{ type: ViewChild, args: ['fullBar', { read: SliderElementDirective },] }],\n selectionBarElement: [{ type: ViewChild, args: ['selectionBar', { read: SliderElementDirective },] }],\n minHandleElement: [{ type: ViewChild, args: ['minHandle', { read: SliderHandleDirective },] }],\n maxHandleElement: [{ type: ViewChild, args: ['maxHandle', { read: SliderHandleDirective },] }],\n floorLabelElement: [{ type: ViewChild, args: ['floorLabel', { read: SliderLabelDirective },] }],\n ceilLabelElement: [{ type: ViewChild, args: ['ceilLabel', { read: SliderLabelDirective },] }],\n minHandleLabelElement: [{ type: ViewChild, args: ['minHandleLabel', { read: SliderLabelDirective },] }],\n maxHandleLabelElement: [{ type: ViewChild, args: ['maxHandleLabel', { read: SliderLabelDirective },] }],\n combinedLabelElement: [{ type: ViewChild, args: ['combinedLabel', { read: SliderLabelDirective },] }],\n ticksElement: [{ type: ViewChild, args: ['ticksElement', { read: SliderElementDirective },] }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }],\n sliderElementVerticalClass: [{ type: HostBinding, args: ['class.vertical',] }],\n sliderElementAnimateClass: [{ type: HostBinding, args: ['class.animate',] }],\n sliderElementWithLegendClass: [{ type: HostBinding, args: ['class.with-legend',] }],\n sliderElementDisabledAttr: [{ type: HostBinding, args: ['attr.disabled',] }],\n sliderElementAriaLabel: [{ type: HostBinding, args: ['attr.aria-label',] }],\n onResize: [{ type: HostListener, args: ['window:resize', ['$event'],] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SliderComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-slider',\n template: `\n\n \n\n\n\n \n\n\n\n \n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n \n \n \n`,\n styles: [`::ng-deep .ngx-slider{display:inline-block;position:relative;height:4px;width:100%;margin:35px 0 15px;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;touch-action:pan-y}::ng-deep .ngx-slider.with-legend{margin-bottom:40px}::ng-deep .ngx-slider[disabled]{cursor:not-allowed}::ng-deep .ngx-slider[disabled] .ngx-slider-pointer{cursor:not-allowed;background-color:#d8e0f3}::ng-deep .ngx-slider[disabled] .ngx-slider-draggable{cursor:not-allowed}::ng-deep .ngx-slider[disabled] .ngx-slider-selection{background:#8b91a2}::ng-deep .ngx-slider[disabled] .ngx-slider-tick{cursor:not-allowed}::ng-deep .ngx-slider[disabled] .ngx-slider-tick.ngx-slider-selected{background:#8b91a2}::ng-deep .ngx-slider .ngx-slider-span{white-space:nowrap;position:absolute;display:inline-block}::ng-deep .ngx-slider .ngx-slider-base{width:100%;height:100%;padding:0}::ng-deep .ngx-slider .ngx-slider-bar-wrapper{left:0;box-sizing:border-box;margin-top:-16px;padding-top:16px;width:100%;height:32px;z-index:1}::ng-deep .ngx-slider .ngx-slider-draggable{cursor:move}::ng-deep .ngx-slider .ngx-slider-bar{left:0;width:100%;height:4px;z-index:1;background:#d8e0f3;border-radius:2px}::ng-deep .ngx-slider .ngx-slider-bar-wrapper.ngx-slider-transparent .ngx-slider-bar{background:0 0}::ng-deep .ngx-slider .ngx-slider-bar-wrapper.ngx-slider-left-out-selection .ngx-slider-bar{background:#df002d}::ng-deep .ngx-slider .ngx-slider-bar-wrapper.ngx-slider-right-out-selection .ngx-slider-bar{background:#03a688}::ng-deep .ngx-slider .ngx-slider-selection{z-index:2;background:#0db9f0;border-radius:2px}::ng-deep .ngx-slider .ngx-slider-pointer{cursor:pointer;width:32px;height:32px;top:-14px;background-color:#0db9f0;z-index:3;border-radius:16px}::ng-deep .ngx-slider .ngx-slider-pointer:after{content:'';width:8px;height:8px;position:absolute;top:12px;left:12px;border-radius:4px;background:#fff}::ng-deep .ngx-slider .ngx-slider-pointer:hover:after{background-color:#fff}::ng-deep .ngx-slider .ngx-slider-pointer.ngx-slider-active{z-index:4}::ng-deep .ngx-slider .ngx-slider-pointer.ngx-slider-active:after{background-color:#451aff}::ng-deep .ngx-slider .ngx-slider-bubble{cursor:default;bottom:16px;padding:1px 3px;color:#55637d;font-size:16px}::ng-deep .ngx-slider .ngx-slider-bubble.ngx-slider-limit{color:#55637d}::ng-deep .ngx-slider .ngx-slider-ticks{box-sizing:border-box;width:100%;height:0;position:absolute;left:0;top:-3px;margin:0;z-index:1;list-style:none}::ng-deep .ngx-slider .ngx-slider-ticks-values-under .ngx-slider-tick-value{top:auto;bottom:-36px}::ng-deep .ngx-slider .ngx-slider-tick{text-align:center;cursor:pointer;width:10px;height:10px;background:#d8e0f3;border-radius:50%;position:absolute;top:0;left:0;margin-left:11px}::ng-deep .ngx-slider .ngx-slider-tick.ngx-slider-selected{background:#0db9f0}::ng-deep .ngx-slider .ngx-slider-tick-value{position:absolute;top:-34px;-webkit-transform:translate(-50%,0);transform:translate(-50%,0)}::ng-deep .ngx-slider .ngx-slider-tick-legend{position:absolute;top:24px;-webkit-transform:translate(-50%,0);transform:translate(-50%,0);max-width:50px;white-space:normal}::ng-deep .ngx-slider.vertical{position:relative;width:4px;height:100%;margin:0 20px;padding:0;vertical-align:baseline;touch-action:pan-x}::ng-deep .ngx-slider.vertical .ngx-slider-base{width:100%;height:100%;padding:0}::ng-deep .ngx-slider.vertical .ngx-slider-bar-wrapper{top:auto;left:0;margin:0 0 0 -16px;padding:0 0 0 16px;height:100%;width:32px}::ng-deep .ngx-slider.vertical .ngx-slider-bar{bottom:0;left:auto;width:4px;height:100%}::ng-deep .ngx-slider.vertical .ngx-slider-pointer{left:-14px!important;top:auto;bottom:0}::ng-deep .ngx-slider.vertical .ngx-slider-bubble{left:16px!important;bottom:0}::ng-deep .ngx-slider.vertical .ngx-slider-ticks{height:100%;width:0;left:-3px;top:0;z-index:1}::ng-deep .ngx-slider.vertical .ngx-slider-tick{vertical-align:middle;margin-left:auto;margin-top:11px}::ng-deep .ngx-slider.vertical .ngx-slider-tick-value{left:24px;top:auto;-webkit-transform:translate(0,-28%);transform:translate(0,-28%)}::ng-deep .ngx-slider.vertical .ngx-slider-tick-legend{top:auto;right:24px;-webkit-transform:translate(0,-28%);transform:translate(0,-28%);max-width:none;white-space:nowrap}::ng-deep .ngx-slider.vertical .ngx-slider-ticks-values-under .ngx-slider-tick-value{bottom:auto;left:auto;right:24px}::ng-deep .ngx-slider *{transition:none}::ng-deep .ngx-slider.animate .ngx-slider-bar-wrapper{transition:.3s linear}::ng-deep .ngx-slider.animate .ngx-slider-selection{transition:background-color .3s linear}::ng-deep .ngx-slider.animate .ngx-slider-pointer{transition:.3s linear}::ng-deep .ngx-slider.animate .ngx-slider-pointer:after{transition:.3s linear}::ng-deep .ngx-slider.animate .ngx-slider-bubble{transition:.3s linear}::ng-deep .ngx-slider.animate .ngx-slider-bubble.ngx-slider-limit{transition:opacity .3s linear}::ng-deep .ngx-slider.animate .ngx-slider-bubble.ngx-slider-combined{transition:opacity .3s linear}::ng-deep .ngx-slider.animate .ngx-slider-tick{transition:background-color .3s linear}`],\n host: { class: 'ngx-slider' },\n providers: [NGX_SLIDER_CONTROL_VALUE_ACCESSOR]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }]; }, { value: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], highValue: [{\n type: Input\n }], highValueChange: [{\n type: Output\n }], options: [{\n type: Input\n }], userChangeStart: [{\n type: Output\n }], userChange: [{\n type: Output\n }], userChangeEnd: [{\n type: Output\n }], sliderElementVerticalClass: [{\n type: HostBinding,\n args: ['class.vertical']\n }], sliderElementAnimateClass: [{\n type: HostBinding,\n args: ['class.animate']\n }], sliderElementWithLegendClass: [{\n type: HostBinding,\n args: ['class.with-legend']\n }], sliderElementDisabledAttr: [{\n type: HostBinding,\n args: ['attr.disabled']\n }], sliderElementAriaLabel: [{\n type: HostBinding,\n args: ['attr.aria-label']\n }], manualRefresh: [{\n type: Input\n }], triggerFocus: [{\n type: Input\n }], \n /**\n * @param {?} event\n * @return {?}\n */\n onResize: [{\n type: HostListener,\n args: ['window:resize', ['$event']]\n }], leftOuterSelectionBarElement: [{\n type: ViewChild,\n args: ['leftOuterSelectionBar', { read: SliderElementDirective }]\n }], rightOuterSelectionBarElement: [{\n type: ViewChild,\n args: ['rightOuterSelectionBar', { read: SliderElementDirective }]\n }], fullBarElement: [{\n type: ViewChild,\n args: ['fullBar', { read: SliderElementDirective }]\n }], selectionBarElement: [{\n type: ViewChild,\n args: ['selectionBar', { read: SliderElementDirective }]\n }], minHandleElement: [{\n type: ViewChild,\n args: ['minHandle', { read: SliderHandleDirective }]\n }], maxHandleElement: [{\n type: ViewChild,\n args: ['maxHandle', { read: SliderHandleDirective }]\n }], floorLabelElement: [{\n type: ViewChild,\n args: ['floorLabel', { read: SliderLabelDirective }]\n }], ceilLabelElement: [{\n type: ViewChild,\n args: ['ceilLabel', { read: SliderLabelDirective }]\n }], minHandleLabelElement: [{\n type: ViewChild,\n args: ['minHandleLabel', { read: SliderLabelDirective }]\n }], maxHandleLabelElement: [{\n type: ViewChild,\n args: ['maxHandleLabel', { read: SliderLabelDirective }]\n }], combinedLabelElement: [{\n type: ViewChild,\n args: ['combinedLabel', { read: SliderLabelDirective }]\n }], ticksElement: [{\n type: ViewChild,\n args: ['ticksElement', { read: SliderElementDirective }]\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass TooltipWrapperComponent {\n}\nTooltipWrapperComponent.ɵfac = function TooltipWrapperComponent_Factory(t) { return new (t || TooltipWrapperComponent)(); };\nTooltipWrapperComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TooltipWrapperComponent, selectors: [[\"ngx-slider-tooltip-wrapper\"]], inputs: { template: \"template\", tooltip: \"tooltip\", placement: \"placement\", content: \"content\" }, decls: 2, vars: 2, consts: [[4, \"ngIf\"], [4, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"ngx-slider-inner-tooltip\"]], template: function TooltipWrapperComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TooltipWrapperComponent_ng_container_0_Template, 2, 6, \"ng-container\", 0);\n ɵngcc0.ɵɵtemplate(1, TooltipWrapperComponent_ng_container_1_Template, 3, 3, \"ng-container\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.template);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.template);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], styles: [\".ngx-slider-inner-tooltip[_ngcontent-%COMP%]{height:100%}\"] });\nTooltipWrapperComponent.propDecorators = {\n template: [{ type: Input }],\n tooltip: [{ type: Input }],\n placement: [{ type: Input }],\n content: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TooltipWrapperComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-slider-tooltip-wrapper',\n template: `\n \n\n\n\n
\n {{content}}\n
\n
`,\n styles: [`.ngx-slider-inner-tooltip{height:100%}`]\n }]\n }], null, { template: [{\n type: Input\n }], tooltip: [{\n type: Input\n }], placement: [{\n type: Input\n }], content: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * NgxSlider module\n *\n * The module exports the slider component\n */\nclass NgxSliderModule {\n}\nNgxSliderModule.ɵfac = function NgxSliderModule_Factory(t) { return new (t || NgxSliderModule)(); };\nNgxSliderModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgxSliderModule });\nNgxSliderModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n CommonModule\n ]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxSliderModule, [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule\n ],\n declarations: [\n SliderComponent,\n SliderElementDirective,\n SliderHandleDirective,\n SliderLabelDirective,\n TooltipWrapperComponent\n ],\n exports: [\n SliderComponent\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgxSliderModule, { declarations: function () { return [SliderComponent, SliderElementDirective, SliderHandleDirective, SliderLabelDirective, TooltipWrapperComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [SliderComponent]; } }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n\nexport { NgxSliderModule, ChangeContext, PointerType, LabelType, Options, SliderElementDirective as ɵb, SliderHandleDirective as ɵc, SliderLabelDirective as ɵd, SliderComponent as ɵa, TooltipWrapperComponent as ɵe };\n\n","import { Injectable } from '@angular/core';\r\nimport { DefaultTreeviewI18n, TreeviewSelection } from 'ngx-treeview';\r\n\r\n@Injectable()\r\nexport class CategoryTreeviewI18n extends DefaultTreeviewI18n {\r\n constructor(\r\n ) {\r\n super();\r\n }\r\n\r\n getText(selection: TreeviewSelection): string {\r\n if (selection.uncheckedItems.length === 0) {\r\n return 'Todas';\r\n }\r\n\r\n switch (selection.checkedItems.length) {\r\n case 0:\r\n return 'Seleccionar categoría';\r\n case 1:\r\n return selection.checkedItems[0].text;\r\n default:\r\n return `${selection.checkedItems.length} categorías`;\r\n }\r\n }\r\n\r\n getFilterNoItemsFoundText(): string {\r\n return 'No se encontró categorías';\r\n }\r\n}","\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n Productos no encontrados.\r\n
\r\n
\r\n No encontramos resultados.\r\n Por favor, revise los criterios de búsqueda.\r\n
\r\n \r\n Ver productos\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n \r\n \r\n\r\n 0?product.pictures[0].previewUrl:'assets/xemart/images/notImg.png'}}\"\r\n (load)=\"product.loaded=true\">\r\n\r\n 0?product.pictures[0].previewUrl:'assets/xemart/images/notImg.png'}}\"\r\n (load)=\"product.loaded=true\">\r\n\r\n 0?product.pictures[0].previewUrl:'assets/xemart/images/notImg.png'}}\"\r\n (load)=\"product.loaded=true\">\r\n\r\n 0?product.pictures[0].previewUrl:'assets/xemart/images/notImg.png'}}\"\r\n (load)=\"product.loaded=true\">\r\n\r\n 0?product.pictures[0].previewUrl:'assets/xemart/images/notImg.png'}}\"\r\n (load)=\"product.loaded=true\">\r\n\r\n 0?product.pictures[0].previewUrl:'assets/xemart/images/notImg.png'}}\"\r\n (load)=\"product.loaded=true\">\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n
    \r\n
  • {{product.priceToShow}}
  • \r\n
  • {{product.oldPriceToShow}}
  • \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \"Amazon\"\r\n
\r\n\r\n
\r\n \"Shein\"\r\n
\r\n\r\n
\r\n \"Shein\"\r\n
\r\n\r\n
\r\n \"HomeDepot\"\r\n
\r\n\r\n
\r\n \"BestBuy\"\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n","import {Component, Inject, Input, OnInit, PLATFORM_ID} from '@angular/core';\r\nimport { MarketProduct } from '../_models/product.interface';\r\nimport { Observable, of } from 'rxjs';\r\nimport { Store } from '@ngrx/store';\r\nimport * as productsSelectors from '../state/product-list/list-selectors';\r\nimport { PushToCartComponent } from '@app/marketplace/shared/_components/push-cart.component';\r\nimport { UrlService } from '@app/services/url.service';\r\nimport { Meta, Title } from '@angular/platform-browser';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ViewTypeEnum } from '@app/marketplace/core/enum/viewTypeEnum';\r\nimport {isPlatformBrowser} from '@angular/common';\r\nimport {isBrowser} from 'ngx-bootstrap/positioning/utils/isBrowser';\r\nimport {ProductService} from '@app/marketplace/products/_services/product.service';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ProductDetailsDlgComponent } from '../product-details-dlg/product-details-dlg.component';\r\n\r\n@Component({\r\n selector: 'app-product-tab1',\r\n templateUrl: './product-tab1.component.html',\r\n styleUrls: ['./product-tab1.component.css']\r\n})\r\n\r\nexport class ProductTab1Component extends PushToCartComponent implements OnInit\r\n{\r\n @Input()\r\n data$: Observable;\r\n isLoading$: Observable;\r\n count$: Observable;\r\n theme = { 'min-width': '273px', 'min-height': '219px', background: '#f1f1f1' };\r\n constructor(\r\n private store: Store,\r\n private productService: ProductService,\r\n private modalService: NgbModal,\r\n private urlService: UrlService,\r\n private metaService: Meta,\r\n private titleService: Title,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n @Inject(PLATFORM_ID) private platformId) {\r\n super(route, metaService, titleService, router);\r\n this.data$ = of([]);\r\n this.isLoading$ = isPlatformBrowser(platformId) ? this.store.select(productsSelectors.selectLoading) : this.productService.loading$;\r\n this.count$ = isPlatformBrowser(platformId) ? this.store.select(productsSelectors.selectCount) : this.productService.count$;\r\n }\r\n ngOnInit(): void { }\r\n public pushToCart(product:any) {\r\n var itemImg = $(`#${product.code}`).find('img').eq(0);\r\n this.flyToElement($(itemImg),product,ViewTypeEnum.ProductList,this.store);\r\n }\r\n openDetails(product:any) {\r\n const modalRef = this.modalService.open(ProductDetailsDlgComponent, {size: 'xl', modalDialogClass: 'book-address'});\r\n modalRef.componentInstance.code = product.code;\r\n modalRef.componentInstance.provider = product.productProvider;\r\n modalRef.result.then(\r\n (result: boolean) => {\r\n if (result) {\r\n this.router.navigate([`/market/productos-compras-cuba-online/shein/${product.code}`]);\r\n }\r\n },() => {}\r\n )\r\n }\r\n\r\n}\r\n","import { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nexport function sampleTime(period, scheduler = async) {\n return (source) => source.lift(new SampleTimeOperator(period, scheduler));\n}\nclass SampleTimeOperator {\n constructor(period, scheduler) {\n this.period = period;\n this.scheduler = scheduler;\n }\n call(subscriber, source) {\n return source.subscribe(new SampleTimeSubscriber(subscriber, this.period, this.scheduler));\n }\n}\nclass SampleTimeSubscriber extends Subscriber {\n constructor(destination, period, scheduler) {\n super(destination);\n this.period = period;\n this.scheduler = scheduler;\n this.hasValue = false;\n this.add(scheduler.schedule(dispatchNotification, period, { subscriber: this, period }));\n }\n _next(value) {\n this.lastValue = value;\n this.hasValue = true;\n }\n notifyNext() {\n if (this.hasValue) {\n this.hasValue = false;\n this.destination.next(this.lastValue);\n }\n }\n}\nfunction dispatchNotification(state) {\n let { subscriber, period } = state;\n subscriber.notifyNext();\n this.schedule(state, period);\n}\n","import { Directive, ElementRef, EventEmitter, Input, NgModule, NgZone, Output } from '@angular/core';\nimport { fromEvent, of } from 'rxjs';\nimport { filter, map, mergeMap, sampleTime, tap } from 'rxjs/operators';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} selector\n * @param {?} scrollWindow\n * @param {?} defaultElement\n * @param {?} fromRoot\n * @return {?}\n */\nimport * as ɵngcc0 from '@angular/core';\nfunction resolveContainerElement(selector, scrollWindow, defaultElement, fromRoot) {\n /** @type {?} */\n const hasWindow = window && !!window.document && window.document.documentElement;\n /** @type {?} */\n let container = hasWindow && scrollWindow ? window : defaultElement;\n if (selector) {\n /** @type {?} */\n const containerIsString = selector && hasWindow && typeof selector === 'string';\n container = containerIsString\n ? findElement(selector, defaultElement.nativeElement, fromRoot)\n : selector;\n if (!container) {\n throw new Error('ngx-infinite-scroll {resolveContainerElement()}: selector for');\n }\n }\n return container;\n}\n/**\n * @param {?} selector\n * @param {?} customRoot\n * @param {?} fromRoot\n * @return {?}\n */\nfunction findElement(selector, customRoot, fromRoot) {\n /** @type {?} */\n const rootEl = fromRoot ? window.document : customRoot;\n return rootEl.querySelector(selector);\n}\n/**\n * @param {?} prop\n * @return {?}\n */\nfunction inputPropChanged(prop) {\n return prop && !prop.firstChange;\n}\n/**\n * @return {?}\n */\nfunction hasWindowDefined() {\n return typeof window !== 'undefined';\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst VerticalProps = {\n clientHeight: \"clientHeight\",\n offsetHeight: \"offsetHeight\",\n scrollHeight: \"scrollHeight\",\n pageYOffset: \"pageYOffset\",\n offsetTop: \"offsetTop\",\n scrollTop: \"scrollTop\",\n top: \"top\"\n};\n/** @type {?} */\nconst HorizontalProps = {\n clientHeight: \"clientWidth\",\n offsetHeight: \"offsetWidth\",\n scrollHeight: \"scrollWidth\",\n pageYOffset: \"pageXOffset\",\n offsetTop: \"offsetLeft\",\n scrollTop: \"scrollLeft\",\n top: \"left\"\n};\nclass AxisResolver {\n /**\n * @param {?=} vertical\n */\n constructor(vertical = true) {\n this.vertical = vertical;\n this.propsMap = vertical ? VerticalProps : HorizontalProps;\n }\n /**\n * @return {?}\n */\n clientHeightKey() {\n return this.propsMap.clientHeight;\n }\n /**\n * @return {?}\n */\n offsetHeightKey() {\n return this.propsMap.offsetHeight;\n }\n /**\n * @return {?}\n */\n scrollHeightKey() {\n return this.propsMap.scrollHeight;\n }\n /**\n * @return {?}\n */\n pageYOffsetKey() {\n return this.propsMap.pageYOffset;\n }\n /**\n * @return {?}\n */\n offsetTopKey() {\n return this.propsMap.offsetTop;\n }\n /**\n * @return {?}\n */\n scrollTopKey() {\n return this.propsMap.scrollTop;\n }\n /**\n * @return {?}\n */\n topKey() {\n return this.propsMap.top;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @param {?} alwaysCallback\n * @param {?} shouldFireScrollEvent\n * @param {?} isTriggeredCurrentTotal\n * @return {?}\n */\nfunction shouldTriggerEvents(alwaysCallback, shouldFireScrollEvent, isTriggeredCurrentTotal) {\n if (alwaysCallback && shouldFireScrollEvent) {\n return true;\n }\n if (!isTriggeredCurrentTotal && shouldFireScrollEvent) {\n return true;\n }\n return false;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction createResolver({ windowElement, axis }) {\n return createResolverWithContainer({ axis, isWindow: isElementWindow(windowElement) }, windowElement);\n}\n/**\n * @param {?} resolver\n * @param {?} windowElement\n * @return {?}\n */\nfunction createResolverWithContainer(resolver, windowElement) {\n /** @type {?} */\n const container = resolver.isWindow || (windowElement && !windowElement.nativeElement)\n ? windowElement\n : windowElement.nativeElement;\n return Object.assign({}, resolver, { container });\n}\n/**\n * @param {?} windowElement\n * @return {?}\n */\nfunction isElementWindow(windowElement) {\n /** @type {?} */\n const isWindow = ['Window', 'global'].some((obj) => Object.prototype.toString.call(windowElement).includes(obj));\n return isWindow;\n}\n/**\n * @param {?} isContainerWindow\n * @param {?} windowElement\n * @return {?}\n */\nfunction getDocumentElement(isContainerWindow, windowElement) {\n return isContainerWindow ? windowElement.document.documentElement : null;\n}\n/**\n * @param {?} element\n * @param {?} resolver\n * @return {?}\n */\nfunction calculatePoints(element, resolver) {\n /** @type {?} */\n const height = extractHeightForElement(resolver);\n return resolver.isWindow\n ? calculatePointsForWindow(height, element, resolver)\n : calculatePointsForElement(height, element, resolver);\n}\n/**\n * @param {?} height\n * @param {?} element\n * @param {?} resolver\n * @return {?}\n */\nfunction calculatePointsForWindow(height, element, resolver) {\n const { axis, container, isWindow } = resolver;\n const { offsetHeightKey, clientHeightKey } = extractHeightPropKeys(axis);\n // scrolled until now / current y point\n /** @type {?} */\n const scrolled = height +\n getElementPageYOffset(getDocumentElement(isWindow, container), axis, isWindow);\n // total height / most bottom y point\n /** @type {?} */\n const nativeElementHeight = getElementHeight(element.nativeElement, isWindow, offsetHeightKey, clientHeightKey);\n /** @type {?} */\n const totalToScroll = getElementOffsetTop(element.nativeElement, axis, isWindow) +\n nativeElementHeight;\n return { height, scrolled, totalToScroll, isWindow };\n}\n/**\n * @param {?} height\n * @param {?} element\n * @param {?} resolver\n * @return {?}\n */\nfunction calculatePointsForElement(height, element, resolver) {\n const { axis, container } = resolver;\n // perhaps use container.offsetTop instead of 'scrollTop'\n /** @type {?} */\n const scrolled = container[axis.scrollTopKey()];\n /** @type {?} */\n const totalToScroll = container[axis.scrollHeightKey()];\n return { height, scrolled, totalToScroll, isWindow: false };\n}\n/**\n * @param {?} axis\n * @return {?}\n */\nfunction extractHeightPropKeys(axis) {\n return {\n offsetHeightKey: axis.offsetHeightKey(),\n clientHeightKey: axis.clientHeightKey()\n };\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction extractHeightForElement({ container, isWindow, axis }) {\n const { offsetHeightKey, clientHeightKey } = extractHeightPropKeys(axis);\n return getElementHeight(container, isWindow, offsetHeightKey, clientHeightKey);\n}\n/**\n * @param {?} elem\n * @param {?} isWindow\n * @param {?} offsetHeightKey\n * @param {?} clientHeightKey\n * @return {?}\n */\nfunction getElementHeight(elem, isWindow, offsetHeightKey, clientHeightKey) {\n if (isNaN(elem[offsetHeightKey])) {\n /** @type {?} */\n const docElem = getDocumentElement(isWindow, elem);\n return docElem ? docElem[clientHeightKey] : 0;\n }\n else {\n return elem[offsetHeightKey];\n }\n}\n/**\n * @param {?} elem\n * @param {?} axis\n * @param {?} isWindow\n * @return {?}\n */\nfunction getElementOffsetTop(elem, axis, isWindow) {\n /** @type {?} */\n const topKey = axis.topKey();\n // elem = elem.nativeElement;\n if (!elem.getBoundingClientRect) {\n // || elem.css('none')) {\n return;\n }\n return (elem.getBoundingClientRect()[topKey] +\n getElementPageYOffset(elem, axis, isWindow));\n}\n/**\n * @param {?} elem\n * @param {?} axis\n * @param {?} isWindow\n * @return {?}\n */\nfunction getElementPageYOffset(elem, axis, isWindow) {\n /** @type {?} */\n const pageYOffset = axis.pageYOffsetKey();\n /** @type {?} */\n const scrollTop = axis.scrollTopKey();\n /** @type {?} */\n const offsetTop = axis.offsetTopKey();\n if (isNaN(window[pageYOffset])) {\n return getDocumentElement(isWindow, elem)[scrollTop];\n }\n else if (elem.ownerDocument) {\n return elem.ownerDocument.defaultView[pageYOffset];\n }\n else {\n return elem[offsetTop];\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} container\n * @param {?} distance\n * @param {?} scrollingDown\n * @return {?}\n */\nfunction shouldFireScrollEvent(container, distance, scrollingDown) {\n /** @type {?} */\n let remaining;\n /** @type {?} */\n let containerBreakpoint;\n if (container.totalToScroll <= 0) {\n return false;\n }\n /** @type {?} */\n const scrolledUntilNow = container.isWindow ? container.scrolled : container.height + container.scrolled;\n if (scrollingDown) {\n remaining =\n (container.totalToScroll - scrolledUntilNow) / container.totalToScroll;\n containerBreakpoint = distance.down / 10;\n }\n else {\n /** @type {?} */\n const totalHiddenContentHeight = container.scrolled + (container.totalToScroll - scrolledUntilNow);\n remaining = container.scrolled / totalHiddenContentHeight;\n containerBreakpoint = distance.up / 10;\n }\n /** @type {?} */\n const shouldFireEvent = remaining <= containerBreakpoint;\n return shouldFireEvent;\n}\n/**\n * @param {?} lastScrollPosition\n * @param {?} container\n * @return {?}\n */\nfunction isScrollingDownwards(lastScrollPosition, container) {\n return lastScrollPosition < container.scrolled;\n}\n/**\n * @param {?} lastScrollPosition\n * @param {?} container\n * @param {?} distance\n * @return {?}\n */\nfunction getScrollStats(lastScrollPosition, container, distance) {\n /** @type {?} */\n const scrollDown = isScrollingDownwards(lastScrollPosition, container);\n return {\n fire: shouldFireScrollEvent(container, distance, scrollDown),\n scrollDown\n };\n}\n/**\n * @param {?} position\n * @param {?} scrollState\n * @return {?}\n */\n\n/**\n * @param {?} totalToScroll\n * @param {?} scrollState\n * @return {?}\n */\n\n/**\n * @param {?} scrollState\n * @return {?}\n */\n\n/**\n * @param {?} scroll\n * @param {?} scrollState\n * @param {?} triggered\n * @param {?} isScrollingDown\n * @return {?}\n */\n\n/**\n * @param {?} totalToScroll\n * @param {?} scrollState\n * @param {?} isScrollingDown\n * @return {?}\n */\n\n/**\n * @param {?} scrollState\n * @param {?} scrolledUntilNow\n * @param {?} totalToScroll\n * @return {?}\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass ScrollState {\n /**\n * @param {?} __0\n */\n constructor({ totalToScroll }) {\n this.lastScrollPosition = 0;\n this.lastTotalToScroll = 0;\n this.totalToScroll = 0;\n this.triggered = {\n down: 0,\n up: 0\n };\n this.totalToScroll = totalToScroll;\n }\n /**\n * @param {?} position\n * @return {?}\n */\n updateScrollPosition(position) {\n return (this.lastScrollPosition = position);\n }\n /**\n * @param {?} totalToScroll\n * @return {?}\n */\n updateTotalToScroll(totalToScroll) {\n if (this.lastTotalToScroll !== totalToScroll) {\n this.lastTotalToScroll = this.totalToScroll;\n this.totalToScroll = totalToScroll;\n }\n }\n /**\n * @param {?} scrolledUntilNow\n * @param {?} totalToScroll\n * @return {?}\n */\n updateScroll(scrolledUntilNow, totalToScroll) {\n this.updateScrollPosition(scrolledUntilNow);\n this.updateTotalToScroll(totalToScroll);\n }\n /**\n * @param {?} scroll\n * @param {?} isScrollingDown\n * @return {?}\n */\n updateTriggeredFlag(scroll, isScrollingDown) {\n if (isScrollingDown) {\n this.triggered.down = scroll;\n }\n else {\n this.triggered.up = scroll;\n }\n }\n /**\n * @param {?} totalToScroll\n * @param {?} isScrollingDown\n * @return {?}\n */\n isTriggeredScroll(totalToScroll, isScrollingDown) {\n return isScrollingDown\n ? this.triggered.down === totalToScroll\n : this.triggered.up === totalToScroll;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} config\n * @return {?}\n */\nfunction createScroller(config) {\n const { scrollContainer, scrollWindow, element, fromRoot } = config;\n /** @type {?} */\n const resolver = createResolver({\n axis: new AxisResolver(!config.horizontal),\n windowElement: resolveContainerElement(scrollContainer, scrollWindow, element, fromRoot)\n });\n /** @type {?} */\n const scrollState = new ScrollState({\n totalToScroll: calculatePoints(element, resolver)\n });\n /** @type {?} */\n const options = {\n container: resolver.container,\n throttle: config.throttle\n };\n /** @type {?} */\n const distance = {\n up: config.upDistance,\n down: config.downDistance\n };\n return attachScrollEvent(options).pipe(mergeMap(() => of(calculatePoints(element, resolver))), map((positionStats) => toInfiniteScrollParams(scrollState.lastScrollPosition, positionStats, distance)), tap(({ stats }) => scrollState.updateScroll(stats.scrolled, stats.totalToScroll)), filter(({ fire, scrollDown, stats: { totalToScroll } }) => shouldTriggerEvents(config.alwaysCallback, fire, scrollState.isTriggeredScroll(totalToScroll, scrollDown))), tap(({ scrollDown, stats: { totalToScroll } }) => {\n scrollState.updateTriggeredFlag(totalToScroll, scrollDown);\n }), map(toInfiniteScrollAction));\n}\n/**\n * @param {?} options\n * @return {?}\n */\nfunction attachScrollEvent(options) {\n /** @type {?} */\n let obs = fromEvent(options.container, 'scroll');\n // For an unknown reason calling `sampleTime()` causes trouble for many users, even with `options.throttle = 0`.\n // Let's avoid calling the function unless needed.\n // See https://github.com/orizens/ngx-infinite-scroll/issues/198\n if (options.throttle) {\n obs = obs.pipe(sampleTime(options.throttle));\n }\n return obs;\n}\n/**\n * @param {?} lastScrollPosition\n * @param {?} stats\n * @param {?} distance\n * @return {?}\n */\nfunction toInfiniteScrollParams(lastScrollPosition, stats, distance) {\n const { scrollDown, fire } = getScrollStats(lastScrollPosition, stats, distance);\n return {\n scrollDown,\n fire,\n stats\n };\n}\n/** @type {?} */\nconst InfiniteScrollActions = {\n DOWN: '[NGX_ISE] DOWN',\n UP: '[NGX_ISE] UP'\n};\n/**\n * @param {?} response\n * @return {?}\n */\nfunction toInfiniteScrollAction(response) {\n const { scrollDown, stats: { scrolled: currentScrollPosition } } = response;\n return {\n type: scrollDown ? InfiniteScrollActions.DOWN : InfiniteScrollActions.UP,\n payload: {\n currentScrollPosition\n }\n };\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass InfiniteScrollDirective {\n /**\n * @param {?} element\n * @param {?} zone\n */\n constructor(element, zone) {\n this.element = element;\n this.zone = zone;\n this.scrolled = new EventEmitter();\n this.scrolledUp = new EventEmitter();\n this.infiniteScrollDistance = 2;\n this.infiniteScrollUpDistance = 1.5;\n this.infiniteScrollThrottle = 150;\n this.infiniteScrollDisabled = false;\n this.infiniteScrollContainer = null;\n this.scrollWindow = true;\n this.immediateCheck = false;\n this.horizontal = false;\n this.alwaysCallback = false;\n this.fromRoot = false;\n }\n /**\n * @return {?}\n */\n ngAfterViewInit() {\n if (!this.infiniteScrollDisabled) {\n this.setup();\n }\n }\n /**\n * @param {?} __0\n * @return {?}\n */\n ngOnChanges({ infiniteScrollContainer, infiniteScrollDisabled, infiniteScrollDistance }) {\n /** @type {?} */\n const containerChanged = inputPropChanged(infiniteScrollContainer);\n /** @type {?} */\n const disabledChanged = inputPropChanged(infiniteScrollDisabled);\n /** @type {?} */\n const distanceChanged = inputPropChanged(infiniteScrollDistance);\n /** @type {?} */\n const shouldSetup = (!disabledChanged && !this.infiniteScrollDisabled) ||\n (disabledChanged && !infiniteScrollDisabled.currentValue) || distanceChanged;\n if (containerChanged || disabledChanged || distanceChanged) {\n this.destroyScroller();\n if (shouldSetup) {\n this.setup();\n }\n }\n }\n /**\n * @return {?}\n */\n setup() {\n if (hasWindowDefined()) {\n this.zone.runOutsideAngular(() => {\n this.disposeScroller = createScroller({\n fromRoot: this.fromRoot,\n alwaysCallback: this.alwaysCallback,\n disable: this.infiniteScrollDisabled,\n downDistance: this.infiniteScrollDistance,\n element: this.element,\n horizontal: this.horizontal,\n scrollContainer: this.infiniteScrollContainer,\n scrollWindow: this.scrollWindow,\n throttle: this.infiniteScrollThrottle,\n upDistance: this.infiniteScrollUpDistance\n }).subscribe((payload) => this.zone.run(() => this.handleOnScroll(payload)));\n });\n }\n }\n /**\n * @param {?} __0\n * @return {?}\n */\n handleOnScroll({ type, payload }) {\n switch (type) {\n case InfiniteScrollActions.DOWN:\n return this.scrolled.emit(payload);\n case InfiniteScrollActions.UP:\n return this.scrolledUp.emit(payload);\n default:\n return;\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.destroyScroller();\n }\n /**\n * @return {?}\n */\n destroyScroller() {\n if (this.disposeScroller) {\n this.disposeScroller.unsubscribe();\n }\n }\n}\nInfiniteScrollDirective.ɵfac = function InfiniteScrollDirective_Factory(t) { return new (t || InfiniteScrollDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nInfiniteScrollDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: InfiniteScrollDirective, selectors: [[\"\", \"infiniteScroll\", \"\"], [\"\", \"infinite-scroll\", \"\"], [\"\", \"data-infinite-scroll\", \"\"]], inputs: { infiniteScrollDistance: \"infiniteScrollDistance\", infiniteScrollUpDistance: \"infiniteScrollUpDistance\", infiniteScrollThrottle: \"infiniteScrollThrottle\", infiniteScrollDisabled: \"infiniteScrollDisabled\", infiniteScrollContainer: \"infiniteScrollContainer\", scrollWindow: \"scrollWindow\", immediateCheck: \"immediateCheck\", horizontal: \"horizontal\", alwaysCallback: \"alwaysCallback\", fromRoot: \"fromRoot\" }, outputs: { scrolled: \"scrolled\", scrolledUp: \"scrolledUp\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n/** @nocollapse */\nInfiniteScrollDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: NgZone }\n];\nInfiniteScrollDirective.propDecorators = {\n scrolled: [{ type: Output }],\n scrolledUp: [{ type: Output }],\n infiniteScrollDistance: [{ type: Input }],\n infiniteScrollUpDistance: [{ type: Input }],\n infiniteScrollThrottle: [{ type: Input }],\n infiniteScrollDisabled: [{ type: Input }],\n infiniteScrollContainer: [{ type: Input }],\n scrollWindow: [{ type: Input }],\n immediateCheck: [{ type: Input }],\n horizontal: [{ type: Input }],\n alwaysCallback: [{ type: Input }],\n fromRoot: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InfiniteScrollDirective, [{\n type: Directive,\n args: [{\n selector: '[infiniteScroll], [infinite-scroll], [data-infinite-scroll]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { scrolled: [{\n type: Output\n }], scrolledUp: [{\n type: Output\n }], infiniteScrollDistance: [{\n type: Input\n }], infiniteScrollUpDistance: [{\n type: Input\n }], infiniteScrollThrottle: [{\n type: Input\n }], infiniteScrollDisabled: [{\n type: Input\n }], infiniteScrollContainer: [{\n type: Input\n }], scrollWindow: [{\n type: Input\n }], immediateCheck: [{\n type: Input\n }], horizontal: [{\n type: Input\n }], alwaysCallback: [{\n type: Input\n }], fromRoot: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass InfiniteScrollModule {\n}\nInfiniteScrollModule.ɵfac = function InfiniteScrollModule_Factory(t) { return new (t || InfiniteScrollModule)(); };\nInfiniteScrollModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: InfiniteScrollModule });\nInfiniteScrollModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [], imports: [[]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InfiniteScrollModule, [{\n type: NgModule,\n args: [{\n declarations: [InfiniteScrollDirective],\n exports: [InfiniteScrollDirective],\n imports: [],\n providers: []\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(InfiniteScrollModule, { declarations: [InfiniteScrollDirective], exports: [InfiniteScrollDirective] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Angular library starter.\n * Build an Angular library compatible with AoT compilation & Tree shaking.\n * Written by Roberto Simonetti.\n * MIT license.\n * https://github.com/robisim74/angular-library-starter\n */\n/**\n * Entry point for all public APIs of the package.\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { InfiniteScrollDirective, InfiniteScrollModule };\n\n","\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n Productos no encontrados.\r\n
\r\n
\r\n No encontramos resultados.\r\n Por favor, revise los criterios de búsqueda.\r\n
\r\n \r\n Ver productos\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n\r\n 0?product.pictures[0].previewUrl:'assets/xemart/images/notImg.png'}}\"\r\n (load)=\"product.loaded=true\">\r\n\r\n 0?product.pictures[0].previewUrl:'assets/xemart/images/notImg.png'}}\"\r\n (load)=\"product.loaded=true\">\r\n\r\n 0?product.pictures[0].previewUrl:'assets/xemart/images/notImg.png'}}\"\r\n (load)=\"product.loaded=true\">\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n

\r\n {{product.name}}\r\n

\r\n

\r\n {{product.name}}\r\n

\r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • {{product.priceToShow}}
    • \r\n
    • {{product.oldPriceToShow}}
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n {{product.shortText}}\r\n

    \r\n\r\n \r\n \r\n \"\"\r\n \r\n Añadir al carrito\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { MarketProduct } from '../_models/product.interface';\r\nimport { Observable, of } from 'rxjs';\r\nimport * as cartActions from \"../state/shopping-cart/cart-action\";\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport * as productsSelectors from '../state/product-list/list-selectors';\r\nimport { Store } from '@ngrx/store';\r\nimport { PushToCartComponent } from '@app/marketplace/shared/_components/push-cart.component';\r\nimport { UrlService } from '@app/services/url.service';\r\nimport { Meta, Title } from '@angular/platform-browser';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ViewTypeEnum } from '@app/marketplace/core/enum/viewTypeEnum';\r\n\r\n@Component({\r\n selector: 'app-product-tab2',\r\n templateUrl: './product-tab2.component.html',\r\n styleUrls: ['./product-tab2.component.css']\r\n})\r\nexport class ProductTab2Component extends PushToCartComponent implements OnInit {\r\n @Input()\r\n data$ :Observable;\r\n isLoading$: Observable;\r\n count$: Observable;\r\n theme = {'min-width': '273px','min-height' : '219px',background: '#f1f1f1'};\r\n constructor(\r\n private store: Store,\r\n private urlService: UrlService,\r\n private metaService: Meta,\r\n private titleService: Title,\r\n private route: ActivatedRoute,\r\n private router: Router ) {\r\n super(route,metaService,titleService,router);\r\n this.data$ = of([]);\r\n this.isLoading$ = this.store.select(productsSelectors.selectLoading);\r\n this.count$ = this.store.select(productsSelectors.selectCount);\r\n }\r\n ngOnInit(): void {}\r\n public pushToCart(product:any) {\r\n var itemImg = $(`#${product.code}`).find('img').eq(0);\r\n this.flyToElement($(itemImg),product,ViewTypeEnum.ProductList,this.store);\r\n }\r\n}\r\n","\r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n

    {{h1}}\r\n

    \r\n

    \r\n
    \r\n
    \r\n \"Cubatel\r\n \"Cubatel\r\n \"Cubatel\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    0 ? {'margin-bottom' : '10px'} : ''\">\r\n
    \r\n
      \r\n
    • \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n
      =2\" class=\"search-results\"\r\n infiniteScroll\r\n [infiniteScrollDistance]=\"1\"\r\n [infiniteScrollThrottle]=\"800\"\r\n (scrolled)=\"onScroll()\" [scrollWindow]=\"true\">\r\n \r\n \r\n
      \r\n\r\n
      \r\n
    • \r\n
    • \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    • \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n \r\n \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n Ordenar por:\r\n \r\n
    \r\n\r\n \r\n\r\n
    \r\n

    Mostrando {{count$ | async}} de {{totalData$ | async}} resultados

    \r\n
    \r\n\r\n
    \r\n

    Mostrando {{count$ | async}} resultados

    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n 0 \"\r\n [class.location-disable]=\"loadingCategoryTree$ | async\"\r\n [config]=\"configTree\"\r\n [items]=\"items\"\r\n (selectedChange)=\"onSelectCategories($event)\"\r\n autofocus=false\r\n [style.width]=\"'200px'\">\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    0\" class=\"d-flex justify-content-center p-0 paginated\">\r\n \r\n \r\n\r\n\r\n\r\n\r\n
    \r\n\r\n
    0\" class=\"d-flex justify-content-center p-0 paginated product-list-faq\">\r\n
    \r\n
    \r\n
    \r\n

    \r\n Preguntas frecuentes\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n","import { AfterViewInit, Component, ElementRef, Inject, OnDestroy, OnInit, PLATFORM_ID, ViewChild, } from '@angular/core';\r\nimport { select, Store } from '@ngrx/store';\r\nimport * as productsActions from \"../state/product-list/list-actions\";\r\nimport * as selectors from \"../state/product-list/list-selectors\";\r\n/* import * as routerSelectors from \"@app/marketplace/route/router.selector\"; */\r\nimport { MarketProduct } from '../_models/product.interface';\r\nimport { BehaviorSubject, fromEvent, Observable, of, Subject, Subscription } from 'rxjs';\r\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\r\nimport { Meta, Title } from '@angular/platform-browser';\r\nimport { UrlService } from '@app/services/url.service';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { ConfigurationPagedSelectorModel } from '@app/marketplace/shared/_models/pagination-selector.model';\r\nimport { ConfigurationPagedComponent } from '@app/marketplace/shared/_components/paginator.component';\r\nimport * as productSelectors from '../../products/state/product-list/list-selectors';\r\nimport * as categorySelectors from '../../categories/state/category/categories-selectors';\r\nimport * as categoryTreeSelector from '../../categories/state/category-tree/category-tree-selectors';\r\nimport * as searchSelectors from '@app/marketplace/products/state/product-search/search-selectors';\r\nimport { _seoContent } from '@app/marketplace/seo-content/utils';\r\nimport { debounceTime, delay, distinctUntilChanged, filter, first, switchMap, take, takeUntil } from 'rxjs/operators';\r\nimport * as authSelectors from '../../auth/state/auth-selectors';\r\nimport { LabelType, Options } from '@angular-slider/ngx-slider';\r\nimport { CategoryTreeResponse } from '@app/marketplace/categories/_models/category.interface';\r\nimport { TreeviewConfig, TreeviewI18n, TreeviewItem } from 'ngx-treeview';\r\nimport { CategoryTreeviewI18n } from '@app/marketplace/shared/_components/dropdown-treeview-select/dropdown-treeview-select-sub-category-i18n';\r\nimport {animate, style, transition, trigger} from '@angular/animations';\r\nimport {ProductService} from '@app/marketplace/products/_services/product.service';\r\n\r\n@Component({\r\n selector: 'app-product-list',\r\n templateUrl: './product-list.component.html',\r\n styleUrls: ['./product-list.component.css'],\r\n animations: [\r\n trigger('slowAnimate', [\r\n transition(':enter', [style({opacity: '0'}), animate(1000)]),\r\n transition(':leave', [style({opacity: '1'}), animate(1000, style({opacity: '0'}))]),\r\n ])\r\n ],\r\n providers: [{ provide: TreeviewI18n, useClass: CategoryTreeviewI18n }]\r\n})\r\nexport class ProductListComponent\r\n extends ConfigurationPagedComponent\r\n implements OnInit, OnDestroy, AfterViewInit {\r\n @ViewChild('selectItems', { static: false }) selectItems: ElementRef\r\n @ViewChild('sortingItems', { static: false }) sortingItems: ElementRef;\r\n @ViewChild(\"nav\") nav;\r\n payload: any;\r\n user$: any;\r\n provider$: Observable;\r\n categoryName$: any;\r\n request$: Observable;\r\n categoryTree$: Observable;\r\n loadingCategoryTree$: Observable;\r\n selectCategoryTreeView$ : Observable;\r\n categoriesLocalInfo = _seoContent.map(x => ({ code: x.categoryCode, name: x.sectionId }));\r\n isBrowser: boolean;\r\n protected _subscriptions: Subscription[] = [];\r\n categoryTree: TreeviewItem[] = [new TreeviewItem({ text: '', value: '', checked: false })];\r\n categoryValues: string[] = [];\r\n configTree = TreeviewConfig.create({\r\n hasAllCheckBox: false,\r\n hasCollapseExpand: false,\r\n decoupleChildFromParent: false,\r\n maxHeight: 400,\r\n });\r\n items = [];\r\n previousPage: any=1;\r\n private selectCategorySubject = new BehaviorSubject(false);\r\n stateAnimate: boolean;\r\n\r\n constructor(\r\n private store: Store,\r\n private productService: ProductService,\r\n private urlService: UrlService,\r\n private metaService: Meta,\r\n private titleService: Title,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n @Inject(PLATFORM_ID) private platformId\r\n ) {\r\n super(route, metaService, titleService, router, store, platformId,\r\n new ConfigurationPagedSelectorModel(\r\n selectors.selectLoading,\r\n selectors.selectItems,\r\n selectors.selectPageSize,\r\n selectors.selectPageNo,\r\n selectors.selectTotalPage,\r\n selectors.selectTotalData,\r\n selectors.selectCount,\r\n selectors.selectConfiguration\r\n )\r\n );\r\n this.isBrowser = isPlatformBrowser(platformId);\r\n this.payload = {\r\n pageIndex: 0,\r\n pageSize: 12,\r\n pagingStrategy: 0,\r\n locationType: 0,\r\n locations: null,\r\n locationResolver: false,\r\n filter: {\r\n searchTerms: '',\r\n sortingArgs: 0,\r\n categories: null,\r\n priceRange: {\r\n low: 1,\r\n high: 1000,\r\n },\r\n leafCategories: null\r\n },\r\n categoryCode: '',\r\n supplierCode: '',\r\n scroll:false\r\n };\r\n this.request$ = this.store.select(productSelectors.selectPayload);\r\n this.categoryTree$ = this.store.select(categoryTreeSelector.selectCategoryTree);\r\n this.loadingCategoryTree$ = this.store.select(categoryTreeSelector.selectCategoryTreeLoading);\r\n this.selectCategoryTreeView$ = this.store.select(categoryTreeSelector.selectCategoryTreeView);\r\n this.user$ = this.store.select(authSelectors.selectUser);\r\n this.categoryName$ = this.store.select(categorySelectors.selectCategoryName);\r\n this.provider$ = this.store.select(searchSelectors.selectProvider);\r\n this.stateAnimate = false;\r\n }\r\n loadProducts = (metas = null) => {\r\n if (!this.payload.pageIndex)\r\n this.payload.pageIndex = 0;\r\n if (!this.payload.pageSize)\r\n this.payload.pageIndex = 12;\r\n if (this.isBrowser) {\r\n this.store.dispatch(productsActions.LoadingProductsAction({ payload: this.payload }));\r\n } else {\r\n this.payload.locationType = 0;\r\n this.payload.locations = null;\r\n if (metas) {\r\n this.payload.categoryCode = metas.categoryCode;\r\n this.payload.filter.leafCategories = true;\r\n }\r\n this.productService.ListProducts(this.payload).subscribe((result: any) => {\r\n if (result && result.data) {\r\n result.data.map(data => {\r\n data.ratingsCounter = new Array(Number(data.rating.toFixed(0)));\r\n });\r\n const res = result.data.length < 4 ? result.data.filter(x => x.price > 0) : result.data.filter(x => x.price > 0).slice(0, 4);\r\n this.items$ = new BehaviorSubject(res).asObservable();\r\n this.productService.countSubject$.next(res.length);\r\n }\r\n });\r\n }\r\n\r\n this.nav?.select(1);\r\n }\r\n cancelRequest = () => this.store.dispatch(productsActions.CancelProductRequestAction());\r\n getSlug = (key: string): string => this.categoriesLocalInfo.find((x) => x.code == key)?.name || key;\r\n pageChange = ($event: number) => {\r\n if ($event !== this.previousPage) {\r\n this.previousPage = $event;\r\n this.payload.pageIndex = $event;\r\n //console.info($event);\r\n this.loadProducts();\r\n }\r\n }\r\n ngOnInit(): void {\r\n this.title = \"Cubatel Market | Compras a Cuba online\";\r\n this.description = \"Realiza tus compras para Cuba online desde cualquier lugar del mundo. Entregas a domicilio en toda la Isla. ¡Aprovecha la oportunidad de enviar miles de productos hasta la puerta de tu casa en Cuba!\";\r\n this.keywords = \"comprar online en cuba, compras para cuba online\";\r\n this.h1 = \"Compra para Cuba online\";\r\n const metas = this.loadPrerender();\r\n this.payload.filter.categories = null;\r\n this.payload.pageIndex = 1;\r\n this.payload.pageSize = 8;\r\n this.payload.filter.sortingArgs = 0;\r\n\r\n this.loadProducts(metas);\r\n this.subscriptions.push(this.selectCategorySubject.pipe(debounceTime(300)\r\n ).subscribe((result) => {if (result == true) {this.loadProducts(); }} ), this.selectCategoryTreeView$.subscribe(items => {\r\n if (JSON.stringify(this.items.map(x => x.value)) != JSON.stringify(items.map(x => x.value))) {\r\n this.items = items;\r\n }\r\n }));\r\n if (isPlatformBrowser(this.platformId)) {\r\n window.scroll(0, 0);\r\n // load products by location\r\n /* this._subscriptions.push(this.store.select(locationSelectors.selectLocation).pipe(filter(res => res.isSuccess)).subscribe(() => {\r\n this.loadProducts();\r\n })); */\r\n }\r\n // load products by category\r\n /*this._subscriptions.push(this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(() => {\r\n this.payload.filter.categories = null;\r\n this.payload.pageIndex = 1;\r\n this.payload.pageSize = 12;\r\n this.payload.filter.sortingArgs = 0;\r\n this.loadProducts();\r\n }), this.selectCategorySubject.pipe(debounceTime(300)\r\n ).subscribe((result) => {if (result == true) {this.loadProducts(); }} ),\r\n this.selectCategoryTreeView$.subscribe(items => {\r\n if(JSON.stringify(this.items.map(x => x.value)) != JSON.stringify(items.map(x => x.value))) {\r\n this.items = items;\r\n }\r\n }));*/\r\n this.urlService.changeUrl(this.router.url);\r\n this.urlService.footer.emit();\r\n }\r\n async onScroll() {\r\n const value = await this.store.pipe(select(selectors.selectCount),take(1)).toPromise();\r\n if(value<8) return;\r\n this.payload.pageIndex+=1;\r\n var payload = {\r\n pageIndex: this.payload.pageIndex,\r\n pageSize: 40,\r\n pagingStrategy: 0,\r\n locationType: 0,\r\n locations: null,\r\n locationResolver: false,\r\n filter: this.payload,\r\n categoryCode: '',\r\n supplierCode: '',\r\n scroll:true\r\n };\r\n console.info(payload);\r\n this.store.dispatch(productsActions.LoadingProductsAction({ payload}));\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (isPlatformBrowser(this.platformId)) {\r\n this.loadSelectScript();\r\n this.loadSortScript();\r\n }\r\n }\r\n\r\n loadSelectScript() {\r\n if (this.selectItems) {\r\n this._subscriptions.push(fromEvent(this.selectItems.nativeElement, 'change').subscribe(() => {\r\n this.payload.pageIndex = 1;\r\n this.payload.pageSize = Number(this.selectItems.nativeElement.value);\r\n this.loadProducts();\r\n }));\r\n } else {\r\n setTimeout(() => {\r\n this.loadSelectScript();\r\n }, 300);\r\n }\r\n }\r\n\r\n loadSortScript() {\r\n if (this.sortingItems) {\r\n this._subscriptions.push(fromEvent(this.sortingItems.nativeElement, 'change').subscribe(() => {\r\n this.payload.pageIndex = 1;\r\n this.payload.filter.sortingArgs = Number(this.sortingItems.nativeElement.value);\r\n this.loadProducts();\r\n }));\r\n } else {\r\n setTimeout(() => {\r\n this.loadSortScript();\r\n }, 300);\r\n }\r\n }\r\n translateFn = (value: number, label: LabelType) => {\r\n switch (label) {\r\n case LabelType.Low:\r\n return \"$\" + value;\r\n case LabelType.High:\r\n return \"$\" + value;\r\n default:\r\n return \"$\" + value;\r\n }\r\n }\r\n onChangeSlider(event) {\r\n this.payload.pageIndex = 1;\r\n this.payload.filter.priceRange = {\r\n low: event.value,\r\n high: event.highValue,\r\n };\r\n this.loadProducts();\r\n }\r\n\r\n onSelectCategories(values: string[]) {\r\n this.categoryValues = values;\r\n if(values.length > 0) {\r\n this.payload.filter.categories = values;\r\n } else {\r\n this.payload.filter.categories = null;\r\n }\r\n this.selectCategorySubject.next(true);\r\n }\r\n\r\n animate(): void {\r\n this.stateAnimate = true;\r\n setTimeout(() => {\r\n return this.stateAnimate = false;\r\n }, 2000);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subscriptions.forEach(sb => sb.unsubscribe());\r\n this.cancelRequest();\r\n }\r\n}\r\nfunction firstValueFrom(obs$: any) {\r\n throw new Error('Function not implemented.');\r\n}\r\n\r\n","import { createFeatureSelector, createSelector } from \"@ngrx/store\";\r\nimport { AppState, PRODUCT_FEATURE } from \"../../../app.state\";\r\n\r\nexport const productFeature = createFeatureSelector(PRODUCT_FEATURE.stateKey);\r\nexport const selectLoading = createSelector(\r\n productFeature,\r\n (state: AppState) =>{ return state.related_products.isLoading}\r\n);\r\nexport const selectItems = createSelector(\r\n productFeature,\r\n (state: AppState) => state.related_products.data\r\n);\r\n","\r\n

    0\">\r\n Productos relacionados\r\n

    \r\n\r\n\r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n\r\n
    \r\n
    \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n\r\n\r\n
    \r\n\r\n \r\n \r\n\r\n 0?product.pictures[0].previewUrl:'assets/xemart/images/notImg.png'}}\"\r\n (load)=\"product.loaded=true\">\r\n\r\n 0?product.pictures[0].previewUrl:'assets/xemart/images/notImg.png'}}\"\r\n (load)=\"product.loaded=true\">\r\n\r\n 0?product.pictures[0].previewUrl:'assets/xemart/images/notImg.png'}}\"\r\n (load)=\"product.loaded=true\">\r\n\r\n 0?product.pictures[0].previewUrl:'assets/xemart/images/notImg.png'}}\"\r\n (load)=\"product.loaded=true\">\r\n\r\n 0?product.pictures[0].previewUrl:'assets/xemart/images/notImg.png'}}\"\r\n (load)=\"product.loaded=true\">\r\n\r\n 0?product.pictures[0].previewUrl:'assets/xemart/images/notImg.png'}}\"\r\n (load)=\"product.loaded=true\">\r\n\r\n
    \r\n\r\n \r\n\r\n
    \r\n
    \r\n
      \r\n
    • {{product.priceToShow}}
    • \r\n
    • {{product.oldPriceToShow}}
    • \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \"Amazon\"\r\n
    \r\n
    \r\n \"Shein\"\r\n
    \r\n
    \r\n \"Walmart\"\r\n
    \r\n
    \r\n \"HomeDepot\"\r\n
    \r\n
    \r\n \"BestBuy\"\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n","import {Component, OnDestroy, OnInit} from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { Store } from '@ngrx/store';\r\nimport * as relatedSelectors from '@app/marketplace/products/state/related-product/related-selectors';\r\nimport * as detailsActions from '@app/marketplace/products/state/product-details/details-actions';\r\nimport * as relatedActions from '@app/marketplace/products/state/related-product/related-actions';\r\nimport { Utils } from '@app/marketplace/core/helpers/utils';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-related-products',\r\n templateUrl: './related-products.component.html',\r\n styleUrls: ['./related-products.component.css']\r\n})\r\n\r\nexport class RelatedProductsComponent implements OnInit, OnDestroy\r\n{\r\n data$ :Observable;\r\n isLoading$: Observable;\r\n count$: Observable;\r\n theme = { 'min-width': '200px', 'min-height': '219px', background: '#f1f1f1' };\r\n constructor(\r\n private store: Store,\r\n private router: Router) {\r\n this.data$ = of([]);\r\n this.isLoading$ = this.store.select(relatedSelectors.selectLoading);\r\n this.data$ = this.store.select(relatedSelectors.selectItems);\r\n }\r\n ngOnInit(): void { }\r\n ngOnDestroy(): void {;}\r\n public getDetails(product:string,provider:number) {\r\n window.scroll(0,0);\r\n if(!product) return;\r\n let currentUrl = `/market/productos-compras-cuba-online/${Utils.GetProviderName(provider)}/${product}`;\r\n this.router.navigateByUrl(currentUrl, {skipLocationChange: true}).then(() => {\r\n this.store.dispatch(detailsActions.LoadingProductDetailAction());\r\n this.store.dispatch(relatedActions.ResetRelatedProductsAction());\r\n });\r\n }\r\n}\r\n","
    0\" style=\"padding-top: 0px\" class=\"pro-tag\">\r\n \r\n \r\n \r\n {{dimension.name}}\r\n \r\n
    \r\n \r\n\r\n
    \r\n \r\n {{item.displayValue}}\r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n","import {Component,Inject,Input,OnDestroy,OnInit,PLATFORM_ID,ViewChild,} from \"@angular/core\";\r\nimport { Store } from \"@ngrx/store\";\r\nimport { Router } from \"@angular/router\";\r\nimport { _seoContent } from \"@app/marketplace/seo-content/utils\";\r\nimport { Observable } from \"rxjs\";\r\nimport * as selectors from \"../state/product-details/details-selectors\";\r\nimport * as actions from \"../state/product-details/details-actions\";\r\nimport * as relatedActions from '@app/marketplace/products/state/related-product/related-actions';\r\nimport { Utils } from \"@app/marketplace/core/helpers/utils\";\r\n@Component({\r\n selector: \"app-product-dimensions\",\r\n templateUrl: \"./product-dimensions.component.html\",\r\n styleUrls: [\"./product-dimensions.component.css\"],\r\n})\r\nexport class ProductDimensionsComponent implements OnInit, OnDestroy {\r\n @Input() provider:number;\r\n dimensions$ :Observable;\r\n currentKey$ :Observable;\r\n constructor(private store: Store,private router: Router,) {\r\n this.dimensions$ = this.store.select(selectors.selectDimensions);\r\n this.currentKey$= this.store.select(selectors.selectCurrentKey);\r\n }\r\n ngOnInit(): void {;}\r\n public getDetails(product:string) {\r\n if(!product) return;\r\n var provider=Utils.GetProviderName(this.provider);\r\n let currentUrl = `/market/productos-compras-cuba-online/${provider}/${product}`;\r\n this.router.navigateByUrl(currentUrl, {skipLocationChange: true}).then(() => {\r\n this.store.dispatch(actions.LoadingProductDetailAction());\r\n this.store.dispatch(relatedActions.ResetRelatedProductsAction());\r\n });\r\n }\r\n ngOnDestroy(): void {;}\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { __decorate } from 'tslib';\nimport { Injectable, Input, HostBinding, ViewChild, Component, EventEmitter, ElementRef, ChangeDetectorRef, HostListener, ComponentFactoryResolver, ApplicationRef, Injector, Output, Directive, ContentChildren, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReplaySubject } from 'rxjs';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\n\nconst _c0 = [\"imageFirst\"];\nconst _c1 = [\"imageSecond\"];\nconst _c2 = [\"imageLast\"];\nconst _c3 = [\"lightboxImage\"];\nconst _c4 = [\"prevImageElem\"];\nconst _c5 = [\"lightboxContainer\"];\nfunction LightboxComponent_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 11);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.counter);\n} }\nfunction LightboxComponent_div_1_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n ɵngcc0.ɵɵlistener(\"click\", function LightboxComponent_div_1_Template_div_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.closeLightbox(); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r1.closeButtonText);\n} }\nfunction LightboxComponent_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 13);\n} }\nfunction LightboxComponent_div_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 14);\n ɵngcc0.ɵɵelement(1, \"div\", 13);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction LightboxComponent_div_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 15);\n ɵngcc0.ɵɵtext(1, \"Failed to load image\");\n ɵngcc0.ɵɵelementEnd();\n} }\nlet EventService = class EventService {\r\n constructor() {\r\n this.emitter = new ReplaySubject(1);\r\n }\r\n emitChangeEvent(data) {\r\n this.emitter.next(data);\r\n }\r\n};\nEventService.ɵfac = function EventService_Factory(t) { return new (t || EventService)(); };\nEventService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: EventService, factory: function (t) { return EventService.ɵfac(t); } });\n\nclass Utils {\r\n static mobileCheck() {\r\n var check = false;\r\n (function (a) { if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4)))\r\n check = true; })(navigator.userAgent || navigator.vendor);\r\n return check;\r\n }\r\n ;\r\n}\n\nlet LightboxCommonComponent = class LightboxCommonComponent {\r\n constructor(eventService) {\r\n this.eventService = eventService;\r\n this.currentImageIndex = 0;\r\n this.indexCurrentSlide = 1;\r\n this.containerStyles = {\r\n transition: '',\r\n transform: '',\r\n width: '',\r\n height: '',\r\n opacity: ''\r\n };\r\n this.currImageLoadingState = 'not-loaded';\r\n this.isMobile = Utils.mobileCheck();\r\n }\r\n get lightboxImage() {\r\n return this._lightboxImage;\r\n }\r\n get lightboxImageElement() {\r\n if (this.lightboxImage) {\r\n return this.lightboxImage.nativeElement;\r\n }\r\n }\r\n get lightboxImageNaturalHeight() {\r\n if (this.lightboxImageElement) {\r\n return this.lightboxImageElement.naturalHeight;\r\n }\r\n }\r\n get lightboxImageNaturalWidth() {\r\n if (this.lightboxImageElement) {\r\n return this.lightboxImageElement.naturalWidth;\r\n }\r\n }\r\n get index() {\r\n return this.currentImageIndex;\r\n }\r\n get properties() {\r\n return this.lightboxData.properties;\r\n }\r\n get images() {\r\n return this.lightboxData.images || [this.lightboxData.image];\r\n }\r\n get thumbnailImage() {\r\n return this.images[this.currentImageIndex].nativeElement;\r\n }\r\n get thumbnailImagePosition() {\r\n return this.thumbnailImage.getBoundingClientRect();\r\n }\r\n // Image size if it is larger than the window size\r\n get virtualImageDimension() {\r\n let height = this.lightboxImageNaturalHeight;\r\n let width = height * this.imageAspectRatio;\r\n const windowWidth = document.body.clientWidth;\r\n const windowHeight = window.innerHeight;\r\n if (this.isImageLargerWindow) {\r\n if (height > windowHeight) {\r\n height = windowHeight;\r\n width = height * this.imageAspectRatio;\r\n }\r\n if (width > windowWidth) {\r\n width = windowWidth;\r\n height = width / this.imageAspectRatio;\r\n }\r\n }\r\n else {\r\n width = this.lightboxImageNaturalWidth;\r\n height = this.lightboxImageNaturalHeight;\r\n }\r\n if (width === 0 || Number.parseInt(height) === 0) {\r\n return { width: 200, height: 200 };\r\n }\r\n return { width, height };\r\n }\r\n get containerInitialPosition() {\r\n const scale = (this.showState === 'initial-thumbnail-image') ? 1 : this.containerScale;\r\n const top = this.thumbnailImagePosition.top;\r\n const left = this.thumbnailImagePosition.left;\r\n return 'matrix(' + scale + ', 0, 0, ' + scale + ',' + left + ',' + top + ')';\r\n }\r\n get containerFullscreenPosition() {\r\n const left = (document.body.clientWidth - this.virtualImageDimension.width) / 2;\r\n const top = (window.innerHeight - this.virtualImageDimension.height) / 2;\r\n return 'translate3d(' + left + 'px, ' + top + 'px, 0)';\r\n }\r\n get containerScale() {\r\n return this.thumbnailImagePosition.width / this.virtualImageDimension.width;\r\n }\r\n get imageAspectRatio() {\r\n return this.thumbnailImage.naturalWidth / this.thumbnailImage.naturalHeight;\r\n }\r\n get isImageLargerWindow() {\r\n const imageNaturalWidth = this.lightboxImageNaturalWidth;\r\n const imageNaturalHeight = this.lightboxImageNaturalHeight;\r\n const windowWidth = document.body.clientWidth;\r\n const windowHeight = window.innerHeight;\r\n return imageNaturalWidth > windowWidth || imageNaturalHeight > windowHeight;\r\n }\r\n get isFirstImage() {\r\n if (this.properties.loop) {\r\n return false;\r\n }\r\n else {\r\n return this.index === 0;\r\n }\r\n }\r\n get isLastImage() {\r\n if (this.properties.loop) {\r\n return false;\r\n }\r\n else {\r\n return this.index === this.latestImageIndex;\r\n }\r\n }\r\n get latestImageIndex() {\r\n return this.images.length - 1;\r\n }\r\n get backgroundColor() {\r\n const opacity = this.properties.backgroundOpacity;\r\n const color = this.properties.backgroundColor;\r\n if (color === 'black') {\r\n return 'rgba(0, 0, 0, ' + opacity + ')';\r\n }\r\n else {\r\n return 'rgba(255, 255, 255, ' + opacity + ')';\r\n }\r\n }\r\n get animationDuration() {\r\n const animationDuration = this.properties.animationDuration;\r\n if (typeof animationDuration === \"string\") {\r\n return Number.parseInt(animationDuration);\r\n }\r\n else {\r\n return animationDuration;\r\n }\r\n }\r\n get animationMode() {\r\n if (this.currImageLoadingState === 'error') {\r\n return 'default';\r\n }\r\n return this.properties.animationMode;\r\n }\r\n get animationTimingFunction() {\r\n return this.properties.animationTimingFunction;\r\n }\r\n get closeButtonText() {\r\n return this.properties.closeButtonText;\r\n }\r\n get counterSeparator() {\r\n return this.properties.counterSeparator;\r\n }\r\n get counter() {\r\n return this.currentImageIndex + 1 + this.counterSeparator + this.images.length;\r\n }\r\n emitState(type, state) {\r\n if (state === 'initial-virtual-image' ||\r\n state === 'initial-styles') {\r\n return;\r\n }\r\n if (state === 'initial-default' ||\r\n state === 'initial-thumbnail-image') {\r\n state = 'initial';\r\n }\r\n this.eventService.emitChangeEvent({\r\n type: type + ':' + state\r\n });\r\n }\r\n setShowState(state) {\r\n this.showState = state;\r\n this.emitState('show-state', state);\r\n }\r\n setClosingState(state) {\r\n this.closingState = state;\r\n this.emitState('closing-state', state);\r\n }\r\n setAnimationDuration() {\r\n this.hostStyleTransition = 'background-color ' + this.animationDuration + 'ms';\r\n this.containerStyles.transition = 'all ' + this.animationDuration + 'ms ' + this.animationTimingFunction;\r\n }\r\n setBackgroundColor() {\r\n this.hostStyleBackgroundColor = this.backgroundColor;\r\n }\r\n getContainerHeight() {\r\n return this.thumbnailImagePosition.height / this.containerScale + 'px';\r\n }\r\n showThumbnailImage() {\r\n this.thumbnailImage.style.opacity = '';\r\n }\r\n hideThumbnailImage() {\r\n this.thumbnailImage.style.opacity = 0;\r\n }\r\n updateThumbnailPosition() {\r\n this.containerStyles.transform = this.containerInitialPosition;\r\n }\r\n};\nLightboxCommonComponent.ɵfac = function LightboxCommonComponent_Factory(t) { return new (t || LightboxCommonComponent)(ɵngcc0.ɵɵdirectiveInject(EventService)); };\nLightboxCommonComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LightboxCommonComponent, selectors: [[\"lightbox-common\"]], viewQuery: function LightboxCommonComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7);\n ɵngcc0.ɵɵviewQuery(_c1, 7);\n ɵngcc0.ɵɵviewQuery(_c2, 7);\n ɵngcc0.ɵɵviewQuery(_c3, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._imageFirst = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._imageSecond = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._imageLast = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._lightboxImage = _t.first);\n } }, hostVars: 4, hostBindings: function LightboxCommonComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"transition\", ctx.hostStyleTransition)(\"background-color\", ctx.hostStyleBackgroundColor);\n } }, inputs: { lightboxData: \"lightboxData\" }, decls: 0, vars: 0, template: function LightboxCommonComponent_Template(rf, ctx) { }, encapsulation: 2 });\r\nLightboxCommonComponent.ctorParameters = () => [\r\n { type: EventService }\r\n];\r\n__decorate([\r\n Input()\r\n], LightboxCommonComponent.prototype, \"lightboxData\", void 0);\r\n__decorate([\r\n HostBinding('style.backgroundColor')\r\n], LightboxCommonComponent.prototype, \"hostStyleBackgroundColor\", void 0);\r\n__decorate([\r\n HostBinding('style.transition')\r\n], LightboxCommonComponent.prototype, \"hostStyleTransition\", void 0);\r\n__decorate([\r\n ViewChild('imageFirst', { static: true })\r\n], LightboxCommonComponent.prototype, \"_imageFirst\", void 0);\r\n__decorate([\r\n ViewChild('imageSecond', { static: true })\r\n], LightboxCommonComponent.prototype, \"_imageSecond\", void 0);\r\n__decorate([\r\n ViewChild('imageLast', { static: true })\r\n], LightboxCommonComponent.prototype, \"_imageLast\", void 0);\r\n__decorate([\r\n ViewChild('lightboxImage', { static: true })\r\n], LightboxCommonComponent.prototype, \"_lightboxImage\", void 0);\n\nlet LightboxComponent = class LightboxComponent extends LightboxCommonComponent {\r\n constructor(elementRef, ref, eventService) {\r\n super(eventService);\r\n this.elementRef = elementRef;\r\n this.ref = ref;\r\n this.eventService = eventService;\r\n this.spinnerHeight = 30;\r\n this.minTimeout = 30;\r\n this.preloaderTimeout = 100;\r\n this.spinnerStyles = {\r\n transform: ''\r\n };\r\n this.configThumbnailPreloader = true;\r\n this.events = new EventEmitter();\r\n this.hostShown = false;\r\n this.hideControls = false;\r\n }\r\n get simpleMode() {\r\n return this.properties.simpleMode;\r\n }\r\n get hostLightTheme() {\r\n return this.properties.backgroundColor === 'white';\r\n }\r\n get currImagePath() {\r\n let image = this.images[this.index];\r\n let path;\r\n if (!image) {\r\n return false;\r\n }\r\n if (image.fullImage && image.fullImage.path) {\r\n path = image.fullImage.path;\r\n }\r\n else if (image.thumbnailImage && image.thumbnailImage.path) {\r\n path = image.thumbnailImage.path;\r\n }\r\n else if (image.path) {\r\n path = image.path;\r\n }\r\n return path;\r\n }\r\n get prevImagePath() {\r\n return this.images[this.prevIndex];\r\n }\r\n set prevImagePath(value) {\r\n this.images[this.prevIndex] = value;\r\n }\r\n get isHiddenPrevArrow() {\r\n return this.isFirstImage && !this.properties.loop || this.isZoomIn;\r\n }\r\n get isHiddenNextArrow() {\r\n return this.isLastImage && !this.properties.loop || this.isZoomIn;\r\n }\r\n get isPreloader() {\r\n return this.animationMode === 'zoom-preloader' &&\r\n this.showState != 'animation-end' &&\r\n this.currImageLoadingState === 'loading';\r\n }\r\n get imageOrientation() {\r\n if (this.thumbnailImage.naturalWidth > this.thumbnailImage.naturalHeight) {\r\n return 'horizontal';\r\n }\r\n else {\r\n return 'vertical';\r\n }\r\n }\r\n scrolling() {\r\n if (this.showState === 'initial-thumbnail-image' ||\r\n this.showState === 'initial-virtual-image' ||\r\n this.closingState === 'animation') {\r\n this.updateThumbnailPosition();\r\n }\r\n }\r\n onKeyDown(event) {\r\n switch (event.key) {\r\n case 'ArrowLeft':\r\n this.prev();\r\n break;\r\n case 'ArrowRight':\r\n this.next();\r\n break;\r\n case 'Escape':\r\n this.closeLightbox();\r\n break;\r\n }\r\n }\r\n onMouseEnter(event) {\r\n this.hideControls = false;\r\n }\r\n transitionEnd(event) {\r\n if (event.propertyName === \"transform\" && this.hostAnimation) {\r\n this.hostAnimation = false;\r\n }\r\n }\r\n ngOnInit() {\r\n this.currentImageIndex = this.properties.index;\r\n this.initialLightbox();\r\n }\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n if (this.currImageLoadingState === 'not-loaded') {\r\n this.currImageLoadingState = 'loading';\r\n }\r\n }, this.preloaderTimeout);\r\n // Mode: default\r\n if (this.animationMode === 'default') {\r\n setTimeout(() => {\r\n this.showLightboxAnimation();\r\n }, this.minTimeout);\r\n }\r\n }\r\n onImageLoaded() {\r\n // When opening lightbox\r\n if (this.animationMode === 'zoom-preloader' &&\r\n this.showState === 'initial-thumbnail-image') {\r\n this.initialLightboxVirtualImage();\r\n setTimeout(() => {\r\n this.currImageLoadingState = 'uploaded';\r\n this.showLightboxAnimation();\r\n if (this.properties.hideThumbnail) {\r\n this.hideThumbnailImage();\r\n }\r\n }, this.minTimeout);\r\n }\r\n // When opening next / previous image\r\n if (this.showState === 'animation-end') {\r\n this.currImageLoadingState = 'uploaded';\r\n if (this.properties.hideThumbnail) {\r\n this.hideThumbnailImage();\r\n }\r\n }\r\n this.ref.detectChanges();\r\n }\r\n onImageError(event) {\r\n this.currImageLoadingState = 'error';\r\n this.initialLightboxDefault();\r\n setTimeout(() => {\r\n this.showLightboxAnimation();\r\n }, this.minTimeout);\r\n }\r\n onContainerClick(event) {\r\n if (event.target === this.lightboxContainerElem.nativeElement || this.simpleMode) {\r\n this.closeLightbox();\r\n }\r\n }\r\n initialLightbox() {\r\n this.setMaxDimensions();\r\n this.setAnimationDuration();\r\n switch (this.animationMode) {\r\n case 'zoom-preloader':\r\n this.initialLightboxThumbnailImage();\r\n break;\r\n case 'default':\r\n this.initialLightboxDefault();\r\n break;\r\n }\r\n }\r\n initialLightboxDefault() {\r\n this.showState = 'initial-default';\r\n this.containerStyles = {\r\n transform: 'translate3d(0, 0, 0)',\r\n height: '100%',\r\n width: '100%',\r\n opacity: '0'\r\n };\r\n // next step: AfterViewInit\r\n }\r\n initialLightboxVirtualImage() {\r\n this.setShowState('initial-virtual-image');\r\n this.containerStyles = {\r\n transform: this.containerInitialPosition,\r\n height: this.virtualImageDimension.height + 'px',\r\n width: this.virtualImageDimension.width + 'px'\r\n };\r\n // next step: onImageLoaded() -> showLightboxAnimation()\r\n }\r\n initialLightboxThumbnailImage() {\r\n this.setShowState('initial-thumbnail-image');\r\n this.containerStyles = {\r\n transform: this.containerInitialPosition,\r\n height: this.thumbnailImagePosition.height + 'px',\r\n width: this.thumbnailImagePosition.width + 'px'\r\n };\r\n // next step: onImageLoaded()\r\n }\r\n showLightboxAnimation() {\r\n this.hostAnimation = true;\r\n this.setShowState('animation');\r\n this.hostShown = true;\r\n this.setBackgroundColor();\r\n this.setAnimationDuration();\r\n // Mode: zoom preloader\r\n if (this.animationMode === 'zoom-preloader' &&\r\n this.currImageLoadingState !== 'error') {\r\n this.containerStyles.transform = this.containerFullscreenPosition;\r\n }\r\n // Mode: default\r\n if (this.animationMode === 'default') {\r\n this.containerStyles.opacity = '1';\r\n }\r\n // next step: handleLightboxTransitionEnd\r\n }\r\n showLightboxAnimationEnd() {\r\n this.setShowState('animation-end');\r\n this.containerStyles = {\r\n transform: 'translate3d(0, 0, 0)',\r\n height: '100%',\r\n width: '100%',\r\n };\r\n }\r\n closeLightbox() {\r\n this.setClosingState('initial');\r\n this.hostShown = false;\r\n this.closeLightboxInitial();\r\n }\r\n closeLightboxInitial() {\r\n this.setClosingState('initial-styles');\r\n // Mode: zoom preloader\r\n if (this.animationMode === 'zoom-preloader') {\r\n this.containerStyles = {\r\n transform: this.containerFullscreenPosition,\r\n height: this.virtualImageDimension.height + 'px',\r\n width: this.virtualImageDimension.width + 'px',\r\n };\r\n }\r\n // Mode: default\r\n if (this.animationMode === 'default') {\r\n this.containerStyles.opacity = '1';\r\n }\r\n setTimeout(() => {\r\n this.closeLightboxAnimation();\r\n }, this.minTimeout);\r\n }\r\n closeLightboxAnimation() {\r\n this.setClosingState('animation');\r\n // Mode: zoom preloader\r\n if (this.animationMode === 'zoom-preloader') {\r\n this.hostAnimation = true;\r\n this.containerStyles = {\r\n transform: this.containerInitialPosition,\r\n height: this.getContainerHeight(),\r\n width: this.getContainerWidth(),\r\n };\r\n this.hostStyleBackgroundColor = '';\r\n }\r\n // Mode: default\r\n if (this.animationMode === 'default') {\r\n this.hostAnimation = true;\r\n this.containerStyles.opacity = '0';\r\n this.hostStyleBackgroundColor = '';\r\n }\r\n this.setAnimationDuration();\r\n // next step: handleLightboxTransitionEnd\r\n if (this.animationDuration === 0) { // in the future, change to a type conversion getter\r\n this.closeLightboxAnimationEnd();\r\n }\r\n }\r\n closeLightboxAnimationEnd() {\r\n this.setClosingState('animation-end');\r\n this.events.emit({ type: 'close' });\r\n // Mode: zoom preloader\r\n if (this.animationMode === 'zoom-preloader') {\r\n this.showThumbnailImage();\r\n }\r\n }\r\n /*\r\n * Transition End\r\n */\r\n handleLightboxTransitionEnd(event) {\r\n if (this.showState === 'animation') {\r\n this.showLightboxAnimationEnd();\r\n }\r\n // Last close step\r\n if (this.closingState === 'animation') {\r\n this.closeLightboxAnimationEnd();\r\n }\r\n }\r\n next() {\r\n if (this.animationMode === 'zoom-preloader') {\r\n this.showThumbnailImage();\r\n }\r\n if (this.isLastImage) {\r\n if (this.properties.loop) {\r\n this.currentImageIndex = 0;\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n else {\r\n this.currentImageIndex++;\r\n this.currImageLoadingState = 'loading';\r\n }\r\n setTimeout(() => {\r\n if (this.currImageLoadingState !== 'uploaded') {\r\n this.currImageLoadingState = 'loading';\r\n }\r\n }, this.preloaderTimeout);\r\n }\r\n prev() {\r\n if (this.animationMode === 'zoom-preloader') {\r\n this.showThumbnailImage();\r\n }\r\n if (this.isFirstImage) {\r\n if (this.properties.loop) {\r\n this.currentImageIndex = this.latestImageIndex;\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n else {\r\n this.currentImageIndex--;\r\n this.currImageLoadingState = 'loading';\r\n }\r\n setTimeout(() => {\r\n if (this.currImageLoadingState !== 'uploaded') {\r\n this.currImageLoadingState = 'loading';\r\n }\r\n }, this.preloaderTimeout);\r\n }\r\n setMaxDimensions() {\r\n this.lightboxImage.nativeElement.style.maxHeight = 'calc(' + this.properties.imageMaxHeight + ')';\r\n this.lightboxImage.nativeElement.style.maxWidth = this.properties.imageMaxWidth;\r\n }\r\n handlePinchZoomEvents(event) {\r\n if (event.type === \"zoom-in\") {\r\n this.isZoomIn = true;\r\n }\r\n if (event.type === \"zoom-out\") {\r\n this.isZoomIn = false;\r\n }\r\n }\r\n getContainerWidth() {\r\n return this.thumbnailImagePosition.width / this.containerScale + 'px';\r\n }\r\n};\nLightboxComponent.ɵfac = function LightboxComponent_Factory(t) { return new (t || LightboxComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(EventService)); };\nLightboxComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LightboxComponent, selectors: [[\"crystal-lightbox\"]], viewQuery: function LightboxComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c4, 7);\n ɵngcc0.ɵɵviewQuery(_c5, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.prevImageElem = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.lightboxContainerElem = _t.first);\n } }, hostVars: 12, hostBindings: function LightboxComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"scroll\", function LightboxComponent_scroll_HostBindingHandler() { return ctx.scrolling(); }, false, ɵngcc0.ɵɵresolveWindow)(\"keydown\", function LightboxComponent_keydown_HostBindingHandler($event) { return ctx.onKeyDown($event); }, false, ɵngcc0.ɵɵresolveWindow)(\"mouseenter\", function LightboxComponent_mouseenter_HostBindingHandler($event) { return ctx.onMouseEnter($event); })(\"transitionend\", function LightboxComponent_transitionend_HostBindingHandler($event) { return ctx.transitionEnd($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"background-color\", ctx.hostStyleBackgroundColor);\n ɵngcc0.ɵɵclassProp(\"lightbox-shown\", ctx.hostShown)(\"lightbox-hide-controls\", ctx.hideControls)(\"lightbox-simple-mode\", ctx.simpleMode)(\"lightbox-light\", ctx.hostLightTheme)(\"lightbox-animation\", ctx.hostAnimation);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 11, vars: 11, consts: [[\"class\", \"lightbox-counter\", 4, \"ngIf\"], [\"class\", \"lightbox-close\", 3, \"click\", 4, \"ngIf\"], [\"class\", \"lightbox-spinner\", 4, \"ngIf\"], [1, \"lightbox-container\", 3, \"ngStyle\", \"transitionend\", \"click\"], [\"lightboxContainer\", \"\"], [\"class\", \"lightbox-preloader\", 4, \"ngIf\"], [\"class\", \"lightbox-error\", 4, \"ngIf\"], [1, \"lightbox-curr-image\", 3, \"src\", \"load\", \"error\"], [\"lightboxImage\", \"\"], [1, \"lightbox-prev\", 3, \"hidden\", \"click\"], [1, \"lightbox-next\", 3, \"hidden\", \"click\"], [1, \"lightbox-counter\"], [1, \"lightbox-close\", 3, \"click\"], [1, \"lightbox-spinner\"], [1, \"lightbox-preloader\"], [1, \"lightbox-error\"]], template: function LightboxComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, LightboxComponent_div_0_Template, 2, 1, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, LightboxComponent_div_1_Template, 2, 1, \"div\", 1);\n ɵngcc0.ɵɵtemplate(2, LightboxComponent_div_2_Template, 1, 0, \"div\", 2);\n ɵngcc0.ɵɵelementStart(3, \"div\", 3, 4);\n ɵngcc0.ɵɵlistener(\"transitionend\", function LightboxComponent_Template_div_transitionend_3_listener($event) { return ctx.handleLightboxTransitionEnd($event); })(\"click\", function LightboxComponent_Template_div_click_3_listener($event) { return ctx.onContainerClick($event); });\n ɵngcc0.ɵɵtemplate(5, LightboxComponent_div_5_Template, 2, 0, \"div\", 5);\n ɵngcc0.ɵɵtemplate(6, LightboxComponent_div_6_Template, 2, 0, \"div\", 6);\n ɵngcc0.ɵɵelementStart(7, \"img\", 7, 8);\n ɵngcc0.ɵɵlistener(\"load\", function LightboxComponent_Template_img_load_7_listener() { return ctx.onImageLoaded(); })(\"error\", function LightboxComponent_Template_img_error_7_listener($event) { return ctx.onImageError($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(9, \"div\", 9);\n ɵngcc0.ɵɵlistener(\"click\", function LightboxComponent_Template_div_click_9_listener() { return ctx.prev(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(10, \"div\", 10);\n ɵngcc0.ɵɵlistener(\"click\", function LightboxComponent_Template_div_click_10_listener() { return ctx.next(); });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.properties.counter && ctx.images.length > 1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.simpleMode);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.currImageLoadingState === \"loading\" && ctx.showState === \"animation-end\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx.containerStyles);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isPreloader);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.currImageLoadingState === \"error\" && !ctx.closingState);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"lightbox-show\", ctx.currImageLoadingState === \"uploaded\");\n ɵngcc0.ɵɵproperty(\"src\", ctx.currImagePath, ɵngcc0.ɵɵsanitizeUrl);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"hidden\", ctx.isHiddenPrevArrow);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"hidden\", ctx.isHiddenNextArrow);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgStyle], styles: [\".lightbox-spinner[_ngcontent-%COMP%], .lightbox-spinner[_ngcontent-%COMP%]:after, .lightbox-spinner[_ngcontent-%COMP%]:before{border-radius:50%;width:10px;height:10px;-webkit-animation:1.5s ease-in-out infinite lightbox-load;animation:1.5s ease-in-out infinite lightbox-load}.lightbox-spinner[_ngcontent-%COMP%]{color:#fff;font-size:10px;margin:0 auto 20px;position:relative;text-indent:-9999em;transform:translateZ(0);-webkit-animation-delay:-.16s;animation-delay:-.16s}.lightbox-spinner[_ngcontent-%COMP%]:after, .lightbox-spinner[_ngcontent-%COMP%]:before{content:\\\"\\\";position:absolute;top:0}.lightbox-spinner[_ngcontent-%COMP%]:before{left:-32px;-webkit-animation-delay:-.32s;animation-delay:-.32s}.lightbox-spinner[_ngcontent-%COMP%]:after{left:32px}@-webkit-keyframes lightbox-load{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}@keyframes lightbox-load{0%,100%,80%{box-shadow:0 10px 0 -1.3em}40%{box-shadow:0 10px 0 0}}.lightbox-shown[_nghost-%COMP%]{opacity:1}.lightbox-shown[_nghost-%COMP%] .lightbox-close[_ngcontent-%COMP%], .lightbox-shown[_nghost-%COMP%] .lightbox-next[_ngcontent-%COMP%], .lightbox-shown[_nghost-%COMP%] .lightbox-prev[_ngcontent-%COMP%]{opacity:.5;transition-delay:.1s}.lightbox-shown[_nghost-%COMP%] .lightbox-close[_ngcontent-%COMP%]:hover, .lightbox-shown[_nghost-%COMP%] .lightbox-next[_ngcontent-%COMP%]:hover, .lightbox-shown[_nghost-%COMP%] .lightbox-prev[_ngcontent-%COMP%]:hover{opacity:1;transition-delay:0}.lightbox-shown[_nghost-%COMP%] .lightbox-counter[_ngcontent-%COMP%]{opacity:1}.lightbox-hide-controls[_nghost-%COMP%] .lightbox-close[_ngcontent-%COMP%], .lightbox-hide-controls[_nghost-%COMP%] .lightbox-next[_ngcontent-%COMP%], .lightbox-hide-controls[_nghost-%COMP%] .lightbox-prev[_ngcontent-%COMP%]{opacity:0}.lightbox-simple-mode[_nghost-%COMP%] .lightbox-container[_ngcontent-%COMP%]{cursor:zoom-out}[_nghost-%COMP%]:not(.lightbox-animation) .lightbox-container[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;top:0;left:0;height:100%}.lightbox-light[_nghost-%COMP%]{color:#000;text-shadow:none}[_nghost-%COMP%]{position:fixed;top:0;left:0;width:100%;height:100%;color:#fff;text-shadow:0 0 1px rgba(0,0,0,.65);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:10000}[_nghost-%COMP%] img[_ngcontent-%COMP%]{opacity:1;max-width:100%;max-height:100%}[_nghost-%COMP%] img.lightbox-curr-image.lightbox-show[_ngcontent-%COMP%]{opacity:1}[_nghost-%COMP%] img.lightbox-curr-image[_ngcontent-%COMP%]{opacity:0;z-index:10}[_nghost-%COMP%] .lightbox-container.lightbox-hide[_ngcontent-%COMP%]{display:none}[_nghost-%COMP%] .lightbox-container[_ngcontent-%COMP%]{position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transform-origin:top left}[_nghost-%COMP%] .lightbox-preloader[_ngcontent-%COMP%]{background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;width:100%;height:100%;position:absolute}[_nghost-%COMP%] .lightbox-spinner[_ngcontent-%COMP%]{position:absolute;top:51%;left:50%;margin-top:-15px;margin-left:-5px}[_nghost-%COMP%] .lightbox-preloader[_ngcontent-%COMP%] .lightbox-spinner[_ngcontent-%COMP%]{margin-top:-9px;margin-left:-3px}[_nghost-%COMP%] .lightbox-preloader[_ngcontent-%COMP%] .lightbox-spinner[_ngcontent-%COMP%], [_nghost-%COMP%] .lightbox-preloader[_ngcontent-%COMP%] .lightbox-spinner[_ngcontent-%COMP%]:after, [_nghost-%COMP%] .lightbox-preloader[_ngcontent-%COMP%] .lightbox-spinner[_ngcontent-%COMP%]:before{width:6px;height:6px}[_nghost-%COMP%] .lightbox-preloader[_ngcontent-%COMP%] .lightbox-spinner[_ngcontent-%COMP%]:before{left:-21px}[_nghost-%COMP%] .lightbox-preloader[_ngcontent-%COMP%] .lightbox-spinner[_ngcontent-%COMP%]:after{left:21px}[_nghost-%COMP%] .lightbox-counter[_ngcontent-%COMP%]{text-align:left;position:absolute;left:22px;top:13px;font-size:14px;z-index:30}[_nghost-%COMP%] .lightbox-description[_ngcontent-%COMP%]{text-align:center;max-width:calc(100% - 200px);margin:0 auto;font-size:14px;line-height:43px;position:relative;z-index:50}[_nghost-%COMP%] .lightbox-error[_ngcontent-%COMP%]{color:rgba(255,255,255,.75);font-size:19px}[_nghost-%COMP%] .lightbox-close[_ngcontent-%COMP%]{position:absolute;top:0;right:0;padding:13px 22px;font-size:13px;text-transform:uppercase;cursor:pointer;opacity:.5;z-index:30;transition:opacity .1s ease-in-out}[_nghost-%COMP%] .lightbox-next[_ngcontent-%COMP%], [_nghost-%COMP%] .lightbox-prev[_ngcontent-%COMP%]{width:100px;height:100%;position:absolute;top:0;cursor:pointer;opacity:.5;z-index:20;transition:opacity .1s ease-in-out;-webkit-tap-highlight-color:rgba(255,255,255,0)}[_nghost-%COMP%] .lightbox-prev[_ngcontent-%COMP%]{left:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAiCAYAAABbXymAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjMzMTZCQzFERDgzMTExRTc5QUYxQTUxRDI5MkM5ODZCIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjMzMTZCQzFFRDgzMTExRTc5QUYxQTUxRDI5MkM5ODZCIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MzMxNkJDMUJEODMxMTFFNzlBRjFBNTFEMjkyQzk4NkIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzMxNkJDMUNEODMxMTFFNzlBRjFBNTFEMjkyQzk4NkIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7VrwZKAAAClElEQVR42qzWSY8SQRgGYLoVHPeTXlwCiIwMArJGtiABNep4IGZi4oEfMJooLjePrnFGf5yJS0hYmq2b/aBxiQ6+lRRJdaUZq5vp5E2TLnioVFd9VZLN+iUxIdeMiW2fRVCmvz2DpJBVCk6X6SVBHQRLpVKb7Xb782g0Usrl8jM8W0P20+9YQn3JZPIhwN6MXoPBoI3nG8iKGZhF14A+AqrOmKtWq31F213kkOgQ69B0Ol0BqrFot9vV/H7/c7RfEoVZ1G+EdjqdvtfrfYn2K8gJkaHQodlstjIej/ssihdH0Ddov4acQo7QlycJo5PJhEc1j8fzmqJk2h1D7Lv1lkUv5nK5xzzaarWMUIcwms/nCTrgUbfbTdCrVtAAQafTqQ5VFEVdCi0UCk/Q0yGLNptN1el0vqLoaRHUxqPoKY/2KFo0g0r0ba4Wi8WnQEcs2mg0VAPULrJsZTqpNzDZ6yxar9dVl8tFVtR10SnFohJdgnZYuh9IkjSTZfknPn5DviO/kL/IjkgtIOhhJJ7JZF5gdU24hdDG6qqg/QJywEzlmg/FSTLhE4nE9nA4nHJFRvH5fJto94gOBfvyjtJxXI/H4x+A63re6/UUVDCCnzeDz6fbceQscjsWi703wFsM7hDBJQN8PRqNbmNn0OGapu0JfoviYx4PBAL30e5dCg+Hw0Z4e8/wfr/P451QKPRgaRzIFjDdksefsbjdKn5zER6JRMiwuP+3Ne2KB4PBLVVVR1xd+YK2O2bOFYvwd8CHbK/x/J6Zc8Ui/AZmxdtqtdrAwlFLpRLZrS/PYcnkEUuiY7hCS+g5sovT55+Qj7QS/jYD8zjp/UF6t9GS+oPed8zCLC5zJ0tSo//Q+8wKLHTw/ifAAMQVS4vHZR2VAAAAAElFTkSuQmCC) center left 22px no-repeat}[_nghost-%COMP%] .lightbox-next[_ngcontent-%COMP%]{right:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAiCAYAAABbXymAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjEyNDE3MDE1RDgzMTExRTc5NjM4QTIzQzI2Rjc2Qjg2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjEyNDE3MDE2RDgzMTExRTc5NjM4QTIzQzI2Rjc2Qjg2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTI0MTcwMTNEODMxMTFFNzk2MzhBMjNDMjZGNzZCODYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MTI0MTcwMTREODMxMTFFNzk2MzhBMjNDMjZGNzZCODYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7zv5BKAAACl0lEQVR42rTW224SQRwGcHZb8FT1Sm88BJCiFAE5JpyCBNRE8coYEy94AGqi9XDXS0+JVh/CB/EhiFET5LjAclgWjaa1aazfJDM6u6LuLjrJl2124cd0duY/I9h+NoELabtcTLcFCon0bw+SRE4h28hn2xyNoIvISrlcfqAoSluSpLepVKqCe6cRB/2MYAXei1wfjUbSLm34gX4ymbyN+z6rOBmC/ciNer3+fpdrwGXgd8h/YwVn8Dm/37/e6/UGOnyQTqfXrOBsKI4g571e76Nutzv8De43gwv05S0hx5CLwJ/iBWrwyWQyzGazpnHyITtyCDlBcI/H8wS4ZlhUVbWMO/R4p9P5Bc/lcnfx/Ow8+AW32z0LH+Xz+X+Dt9ttmcen0ynDA1bx4wR3Op2PW62WrOv5uFAo3JsXL1K8r+v5LNxmZrb8wJvNpn5YlGKxeJ/WFruZBcRPxUsul2u90WhocCyqBqk3dLGJiwbgb/T6FflCSqkoiluCIGjqNGzWgQUz9YR8aQ9yBqtyDQtH0q1KNZPJPMTzOHKA4oaHwuPz+SooUm0eHY/H00QisUEWFHKUDYVRdBmVr9Lv9/WoGo/HX+J5iY7/QSMvj003hnb0aCwWe4HnV5GTyGEj002DDgYDDYqdRo1Goxu0p3pU+BvqDQQCqzPQCUWvzINKejQcDltHQ6HQLaBdHh0Oh5ZRO0OBaFD8iIL7z82ibGtyRyKR1T+gl82g/GZ6Dev/HY/KsqwEg0FLKL/93+R7C3QM9Nk8KDtiOWq12jb2s2XS01Kp9Kparb7G/TfIR2QT2TF6UBS42bBEi/UK/SIBPyCfkC0zKA+z6rWPXm30tLlJr6ZQ/ZmYDYnI1eEdejV9Thb+18H7uwADAOG/Wcm4x+knAAAAAElFTkSuQmCC) center right 22px no-repeat}[_nghost-%COMP%] .lightbox-close[_ngcontent-%COMP%], [_nghost-%COMP%] .lightbox-counter[_ngcontent-%COMP%], [_nghost-%COMP%] .lightbox-next[_ngcontent-%COMP%], [_nghost-%COMP%] .lightbox-prev[_ngcontent-%COMP%]{opacity:0;transition:opacity 150ms cubic-bezier(.475,.105,.445,.945)}\"] });\r\nLightboxComponent.ctorParameters = () => [\r\n { type: ElementRef },\r\n { type: ChangeDetectorRef },\r\n { type: EventService }\r\n];\r\n__decorate([\r\n HostBinding('class.lightbox-shown')\r\n], LightboxComponent.prototype, \"hostShown\", void 0);\r\n__decorate([\r\n HostBinding('class.lightbox-hide-controls')\r\n], LightboxComponent.prototype, \"hideControls\", void 0);\r\n__decorate([\r\n HostBinding('class.lightbox-animation')\r\n], LightboxComponent.prototype, \"hostAnimation\", void 0);\r\n__decorate([\r\n HostBinding('class.lightbox-simple-mode')\r\n], LightboxComponent.prototype, \"simpleMode\", null);\r\n__decorate([\r\n HostBinding('class.lightbox-light')\r\n], LightboxComponent.prototype, \"hostLightTheme\", null);\r\n__decorate([\r\n HostBinding('style.backgroundColor')\r\n], LightboxComponent.prototype, \"hostStyleBackgroundColor\", void 0);\r\n__decorate([\r\n ViewChild('prevImageElem', { static: true })\r\n], LightboxComponent.prototype, \"prevImageElem\", void 0);\r\n__decorate([\r\n ViewChild('lightboxContainer', { static: true })\r\n], LightboxComponent.prototype, \"lightboxContainerElem\", void 0);\r\n__decorate([\r\n HostListener('window:scroll')\r\n], LightboxComponent.prototype, \"scrolling\", null);\r\n__decorate([\r\n HostListener('window:keydown', ['$event'])\r\n], LightboxComponent.prototype, \"onKeyDown\", null);\r\n__decorate([\r\n HostListener(\"mouseenter\", ['$event'])\r\n], LightboxComponent.prototype, \"onMouseEnter\", null);\r\n__decorate([\r\n HostListener('transitionend', ['$event'])\r\n], LightboxComponent.prototype, \"transitionEnd\", null);\n\nconst DefaultProperties = {\r\n loop: false,\r\n index: 0,\r\n counter: false,\r\n imageMaxHeight: \"100%\",\r\n imageMaxWidth: \"100%\",\r\n animationDuration: 350,\r\n animationMode: 'zoom-preloader',\r\n animationTimingFunction: 'cubic-bezier(0.475, 0.105, 0.445, 0.945)',\r\n closeButtonText: 'Close',\r\n counterSeparator: '/',\r\n disable: false,\r\n simpleMode: false,\r\n backgroundColor: 'black',\r\n backgroundOpacity: 1,\r\n hideThumbnail: true,\r\n gestureEnable: false\r\n};\n\nlet CrystalLightbox = class CrystalLightbox {\r\n constructor(componentFactoryResolver, appRef, injector) {\r\n this.componentFactoryResolver = componentFactoryResolver;\r\n this.appRef = appRef;\r\n this.injector = injector;\r\n }\r\n appendComponentToBody(component, lightboxData) {\r\n const componentRef = this.componentFactoryResolver\r\n .resolveComponentFactory(component)\r\n .create(this.injector);\r\n componentRef.instance.lightboxData = lightboxData;\r\n this.appRef.attachView(componentRef.hostView);\r\n const domElem = componentRef.hostView.rootNodes[0];\r\n // Add to body\r\n document.body.appendChild(domElem);\r\n componentRef.instance.events.subscribe((event) => {\r\n if (event.type === 'close') {\r\n this.appRef.detachView(componentRef.hostView);\r\n componentRef.destroy();\r\n }\r\n });\r\n }\r\n open(lightboxData) {\r\n lightboxData.properties = this.applyPropertieDefaults(DefaultProperties, lightboxData.properties);\r\n let component = this.getLightboxComponent();\r\n this.appendComponentToBody(component, lightboxData);\r\n }\r\n getLightboxComponent() {\r\n return LightboxComponent;\r\n }\r\n applyPropertieDefaults(defaultProperties, properties) {\r\n if (!properties) {\r\n properties = {};\r\n }\r\n if (!properties.index) {\r\n properties.index = 0;\r\n }\r\n this._defaultProperties = Object.assign({}, defaultProperties);\r\n return Object.assign(this._defaultProperties, properties);\r\n }\r\n};\nCrystalLightbox.ɵfac = function CrystalLightbox_Factory(t) { return new (t || CrystalLightbox)(ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(ɵngcc0.ApplicationRef), ɵngcc0.ɵɵinject(ɵngcc0.Injector)); };\nCrystalLightbox.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CrystalLightbox, factory: function (t) { return CrystalLightbox.ɵfac(t); } });\r\nCrystalLightbox.ctorParameters = () => [\r\n { type: ComponentFactoryResolver },\r\n { type: ApplicationRef },\r\n { type: Injector }\r\n];\n\nlet LightboxDirective = class LightboxDirective {\r\n constructor(lightbox, eventService, elementRef) {\r\n this.lightbox = lightbox;\r\n this.eventService = eventService;\r\n this.elementRef = elementRef;\r\n this.properties = {};\r\n this.events = new EventEmitter();\r\n this.hostLightboxGroup = true;\r\n this.globalEventsSubscription = this.eventService.emitter.subscribe((event) => {\r\n this.handleGlobalEvents(event);\r\n });\r\n }\r\n get hostSimpleMode() {\r\n return this.simpleMode;\r\n }\r\n get isGroupImage() {\r\n return this.elementRef.nativeElement.closest(\".lightbox-group\");\r\n }\r\n onClick(event) {\r\n if (this.disable) {\r\n return;\r\n }\r\n if (this.isGroupImage) {\r\n this.eventService.emitChangeEvent({\r\n type: 'thumbnail:click',\r\n elementRef: this.elementRef,\r\n properties: this.properties\r\n });\r\n }\r\n else {\r\n this.image = this.getImage();\r\n this.lightbox.open({\r\n images: [this.image],\r\n properties: this.properties,\r\n index: 0\r\n });\r\n }\r\n }\r\n ngOnChanges(changes) {\r\n this.properties = Object.assign({}, this.properties, this.getProperties(changes));\r\n }\r\n handleGlobalEvents(event) {\r\n this.events.emit(event);\r\n }\r\n getImage() {\r\n let image = {};\r\n const nativeElement = this.elementRef.nativeElement;\r\n if (this.fullImage) {\r\n image.fullImage = this.fullImage;\r\n }\r\n image.thumbnailImage = {\r\n path: nativeElement.src,\r\n height: nativeElement.naturalHeight,\r\n width: nativeElement.naturalWidth\r\n };\r\n image.nativeElement = nativeElement;\r\n return image;\r\n }\r\n ;\r\n getProperties(changes) {\r\n let properties = {};\r\n for (var prop in changes) {\r\n if (prop !== 'fullImage') {\r\n properties[prop] = changes[prop].currentValue;\r\n }\r\n }\r\n return properties;\r\n }\r\n};\nLightboxDirective.ɵfac = function LightboxDirective_Factory(t) { return new (t || LightboxDirective)(ɵngcc0.ɵɵdirectiveInject(CrystalLightbox), ɵngcc0.ɵɵdirectiveInject(EventService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nLightboxDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LightboxDirective, selectors: [[\"\", \"lightbox\", \"\"]], hostVars: 4, hostBindings: function LightboxDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function LightboxDirective_click_HostBindingHandler($event) { return ctx.onClick($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"lightbox-single\", ctx.hostLightboxGroup)(\"lightbox-simple-mode\", ctx.hostSimpleMode);\n } }, inputs: { properties: \"properties\", fullImage: \"fullImage\", loop: \"loop\", backgroundOpacity: \"backgroundOpacity\", counter: \"counter\", imageMaxHeight: \"imageMaxHeight\", imageMaxWidth: \"imageMaxWidth\", animationDuration: \"animationDuration\", animationMode: \"animationMode\", animationTimingFunction: \"animationTimingFunction\", closeButtonText: \"closeButtonText\", counterSeparator: \"counterSeparator\", disable: \"disable\", simpleMode: \"simpleMode\", backgroundColor: \"backgroundColor\", hideThumbnail: \"hideThumbnail\", gestureEnable: \"gestureEnable\" }, outputs: { events: \"events\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\r\nLightboxDirective.ctorParameters = () => [\r\n { type: CrystalLightbox },\r\n { type: EventService },\r\n { type: ElementRef }\r\n];\r\n__decorate([\r\n Input()\r\n], LightboxDirective.prototype, \"fullImage\", void 0);\r\n__decorate([\r\n Input()\r\n], LightboxDirective.prototype, \"properties\", void 0);\r\n__decorate([\r\n Input()\r\n], LightboxDirective.prototype, \"loop\", void 0);\r\n__decorate([\r\n Input()\r\n], LightboxDirective.prototype, \"backgroundOpacity\", void 0);\r\n__decorate([\r\n Input()\r\n], LightboxDirective.prototype, \"counter\", void 0);\r\n__decorate([\r\n Input()\r\n], LightboxDirective.prototype, \"imageMaxHeight\", void 0);\r\n__decorate([\r\n Input()\r\n], LightboxDirective.prototype, \"imageMaxWidth\", void 0);\r\n__decorate([\r\n Input()\r\n], LightboxDirective.prototype, \"animationDuration\", void 0);\r\n__decorate([\r\n Input()\r\n], LightboxDirective.prototype, \"animationMode\", void 0);\r\n__decorate([\r\n Input()\r\n], LightboxDirective.prototype, \"animationTimingFunction\", void 0);\r\n__decorate([\r\n Input()\r\n], LightboxDirective.prototype, \"closeButtonText\", void 0);\r\n__decorate([\r\n Input()\r\n], LightboxDirective.prototype, \"counterSeparator\", void 0);\r\n__decorate([\r\n Input()\r\n], LightboxDirective.prototype, \"disable\", void 0);\r\n__decorate([\r\n Input()\r\n], LightboxDirective.prototype, \"simpleMode\", void 0);\r\n__decorate([\r\n Input()\r\n], LightboxDirective.prototype, \"backgroundColor\", void 0);\r\n__decorate([\r\n Input()\r\n], LightboxDirective.prototype, \"hideThumbnail\", void 0);\r\n__decorate([\r\n Input()\r\n], LightboxDirective.prototype, \"gestureEnable\", void 0);\r\n__decorate([\r\n Output()\r\n], LightboxDirective.prototype, \"events\", void 0);\r\n__decorate([\r\n HostBinding('class.lightbox-single')\r\n], LightboxDirective.prototype, \"hostLightboxGroup\", void 0);\r\n__decorate([\r\n HostBinding('class.lightbox-simple-mode')\r\n], LightboxDirective.prototype, \"hostSimpleMode\", null);\r\n__decorate([\r\n HostListener('click', ['$event'])\r\n], LightboxDirective.prototype, \"onClick\", null);\n\nlet LightboxGroupDirective = class LightboxGroupDirective {\r\n constructor(eventService, lightbox) {\r\n this.eventService = eventService;\r\n this.lightbox = lightbox;\r\n this.thumbnailImages = [];\r\n this.images = [];\r\n this.properties = {};\r\n this.hostLightboxGroup = true;\r\n this.globalEventsSubscription = this.eventService.emitter.subscribe((event) => {\r\n this.handleGlobalEvents(event);\r\n });\r\n }\r\n get lightboxDirectiveList() {\r\n if (this._lightboxDirectiveList) {\r\n return this._lightboxDirectiveList.toArray();\r\n }\r\n else {\r\n return [];\r\n }\r\n }\r\n handleGlobalEvents(event) {\r\n if (event.type === 'thumbnail:click') {\r\n this.thumbnailImageElement = event.elementRef.nativeElement;\r\n this.thumbnailImages = this.getThumbnailImages();\r\n this.thumbnailImageIndex = this.getThumbnailImageIndex(this.thumbnailImageElement);\r\n if (this.thumbnailImageIndex == undefined) {\r\n return;\r\n }\r\n this.thumbnailLightboxDirective = this.getThumbnailLightboxDirective(this.thumbnailImageIndex);\r\n this.images = this.getImages();\r\n this.properties = event.properties;\r\n this.properties.index = this.thumbnailImageIndex;\r\n this.lightbox.open({\r\n images: this.images,\r\n //index: this.thumbnailImageIndex,\r\n properties: this.properties\r\n });\r\n }\r\n }\r\n getThumbnailImageIndex(element) {\r\n const images = this.thumbnailImages;\r\n for (var i = 0; i < images.length; i++) {\r\n if (element === images[i]) {\r\n return i;\r\n }\r\n }\r\n }\r\n getThumbnailLightboxDirective(index) {\r\n return this.lightboxDirectiveList[index];\r\n }\r\n getThumbnailImages() {\r\n let thumbnailImages = [];\r\n this.lightboxDirectiveList.forEach(el => {\r\n thumbnailImages.push(el['elementRef'].nativeElement);\r\n });\r\n return thumbnailImages;\r\n }\r\n getImages() {\r\n let images = [];\r\n this.lightboxDirectiveList.forEach(el => {\r\n let image = {};\r\n const nativeElement = el['elementRef'].nativeElement;\r\n if (el.fullImage) {\r\n image.fullImage = el.fullImage;\r\n }\r\n image.thumbnailImage = {\r\n path: nativeElement.src,\r\n height: nativeElement.naturalHeight,\r\n width: nativeElement.naturalWidth\r\n };\r\n image.nativeElement = nativeElement;\r\n images.push(image);\r\n });\r\n return images;\r\n }\r\n};\nLightboxGroupDirective.ɵfac = function LightboxGroupDirective_Factory(t) { return new (t || LightboxGroupDirective)(ɵngcc0.ɵɵdirectiveInject(EventService), ɵngcc0.ɵɵdirectiveInject(CrystalLightbox)); };\nLightboxGroupDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LightboxGroupDirective, selectors: [[\"\", \"lightbox-group\", \"\"]], contentQueries: function LightboxGroupDirective_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, LightboxDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._lightboxDirectiveList = _t);\n } }, hostVars: 2, hostBindings: function LightboxGroupDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"lightbox-group\", ctx.hostLightboxGroup);\n } } });\r\nLightboxGroupDirective.ctorParameters = () => [\r\n { type: EventService },\r\n { type: CrystalLightbox }\r\n];\r\n__decorate([\r\n HostBinding('class.lightbox-group')\r\n], LightboxGroupDirective.prototype, \"hostLightboxGroup\", void 0);\r\n__decorate([\r\n ContentChildren(LightboxDirective, { descendants: true })\r\n], LightboxGroupDirective.prototype, \"_lightboxDirectiveList\", void 0);\n\nlet CrystalLightboxModule = class CrystalLightboxModule {\r\n};\nCrystalLightboxModule.ɵfac = function CrystalLightboxModule_Factory(t) { return new (t || CrystalLightboxModule)(); };\nCrystalLightboxModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CrystalLightboxModule });\nCrystalLightboxModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [\n CrystalLightbox,\n EventService\n ], imports: [[\n CommonModule\n ]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EventService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LightboxCommonComponent, [{\n type: Component,\n args: [{\n selector: 'lightbox-common',\n template: ''\n }]\n }], function () { return [{ type: EventService }]; }, { hostStyleTransition: [{\n type: HostBinding,\n args: ['style.transition']\n }], hostStyleBackgroundColor: [{\n type: HostBinding,\n args: ['style.backgroundColor']\n }], lightboxData: [{\n type: Input\n }], _imageFirst: [{\n type: ViewChild,\n args: ['imageFirst', { static: true }]\n }], _imageSecond: [{\n type: ViewChild,\n args: ['imageSecond', { static: true }]\n }], _imageLast: [{\n type: ViewChild,\n args: ['imageLast', { static: true }]\n }], _lightboxImage: [{\n type: ViewChild,\n args: ['lightboxImage', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LightboxComponent, [{\n type: Component,\n args: [{\n selector: 'crystal-lightbox',\n template: \"
    1\\\">{{counter}}
    \\n
    {{closeButtonText}}
    \\n
    \\n
    \\n\\n\\t
    \\n\\t\\t
    \\n\\t
    \\n\\n\\t
    Failed to load image
    \\n\\n\\t\\n
    \\n\\n
    \\n
    \",\n styles: [\".lightbox-spinner,.lightbox-spinner:after,.lightbox-spinner:before{border-radius:50%;width:10px;height:10px;-webkit-animation:1.5s ease-in-out infinite lightbox-load;animation:1.5s ease-in-out infinite lightbox-load}.lightbox-spinner{color:#fff;font-size:10px;margin:0 auto 20px;position:relative;text-indent:-9999em;transform:translateZ(0);-webkit-animation-delay:-.16s;animation-delay:-.16s}.lightbox-spinner:after,.lightbox-spinner:before{content:\\\"\\\";position:absolute;top:0}.lightbox-spinner:before{left:-32px;-webkit-animation-delay:-.32s;animation-delay:-.32s}.lightbox-spinner:after{left:32px}@-webkit-keyframes lightbox-load{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}@keyframes lightbox-load{0%,100%,80%{box-shadow:0 10px 0 -1.3em}40%{box-shadow:0 10px 0 0}}:host.lightbox-shown{opacity:1}:host.lightbox-shown .lightbox-close,:host.lightbox-shown .lightbox-next,:host.lightbox-shown .lightbox-prev{opacity:.5;transition-delay:.1s}:host.lightbox-shown .lightbox-close:hover,:host.lightbox-shown .lightbox-next:hover,:host.lightbox-shown .lightbox-prev:hover{opacity:1;transition-delay:0}:host.lightbox-shown .lightbox-counter{opacity:1}:host.lightbox-hide-controls .lightbox-close,:host.lightbox-hide-controls .lightbox-next,:host.lightbox-hide-controls .lightbox-prev{opacity:0}:host.lightbox-simple-mode .lightbox-container{cursor:zoom-out}:host:not(.lightbox-animation) .lightbox-container{display:flex;align-items:center;justify-content:center;top:0;left:0;height:100%}:host.lightbox-light{color:#000;text-shadow:none}:host{position:fixed;top:0;left:0;width:100%;height:100%;color:#fff;text-shadow:0 0 1px rgba(0,0,0,.65);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:10000}:host img{opacity:1;max-width:100%;max-height:100%}:host img.lightbox-curr-image.lightbox-show{opacity:1}:host img.lightbox-curr-image{opacity:0;z-index:10}:host .lightbox-container.lightbox-hide{display:none}:host .lightbox-container{position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transform-origin:top left}:host .lightbox-preloader{background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;width:100%;height:100%;position:absolute}:host .lightbox-spinner{position:absolute;top:51%;left:50%;margin-top:-15px;margin-left:-5px}:host .lightbox-preloader .lightbox-spinner{margin-top:-9px;margin-left:-3px}:host .lightbox-preloader .lightbox-spinner,:host .lightbox-preloader .lightbox-spinner:after,:host .lightbox-preloader .lightbox-spinner:before{width:6px;height:6px}:host .lightbox-preloader .lightbox-spinner:before{left:-21px}:host .lightbox-preloader .lightbox-spinner:after{left:21px}:host .lightbox-counter{text-align:left;position:absolute;left:22px;top:13px;font-size:14px;z-index:30}:host .lightbox-description{text-align:center;max-width:calc(100% - 200px);margin:0 auto;font-size:14px;line-height:43px;position:relative;z-index:50}:host .lightbox-error{color:rgba(255,255,255,.75);font-size:19px}:host .lightbox-close{position:absolute;top:0;right:0;padding:13px 22px;font-size:13px;text-transform:uppercase;cursor:pointer;opacity:.5;z-index:30;transition:opacity .1s ease-in-out}:host .lightbox-next,:host .lightbox-prev{width:100px;height:100%;position:absolute;top:0;cursor:pointer;opacity:.5;z-index:20;transition:opacity .1s ease-in-out;-webkit-tap-highlight-color:rgba(255,255,255,0)}:host .lightbox-prev{left:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAiCAYAAABbXymAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjMzMTZCQzFERDgzMTExRTc5QUYxQTUxRDI5MkM5ODZCIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjMzMTZCQzFFRDgzMTExRTc5QUYxQTUxRDI5MkM5ODZCIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MzMxNkJDMUJEODMxMTFFNzlBRjFBNTFEMjkyQzk4NkIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzMxNkJDMUNEODMxMTFFNzlBRjFBNTFEMjkyQzk4NkIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7VrwZKAAAClElEQVR42qzWSY8SQRgGYLoVHPeTXlwCiIwMArJGtiABNep4IGZi4oEfMJooLjePrnFGf5yJS0hYmq2b/aBxiQ6+lRRJdaUZq5vp5E2TLnioVFd9VZLN+iUxIdeMiW2fRVCmvz2DpJBVCk6X6SVBHQRLpVKb7Xb782g0Usrl8jM8W0P20+9YQn3JZPIhwN6MXoPBoI3nG8iKGZhF14A+AqrOmKtWq31F213kkOgQ69B0Ol0BqrFot9vV/H7/c7RfEoVZ1G+EdjqdvtfrfYn2K8gJkaHQodlstjIej/ssihdH0Ddov4acQo7QlycJo5PJhEc1j8fzmqJk2h1D7Lv1lkUv5nK5xzzaarWMUIcwms/nCTrgUbfbTdCrVtAAQafTqQ5VFEVdCi0UCk/Q0yGLNptN1el0vqLoaRHUxqPoKY/2KFo0g0r0ba4Wi8WnQEcs2mg0VAPULrJsZTqpNzDZ6yxar9dVl8tFVtR10SnFohJdgnZYuh9IkjSTZfknPn5DviO/kL/IjkgtIOhhJJ7JZF5gdU24hdDG6qqg/QJywEzlmg/FSTLhE4nE9nA4nHJFRvH5fJto94gOBfvyjtJxXI/H4x+A63re6/UUVDCCnzeDz6fbceQscjsWi703wFsM7hDBJQN8PRqNbmNn0OGapu0JfoviYx4PBAL30e5dCg+Hw0Z4e8/wfr/P451QKPRgaRzIFjDdksefsbjdKn5zER6JRMiwuP+3Ne2KB4PBLVVVR1xd+YK2O2bOFYvwd8CHbK/x/J6Zc8Ui/AZmxdtqtdrAwlFLpRLZrS/PYcnkEUuiY7hCS+g5sovT55+Qj7QS/jYD8zjp/UF6t9GS+oPed8zCLC5zJ0tSo//Q+8wKLHTw/ifAAMQVS4vHZR2VAAAAAElFTkSuQmCC) center left 22px no-repeat}:host .lightbox-next{right:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAiCAYAAABbXymAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjEyNDE3MDE1RDgzMTExRTc5NjM4QTIzQzI2Rjc2Qjg2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjEyNDE3MDE2RDgzMTExRTc5NjM4QTIzQzI2Rjc2Qjg2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTI0MTcwMTNEODMxMTFFNzk2MzhBMjNDMjZGNzZCODYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MTI0MTcwMTREODMxMTFFNzk2MzhBMjNDMjZGNzZCODYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7zv5BKAAACl0lEQVR42rTW224SQRwGcHZb8FT1Sm88BJCiFAE5JpyCBNRE8coYEy94AGqi9XDXS0+JVh/CB/EhiFET5LjAclgWjaa1aazfJDM6u6LuLjrJl2124cd0duY/I9h+NoELabtcTLcFCon0bw+SRE4h28hn2xyNoIvISrlcfqAoSluSpLepVKqCe6cRB/2MYAXei1wfjUbSLm34gX4ymbyN+z6rOBmC/ciNer3+fpdrwGXgd8h/YwVn8Dm/37/e6/UGOnyQTqfXrOBsKI4g571e76Nutzv8De43gwv05S0hx5CLwJ/iBWrwyWQyzGazpnHyITtyCDlBcI/H8wS4ZlhUVbWMO/R4p9P5Bc/lcnfx/Ow8+AW32z0LH+Xz+X+Dt9ttmcen0ynDA1bx4wR3Op2PW62WrOv5uFAo3JsXL1K8r+v5LNxmZrb8wJvNpn5YlGKxeJ/WFruZBcRPxUsul2u90WhocCyqBqk3dLGJiwbgb/T6FflCSqkoiluCIGjqNGzWgQUz9YR8aQ9yBqtyDQtH0q1KNZPJPMTzOHKA4oaHwuPz+SooUm0eHY/H00QisUEWFHKUDYVRdBmVr9Lv9/WoGo/HX+J5iY7/QSMvj003hnb0aCwWe4HnV5GTyGEj002DDgYDDYqdRo1Goxu0p3pU+BvqDQQCqzPQCUWvzINKejQcDltHQ6HQLaBdHh0Oh5ZRO0OBaFD8iIL7z82ibGtyRyKR1T+gl82g/GZ6Dev/HY/KsqwEg0FLKL/93+R7C3QM9Nk8KDtiOWq12jb2s2XS01Kp9Kparb7G/TfIR2QT2TF6UBS42bBEi/UK/SIBPyCfkC0zKA+z6rWPXm30tLlJr6ZQ/ZmYDYnI1eEdejV9Thb+18H7uwADAOG/Wcm4x+knAAAAAElFTkSuQmCC) center right 22px no-repeat}:host .lightbox-close,:host .lightbox-counter,:host .lightbox-next,:host .lightbox-prev{opacity:0;transition:opacity 150ms cubic-bezier(.475,.105,.445,.945)}\"]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: EventService }]; }, { hostShown: [{\n type: HostBinding,\n args: ['class.lightbox-shown']\n }], hideControls: [{\n type: HostBinding,\n args: ['class.lightbox-hide-controls']\n }], simpleMode: [{\n type: HostBinding,\n args: ['class.lightbox-simple-mode']\n }], hostLightTheme: [{\n type: HostBinding,\n args: ['class.lightbox-light']\n }], scrolling: [{\n type: HostListener,\n args: ['window:scroll']\n }], onKeyDown: [{\n type: HostListener,\n args: ['window:keydown', ['$event']]\n }], onMouseEnter: [{\n type: HostListener,\n args: [\"mouseenter\", ['$event']]\n }], transitionEnd: [{\n type: HostListener,\n args: ['transitionend', ['$event']]\n }], hostAnimation: [{\n type: HostBinding,\n args: ['class.lightbox-animation']\n }], hostStyleBackgroundColor: [{\n type: HostBinding,\n args: ['style.backgroundColor']\n }], prevImageElem: [{\n type: ViewChild,\n args: ['prevImageElem', { static: true }]\n }], lightboxContainerElem: [{\n type: ViewChild,\n args: ['lightboxContainer', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CrystalLightbox, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ApplicationRef }, { type: ɵngcc0.Injector }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LightboxDirective, [{\n type: Directive,\n args: [{\n selector: '[lightbox]'\n }]\n }], function () { return [{ type: CrystalLightbox }, { type: EventService }, { type: ɵngcc0.ElementRef }]; }, { properties: [{\n type: Input\n }], events: [{\n type: Output\n }], hostLightboxGroup: [{\n type: HostBinding,\n args: ['class.lightbox-single']\n }], hostSimpleMode: [{\n type: HostBinding,\n args: ['class.lightbox-simple-mode']\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], fullImage: [{\n type: Input\n }], loop: [{\n type: Input\n }], backgroundOpacity: [{\n type: Input\n }], counter: [{\n type: Input\n }], imageMaxHeight: [{\n type: Input\n }], imageMaxWidth: [{\n type: Input\n }], animationDuration: [{\n type: Input\n }], animationMode: [{\n type: Input\n }], animationTimingFunction: [{\n type: Input\n }], closeButtonText: [{\n type: Input\n }], counterSeparator: [{\n type: Input\n }], disable: [{\n type: Input\n }], simpleMode: [{\n type: Input\n }], backgroundColor: [{\n type: Input\n }], hideThumbnail: [{\n type: Input\n }], gestureEnable: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LightboxGroupDirective, [{\n type: Directive,\n args: [{\n selector: '[lightbox-group]'\n }]\n }], function () { return [{ type: EventService }, { type: CrystalLightbox }]; }, { hostLightboxGroup: [{\n type: HostBinding,\n args: ['class.lightbox-group']\n }], _lightboxDirectiveList: [{\n type: ContentChildren,\n args: [LightboxDirective, { descendants: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CrystalLightboxModule, [{\n type: NgModule,\n args: [{\n declarations: [\n LightboxCommonComponent,\n LightboxComponent,\n LightboxDirective,\n LightboxGroupDirective\n ],\n imports: [\n CommonModule\n ],\n exports: [\n LightboxDirective,\n LightboxGroupDirective\n ],\n providers: [\n CrystalLightbox,\n EventService\n ],\n bootstrap: [],\n entryComponents: [\n LightboxComponent\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CrystalLightboxModule, { declarations: function () { return [LightboxCommonComponent, LightboxComponent, LightboxDirective, LightboxGroupDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [LightboxDirective, LightboxGroupDirective]; } }); })();\n\n/*\r\n * Public API Surface of angular-lightbox\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { CrystalLightboxModule, EventService, LightboxDirective, LightboxGroupDirective, LightboxCommonComponent as ɵa, LightboxComponent as ɵb, CrystalLightbox as ɵc };\n\n","\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n \r\n \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n\r\n\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n \r\n \r\n\r\n \r\n
    \r\n\r\n 0; else withoutUrl\">\r\n \"product\r\n \r\n \r\n \r\n \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n \r\n \"\"\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n

    {{product.name}}

    \r\n
    \r\n\r\n
    \r\n
      \r\n
    • \r\n {{product.supplierLinkToShow}}\r\n
    • \r\n
    \r\n\r\n \r\n\r\n

    \r\n {{product.summaryText}} Ver más\r\n

    \r\n

    \r\n {{product.shortText}} Ver menos\r\n

    \r\n\r\n\r\n
    \r\n\r\n
    0\">\r\n \r\n \r\n {{product.grossWeightToShow}}\r\n \r\n
    \r\n\r\n
    0\" style=\"padding-top: 5px;\" class=\"pro-rating\">\r\n
      \r\n
      \r\n\r\n
      \r\n
        \r\n
      • {{product.priceToShow}}
      • \r\n
      • {{product.oldPriceToShow}}
      • \r\n
      \r\n
      \r\n\r\n \r\n\r\n
      \r\n \r\n \r\n
      \r\n\r\n

      \r\n {{product.availabilityToShow.value}}\r\n

      \r\n\r\n
      \r\n \r\n \r\n
      \r\n\r\n
      \r\n
      \r\n
      \r\n
      \r\n\r\n
      \r\n \r\n \r\n

      \r\n \r\n {{product.deliveryPeriodToShow}}\r\n

      \r\n

      0\">\r\n \r\n {{product.deliveryPeriodToShow}}\r\n

      \r\n
      \r\n
      \r\n \r\n

      \r\n \r\n {{(selectedContact$ | async)?.locationToShow}}\r\n

      \r\n \r\n

      \r\n \r\n Añadir dirección de entrega\r\n

      \r\n
      \r\n
      \r\n
      \r\n\r\n \r\n\r\n
      \r\n

      \r\n \r\n {{product.shippingChargeToShow.value}}\r\n

      \r\n
      \r\n\r\n
      \r\n

      0\"> Descripción:

      \r\n
      \r\n

      {{sp}}

      \r\n
      \r\n
      \r\n\r\n
      \r\n
      \r\n
      \r\n
      \r\n\r\n
      \r\n
      \r\n
      \r\n
      \r\n\r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n Producto no encontrado.\r\n
      \r\n
      \r\n No encontramos resultados.\r\n El producto no existe o esta desactivado.\r\n
      \r\n \r\n Ver productos\r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n\r\n","import {Component,ElementRef,Inject,OnDestroy,OnInit,PLATFORM_ID,ViewChild,} from \"@angular/core\";\r\nimport { Store, select } from \"@ngrx/store\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { Meta, Title } from \"@angular/platform-browser\";\r\nimport { UrlService } from \"@app/services/url.service\";\r\nimport { _seoContent } from \"@app/marketplace/seo-content/utils\";\r\nimport { Observable, Subscription, of } from \"rxjs\";\r\nimport * as actions from \"../state/product-details/details-actions\";\r\nimport * as detailsSelectors from '@app/marketplace/products/state/product-details/details-selectors';\r\nimport * as cartSelectors from '../state/shopping-cart/cart-selectors';\r\nimport * as locationSelectors from '@app/marketplace/locations/state/locations-selectors';\r\nimport * as contactSelectors from '../../checkout/state/contacts/contacts-selectors';\r\nimport { DOCUMENT, isPlatformBrowser } from \"@angular/common\";\r\nimport { PushToCartComponent } from \"@app/marketplace/shared/_components/push-cart.component\";\r\nimport { NgbModal} from '@ng-bootstrap/ng-bootstrap';\r\nimport {SelectLocationComponent} from '@app/marketplace/locations/select-location/select-location.component';\r\nimport {StorageService} from '@app/services/storage.service';\r\nimport {ContactsComponent} from '@app/marketplace/checkout/contacts/contacts.component';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { take } from 'rxjs/operators';\r\nimport { ViewTypeEnum } from '@app/marketplace/core/enum/viewTypeEnum';\r\nimport * as searchSelectors from '@app/marketplace/products/state/product-search/search-selectors';\r\nimport {ContactOutputInterface} from '@app/marketplace/checkout/_models/contact.model';\r\nimport * as contactsActions from '@app/marketplace/checkout/state/contacts/contacts-actions';\r\nimport * as relatedActions from '@app/marketplace/products/state/related-product/related-actions';\r\n\r\n@Component({\r\n selector: \"app-product-details\",\r\n templateUrl: \"./product-details.component.html\",\r\n styleUrls: [\"./product-details.component.css\"],\r\n})\r\nexport class ProductDetailsComponent extends PushToCartComponent implements OnInit, OnDestroy {\r\n @ViewChild(\"selectItems\", { static: false })\r\n payload: any;\r\n data$ :Observable;\r\n selectedShippingType$: Observable;\r\n shipping$: Observable;\r\n isLoading$ :Observable;\r\n isLoadingPushToCart$ :Observable;\r\n quantity$:Observable;\r\n theme = {'min-width': '273px','min-height' : '151px',background: '#f1f1f1'};\r\n location$:Observable;\r\n provider$: Observable;\r\n protected _subscriptions: Subscription[] = [];\r\n title = 'Cubatel Market | Tu tienda de envíos a Cuba';\r\n description = '¡Somos el Amazon cubano! Descubre nuestras tiendas online para comprar en Cuba desde el exterior. Entregamos a domicilio en todas las provincias cubanas.';\r\n keywords = 'tiendas online para envíos a cuba, amazon cubano, amazon en cuba, tiendas de envíos a cuba, tienda de envíos a cuba, envío a cuba online, tiendas online con envío a cuba, compras online en cuba desde el exterior, tiendas online en cuba para comprar desde el exterior, tiendas de envíos a cuba online, tiendas virtuales en cuba para comprar desde el exterior, compras online para cuba desde el exterior, tiendas online para comprar en cuba desde el exterior, compras desde el exterior para cuba';\r\n product: any = {};\r\n selectedContact$: Observable;\r\n @ViewChild('targetElement') targetElement: ElementRef;\r\n @ViewChild('targetAttrElement') targetAttrElement: ElementRef;\r\n constructor(\r\n private store: Store,\r\n private modalService: NgbModal,\r\n private storageService: StorageService,\r\n private urlService: UrlService,\r\n private metaService: Meta,\r\n private titleService: Title,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private toastr: ToastrService,\r\n @Inject(DOCUMENT) document: Document,\r\n @Inject(PLATFORM_ID) private platformId\r\n ) {\r\n super(route,metaService,titleService,router);\r\n this.data$ = this.store.select(detailsSelectors.selectResponse);\r\n this.shipping$ = this.store.select(detailsSelectors.selectShippingType);\r\n this.isLoading$ = this.store.select(detailsSelectors.selectLoading);\r\n this.isLoadingPushToCart$ = this.store.select(cartSelectors.selectIsLoading);\r\n this.location$ = this.store.select(locationSelectors.selectLocation);\r\n this.quantity$ = this.store.select(detailsSelectors.selectQuantity);\r\n this.store.dispatch(actions.ResetQuantityAction());\r\n this.provider$ = this.store.select(searchSelectors.selectProvider);\r\n this.selectedContact$ = this.store.select(contactSelectors.selectDefaultContact);\r\n this.payload = {\r\n pageIndex: 1,\r\n pageSize: 5,\r\n pagingStrategy: 0,\r\n };\r\n }\r\n\r\n increaseQuantity = () => this.store.dispatch(actions.IncreaseQuantityAction());\r\n reduceQuantity = () => this.store.dispatch(actions.ReduceQuantityAction());\r\n\r\n cancelRequest = () => this.store.dispatch(actions.CancelProductDetailsRequestAction());\r\n ngOnInit(): void {\r\n if (isPlatformBrowser(this.platformId)) {\r\n window.scroll(0, 0);\r\n this.loadContacts();\r\n }\r\n this.store.dispatch(actions.LoadingProductDetailAction());\r\n this.store.dispatch(relatedActions.ResetRelatedProductsAction());\r\n //this.selectedContact$.subscribe(result => console.log(result));\r\n this.data$.subscribe((result: any) => {\r\n if (result && result.success && result.data) {\r\n let title = 'Cubatel Market';\r\n if (result.data?.name) {title += ` | ${result.data.name}`; }\r\n this.updateMetaTags(title, result.data.shortText);\r\n }\r\n });\r\n this.urlService.changeUrl(this.router.url);\r\n this.urlService.footer.emit();\r\n }\r\n getShakeAnimation() {\r\n return [\r\n { transform: 'translateX(0)' },\r\n { transform: 'translateX(5px)' },\r\n { transform: 'translateX(-5px)' },\r\n { transform: 'translateX(5px)' },\r\n { transform: 'translateX(0)' },\r\n ];\r\n }\r\n getShakeAnimationTiming() {\r\n return {\r\n duration: 300,\r\n iterations: 3,\r\n };\r\n }\r\n\r\n\r\n public async validateAttr() {\r\n const attibutes = await this.store.pipe(select(detailsSelectors.selectAttibutes),take(1)).toPromise();\r\n console.info(attibutes);\r\n return false;\r\n }\r\n public async pushToCart(product:any) {\r\n const attributes = await this.store.pipe(select(detailsSelectors.selectAttibutes),take(1)).toPromise();\r\n if(attributes.length>0) {\r\n const matched = attributes.find(p => p.valId.length==0);\r\n if(matched){\r\n this.targetAttrElement.nativeElement.animate(this.getShakeAnimation(), this.getShakeAnimationTiming());\r\n this.toastr.error(`${\"Debe especificar\"} ${matched.attrText?.toLowerCase()}`);\r\n return;\r\n }\r\n }\r\n const shipping = await this.store.pipe(select(detailsSelectors.selectShippingType),take(1)).toPromise();\r\n if(shipping==0 && product.provider>0){\r\n this.targetElement.nativeElement.animate(this.getShakeAnimation(), this.getShakeAnimationTiming());\r\n this.toastr.error(\"Debe especificar tipo de envío.\");\r\n return;\r\n }\r\n\r\n if(product.availability<=0){\r\n this.toastr.error(\"Lo sentimos, no hay disponibilidad para este producto.\");\r\n return;\r\n }\r\n\r\n //var itemImg = $(`#${product.code}>`).find('img').eq(0);\r\n product.shippingType=shipping;\r\n product.attributes= {};\r\n product.attributesToShow= attributes.map(p => `${p.attrText} (${p.valText})`).join('/');\r\n attributes.forEach(function(item){product.attributes[item.attrId] = item.valId})\r\n\r\n var itemImg = $(`.active`).find('img').eq(0);\r\n this.flyToElement($(itemImg),product,ViewTypeEnum.ProductDetails,this.store);\r\n }\r\n\r\n showActive(id: string,count) {\r\n var i = count;\r\n while (i>0) {i -= 1; $(`#previewImg${i}`).removeClass('fade show active'); }\r\n $(`#previewImg${id}`).addClass(\"fade show active\");\r\n }\r\n selectLocation() {\r\n if (this.storageService.isAuthenticated()) {\r\n const modalRef = this.modalService.open(ContactsComponent, {size: 'lg'});\r\n modalRef.componentInstance.firstContact = true;\r\n modalRef.componentInstance.selectLocation = true;\r\n modalRef.result.finally(() => {});\r\n this.loadContacts();\r\n } else {\r\n const modalRef = this.modalService.open(SelectLocationComponent, {size: 'sm'});\r\n modalRef.result.finally(() => {});\r\n }\r\n }\r\n\r\n loadContacts = () => {\r\n const payload = {\r\n pageIndex: 1,\r\n pageSize: 10\r\n };\r\n this.store.dispatch(contactsActions.LoadingContacts({payload: payload}));\r\n };\r\n\r\n ngOnDestroy(): void { this._subscriptions.forEach(x => x.unsubscribe()); this.cancelRequest(); }\r\n}\r\n","import {Component,OnDestroy, OnInit} from '@angular/core';\r\nimport {NgbActiveModal} from '@ng-bootstrap/ng-bootstrap';\r\nimport * as cartActions from \"../../state/shopping-cart/cart-action\";\r\nimport { Store } from '@ngrx/store';\r\n@Component({\r\n selector: 'app-clear-cart',\r\n templateUrl: './clear-cart.component.html',\r\n styleUrls: ['./clear-cart.component.scss'],\r\n})\r\nexport class ClearCartComponent implements OnInit, OnDestroy {\r\n constructor(private store: Store, public modal: NgbActiveModal) {}\r\n ngOnInit(): void {}\r\n clear= ():void => {\r\n this.modal.close();\r\n return this.store.dispatch(cartActions.ClearCart());\r\n }\r\n ngOnDestroy(): void { }\r\n}\r\n\r\n","\r\n\r\n
      \r\n
      Vaciar carrito
      \r\n
      \r\n
      \r\n\r\n \r\n ¿Seguro que deseas vaciar el carrito?\r\n \r\n
      \r\n\r\n
      \r\n
      \r\n\r\n \r\n\r\n  \r\n \r\n
      \r\n
      \r\n","\r\n
      \r\n \r\n\r\n
      \r\n \r\n
      \r\n \r\n \r\n
      \r\n \r\n
      \r\n \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n\r\n","import {Component,Inject,Input,OnDestroy,OnInit,PLATFORM_ID,ViewChild,} from \"@angular/core\";\r\nimport { Store } from \"@ngrx/store\";\r\nimport { _seoContent } from \"@app/marketplace/seo-content/utils\";\r\nimport { Observable, Subscription } from \"rxjs\";\r\nimport * as actions from '../state/shopping-cart/cart-action';\r\nimport * as selectors from '../state/shopping-cart/cart-selectors';\r\nimport { ShippingTypeEnum } from \"@app/marketplace/core/enum/shippingType\";\r\nimport { MarketProduct } from \"../_models/product.interface\";\r\nimport { ViewTypeEnum } from \"@app/marketplace/core/enum/viewTypeEnum\";\r\n@Component({\r\n selector: \"app-shopping-shipping\",\r\n templateUrl: \"./shopping-shipping.component.html\",\r\n styleUrls: [\"./shopping-shipping.component.css\"],\r\n})\r\nexport class ShoppingShippingComponent implements OnInit, OnDestroy {\r\n @Input() product: MarketProduct;\r\n shippings$ :Observable;\r\n selectedShippingType$: Observable;\r\n constructor(private store: Store) {;}\r\n ngOnInit(): void {\r\n this.shippings$ = this.store.select(selectors.selectShippings(this.product));\r\n this.selectedShippingType$=this.store.select(selectors.selectShippingType(this.product));\r\n }\r\n setShippingType=(shipping:ShippingTypeEnum)=>{\r\n this.store.dispatch(actions.SetShippingType({product:this.product,shipping,viewType:ViewTypeEnum.ShoppingCart}));\r\n }\r\n ngOnDestroy(): void {;}\r\n}\r\n","
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n

      \r\n {{h1}}\r\n

      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n\r\n
      \r\n
      \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n No encontramos resultados.\r\n
      \r\n \r\n Ver productos\r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n\r\n \r\n
      \r\n
      \r\n
      \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n\r\n\r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
      ProductoPrecioCantidadTotalEnvio\r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n\r\n \r\n\r\n\r\n
      \r\n\r\n

      \r\n\r\n \r\n \r\n {{product.name}}\r\n \r\n \r\n \r\n \r\n {{product.name}}\r\n \r\n \r\n\r\n \r\n \r\n {{product.name}}\r\n \r\n

      0\" class=\"t-heading pr-md-4\">\r\n {{product.attributesToShow}}\r\n

      \r\n \r\n\r\n \r\n \r\n {{product.name}}\r\n \r\n

      0\" class=\"t-heading pr-md-4\">\r\n {{product.attributesToShow}}\r\n

      \r\n
      \r\n\r\n \r\n \r\n {{product.name}}\r\n \r\n

      0\" class=\"t-heading pr-md-4\">\r\n {{product.attributesToShow}}\r\n

      \r\n
      \r\n\r\n \r\n \r\n {{product.name}}\r\n \r\n

      0\" class=\"t-heading pr-md-4\">\r\n {{product.attributesToShow}}\r\n

      \r\n
      \r\n\r\n

      \r\n\r\n

      \r\n \r\n {{product.supplierLinkToShow}}\r\n \r\n

      \r\n\r\n \r\n

      \r\n {{product.summaryText}} Ver más\r\n

      \r\n

      \r\n {{product.shortText}} Ver menos\r\n

      \r\n\r\n
      \r\n\r\n
      \r\n\r\n
      \r\n
      \r\n\r\n {{product.priceToShow}}\r\n 0\" style=\"font-size: 14px; text-decoration: line-through;color: #8d8e8f;\">\r\n {{product.oldPriceToShow}}\r\n \r\n\r\n \r\n
      \r\n
      \r\n \r\n \r\n \r\n
      \r\n
      \r\n
      {{product.amountToShow}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
        \r\n
      • Subtotal\r\n {{(shoppingCart$ | async).totalPriceToShow}}\r\n
      • \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { ProductListComponent } from './product-list/product-list.component';\r\nimport { ProductDetailsComponent } from './product-details/product-details.component';\r\nimport { ShoppingCartComponent } from './shopping-cart/shopping-cart.component';\r\nimport { ProductFakeDetailsComponent } from './product-fake-details/product-fake-details.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: ProductListComponent,\r\n },\r\n /* {path: 'detalles/:code', component: ProductDetailsComponent }, */\r\n {path: ':provider/:code', component: ProductDetailsComponent },\r\n {path: 'cubatel/:code', component: ProductDetailsComponent },\r\n {path: 'amazon/:code', component: ProductDetailsComponent },\r\n //{path: 'amazon', component: ProductFakeDetailsComponent },\r\n //{path: 'cubatel', component: ProductFakeDetailsComponent },\r\n {path: 'carrito', component: ShoppingCartComponent } ,\r\n {path: '**', redirectTo: '', pathMatch: 'full'},\r\n];\r\n\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class ProductRoutingModule { }\r\n","import {Component, Inject, OnInit, PLATFORM_ID} from '@angular/core';\r\nimport * as cartActions from '../state/shopping-cart/cart-action';\r\nimport * as cartSelectors from '../state/shopping-cart/cart-selectors';\r\nimport {Action,Store} from '@ngrx/store';\r\nimport {Observable, of} from 'rxjs';\r\nimport {NgbModal} from '@ng-bootstrap/ng-bootstrap';\r\nimport {ClearCartComponent} from './actions/clear-cart.component';\r\nimport {UrlService} from '@app/services/url.service';\r\nimport {Router} from '@angular/router';\r\nimport {SeoContent} from '@app/marketplace/seo-content/seo-content';\r\nimport { ViewTypeEnum } from '@app/marketplace/core/enum/viewTypeEnum';\r\nimport { INotification } from '@app/marketplace/core/models/response.model';\r\n\r\n@Component({\r\n selector: 'app-shopping-cart',\r\n templateUrl: './shopping-cart.component.html',\r\n styleUrls: ['./shopping-cart.component.css']\r\n})\r\nexport class ShoppingCartComponent extends SeoContent implements OnInit {\r\n isLoading$: Observable;\r\n shoppingCart$: Observable;\r\n message$: Observable;\r\n notification$: Observable;\r\n success$: Observable;\r\n closeAction:Action;\r\n constructor(private store: Store,\r\n private modalService: NgbModal,\r\n private urlService: UrlService,\r\n private router: Router,\r\n @Inject(PLATFORM_ID) private platformId) {\r\n super(null, null, null, router);\r\n this.message$ = this.store.select(cartSelectors.selectMessage);\r\n this.success$ = this.store.select(cartSelectors.selectSuccess);\r\n this.closeAction=cartActions.CloseErrorMessage();\r\n }\r\n ngOnInit(): void {\r\n this.title = 'Cubatel Market | Compras a Cuba online';\r\n this.description = 'Realiza tus compras para Cuba online desde cualquier lugar del mundo. Entregas a domicilio en toda la Isla. ¡Aprovecha la oportunidad de enviar miles de productos hasta la puerta de tu casa en Cuba!';\r\n this.keywords = 'comprar online en cuba, compras para cuba online';\r\n this.h1 = 'Carrito de Compras';\r\n window.scroll(0, 0);\r\n this.shoppingCart$ = this.store.select(cartSelectors.selectData);\r\n this.isLoading$ = this.store.select(cartSelectors.selectIsLoading);\r\n this.notification$= this.store.select(cartSelectors.selectNotification);\r\n this.urlService.changeUrl(this.router.url);\r\n this.urlService.footer.emit();\r\n }\r\n\r\n public pushToCart(product: any) {\r\n this.store.dispatch(cartActions.PushToCart({product,viewType:ViewTypeEnum.ShoppingCart}));\r\n }\r\n\r\n public pullFromCart(product: any) {\r\n this.store.dispatch(cartActions.PullFromCart({product,viewType:ViewTypeEnum.ShoppingCart}));\r\n }\r\n\r\n public deleteFromCart(product: any) {\r\n this.store.dispatch(cartActions.DeleteFromCart({product,viewType:ViewTypeEnum.ShoppingCart}));\r\n }\r\n\r\n public clearCart(): void {\r\n const modalRef = this.modalService.open(ClearCartComponent, {size: 'md'});\r\n modalRef.result.then(() => {\r\n });\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Actions, createEffect, ofType } from \"@ngrx/effects\";\r\nimport * as productsActions from './list-actions';\r\nimport * as routerSelectors from '../../../route/router-state.selectors';\r\nimport * as locationSelectors from '../../../locations/state/locations-selectors';\r\nimport * as searchSelectors from '../../../products/state/product-search/search-selectors';\r\nimport * as categorySelectors from '../../../categories/state/category/categories-selectors';\r\nimport * as categoryActions from '../../../categories/state/category/categories-actions';\r\nimport * as categoryTreeActions from '../../../categories/state/category-tree/category-tree-actions';\r\n\r\nimport { ProductService } from \"../../_services/product.service\";\r\nimport { catchError, exhaustMap, map, mergeMap, switchMap, takeUntil, tap, withLatestFrom } from 'rxjs/operators';\r\nimport { of } from \"rxjs\";\r\nimport { Store } from \"@ngrx/store\";\r\nimport { _seoContent } from \"@app/marketplace/seo-content/utils\";\r\nimport {ProductProviderEnum} from '@app/marketplace/core/enum/productProvider';\r\nimport {environment} from '@env/environment.dev';\r\n\r\n@Injectable()\r\nexport class ProductsEffects {\r\n constructor(private actions$: Actions, private service: ProductService, private store: Store,) { }\r\n\r\n loadProducts$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(productsActions.LOADING_PRODUCTS, productsActions.CANCEL_PRODUCTS_REQUEST),\r\n withLatestFrom(\r\n this.store.select(routerSelectors.getMergedRoute),\r\n this.store.select(locationSelectors.selectLocation),\r\n this.store.select(searchSelectors.selectTerm),\r\n this.store.select(categorySelectors.selectCategoryCode),\r\n (action: any, router: any, location:any,term:any,category) => {\r\n if (term.provider == ProductProviderEnum.Shein && !environment.turn_on_shein) {\r\n term.provider = ProductProviderEnum.Internal;\r\n }\r\n return {\r\n action,\r\n payload: action.payload,\r\n params: router.params,\r\n location:{type:location.locationType,codes:location.locations},\r\n term: term.provider == 1 && term.searhTerm == '' ? 'Televisores' : term.searhTerm,\r\n provider: term.provider,\r\n url: router.url,\r\n category\r\n }\r\n }\r\n ),\r\n tap((data: any) => {\r\n if(data.params[\"id\"]){\r\n if(data.url.includes('tiendas-asociadas')) {\r\n data.payload.supplierCode = data.params[\"id\"];\r\n } else {\r\n this.store.dispatch(categoryTreeActions.UpdateParentCategory({ parentCategory: this.getCategoryCode(data.params[\"id\"]) }));\r\n }\r\n this.store.dispatch(categoryActions.ClearCategoryFilter());\r\n }\r\n }),\r\n switchMap((data: any) => {\r\n //exhaustMap((data: any) => {\r\n if(data.action.type==productsActions.LOADING_PRODUCTS){\r\n data.payload.provider=data.provider;\r\n data.payload.filter.searchTerms=data.term;\r\n data.payload.categoryCode = data.category??\"\";\r\n data.payload.filter.leafCategories = data.category ? true : null;\r\n data.payload.locationType = 0;\r\n data.payload.locations = null;\r\n //console.info(data.payload);\r\n const category = !data.url.includes('tiendas-asociadas') ? data.params['id'] : '';\r\n if (category) {\r\n const value = _seoContent.find(x => category=== x.sectionId || category === x.categoryCode);\r\n data.payload.categoryCode = value ? value.categoryCode : category;\r\n data.payload.filter.leafCategories = true;\r\n }\r\n if (data.location.codes.length > 0) {\r\n data.payload.locationType = data.location.type;\r\n data.payload.locations = data.location.codes;\r\n }\r\n }\r\n return this.service.ListProducts(data.payload).pipe(\r\n takeUntil(\r\n this.actions$.pipe(ofType(productsActions.CANCEL_PRODUCTS_REQUEST))\r\n ),\r\n map((response: any) => {\r\n response.count = response.data.length;\r\n response.data = response.data.filter(x => x.price > 0);\r\n var provider=response.count>0?response.data[0].productProvider:0;\r\n return { type: productsActions.LIST_PRODUCTS, data:response, provider:data.payload.provider,scroll:data.payload.scroll};\r\n }),\r\n catchError((error) => {\r\n return of({ type: productsActions.ERROR_PRODUCTS })\r\n }\r\n )\r\n );\r\n })\r\n )\r\n );\r\n\r\n private getCategoryCode(sectionId: string) {\r\n return _seoContent.map(x => ({code: x.categoryCode, name: x.sectionId})).find(x => x.name == sectionId)?.code;\r\n }\r\n}\r\n\r\n\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Actions, createEffect, ofType } from \"@ngrx/effects\";\r\nimport * as productsActions from './related-actions';\r\nimport * as routerSelectors from '../../../route/router-state.selectors';\r\nimport * as locationSelectors from '../../../locations/state/locations-selectors';\r\nimport * as searchSelectors from '../product-search/search-selectors';\r\nimport * as categorySelectors from '../../../categories/state/category/categories-selectors';\r\nimport * as categoryActions from '../../../categories/state/category/categories-actions';\r\nimport * as categoryTreeActions from '../../../categories/state/category-tree/category-tree-actions';\r\n\r\nimport { ProductService } from \"../../_services/product.service\";\r\nimport { catchError, exhaustMap, map, mergeMap, switchMap, takeUntil, tap, withLatestFrom } from 'rxjs/operators';\r\nimport { of } from \"rxjs\";\r\nimport { Store } from \"@ngrx/store\";\r\nimport { _seoContent } from \"@app/marketplace/seo-content/utils\";\r\n\r\n@Injectable()\r\nexport class RelatedProductsEffects {\r\n constructor(private actions$: Actions, private service: ProductService, private store: Store,) { }\r\n\r\n loadRelatedProducts$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(productsActions.LOADING_RELATED_PRODUCTS, productsActions.CANCEL_RELATED_PRODUCTS_REQUEST),\r\n withLatestFrom(\r\n this.store.select(routerSelectors.getMergedRoute),\r\n (action: any, router: any) => {\r\n return {action, payload: action.payload,}\r\n }\r\n ),\r\n switchMap((data: any) => {\r\n return this.service.GetRelatedProducts(data.payload).pipe(\r\n takeUntil(\r\n this.actions$.pipe(ofType(productsActions.CANCEL_RELATED_PRODUCTS_REQUEST))\r\n ),\r\n map((response: any) => {\r\n return { type: productsActions.LIST_RELATED_PRODUCTS, data:response?.data};\r\n }),\r\n catchError((error) => {\r\n return of({ type: productsActions.ERROR_RELATED_PRODUCTS })\r\n }\r\n )\r\n );\r\n })\r\n )\r\n );\r\n\r\n private getCategoryCode(sectionId: string) {\r\n return _seoContent.map(x => ({code: x.categoryCode, name: x.sectionId})).find(x => x.name == sectionId)?.code;\r\n }\r\n}\r\n\r\n\r\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { CommonModule} from '@angular/common';\r\nimport { ProductListComponent} from './product-list/product-list.component';\r\nimport { ProductRoutingModule} from './products-routing.module';\r\nimport { NgbDatepickerModule, NgbNavModule, NgbPaginationModule, NgbTooltipModule} from '@ng-bootstrap/ng-bootstrap';\r\n\r\nimport { featuresReducers} from '../app.state';\r\nimport { StoreModule} from '@ngrx/store';\r\nimport { EffectsModule} from '@ngrx/effects';\r\nimport { ProductsEffects} from './state/product-list/list-effects';\r\nimport { PRODUCT_FEATURE} from '../app.state';\r\nimport { SharedModule} from '../shared/shared.module';\r\nimport { ProductTab1Component} from './product-tab1/product-tab1.component';\r\nimport { ProductTab2Component} from './product-tab2/product-tab2.component';\r\nimport { NgxSkeletonLoaderModule} from 'ngx-skeleton-loader';\r\nimport { ProductDetailsComponent} from './product-details/product-details.component';\r\nimport { ProductsDetailsEffects} from './state/product-details/details-effects';\r\nimport { RelatedProductsEffects} from './state/related-product/related-effects';\r\nimport { NgxSliderModule } from '@angular-slider/ngx-slider';\r\n\r\nimport { ShoppingCartComponent } from './shopping-cart/shopping-cart.component';\r\nimport { ClearCartComponent } from './shopping-cart/actions/clear-cart.component';\r\nimport { ProductCategoryComponent} from '@app/marketplace/products/product-category/product-category.component';\r\nimport { CrystalLightboxModule } from '@crystalui/angular-lightbox';\r\nimport { SelectLocationComponent} from '@app/marketplace/locations/select-location/select-location.component';\r\nimport { TreeviewModule } from 'ngx-treeview';\r\nimport { ProductDimensionsComponent } from './product-dimensions/product-dimensions.component';\r\nimport { ProductShippingComponent } from './product-shipping/product-shipping.component';\r\nimport { ShoppingShippingComponent } from './shopping-shipping/shopping-shipping.component';\r\nimport { ReactiveFormsModule} from '@angular/forms';\r\nimport { ProductFakeDetailsComponent } from './product-fake-details/product-fake-details.component';\r\nimport { ProductAttributesComponent } from './product-attributes/product-attributes.component';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { ProductDetailsDlgComponent } from './product-details-dlg/product-details-dlg.component';\r\nimport { RelatedProductsComponent } from './related-products/related-products.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ProductListComponent,\r\n ProductTab1Component,\r\n ProductTab2Component,\r\n ProductDetailsComponent,\r\n ProductDetailsDlgComponent,\r\n ProductFakeDetailsComponent,\r\n ProductCategoryComponent,\r\n ShoppingCartComponent,\r\n ClearCartComponent,\r\n SelectLocationComponent,\r\n ProductDimensionsComponent,\r\n ProductShippingComponent,\r\n ShoppingShippingComponent,\r\n ProductAttributesComponent,\r\n RelatedProductsComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ProductRoutingModule,\r\n NgbDatepickerModule,\r\n NgbNavModule,\r\n NgbTooltipModule,\r\n NgbPaginationModule,\r\n StoreModule.forFeature(PRODUCT_FEATURE.stateKey, featuresReducers),\r\n EffectsModule.forFeature([ProductsEffects,ProductsDetailsEffects,RelatedProductsEffects]),\r\n NgxSkeletonLoaderModule.forRoot({animation: 'pulse'}),\r\n SharedModule,\r\n NgxSliderModule,\r\n TreeviewModule.forRoot(),\r\n CrystalLightboxModule,\r\n ReactiveFormsModule,\r\n InfiniteScrollModule\r\n ],\r\n schemas: [ CUSTOM_ELEMENTS_SCHEMA ]\r\n})\r\nexport class ProductsModule {\r\n}\r\n"]}