{"version":3,"sources":["webpack:///D:/a/1/s/src/app/core/components/slider/components/sliderDots/slider-dots.shared.component.ts","webpack:///D:/a/1/s/src/app/core/components/slider/components/sliderDots/slider-dots.shared.component.html","webpack:///D:/a/1/s/src/app/core/components/dropDown/drop-down-outer-click.shared.directive.ts","webpack:///D:/a/1/s/src/app/core/directives/drawCollapse/draw-base-height.shared.directive.ts","webpack:///D:/a/1/s/src/app/core/components/slider/components/sliderList/slider-list.shared.component.ts","webpack:///D:/a/1/s/src/app/core/components/slider/components/sliderList/slider-list.shared.component.html","webpack:///D:/a/1/s/src/app/core/pipes/highlightMatch/highlight-match.shared.pipe.ts","webpack:///D:/a/1/s/src/app/core/components/projection/projectionTypes/forDevice/projection-for-device.shared.module.ts","webpack:///D:/a/1/s/src/app/core/components/projection/projectionTypes/forLocationMode/projection-for-location-mode.shared.module.ts","webpack:///D:/a/1/s/src/app/core/components/projection/projectionTypes/projection-types.shared.module.ts","webpack:///D:/a/1/s/src/app/core/components/projection/projection.shared.module.ts","webpack:///D:/a/1/s/src/app/core/components/projection/index.ts","webpack:///D:/a/1/s/src/app/core/components/dropDown/drop-down.shared.directive.ts","webpack:///D:/a/1/s/src/app/core/components/dropDown/drop-down.shared.component.ts","webpack:///D:/a/1/s/src/app/core/components/dropDown/drop-down.shared.component.html","webpack:///D:/a/1/s/src/app/core/directives/imagePreload/index.ts","webpack:///D:/a/1/s/src/app/core/components/buttons/iconBtn/icon-btn.shared.component.ts","webpack:///D:/a/1/s/src/app/core/components/buttons/iconBtn/icon-btn.shared.component.html","webpack:///D:/a/1/s/src/app/core/directives/drawCollapse/draw-offset-mobile.shared.directive.ts","webpack:///D:/a/1/s/src/app/core/directives/drawCollapse/index.ts","webpack:///D:/a/1/s/src/app/core/components/slider/slider.shared.component.ts","webpack:///D:/a/1/s/src/app/core/directives/drawCollapse/draw-collapse.directive.shared.module.ts","webpack:///D:/a/1/s/src/app/core/components/slider/components/sliderDots/slider-dots.shared.module.ts","webpack:///D:/a/1/s/src/app/core/components/slider/components/sliderList/slider-list.shared.module.ts","webpack:///D:/a/1/s/src/app/core/components/slider/components/slider-components.shared.module.ts","webpack:///D:/a/1/s/src/app/core/components/slider/components/index.ts","webpack:///D:/a/1/s/src/app/core/pipes/pickupLabel/pickup-label.module.ts","webpack:///D:/a/1/s/src/app/core/pipes/pickupLabel/index.ts","webpack:///D:/a/1/s/src/app/core/directives/imagePreload/image-preload.shared.directive.ts","webpack:///D:/a/1/s/src/app/core/components/placesSuggestion/places-suggestion.shared.component.ts","webpack:///D:/a/1/s/src/app/core/components/placesSuggestion/places-suggestion.shared.component.html","webpack:///D:/a/1/s/src/app/core/directives/drawCollapse/draw-offset.shared.directive.ts","webpack:///D:/a/1/s/src/app/core/directives/drawCollapse/draw-opacity.shared.directive.ts","webpack:///D:/a/1/s/src/app/core/directives/imagePreload/image-preload.directive.shared.module.ts","webpack:///D:/a/1/s/src/app/core/directives/drawCollapse/draw-follow.shared.directive.ts","webpack:///D:/a/1/s/src/app/core/components/dropDown/drop-down.shared.module.ts","webpack:///D:/a/1/s/src/app/core/components/dropDown/index.ts","webpack:///D:/a/1/s/src/app/core/directives/drawCollapse/draw-content-margin.shared.directive.ts","webpack:///D:/a/1/s/src/app/core/components/pickup/pickup.shared.component.ts","webpack:///D:/a/1/s/src/app/core/components/dropDown/dropdown-vendor.shared.component.ts","webpack:///D:/a/1/s/src/app/core/components/projection/projectionTypes/forDevice/projection-for-device.shared.component.ts","webpack:///D:/a/1/s/src/app/core/components/projection/projectionTypes/forDevice/projection-for-device.shared.component.html","webpack:///D:/a/1/s/src/app/core/pipes/highlightMatch/highlight-match.pipe.module.ts","webpack:///D:/a/1/s/src/app/core/components/placesSuggestion/places-suggestion.shared.module.ts","webpack:///D:/a/1/s/src/app/core/components/placesSuggestion/index.ts","webpack:///D:/a/1/s/src/app/core/directives/drawCollapse/draw-min-height.shared.directive.ts","webpack:///D:/a/1/s/src/app/core/directives/drawCollapse/draw-collapse.shared.directive.ts"],"names":["SliderDotsComponent","disabled","onDotClick","$event","index","this","emit","event","arr","i","j","total","push","currentActive","DropdDownOuterClickDirective","window","dispatchEvent","Event","DrawBaseHeightDirective","_elementRef","_drawCollapseService","_handleOnResize","elem","nativeElement","toggleDraw","setBaseMinimalHeight","clientHeight","SliderListComponent","renderer2","_init","onContentChange","changes","slides","_contentChangedEmit","elementRef","setTimeout","_children","Array","from","children","setStyle","length","HighlightMatchPipe","value","matchString","matchOptions","wrapper","regExp","RegExp","match","replace","ProjectionForDeviceModule","ProjectionForLocationModeModule","ProjectionTypesModule","ProjectionModule","DropDownDirective","_renderer2","_lockClick","openEvent","closeGlobalOnScroll","onToggle","_isOpen","_trigger","trigger","parentElement","firstElementChild","previousElementSibling","_listener","listen","_triggerClickHandler","bind","open","currentValue","previousValue","_requestLockClick","handleOutsideClicke","projection","DropDownComponent","_scrollService","_changeDetectorRef","_componentFactoryResolver","_injector","_appRef","projectionStyle","mode","theme","position","selected","width","options","optionTemplate","onSelected","_createVendorComponentView","handleToggle","_updateScroll","detectChanges","_destroyVendorComponentView","requestUpdate","_vendorComponentRef","dropdownTriggerContent","refToElem","refElem","coords","getClientRects","styles","height","top","scrollY","pageYOffset","left","instance","display","resolveComponentFactory","create","attachView","hostView","appendChild","document","body","rootNodes","tplRef","dropdownOptionsList","detachView","destroy","option","Id","isOpen","_setStylesToVendorComponentView","_unsetStylesToVenderoComponentView","btn","querySelector","blur","opacity","IconBtnComponent","changeDetectorRef","super","handleButtonClick","DrawOffsetMobileSharedDirective","_canAddOffset","isCollapsed","_elem","getAttribute","_drawIsCollapes","drawIsCollapsed$","pipe","a","subscribe","_height","addOffsetMobile","closed","unsubscribe","removeOffsetMobile","SliderComponent","_isAnimating","loading","currentSlide","animationTimeout","loop","arrows","dots","iconNext","iconPrev","stopPropagation","inverted","_setup","_stopPropagation","_slidesElems","Promise","resolve","_calculateListWidth","tempAnimTimeout","_setVisibleSlide","then","slideNo","isLoading","_lock","_listWidth","holderWidth","nextSlideIndex","maxIndex","prevSlideIndex","contentElem","clientWidth","activeIndex","DrawCollapseDirectiveSharedModule","SliderDotsModule","SliderListModule","toExport","SliderComponentsModule","PickupLabelPipeModule","ImagePreloadDirective","_loaded","background","onLoaded","_target","url","_download","_destroy","_tempHide","_tempImg","Image","onload","_revealImage","src","setAttribute","PlacesSuggestionComponent","controllers","_isLocked","_searchTickTimeout","enabled","options$","google","getAutocompleteResults$","input","inputElement","inputEvents$","keyCode","preventDefault","handleOnSelected","handleOnToggle","searchTerm","_triggerSearch","_tempLock","_searchTimeout","clearTimeout","term","_killLock","getAutocompleteSuggestion","trim","DrawOffsetSharedDirective","addOffset","removeOffset","DrawOpacitySharedDirective","_speedOpacityFactor","transtion","transition","_opacityListener$","drawCurrentHeight$","offset","current","Math","pow","isNaN","floor","markForCheck","ImagePreloadDirectiveSharedModule","DrawFollowSharedDirective","attr","_drawHeight$","_setHeight","_drawMobileHeight$","drawNavBarCollapseHeight$","DropDownModule","DrawContentMarginSharedDirective","activeHeight","marginTop","_marginListener$","drawDifference$","drawProgress$","nextTrigger","nextScrollY","nextProgress","nextHeight","nextDiff","PickupComponent","config","drawCollapseService","locationsService","routeService","pickupsService","store","futureOrders","preHead","title","labelTitle","asapTitle","laterTitle","nextIcon","dropdownWidth","dropdownToggled$","isDineInActive$","collectionType","periods$","locationNo","locations","getPeriodsForLocation$","getPeriodsForAllLocations$","periodsFiltered$","_calculateLaterTimes","filters","pickupTimesListForAllLocations$","filters$","getLocationFilters$","selected$","cart","cartPickupTime$","getLocationFilterSelectedPickupTime$","currentMode$","getLocationFilterCurrentMode$","currentLocationPickupTimesList$","availablePickupsListForLocation$","currentLocationPickupTimeLabel$","selectedCurrentPickupTimeLabel$","pickupLabelType","currentLocationPickupTimeSelected$","selectedCurrentPickupTime$","cartPickupTimeSelected$","cartPickupTimeSelectedLabel$","cartPickupTimeLabelFull$","hasLocations$","isHiding$","prev","next","isRestoring","pickupMode","pickupTime","isBelowDrawerMediaBreakpoint$","innerWidth","mediaBreakPoint","Date","getHours","currentLocationPickupTimesListFiltered$","_calculateTimesDropdown","onLocationsFilterModeChange","onLabelClick","clearPickupFilters","update","openScheduleModal","modalId","routes","navigateToLocationsSearchView","selectPickupTimeOption","getCartLocationNo$","updateCartPickupTime","currentLocation$","LocationNo","cartTotalQuantity$","qty","selectPickupTimeForCurrentLocation","PickupTimesList$","pickupTimes","filter","time","getTime","ASAP","slice","pickupTimesFiltered","pop","IsAsap","DateLocalISO","DropdownVendorComponent","ProjectionForDeviceComponent","mobile","desktop","isDeviceSet$","appSettings","deviceType$","device","isMobile$","HighlightMatchPipeModule","PlacesSuggestionModule","DrawMinHeightSharedDirective","_mode","minHeight","_sizeListener$","minHeightContent$","data","sum","reduce","b","innerHeight","addMinHeight","DrawCollapseSharedDirective","_d","_speedFactor","_isCollapsed","_mobileScrollStop","_topOffset","_isMobileCollapsed","_mobileScrollPoint","mobileScrollPoint","_headerBaseHeightListener$","drawCanvasHeightChange$","expandedHeight","_calcMaximumExpandedHeight","_navBarHeightListener$","_offsetMobileListener$","drawMobileOffset$","_offsetListener$","drawOffset$","_expandListener$","drawExpand$","expand","_expand","_expandStart","_collapseStart","_scrollListener$","Object","hasOwnProperty","prevScrollY","delta","diff","collapsedHeight","elemHeight","bodyTopPadding","parseInt","getComputedStyle","getPropertyValue","newHeight","ceil","canCollapseMore","_updateHeightValues","newOffset","setNavBarHeight","edgeHeight","canExpand","canExpandNavBar","fullExpand","initDrawDirective","drawCanvasExpandedHeight","maxContentMargin","_setTargetHeight","updateDrawHeight","setProgress","targetHeight","transitionTime","preventOnWindowScrolled","startHeight","startTime","now","setHeight","min","rawToRoundUp","_easing","currentHeightSet","rangeMin","rangeMax","currentRange","requestAnimationFrame","t"],"mappings":"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","file":"x","sourcesContent":["import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'shared-slider-dots',\r\n templateUrl: './slider-dots.shared.component.html',\r\n styleUrls: ['./slider-dots.shared.component.scss']\r\n})\r\nexport class SliderDotsComponent implements OnInit {\r\n @Input() public currentActive!: number;\r\n @Input() public total!: number;\r\n @Input() public disabled: boolean = false;\r\n @Output() public onDotClick: EventEmitter<{ event: Event; index: number; }> = new EventEmitter();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void { }\r\n\r\n public handleDotClick($event: Event, index: number): void {\r\n this.onDotClick.emit({ event: $event, index });\r\n }\r\n\r\n public get dotsItems(): Array {\r\n const arr: number[] = [];\r\n for (let i = 0, j = this.total || 0; i < j; i++) {\r\n arr.push(i);\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n public get activeId(): number {\r\n return this.currentActive;\r\n }\r\n}\r\n","
\r\n
\r\n
","/*\r\n Attach this to any element that stop event progragation, thus preventing from default modal closing,\r\n i.e. modal-box component\r\n*/\r\nimport { Directive, HostListener, } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[directive-drop-down-outer-click]',\r\n})\r\nexport class DropdDownOuterClickDirective {\r\n @HostListener('click', ['$event']) public onElementClick($event: Event): void {\r\n window.dispatchEvent(new Event('drop-down:outer-click'));\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, OnInit, AfterViewInit } from '@angular/core';\r\n\r\nimport { DrawCollapseService } from './draw-collapse.shared.service';\r\n\r\n@Directive({\r\n selector: '[directive=\"draw-base-height\"]',\r\n})\r\nexport class DrawBaseHeightDirective implements OnInit, AfterViewInit {\r\n public elem: HTMLElement;\r\n\r\n constructor(\r\n private _elementRef: ElementRef,\r\n private _drawCollapseService: DrawCollapseService,\r\n ) {}\r\n\r\n @HostListener('window:resize') private _onResize(): void {\r\n this._handleOnResize();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.elem = this._elementRef?.nativeElement;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._handleOnResize();\r\n\r\n this._drawCollapseService.toggleDraw(true);\r\n }\r\n\r\n private _handleOnResize(): void {\r\n if(!this.elem) {\r\n return;\r\n }\r\n\r\n this._drawCollapseService.setBaseMinimalHeight(this.elem.clientHeight);\r\n }\r\n}\r\n","import { Output, EventEmitter, Component, OnInit, Input, TemplateRef, AfterViewInit, OnChanges, SimpleChanges, ElementRef, ViewChild, Renderer2 } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'shared-slider-list',\r\n templateUrl: './slider-list.shared.component.html',\r\n styleUrls: ['./slider-list.shared.component.scss']\r\n})\r\nexport class SliderListComponent implements OnInit, AfterViewInit, OnChanges {\r\n private _init: boolean = false;\r\n private _children !: Array;\r\n\r\n @Input() public slides: TemplateRef;\r\n\r\n @ViewChild('slidesContainer', { static: true }) public elementRef: ElementRef;\r\n\r\n @Output() public onContentChange: EventEmitter> = new EventEmitter();\r\n\r\n constructor(\r\n public renderer2: Renderer2,\r\n ) { }\r\n\r\n ngOnInit(): void { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.slides) {\r\n this._contentChangedEmit();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._init = true;\r\n\r\n this._contentChangedEmit();\r\n }\r\n\r\n private _contentChangedEmit(): void {\r\n if (!this._init || !this.elementRef || !this.elementRef.nativeElement) return;\r\n setTimeout(() => {\r\n this._children = Array.from(this.elementRef.nativeElement.children);\r\n this.renderer2.setStyle(this.elementRef.nativeElement, 'grid-template-columns', `repeat(${this._children.length}, 1fr)`);\r\n this.renderer2.setStyle(this.elementRef.nativeElement, 'height', null);\r\n this.renderer2.setStyle(this.elementRef.nativeElement, 'visibility', null);\r\n this.onContentChange.emit(this._children);\r\n }, 0);\r\n }\r\n}\r\n","
\r\n \r\n
\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n//\r\n// Usage example:\r\n// \r\n//\r\n\r\n@Pipe({ name: 'highlightMatch' })\r\nexport class HighlightMatchPipe implements PipeTransform {\r\n transform(value: string, matchString: string, matchOptions: string = 'im', wrapper: string = '$1'): string {\r\n if(!value || typeof value !== 'string' || !matchString || typeof matchString !== 'string') return value;\r\n\r\n const groupMatch = `(${matchString})`;\r\n const regExp = new RegExp(groupMatch, matchOptions);\r\n const matchResults = value.match(regExp);\r\n if(!matchResults) return value;\r\n\r\n return value.replace(regExp, wrapper);\r\n }\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { ProjectionForDeviceComponent } from './projection-for-device.shared.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ProjectionForDeviceComponent\r\n ],\r\n imports: [CommonModule],\r\n exports: [\r\n ProjectionForDeviceComponent\r\n ],\r\n providers: [],\r\n})\r\nexport class ProjectionForDeviceModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { ProjectionForLocationModeComponent } from './projection-for-location-mode.shared.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ProjectionForLocationModeComponent\r\n ],\r\n imports: [CommonModule],\r\n exports: [\r\n ProjectionForLocationModeComponent\r\n ],\r\n providers: [],\r\n})\r\nexport class ProjectionForLocationModeModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { ProjectionForDeviceModule } from './forDevice';\r\nimport { ProjectionForLocationModeModule } from './forLocationMode';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n ProjectionForDeviceModule,\r\n ProjectionForLocationModeModule,\r\n ],\r\n exports: [\r\n ProjectionForDeviceModule,\r\n ProjectionForLocationModeModule,\r\n ],\r\n providers: [],\r\n})\r\nexport class ProjectionTypesModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { ProjectionTypesModule } from './projectionTypes';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n ProjectionTypesModule,\r\n ],\r\n exports: [\r\n ProjectionTypesModule,\r\n ],\r\n providers: [],\r\n})\r\nexport class ProjectionModule { }\r\n","export * from './projection.shared.module';\r\n","import { Directive, ElementRef, HostListener, HostBinding, Output, EventEmitter, Renderer2, OnInit, OnDestroy, TemplateRef, Input, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[directive-drop-down]',\r\n})\r\nexport class DropDownDirective implements OnInit, OnDestroy, OnChanges {\r\n private _listener: () => void;\r\n private _lockClick: boolean = false;\r\n private _trigger: HTMLElement;\r\n\r\n @Input() public trigger: TemplateRef;\r\n @Input() public openEvent: string = 'click';\r\n @Input() public projection: 'local' | 'global';\r\n @Input() public closeGlobalOnScroll: boolean = true;\r\n @Input() public open!: boolean;\r\n\r\n @Output() public onToggle: EventEmitter = new EventEmitter();\r\n @HostBinding('class.is-active') private _isOpen: boolean = false;\r\n\r\n constructor(\r\n private _elementRef: ElementRef,\r\n private _renderer2: Renderer2,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this._trigger = this.trigger.elementRef.nativeElement.parentElement.firstElementChild || this._elementRef.nativeElement.previousElementSibling;\r\n\r\n if (this.openEvent) {\r\n this._listener = this._renderer2.listen(this._trigger, this.openEvent, this._triggerClickHandler.bind(this));\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.openEvent && changes?.open && typeof changes?.open?.currentValue === 'boolean' && changes?.open?.currentValue !== changes?.open?.previousValue) {\r\n this._requestLockClick();\r\n this._isOpen = changes.open.currentValue;\r\n this.onToggle.emit(this._isOpen);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._listener) {\r\n this._listener();\r\n }\r\n }\r\n\r\n private _requestLockClick(): void {\r\n this._lockClick = true;\r\n setTimeout(() => { this._lockClick = false; }, 0);\r\n }\r\n\r\n private _triggerClickHandler(): void {\r\n this._requestLockClick();\r\n this._isOpen = !this._isOpen;\r\n\r\n this.onToggle.emit(this._isOpen);\r\n }\r\n\r\n @HostListener('click', ['$event']) public onHostClick(): void {\r\n this._requestLockClick();\r\n this._isOpen = !this._isOpen; /* This will close dd when option selected... might need some extra config */\r\n this.onToggle.emit(this._isOpen);\r\n }\r\n\r\n @HostListener('document:click', ['$event']) public onOutsideClick($event: Event): void {\r\n this.handleOutsideClicke($event);\r\n }\r\n\r\n @HostListener('window:drop-down:outer-click', ['$event']) public onOutsideElementWithStopPropagationClicked($event: Event): void {\r\n this.handleOutsideClicke($event);\r\n }\r\n\r\n @HostListener('window:scroll', ['$event']) public handleOnScrollBehavior($event: Event): void {\r\n if (this.projection === 'global' && this.closeGlobalOnScroll && this._isOpen) {\r\n this._requestLockClick();\r\n this._isOpen = !this._isOpen; /* This will close dd when option selected... might need some extra config */\r\n this.onToggle.emit(this._isOpen);\r\n }\r\n }\r\n\r\n public handleOutsideClicke($event: Event): void {\r\n if (this._lockClick) { return; }\r\n this._isOpen = false;\r\n this.onToggle.emit(this._isOpen);\r\n }\r\n}\r\n","import {\r\n Component, OnInit, OnDestroy, ChangeDetectionStrategy, Input, Output, EventEmitter, ChangeDetectorRef, TemplateRef, ViewChild, OnChanges,\r\n Injector, Renderer2, ComponentFactoryResolver, EmbeddedViewRef, ApplicationRef, ComponentRef, SimpleChanges,\r\n} from '@angular/core';\r\nimport { DropdownVendorComponent } from './dropdown-vendor.shared.component';\r\nimport { ScrollService } from '@shared/core/directives/scroll/scroll.shared.service';\r\nimport { trigger, transition, state, style, animate } from '@angular/animations';\r\n\r\n@Component({\r\n selector: 'shared-drop-down',\r\n templateUrl: './drop-down.shared.component.html',\r\n styleUrls: ['./drop-down.shared.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [\r\n trigger('openClosed', [\r\n state('open', style({\r\n opacity: 1,\r\n })),\r\n state('closed', style({\r\n opacity: 0\r\n })),\r\n transition('closed => open', [\r\n animate('0.3s 0.2s ease-in')\r\n ]),\r\n transition('open => closed', [\r\n animate('0.3s')\r\n ]),\r\n ]),\r\n ]\r\n})\r\nexport class DropDownComponent implements OnInit, OnChanges, OnDestroy {\r\n /* When there is problem with z-index, when global - options list will be projected outside of current html scope (in body) */\r\n private _vendorComponentRef: ComponentRef;\r\n private _isOpen: boolean = false;\r\n\r\n @Input() public open!: boolean;\r\n @Input() public projection: 'local' | 'global' = 'local';\r\n @Input() public projectionStyle: { [key: string]: number | string; } = null;\r\n @Input() public closeGlobalOnScroll: boolean = true;\r\n\r\n @Input() public mode: 'menu' | null = null;\r\n @Input() public theme: OLO.Components.DropDown.IDropDownTheme = 'common';\r\n @Input() public size!: OLO.Components.DropDown.IDropDownSize;\r\n @Input() public position: OLO.Components.DropDown.IDropDownPosition = 'bl';\r\n @Input() public selected: OLO.Components.DropDown.IDropDownOption = null;\r\n @Input() public width: OLO.Components.DROPDOWN_WIDTH = null;\r\n @Input() public preContent!: TemplateRef;\r\n @Input() public postContent!: TemplateRef;\r\n @Input() public openEvent: string = 'click';\r\n @Input() public refElem!: HTMLElement;\r\n\r\n @Input() public options: OLO.Components.DropDown.IDropDownOption[] = [];\r\n @Input() public optionTemplate: TemplateRef = null;\r\n //\r\n // \r\n // {{item?.Name}}\r\n // {{item?.Counter}}\r\n // \r\n // \r\n //\r\n @Output() public onSelected: EventEmitter = new EventEmitter();\r\n @Output() public onToggle: EventEmitter = new EventEmitter();\r\n\r\n @ViewChild('dropdownOptionsList', { static: true }) public dropdownOptionsList: TemplateRef;\r\n @ViewChild('dropdownTriggerContent', { static: true }) public dropdownTriggerContent: TemplateRef;\r\n\r\n constructor(\r\n private _scrollService: ScrollService,\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n\r\n private _renderer2: Renderer2,\r\n private _componentFactoryResolver: ComponentFactoryResolver,\r\n private _injector: Injector,\r\n private _appRef: ApplicationRef,\r\n ) { }\r\n\r\n public get isOpen(): boolean {\r\n return this._isOpen;\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.projection === 'global') {\r\n this._createVendorComponentView();\r\n }\r\n\r\n if (typeof this.open === 'boolean') {\r\n this._isOpen = this.open;\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (typeof changes?.open?.currentValue === 'boolean') {\r\n this.handleToggle(changes.open.currentValue);\r\n }\r\n\r\n this._updateScroll();\r\n\r\n setTimeout(() => {\r\n this._changeDetectorRef.detectChanges();\r\n }, 1000);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._destroyVendorComponentView();\r\n }\r\n\r\n private _updateScroll(): void {\r\n this._scrollService.requestUpdate();\r\n this._changeDetectorRef.detectChanges();\r\n }\r\n\r\n private _setStylesToVendorComponentView(): void {\r\n if (this.projection !== 'global' || !this._vendorComponentRef || !this.dropdownTriggerContent.elementRef.nativeElement) return;\r\n\r\n const refToElem: HTMLElement = this.refElem || this.dropdownTriggerContent.elementRef.nativeElement.parentElement.firstElementChild;\r\n if (!refToElem) return;\r\n\r\n const coords: DOMRect | ClientRect = refToElem.getClientRects()[0];\r\n\r\n const styles = {\r\n 'width': coords.width + 'px',\r\n 'height': coords.height + 'px',\r\n 'top': (coords.top + (window.scrollY || window.pageYOffset)) + 'px',\r\n 'left': coords.left + 'px',\r\n 'position': 'absolute',\r\n 'z-index': 20,\r\n };\r\n\r\n this._vendorComponentRef.instance.styles = {\r\n ...styles,\r\n ...this.projectionStyle\r\n };\r\n }\r\n\r\n private _unsetStylesToVenderoComponentView(): void {\r\n if (this.projection !== 'global' || !this._vendorComponentRef) return;\r\n\r\n this._vendorComponentRef.instance.styles = {\r\n display: 'none',\r\n };\r\n }\r\n\r\n private _createVendorComponentView(): void {\r\n //\r\n // When projection is set to 'global', we need to display dropdown directly in BODY element but\r\n // keeping context. We use dropdown-vendor component to host specified template 'dropdownOptionsList'.\r\n // First we create this component dynamiacly and then we provide our template with dropdown options.\r\n //\r\n\r\n /* Create a component reference from the component - to host container that will project our template ref */\r\n this._vendorComponentRef = this._componentFactoryResolver\r\n .resolveComponentFactory(DropdownVendorComponent)\r\n .create(this._injector);\r\n\r\n /* Attach component to the appRef so that it's inside the ng component tree */\r\n this._appRef.attachView(this._vendorComponentRef.hostView);\r\n\r\n /* Get DOM element from component */\r\n const domElem: HTMLElement = (this._vendorComponentRef.hostView as EmbeddedViewRef).rootNodes[0] as HTMLElement;\r\n\r\n /* Append DOM element to the body */\r\n this._renderer2.appendChild(document.body, domElem);\r\n\r\n /* Inject input */\r\n this._vendorComponentRef.instance.tplRef = this.dropdownOptionsList;\r\n this._vendorComponentRef.instance.width = 'full';\r\n }\r\n\r\n private _destroyVendorComponentView(): void {\r\n if (!this._vendorComponentRef) return;\r\n\r\n this._appRef.detachView(this._vendorComponentRef.hostView);\r\n this._vendorComponentRef.destroy();\r\n }\r\n\r\n public optionSelected(option: OLO.Components.DropDown.IDropDownOption): void {\r\n if (this.mode !== 'menu') {\r\n this.selected = option;\r\n }\r\n this.onSelected.emit(option);\r\n\r\n this._changeDetectorRef.detectChanges();\r\n }\r\n\r\n public trackBy(index: number, option: OLO.Components.DropDown.IDropDownOption): number | string {\r\n return option?.Id || index;\r\n }\r\n\r\n public handleToggle(isOpen: boolean): void {\r\n const isDiff = this._isOpen !== isOpen;\r\n if (!isDiff) return;\r\n\r\n this._isOpen = isOpen;\r\n\r\n if (isOpen) {\r\n this._setStylesToVendorComponentView();\r\n } else {\r\n this._unsetStylesToVenderoComponentView();\r\n }\r\n\r\n this.onToggle.emit(isOpen);\r\n this._changeDetectorRef.detectChanges();\r\n\r\n /* Loose button focus */\r\n if (!isOpen) {\r\n if (this.projection !== 'global' || !this._vendorComponentRef || !this.dropdownTriggerContent.elementRef.nativeElement) return;\r\n const btn = this.dropdownTriggerContent.elementRef.nativeElement.parentElement.firstElementChild.querySelector('button');\r\n if (btn) {\r\n btn.blur();\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n this._scrollService.requestUpdate();\r\n }, 100);\r\n }\r\n}\r\n","\r\n \r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
    \r\n
  • \r\n \r\n \r\n \r\n {{option.Name}}\r\n \r\n
  • \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n","export * from './image-preload.directive.shared.module';\r\n","import { Component, Renderer2, ElementRef, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\n\r\nimport { ButtonComponent } from '../button.shared.component';\r\n\r\n@Component({\r\n selector: 'shared-icon-btn',\r\n templateUrl: './icon-btn.shared.component.html',\r\n styleUrls: ['./icon-btn.shared.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class IconBtnComponent extends ButtonComponent {\r\n constructor(\r\n public renderer2: Renderer2,\r\n public elementRef: ElementRef,\r\n public changeDetectorRef: ChangeDetectorRef,\r\n ) {\r\n super(renderer2, elementRef, changeDetectorRef);\r\n }\r\n}\r\n","","/* Will register additional offset to draw component */\r\nimport { Directive, OnInit, AfterViewInit, OnDestroy, ElementRef, HostBinding } from '@angular/core';\r\n\r\nimport { DrawCollapseService } from './draw-collapse.shared.service';\r\n\r\nimport { Subscription } from 'rxjs';\r\nimport { startWith, auditTime } from 'rxjs/operators';\r\n@Directive({\r\n selector: '[directive-draw-offset-mobile]',\r\n})\r\nexport class DrawOffsetMobileSharedDirective implements OnInit, AfterViewInit, OnDestroy {\r\n private _canAddOffset: boolean = true;\r\n private _elem: HTMLElement;\r\n private _height: number;\r\n\r\n private _drawIsCollapes: Subscription;\r\n\r\n @HostBinding('class.-draw-collapsed-mobile') public isCollapsed: boolean = true;\r\n\r\n constructor(\r\n private _drawCollapseService: DrawCollapseService,\r\n private _elementRef: ElementRef,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this._elem = this._elementRef.nativeElement;\r\n\r\n const attr = this._elem.getAttribute('directive-draw-offset-mobile');\r\n if (attr === 'false') {\r\n this._canAddOffset = false;\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._drawIsCollapes = this._drawCollapseService.drawIsCollapsed$\r\n .pipe(\r\n auditTime(0),\r\n ).subscribe(isCollapsed => {\r\n this.isCollapsed = isCollapsed;\r\n });\r\n\r\n this._height = this._elem.clientHeight;\r\n\r\n if (!this._canAddOffset) return;\r\n this._drawCollapseService.addOffsetMobile(this._elem, this._height);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._drawIsCollapes && !this._drawIsCollapes.closed) this._drawIsCollapes.unsubscribe();\r\n\r\n if (!this._canAddOffset) return;\r\n this._drawCollapseService.removeOffsetMobile(this._elem);\r\n }\r\n}\r\n","export * from './draw-collapse.directive.shared.module';\r\nexport * from './draw-collapse.shared.service';\r\nexport * from './draw-collapse.shared.resolver';\r\nexport * from './draw-expand.shared.resolver';\r\n","import { Component, ElementRef, ViewChild, AfterViewInit, Input, ChangeDetectorRef, HostListener } from '@angular/core';\r\n\r\n@Component({\r\n template: '
This component requires extending
',\r\n})\r\nexport class SliderComponent implements AfterViewInit {\r\n private _init: boolean = false;\r\n private _slidesElems: Array;\r\n private _listWidth!: number;\r\n private _isAnimating: boolean = false;\r\n\r\n @Input() public loading: boolean = false;\r\n @Input() public currentSlide: number = 0;\r\n @Input() public animationTimeout: number = 300;\r\n @Input() public loop: boolean = true;\r\n @Input() public arrows: boolean = true;\r\n @Input() public dots: boolean = true;\r\n @Input() public iconNext: string = 'next';\r\n @Input() public iconPrev: string = 'prev';\r\n @Input() public stopPropagation: boolean = true;\r\n @Input() public inverted: boolean = false;\r\n\r\n @ViewChild('contentElem') public contentElem: ElementRef;\r\n @ViewChild('listElem') public listElem: ElementRef;\r\n\r\n @HostListener('window:resize', ['$event']) public onResize($event: Event): void {\r\n setTimeout(() => {\r\n this._setup();\r\n }, 200);\r\n }\r\n\r\n constructor(\r\n public changeDetectorRef: ChangeDetectorRef,\r\n ) { }\r\n\r\n ngAfterViewInit(): void {\r\n this._init = true;\r\n\r\n setTimeout(() => {\r\n this._setup();\r\n }, 0);\r\n }\r\n\r\n private _stopPropagation($event: Event): void {\r\n if ($event && this._stopPropagation) {\r\n $event.stopPropagation();\r\n }\r\n }\r\n\r\n public handleContentChange($event: Array): void {\r\n this._slidesElems = [...$event];\r\n\r\n this._setup();\r\n }\r\n\r\n private async _lock(): Promise {\r\n this._isAnimating = true;\r\n\r\n return new Promise(resolve => {\r\n setTimeout(() => {\r\n this._isAnimating = false;\r\n resolve(true);\r\n this._calculateListWidth();\r\n }, this.animationTimeout);\r\n });\r\n }\r\n\r\n private _setup(): void {\r\n if (!this._init) return;\r\n const tempAnimTimeout = this.animationTimeout;\r\n\r\n this._isAnimating = false;\r\n this.animationTimeout = null;\r\n\r\n this._calculateListWidth();\r\n\r\n this._setVisibleSlide(this.currentSlide)\r\n .then(() => {\r\n this.animationTimeout = tempAnimTimeout;\r\n });\r\n }\r\n\r\n private async _setVisibleSlide(slideNo: number = 0): Promise {\r\n if (!this._init || !this._slidesElems || !this._slidesElems.length || this._isAnimating || slideNo === this.currentSlide || this.isLoading) return;\r\n\r\n this.currentSlide = slideNo;\r\n\r\n return new Promise(resolve => {\r\n this._lock();\r\n\r\n setTimeout(() => {\r\n this._calculateListWidth();\r\n resolve(true);\r\n this._calculateListWidth();\r\n }, this.animationTimeout);\r\n });\r\n }\r\n\r\n private _calculateListWidth(): number {\r\n setTimeout(() => {\r\n this._listWidth = this.holderWidth * this._slidesElems?.length;\r\n this.changeDetectorRef.detectChanges();\r\n }, 0);\r\n\r\n return this._listWidth = this.holderWidth * this._slidesElems?.length;\r\n }\r\n\r\n public handleNextClick($event: Event): void {\r\n if (this._isAnimating) return;\r\n this._stopPropagation($event);\r\n let nextSlideIndex: number = this.currentSlide + 1;\r\n\r\n if (nextSlideIndex > this.maxIndex) {\r\n if (!this.loop) {\r\n return;\r\n }\r\n\r\n nextSlideIndex = 0;\r\n }\r\n\r\n this._setVisibleSlide(nextSlideIndex);\r\n }\r\n\r\n public handlePrevClick($event: Event): void {\r\n if (this._isAnimating) return;\r\n this._stopPropagation($event);\r\n let prevSlideIndex: number = this.currentSlide - 1;\r\n\r\n if (prevSlideIndex < 0) {\r\n if (!this.loop) {\r\n return;\r\n }\r\n\r\n prevSlideIndex = this.maxIndex;\r\n }\r\n\r\n this._setVisibleSlide(prevSlideIndex);\r\n }\r\n\r\n public handleDotClick($event: { event: Event; index: number; }): void {\r\n this._stopPropagation($event.event);\r\n this._setVisibleSlide($event.index);\r\n }\r\n\r\n public get holderWidth(): number {\r\n return this.contentElem && this.contentElem.nativeElement && this.contentElem.nativeElement.clientWidth || 0;\r\n }\r\n\r\n\r\n public get listTotalWidth(): number {\r\n return this._listWidth;\r\n }\r\n\r\n public get listOffset(): number {\r\n return -1 * this.currentSlide * this.holderWidth;\r\n }\r\n\r\n public get transitionDuration(): number {\r\n return this.animationTimeout;\r\n }\r\n\r\n public get maxIndex(): number {\r\n return this._slidesElems && this._slidesElems.length - 1 || 0;\r\n }\r\n\r\n public get canGoBack(): boolean {\r\n return this.loop ? true : this.currentSlide > 0;\r\n }\r\n\r\n public get canGoNext(): boolean {\r\n return this.loop ? true : this.currentSlide < this.maxIndex;\r\n }\r\n\r\n public get showArrows(): boolean {\r\n if (this.isLoading) return false;\r\n\r\n return !this.arrows ? false : this.maxIndex > 0;\r\n }\r\n\r\n public get showDots(): boolean {\r\n return this.dots;\r\n }\r\n\r\n public get canUseDots(): boolean {\r\n return !this.isLoading && this.maxIndex > 0;\r\n }\r\n\r\n public get activeIndex(): number {\r\n return this.currentSlide;\r\n }\r\n\r\n public get isLoading(): boolean {\r\n return this.loading;\r\n }\r\n\r\n public get currentCount(): number {\r\n return (this.activeIndex || 0) + 1;\r\n }\r\n\r\n public get totalCount(): number {\r\n return this._slidesElems?.length || 0;\r\n }\r\n\r\n public get isAnimating(): boolean {\r\n return this._isAnimating;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { DrawBaseHeightDirective } from './draw-base-height.shared.directive';\r\nimport { DrawCollapseSharedDirective } from './draw-collapse.shared.directive';\r\nimport { DrawOffsetSharedDirective } from './draw-offset.shared.directive';\r\nimport { DrawOffsetMobileSharedDirective } from './draw-offset-mobile.shared.directive';\r\nimport { DrawFollowSharedDirective } from './draw-follow.shared.directive';\r\nimport { DrawMinHeightSharedDirective } from './draw-min-height.shared.directive';\r\nimport { DrawOpacitySharedDirective } from './draw-opacity.shared.directive';\r\nimport { DrawContentMarginSharedDirective } from './draw-content-margin.shared.directive';\r\n\r\nimport { DrawCollapseResolver } from './draw-collapse.shared.resolver';\r\nimport { DrawExpandResolver } from './draw-expand.shared.resolver';\r\n\r\nconst toExport: any[] = [\r\n DrawBaseHeightDirective,\r\n DrawCollapseSharedDirective,\r\n DrawOffsetSharedDirective,\r\n DrawOffsetMobileSharedDirective,\r\n DrawFollowSharedDirective,\r\n DrawMinHeightSharedDirective,\r\n DrawOpacitySharedDirective,\r\n DrawContentMarginSharedDirective,\r\n];\r\n\r\n@NgModule({\r\n declarations: [\r\n ...toExport,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [\r\n ...toExport,\r\n ],\r\n providers: [\r\n DrawExpandResolver,\r\n DrawCollapseResolver,\r\n ],\r\n})\r\nexport class DrawCollapseDirectiveSharedModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { SliderDotsComponent } from './slider-dots.shared.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n SliderDotsComponent\r\n ],\r\n imports: [CommonModule],\r\n exports: [\r\n SliderDotsComponent\r\n ],\r\n providers: [],\r\n})\r\nexport class SliderDotsModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { SliderListComponent } from './slider-list.shared.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n SliderListComponent\r\n ],\r\n imports: [CommonModule],\r\n exports: [\r\n SliderListComponent\r\n ],\r\n providers: [],\r\n})\r\nexport class SliderListModule { }\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { SliderDotsModule } from './sliderDots';\r\nimport { SliderListModule } from './sliderList';\r\n\r\nconst toExport: any[] = [\r\n SliderDotsModule,\r\n SliderListModule,\r\n];\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n ...toExport,\r\n ],\r\n exports: [\r\n ...toExport,\r\n ],\r\n providers: [],\r\n})\r\nexport class SliderComponentsModule { }\r\n","export * from './slider-components.shared.module';\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { PickupLabelPipe } from './pickup-label.shared.pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n PickupLabelPipe,\r\n ],\r\n exports: [\r\n PickupLabelPipe\r\n ]\r\n})\r\nexport class PickupLabelPipeModule { }\r\n","export * from './pickup-label.module';\r\n","import { Directive, Output, OnInit, OnDestroy, EventEmitter, Renderer2, ElementRef, AfterViewInit, Input, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[directive-image-preload]',\r\n})\r\nexport class ImagePreloadDirective implements OnInit, OnDestroy, AfterViewInit, OnChanges {\r\n private _target: HTMLElement;\r\n private _init: boolean = false;\r\n private _tempImg!: HTMLImageElement;\r\n private _loaded: boolean = false;\r\n\r\n @Input() public url: string;\r\n @Input() public background: boolean = false;\r\n @Output() public onLoaded: EventEmitter = new EventEmitter();\r\n\r\n constructor(\r\n private _renderer2: Renderer2,\r\n private _elementRef: ElementRef,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this._target = this._elementRef.nativeElement;\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.url?.previousValue !== changes.url?.currentValue) {\r\n this._download();\r\n }\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this._init = true;\r\n\r\n this._download();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._destroy();\r\n }\r\n\r\n private _download(): void {\r\n if(!this.url || !this._init) {\r\n return this._destroy();\r\n }\r\n\r\n this._tempHide();\r\n\r\n this._tempImg = new Image();\r\n this._tempImg.onload = (event) => {\r\n this._loaded = true;\r\n\r\n if(!this.background) {\r\n return this._revealImage(event);\r\n }\r\n\r\n this._renderer2.setStyle(this._target, 'backgroundImage', `url(${this._tempImg.src})`);\r\n };\r\n\r\n this._tempImg.src = this.url;\r\n\r\n }\r\n\r\n private _destroy(): void {\r\n if(this._tempImg && !this._loaded) {\r\n this._tempImg.onload = null;\r\n this._tempImg.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';\r\n\r\n this.onLoaded.emit(null);\r\n }\r\n }\r\n\r\n private _tempHide(): void {\r\n if (this.url && this._target && !this.background) {\r\n this._renderer2.setStyle(this._target, 'visibility', 'hidden');\r\n this._renderer2.setStyle(this._target, 'opacity', 0);\r\n this._renderer2.setStyle(this._target, 'transition', 'opacity .5s ease');\r\n }\r\n }\r\n\r\n private _revealImage(event: Event): void {\r\n this._renderer2.setStyle(this._target, 'opacity', 0);\r\n this._renderer2.setAttribute(this._target, 'src', this._tempImg.src);\r\n this._renderer2.setStyle(this._target, 'visibility', null);\r\n\r\n setTimeout(() => {\r\n this._renderer2.setStyle(this._target, 'opacity', 1);\r\n\r\n this.onLoaded.emit(event);\r\n\r\n setTimeout(() => {\r\n this._renderer2.setStyle(this._target, 'opacity', null);\r\n this._renderer2.setStyle(this._target, 'transition', null);\r\n }, 501);\r\n }, 50);\r\n }\r\n\r\n}\r\n","import { Component, OnInit, ChangeDetectionStrategy,\r\n Input, Output, EventEmitter, OnChanges, SimpleChanges, ElementRef, ContentChild, AfterViewInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\r\n\r\nimport { Controllers } from '@shared/core/controllers';\r\n\r\nimport { Observable, fromEvent, Subscription } from 'rxjs';\r\nimport { tap, withLatestFrom } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'shared-places-suggestion',\r\n templateUrl: './places-suggestion.shared.component.html',\r\n styleUrls: ['./places-suggestion.shared.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PlacesSuggestionComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\r\n private _isLocked: boolean = false;\r\n private _isOpen: boolean = false;\r\n private _searchTimeout: number;\r\n private _searchTickTimeout: number = 500;\r\n\r\n @ContentChild('input', { static: false }) public inputElement: ElementRef;\r\n @Input() public searchTerm!: string;\r\n @Input() public refElem!: HTMLElement;\r\n @Input() public enabled: boolean = false;\r\n @Output() public onSelected: EventEmitter = new EventEmitter();\r\n\r\n public options$!: Observable;\r\n public inputEvents$!: Subscription;\r\n\r\n constructor(\r\n public controllers: Controllers,\r\n public changeDetectorRef: ChangeDetectorRef,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.options$ = this.controllers.google.getAutocompleteResults$();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const input = this.inputElement?.nativeElement;\r\n if(input) {\r\n this.inputEvents$ = fromEvent(input, 'keydown')\r\n .pipe(\r\n withLatestFrom(\r\n this.options$,\r\n )\r\n )\r\n .subscribe(([event, options]) => {\r\n if((event).keyCode === 13) {\r\n if(options && options.length) {\r\n event.preventDefault();\r\n this.handleOnSelected(options[0]);\r\n this.handleOnToggle(false);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.enabled && this._isLocked === false && changes?.searchTerm?.currentValue !== changes?.searchTerm?.previousValue) {\r\n this._triggerSearch(changes.searchTerm.currentValue);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.inputEvents$ && !this.inputEvents$.closed) {\r\n this.inputEvents$.unsubscribe();\r\n }\r\n }\r\n\r\n public handleOnToggle($event: boolean): void {\r\n if (!$event && $event !== this._isOpen) {\r\n this._isOpen = $event;\r\n }\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n public handleOnSelected($event: APICommon.IGooglePlaceDetails): void {\r\n this._tempLock();\r\n this.onSelected.emit($event);\r\n }\r\n\r\n public get open(): boolean {\r\n return this._isOpen;\r\n }\r\n\r\n private _tempLock(): void {\r\n this._isLocked = true;\r\n setTimeout(() => {\r\n this._isLocked = false;\r\n }, this._searchTickTimeout + 100);\r\n }\r\n\r\n private _killLock(): void {\r\n if (this._searchTimeout) {\r\n clearTimeout(this._searchTimeout);\r\n this._searchTimeout = null;\r\n }\r\n }\r\n\r\n private _triggerSearch(term: string): void {\r\n if (term) {\r\n this._killLock();\r\n\r\n this._searchTimeout = window.setTimeout(() => {\r\n this.controllers.google.getAutocompleteSuggestion(term.trim() || null);\r\n this._isOpen = true;\r\n }, this._searchTickTimeout);\r\n\r\n } else {\r\n this._killLock();\r\n this._isOpen = false;\r\n }\r\n }\r\n\r\n}\r\n","\r\n
\r\n \r\n\r\n
\r\n
\r\n
\r\n {{item?.structured_formatting?.secondary_text}}\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n \r\n\r\n\r\n\r\n
\r\n \"Powered\r\n
\r\n
\r\n","/* Will register additional offset to draw component */\r\nimport { Directive, OnInit, AfterViewInit, OnDestroy, ElementRef, HostBinding } from '@angular/core';\r\n\r\nimport { DrawCollapseService } from './draw-collapse.shared.service';\r\n\r\nimport { Subscription } from 'rxjs';\r\nimport { startWith, auditTime } from 'rxjs/operators';\r\n@Directive({\r\n selector: '[directive-draw-offset]',\r\n})\r\nexport class DrawOffsetSharedDirective implements OnInit, AfterViewInit, OnDestroy {\r\n private _canAddOffset: boolean = true;\r\n private _elem!: HTMLElement;\r\n private _height!: number;\r\n\r\n private _drawIsCollapes: Subscription;\r\n\r\n @HostBinding('class.-draw-collapsed') public isCollapsed: boolean = true;\r\n\r\n constructor(\r\n private _drawCollapseService: DrawCollapseService,\r\n private _elementRef: ElementRef,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this._elem = this._elementRef.nativeElement;\r\n\r\n const attr = this._elem.getAttribute('directive-draw-offset');\r\n if (attr === 'false') {\r\n this._canAddOffset = false;\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._drawIsCollapes = this._drawCollapseService.drawIsCollapsed$\r\n .pipe(\r\n // distinctUntilChanged(),\r\n auditTime(0)\r\n ).subscribe(isCollapsed => {\r\n this.isCollapsed = isCollapsed;\r\n });\r\n\r\n this._height = this._elem.clientHeight;\r\n\r\n if (!this._canAddOffset) return;\r\n this._drawCollapseService.addOffset(this._elem, this._height);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._drawIsCollapes && !this._drawIsCollapes.closed) this._drawIsCollapes.unsubscribe();\r\n\r\n if (!this._canAddOffset) return;\r\n this._drawCollapseService.removeOffset(this._elem);\r\n }\r\n}\r\n","/* Will change element's opacity depending on current scroll progress */\r\nimport { Directive, OnInit, OnDestroy, HostBinding, ChangeDetectorRef } from '@angular/core';\r\n\r\nimport { DrawCollapseService } from './draw-collapse.shared.service';\r\n\r\nimport { Subscription } from 'rxjs';\r\nimport { distinctUntilChanged } from 'rxjs/operators';\r\n\r\n@Directive({\r\n selector: '[directive-draw-opacity]',\r\n})\r\nexport class DrawOpacitySharedDirective implements OnInit, OnDestroy {\r\n private _opacityListener$: Subscription;\r\n private readonly _speedOpacityFactor: number = 1.2;\r\n\r\n @HostBinding('style.opacity') public opacity: number = null;\r\n @HostBinding('style.transition') public transtion: string = `opacity ${this._drawCollapseService.transition}`;\r\n\r\n constructor(private _drawCollapseService: DrawCollapseService, private _changeDetectorRef: ChangeDetectorRef) { }\r\n\r\n ngOnInit(): void {\r\n this._opacityListener$ = this._drawCollapseService.drawCurrentHeight$.pipe(distinctUntilChanged())\r\n .subscribe(offset => {\r\n const full = 400;\r\n let current = (Math.pow(full - offset, this._speedOpacityFactor)) * 100 / full;\r\n if (isNaN(current)) {\r\n current = 0;\r\n }\r\n this.opacity = Math.floor(100 - current) / 100;\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._opacityListener$ && !this._opacityListener$.closed) this._opacityListener$.unsubscribe();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { ImagePreloadDirective } from './image-preload.shared.directive';\r\n\r\n@NgModule({\r\n declarations: [\r\n ImagePreloadDirective,\r\n ],\r\n exports: [\r\n ImagePreloadDirective\r\n ],\r\n})\r\nexport class ImagePreloadDirectiveSharedModule { }\r\n","/* Will register additional offset to draw component */\r\n//\r\n// Synchronize current's element css TOP property with main draw height.\r\n// This will give 'following' effect and will expand/collapse with draw.\r\n//\r\n// Current element should have POSITION property set to fixed;\r\n//\r\n// Value of this property can be set to 'parent' - this will update parent's css prop instead of elementRef.nativeElement.\r\n//\r\nimport { Directive, OnInit, OnDestroy, ElementRef, Renderer2 } from '@angular/core';\r\n\r\nimport { DrawCollapseService } from './draw-collapse.shared.service';\r\n\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\n@Directive({\r\n selector: '[directive-draw-follow]',\r\n})\r\nexport class DrawFollowSharedDirective implements OnInit, OnDestroy {\r\n private _elem: HTMLElement;\r\n private _drawHeight$: Subscription;\r\n private _drawMobileHeight$: Subscription;\r\n\r\n constructor(\r\n private _drawCollapseService: DrawCollapseService,\r\n private _elementRef: ElementRef,\r\n private _renderer2: Renderer2,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n const attr: string = this._elementRef.nativeElement.getAttribute('directive-draw-follow');\r\n this._elem = attr === 'parent' ? this._elementRef.nativeElement.parentElement : this._elementRef.nativeElement;\r\n\r\n this._renderer2.setStyle(this._elem, 'transition', `top ${this._drawCollapseService.transition}`);\r\n\r\n this._drawHeight$ = this._drawCollapseService.drawCurrentHeight$\r\n .pipe(\r\n filter(height => height !== null && height !== undefined && typeof height === 'number'),\r\n ).subscribe(this._setHeight.bind(this));\r\n\r\n this._drawMobileHeight$ = this._drawCollapseService.drawNavBarCollapseHeight$\r\n .pipe(\r\n ).subscribe(this._setHeight.bind(this));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._drawHeight$ && !this._drawHeight$.closed) this._drawHeight$.unsubscribe();\r\n\r\n if (this._drawMobileHeight$ && !this._drawMobileHeight$.closed) this._drawHeight$.unsubscribe();\r\n }\r\n\r\n private _setHeight(height: number): void {\r\n this._renderer2.setStyle(this._elem, 'top', `${height}px`);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { ScrollDirectiveSharedModule } from '@shared/core/directives/scroll/scroll.directive.shared.module';\r\n\r\nimport { DropDownComponent } from './drop-down.shared.component';\r\nimport { DropdownVendorComponent } from './dropdown-vendor.shared.component';\r\nimport { DropDownDirective } from './drop-down.shared.directive';\r\nimport { DropdDownOuterClickDirective } from './drop-down-outer-click.shared.directive';\r\n\r\nconst exportedComponents: any[] = [\r\n DropDownComponent,\r\n DropdownVendorComponent,\r\n DropDownDirective,\r\n DropdDownOuterClickDirective,\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ScrollDirectiveSharedModule,\r\n ],\r\n declarations: [\r\n ...exportedComponents,\r\n ],\r\n entryComponents: [\r\n DropdownVendorComponent,\r\n ],\r\n exports: [\r\n ...exportedComponents,\r\n ],\r\n providers: [],\r\n schemas: []\r\n})\r\nexport class DropDownModule { }\r\n","export * from './drop-down.shared.module';\r\n","/* Will change element's opacity depending on current scroll progress */\r\nimport { Directive, OnInit, OnDestroy, HostBinding, Input } from '@angular/core';\r\n\r\nimport { DrawCollapseService } from './draw-collapse.shared.service';\r\n\r\nimport { Subscription, fromEvent, merge } from 'rxjs';\r\nimport { map, withLatestFrom } from 'rxjs/operators';\r\n\r\n@Directive({\r\n selector: '[directive-draw-content-margin]',\r\n})\r\nexport class DrawContentMarginSharedDirective implements OnInit, OnDestroy {\r\n private _marginListener$: Subscription;\r\n @Input() public activeHeight: boolean = true;\r\n @HostBinding('style.marginTop.px') public marginTop: number = null;\r\n @HostBinding('style.transition') public transition: string = null;\r\n\r\n constructor(\r\n private _drawCollapseService: DrawCollapseService,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n if (!this.activeHeight) return;\r\n\r\n this._marginListener$ = merge(\r\n fromEvent(window, 'scroll'),\r\n this._drawCollapseService.drawDifference$,\r\n this._drawCollapseService.drawCurrentHeight$,\r\n this._drawCollapseService.drawProgress$,\r\n )\r\n .pipe(\r\n withLatestFrom(\r\n fromEvent(window, 'scroll')\r\n .pipe(\r\n map(event => window.scrollY)\r\n ),\r\n this._drawCollapseService.drawProgress$,\r\n this._drawCollapseService.drawCurrentHeight$,\r\n this._drawCollapseService.drawDifference$,\r\n ),\r\n )\r\n .subscribe(([nextTrigger, nextScrollY, nextProgress, nextHeight, nextDiff]) => {\r\n this.marginTop = nextDiff;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._marginListener$ && !this._marginListener$.closed) this._marginListener$.unsubscribe();\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy, Input, ChangeDetectionStrategy, Inject } from '@angular/core';\r\n\r\nimport * as Tokens from '@shared/core/tokens';\r\nimport * as Services from '@shared/core/services';\r\nimport * as State from '@shared/state';\r\nimport { Controllers } from '@shared/core/controllers';\r\n\r\nimport { DrawCollapseService } from '@shared/core/directives/drawCollapse';\r\n\r\nimport { Observable, defer, timer, of, merge, fromEvent, BehaviorSubject } from 'rxjs';\r\nimport { take, pairwise, switchMap, map, distinctUntilChanged, auditTime, startWith, filter } from 'rxjs/operators';\r\nimport { Store } from '@ngrx/store';\r\n\r\n@Component({\r\n template: '
This component requires extending
',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PickupComponent implements OnInit, OnDestroy {\r\n public futureOrders: boolean = false;\r\n\r\n @Input() public size: OLO.Components.BUTTON_SIZE;\r\n @Input() public preHead: string = 'GOOD MORNING';\r\n @Input() public title: string = 'When would you like to pick up your\\n order?';\r\n @Input() public mode: OLO.Components.PICKUP_MODE = 'filter';\r\n @Input() public labelTitle: string = 'PICKING UP:';\r\n @Input() public asapTitle: string = 'ASAP';\r\n @Input() public laterTitle: string = 'Later today';\r\n @Input() public nextIcon: string = 'next';\r\n @Input() public dropdownWidth: OLO.Components.DROPDOWN_WIDTH = 'sm';\r\n @Input() public locationNo!: number;\r\n @Input() public modalId!: number;\r\n @Input() public disabled: boolean = false;\r\n\r\n public options$: Observable;\r\n public filters$: Observable;\r\n public selected$: Observable;\r\n public isHiding$: Observable;\r\n public currentMode$: Observable;\r\n public isBelowDrawerMediaBreakpoint$: Observable;\r\n public hasLocations$: Observable;\r\n public periods$!: Observable;\r\n public periodsFiltered$!: Observable;\r\n\r\n public currentLocationPickupTimesList$: Observable; /* For pickup time selection list */\r\n public currentLocationPickupTimesListFiltered$: Observable;\r\n\r\n public currentLocationPickupTimeLabel$: Observable;\r\n public currentLocationPickupTimeSelected$: Observable;\r\n\r\n public cartPickupTimeSelected$: Observable;\r\n public cartPickupTimeSelectedLabel$: Observable;\r\n\r\n // public collectionTypesLinks$: Observable;\r\n public isDineInActive$: Observable;\r\n public dropdownToggled$: BehaviorSubject = new BehaviorSubject(true);\r\n\r\n constructor(\r\n @Inject(Tokens.CONFIG_TOKEN) public config: IConfig,\r\n public controllers: Controllers,\r\n public drawCollapseService: DrawCollapseService,\r\n public locationsService: Services.LocationsService,\r\n public routeService: Services.RouteService,\r\n public pickupsService: Services.PickupsService,\r\n public store: Store,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.isDineInActive$ = this.controllers.collectionType.isDineInActive$();\r\n this.futureOrders = this.config.futureOrders === true;\r\n this.periods$ = this.locationNo ?\r\n this.controllers.locations.getPeriodsForLocation$(this.locationNo) :\r\n this.controllers.locations.getPeriodsForAllLocations$();\r\n this.periodsFiltered$ = this._calculateLaterTimes(this.periods$);\r\n this.options$ = this.controllers.filters.pickupTimesListForAllLocations$(false, this.futureOrders ? 3 : null, this.futureOrders);\r\n this.filters$ = this.controllers.filters.getLocationFilters$();\r\n this.selected$ = this.mode === 'checkout' ? this.controllers.cart.cartPickupTime$() : this.controllers.filters.getLocationFilterSelectedPickupTime$();\r\n this.currentMode$ = this.controllers.filters.getLocationFilterCurrentMode$();\r\n this.currentLocationPickupTimesList$ = this.pickupsService.availablePickupsListForLocation$(this.locationNo, this.futureOrders ? 10 : null, this.futureOrders);\r\n this.currentLocationPickupTimeLabel$ = this.pickupsService.selectedCurrentPickupTimeLabel$(this.futureOrders, this.pickupLabelType);\r\n this.currentLocationPickupTimeSelected$ = this.pickupsService.selectedCurrentPickupTime$();\r\n this.cartPickupTimeSelected$ = this.controllers.cart.cartPickupTime$();\r\n this.cartPickupTimeSelectedLabel$ = this.controllers.cart.cartPickupTimeLabelFull$(null, 'checkoutBox');\r\n this.hasLocations$ = this.controllers.locations.hasLocations$();\r\n\r\n /* This will prevent from animating later field when going from selected pickup time to asap */\r\n this.isHiding$ = this.filters$\r\n .pipe(\r\n pairwise(),\r\n switchMap(([prev, next]) => defer(() => {\r\n const isRestoring = prev.pickupMode.Id === 2 && prev.pickupTime !== null && next.pickupMode.Id === 1 && next.pickupTime === null;\r\n\r\n if (isRestoring) {\r\n return merge(\r\n of(true),\r\n timer(500)\r\n .pipe(\r\n map(() => false)\r\n )\r\n );\r\n }\r\n\r\n return of(isRestoring);\r\n })),\r\n distinctUntilChanged()\r\n );\r\n\r\n this.isBelowDrawerMediaBreakpoint$ = fromEvent(window, 'resize')\r\n .pipe(\r\n startWith(null),\r\n auditTime(200),\r\n map(() => window.innerWidth < this.drawCollapseService.mediaBreakPoint),\r\n );\r\n if (new Date().getHours() >= 12 && this.preHead === 'GOOD MORNING') {\r\n this.preHead = 'GOOD AFTERNOON';\r\n }\r\n this.currentLocationPickupTimesListFiltered$ = this.dropdownToggled$.pipe(\r\n filter(isOpen => isOpen),\r\n switchMap(() => this._calculateTimesDropdown(this.currentLocationPickupTimesList$, this.futureOrders))\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n\r\n }\r\n\r\n public onLabelClick($event: Event): void {\r\n this.controllers.filters.getLocationFilters$()\r\n .pipe(\r\n take(1)\r\n )\r\n .subscribe(filters => {\r\n if (filters.pickupMode.Id !== 2) {\r\n /* Set mode to 'Later today' */\r\n this.controllers.filters.onLocationsFilterModeChange(1);\r\n }\r\n });\r\n }\r\n\r\n public onNextClick($event: Event): void {\r\n /* Just redirect click to label */\r\n this.onLabelClick($event);\r\n }\r\n\r\n public onAsapClick($event: Event): void {\r\n this.controllers.filters.clearPickupFilters();\r\n }\r\n\r\n public dropdownSelected(pickupTime: OLO.Ordering.IPickupTime, update: boolean = false): void {\r\n switch (true) {\r\n case this.mode === 'hero' || this.mode === 'filter' || (this.mode === 'schedule' && !!this.locationNo === false):\r\n if (pickupTime.Id === -1) {\r\n return this.controllers.filters.openScheduleModal(this.modalId || null);\r\n }\r\n\r\n this.controllers.routes.navigateToLocationsSearchView()\r\n .then(() => {\r\n this.controllers.filters.selectPickupTimeOption(pickupTime, !this.futureOrders);\r\n });\r\n\r\n return;\r\n\r\n case this.mode === 'checkout' || (this.mode === 'schedule' && !!this.locationNo === true && update === true):\r\n if (pickupTime.Id === -1) {\r\n this.controllers.cart.getCartLocationNo$()\r\n .pipe(\r\n take(1)\r\n )\r\n .subscribe(locationNo => this.controllers.filters.openScheduleModal(this.modalId || null, locationNo, true));\r\n\r\n return;\r\n }\r\n\r\n this.controllers.cart.updateCartPickupTime(pickupTime, this.modalId);\r\n\r\n return;\r\n\r\n // case this.mode === 'current-location' || (this.mode === 'schedule' && !!this.locationNo === true && update === false):\r\n // if (pickupTime.Id === -1) {\r\n // this.controllers.locations.currentLocation$()\r\n // .pipe(\r\n // take(1)\r\n // ).subscribe(locationNo => {\r\n // return this.controllers.filters.openScheduleModal(this.modalId || null, locationNo.LocationNo);\r\n // });\r\n // return;\r\n // }\r\n // this.pickupsService.selectPickupTimeForCurrentLocation(pickupTime);\r\n\r\n // return;\r\n\r\n default:\r\n if (pickupTime.Id === -1) {\r\n this.controllers.locations.currentLocation$()\r\n .pipe(\r\n take(1)\r\n )\r\n .subscribe(locationNo => this.controllers.filters.openScheduleModal(this.modalId || null, locationNo.LocationNo));\r\n\r\n return;\r\n }\r\n this.controllers.cart.cartTotalQuantity$()\r\n .pipe(\r\n take(1)\r\n )\r\n .subscribe(qty => {\r\n if (!qty) return this.pickupsService.selectPickupTimeForCurrentLocation(pickupTime);\r\n this.controllers.cart.updateCartPickupTime(pickupTime);\r\n });\r\n\r\n // console.warn(`pickup.shared.component dropdownSelected mode '${this.mode}' not supported`);\r\n }\r\n\r\n }\r\n\r\n public get pickupLabelType(): OLO.Types.PICKUP_LABEL_TYPES {\r\n switch (this.mode) {\r\n case 'current-location':\r\n return 'location';\r\n case 'checkout':\r\n return 'checkoutBox';\r\n case 'filter':\r\n default:\r\n return 'filter';\r\n\r\n }\r\n }\r\n\r\n public dropdownToggle(isOpen: boolean): void {\r\n this.dropdownToggled$.next(isOpen);\r\n switch (true) {\r\n case this.mode === 'hero' || this.mode === 'filter':\r\n if (!isOpen) return;\r\n\r\n this.currentMode$\r\n .pipe(\r\n take(1)\r\n ).subscribe(mode => {\r\n if (mode.Id === 2) return;\r\n\r\n this.controllers.filters.onLocationsFilterModeChange(1);\r\n });\r\n\r\n return;\r\n\r\n case this.mode === 'current-location':\r\n\r\n return;\r\n\r\n default:\r\n // console.warn(`pickup.shared.component dropdownToggle mode '${this.mode}' not supported`);\r\n }\r\n }\r\n\r\n public get isDisabled(): boolean {\r\n return this.disabled;\r\n }\r\n\r\n private _calculateLaterTimes(PickupTimesList$: Observable): Observable {\r\n return PickupTimesList$.pipe(\r\n map(pickupTimes => [...pickupTimes\r\n .filter(time => time.Id < 0 || (new Date(time.Date).getTime()) > (new Date()).getTime())]));\r\n }\r\n\r\n private _calculateTimesDropdown(PickupTimesList$: Observable, futureOrders: boolean): Observable {\r\n if (!futureOrders) {\r\n return PickupTimesList$;\r\n } else {\r\n return PickupTimesList$.pipe(\r\n map(pickupTimes => {\r\n if (pickupTimes === null) return null;\r\n const ASAP = [...pickupTimes].slice(-1)[0];\r\n const pickupTimesFiltered = [...pickupTimes];\r\n pickupTimesFiltered.pop();\r\n\r\n return [...pickupTimesFiltered\r\n .filter(time => time.IsAsap || time.Id < 0 || (new Date(time.DateLocalISO).getTime()) > (new Date()).getTime())\r\n .slice(0, 3), ASAP];\r\n }));\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, TemplateRef, ComponentRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'shared-dropdown-vendor-placeholder',\r\n template: `
`,\r\n})\r\nexport class DropdownVendorComponent implements OnInit {\r\n @Input() public tplRef: TemplateRef;\r\n @Input() public styles: { [key: string]: number | string; } = { 'display': 'none' };\r\n @Input() public width: OLO.Components.DROPDOWN_WIDTH = 'full';\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n}\r\n","import { Component, OnInit, Input, TemplateRef } from '@angular/core';\r\n\r\nimport { Controllers } from '@shared/core/controllers';\r\n\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'projection-for-device',\r\n templateUrl: './projection-for-device.shared.component.html',\r\n})\r\nexport class ProjectionForDeviceComponent implements OnInit {\r\n //\r\n // Initial asumption based on first designs and items about mobile/desktop devices was ok\r\n // Using just media queries would work both for this component and for css, so many elements\r\n // assume that mobile device is anything with screen width lower than 768px...\r\n // After a while this project got fat, no patterns, designs were shitty - these guys don't know what is grid...\r\n //\r\n // Mobile device assumptions should be aligned with touch event detection, thus lots of components need to be refactored.\r\n // Also some css media queries will require rethinking.\r\n //\r\n @Input() public mobile: TemplateRef = null;\r\n @Input() public desktop: TemplateRef = null;\r\n\r\n public isDeviceSet$: Observable;\r\n public isMobile$: Observable;\r\n\r\n constructor(\r\n public controllers: Controllers,\r\n ) {\r\n this.isDeviceSet$ = this.controllers.appSettings.deviceType$()\r\n .pipe(\r\n map(device => device !== null),\r\n );\r\n\r\n this.isMobile$ = this.controllers.appSettings.deviceType$()\r\n .pipe(\r\n map(device => device === OLO.Enums.DEVICE_TYPE.MOBILE)\r\n );\r\n }\r\n\r\n ngOnInit(): void { }\r\n}\r\n","\r\n \r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { HighlightMatchPipe } from './highlight-match.shared.pipe';\r\n@NgModule({\r\n declarations: [HighlightMatchPipe],\r\n exports: [ HighlightMatchPipe],\r\n})\r\n\r\n\r\nexport class HighlightMatchPipeModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { DropDownModule } from '@shared/core/components/dropDown';\r\nimport { IconModule } from '@shared/core/components/icon';\r\nimport { ImagePreloadDirectiveSharedModule } from '@shared/core/directives/imagePreload';\r\nimport { HighlightMatchPipeModule } from '@shared/core/pipes/highlightMatch';\r\n\r\nimport { PlacesSuggestionComponent } from './places-suggestion.shared.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n PlacesSuggestionComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n DropDownModule,\r\n IconModule,\r\n ImagePreloadDirectiveSharedModule,\r\n HighlightMatchPipeModule,\r\n ],\r\n exports: [\r\n PlacesSuggestionComponent\r\n ]\r\n})\r\nexport class PlacesSuggestionModule { }\r\n","export * from './places-suggestion.shared.component';\r\nexport * from './places-suggestion.shared.module';\r\n","/* Will register additional offset to draw component */\r\nimport { Directive, OnInit, AfterViewInit, OnDestroy, ElementRef, Input, HostBinding } from '@angular/core';\r\n\r\nimport { DrawCollapseService } from './draw-collapse.shared.service';\r\n\r\nimport { Subscription } from 'rxjs';\r\nimport { distinctUntilChanged, combineLatest, auditTime } from 'rxjs/operators';\r\n\r\n@Directive({\r\n selector: '[directive-draw-min-height]',\r\n})\r\nexport class DrawMinHeightSharedDirective implements OnInit, AfterViewInit, OnDestroy {\r\n private _sizeListener$: Subscription;\r\n private _elem: HTMLElement;\r\n private _mode: 'register' | 'adjust' = 'register';\r\n\r\n @Input() public activeHeight: boolean = true;\r\n @HostBinding('style.minHeight.px') public minHeight: number = null;\r\n\r\n constructor(\r\n private _drawCollapseService: DrawCollapseService,\r\n private _elementRef: ElementRef,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n if (!this.activeHeight) return;\r\n this._elem = this._elementRef.nativeElement;\r\n\r\n if (this._elem.getAttribute('directive-draw-min-height') === 'adjust') {\r\n this._mode = 'adjust';\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.activeHeight) return;\r\n setTimeout(() => {\r\n if (this._mode === 'adjust') {\r\n this._sizeListener$ = this._drawCollapseService.drawCurrentHeight$.pipe(\r\n combineLatest(\r\n this._drawCollapseService.minHeightContent$\r\n ),\r\n // auditTime(0),\r\n ).subscribe(data => {\r\n const sum = data.reduce((a, b) => a + b, 0);\r\n this.minHeight = window.innerHeight - sum;\r\n });\r\n }\r\n if (this._mode === 'register') {\r\n this._drawCollapseService.addMinHeight(this._elem, this._elem.clientHeight);\r\n }\r\n }, 0);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._sizeListener$ && !this._sizeListener$.closed) this._sizeListener$.unsubscribe();\r\n }\r\n}\r\n","import { Directive, AfterViewInit, OnInit, OnDestroy, ElementRef, HostBinding, Renderer2, HostListener } from '@angular/core';\r\n\r\nimport { DrawCollapseService } from './draw-collapse.shared.service';\r\nimport { DevService } from '@shared/core/services';\r\n\r\nimport { Subscription, fromEvent } from 'rxjs';\r\nimport { filter, tap, withLatestFrom, pairwise, map, delay } from 'rxjs/operators';\r\n\r\n@Directive({\r\n selector: '[directive-draw-collapse]',\r\n})\r\nexport class DrawCollapseSharedDirective implements OnInit, AfterViewInit, OnDestroy {\r\n private readonly _speedFactor: number = 1;\r\n private _expandListener$: Subscription;\r\n private _offsetListener$: Subscription;\r\n private _offsetMobileListener$: Subscription;\r\n private _scrollListener$: Subscription;\r\n private _navBarHeightListener$: Subscription;\r\n private _headerBaseHeightListener$: Subscription;\r\n\r\n private _isCollapsed: boolean = false;\r\n private _init: boolean = false;\r\n private _elem: HTMLElement;\r\n private _expand: boolean;\r\n private _mobileScrollPoint: number;\r\n private _mobileScrollStop: number = 60;\r\n\r\n private _topOffset: number = 0;\r\n private _isMobileCollapsed: boolean = false;\r\n\r\n public expandedHeight: number;\r\n\r\n constructor(\r\n private _drawCollapseService: DrawCollapseService,\r\n private _elementRef: ElementRef,\r\n private _renderer2: Renderer2,\r\n private _d: DevService,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this._elem = this._elementRef.nativeElement;\r\n\r\n this._mobileScrollPoint = this._drawCollapseService.mobileScrollPoint;\r\n\r\n\r\n this._headerBaseHeightListener$ = this._drawCollapseService.drawCanvasHeightChange$\r\n .subscribe(() => {\r\n this.expandedHeight = this._calcMaximumExpandedHeight();\r\n });\r\n\r\n this._navBarHeightListener$ = this._drawCollapseService.drawNavBarCollapseHeight$\r\n .subscribe(height => {\r\n this._renderer2.setStyle(document.body, 'padding-top', height + 'px');\r\n this._renderer2.setStyle(this._elem, 'height', `${height}px`);\r\n });\r\n\r\n this._offsetMobileListener$ = this._drawCollapseService.drawMobileOffset$\r\n .subscribe(offset => this._mobileScrollStop = offset);\r\n\r\n this._offsetListener$ = this._drawCollapseService.drawOffset$\r\n .subscribe(offset => this._topOffset = offset);\r\n\r\n this._expandListener$ = this._drawCollapseService.drawExpand$\r\n .pipe(\r\n filter(expand => expand !== null),\r\n )\r\n .subscribe(expand => {\r\n this._expand = expand;\r\n\r\n this.expandedHeight = this._calcMaximumExpandedHeight();\r\n\r\n if (expand) {\r\n this._expandStart();\r\n } else {\r\n this._collapseStart();\r\n }\r\n });\r\n\r\n //\r\n // TODO\r\n // Regular scroll function works different on different platforms.\r\n // This solution only works for DESKTOP CHROME and DESKTOP FIREFOX.\r\n // Need to create special scroll adapter, that will trigger additional event\r\n // during scrolling on each requestAnimationFrame with current scroll position (scrollY || pageYOffset).\r\n //\r\n // This is also worth reading https://stackoverflow.com/questions/5527601/normalizing-mousewheel-speed-across-browsers\r\n // but due to some changes in last 4 years, normalizing scroll is not possible any more in the browsers.\r\n //\r\n this._scrollListener$ = fromEvent(window, 'scroll')\r\n .pipe(\r\n filter(() => this._expand === true),\r\n map(event => Object.hasOwnProperty('scrollY') ? window.scrollY : window.pageYOffset),\r\n pairwise(),\r\n )\r\n .subscribe(([prevScrollY, nextScrollY]) => {\r\n if (prevScrollY < 0 || nextScrollY < 0) return; /* ISO FIX - bouncing back stuff TOLO-185 */\r\n\r\n const delta: number = prevScrollY > nextScrollY ? -1 : 1;\r\n const diff: number = nextScrollY - prevScrollY;\r\n const expandedHeight = this._calcMaximumExpandedHeight();\r\n const collapsedHeight = this._topOffset;\r\n const elemHeight = this._elem.clientHeight;\r\n const bodyTopPadding: number = window.innerWidth < this._drawCollapseService.mediaBreakPoint ?\r\n parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-top'), 10) : 0;\r\n\r\n let newHeight = Math.ceil((elemHeight - (diff * this._speedFactor)));\r\n\r\n if (delta > 0) {\r\n /* Scrolling down / next */\r\n /* Prevent from strange jumping when scrolled down */\r\n const totalHeight: number = document.body.clientHeight;\r\n const bottomEdge: number = window.innerHeight + nextScrollY;\r\n if (totalHeight <= bottomEdge) return;\r\n\r\n const canCollapseMore: boolean = newHeight > collapsedHeight;\r\n if (canCollapseMore) {\r\n return this._updateHeightValues(newHeight);\r\n }\r\n\r\n if (!this._isCollapsed) {\r\n /* Final pull to collapsed height - making sure element height is equal to collapsed height */\r\n return this._updateHeightValues(collapsedHeight);\r\n }\r\n\r\n if (this._isCollapsed) {\r\n /* Collapsing navBar */\r\n const canHideNavBarOnMobile: boolean = canCollapseMore === false\r\n && nextScrollY > newHeight + this._mobileScrollPoint\r\n && bodyTopPadding !== this._mobileScrollStop && bodyTopPadding > this._mobileScrollStop\r\n && window.innerWidth < this._drawCollapseService.mediaBreakPoint;\r\n\r\n if (canHideNavBarOnMobile) {\r\n const newOffset = bodyTopPadding - diff;\r\n this._isMobileCollapsed = true;\r\n if (newOffset < this._mobileScrollStop) {\r\n this._drawCollapseService.setNavBarHeight(this._mobileScrollStop);\r\n } else {\r\n this._drawCollapseService.setNavBarHeight(newOffset);\r\n }\r\n }\r\n }\r\n\r\n\r\n } else {\r\n /* Scrolling up / back / prev */\r\n const edgeHeight = expandedHeight - collapsedHeight;\r\n const canExpand: boolean = nextScrollY <= edgeHeight;\r\n if (this._isCollapsed) {\r\n /* Expanding nav bar */\r\n const canExpandNavBar: boolean = canExpand === false\r\n && nextScrollY < edgeHeight + this._mobileScrollPoint\r\n && bodyTopPadding < collapsedHeight\r\n && window.innerWidth < this._drawCollapseService.mediaBreakPoint;\r\n\r\n const fullExpand = bodyTopPadding + (prevScrollY - nextScrollY) < collapsedHeight;\r\n\r\n if (this._isMobileCollapsed) {\r\n /* Start expanding mobile collapsed elem stright away */\r\n if (bodyTopPadding < collapsedHeight) {\r\n this._drawCollapseService.setNavBarHeight(bodyTopPadding + (prevScrollY - nextScrollY));\r\n } else {\r\n this._isMobileCollapsed = false;\r\n }\r\n }\r\n\r\n if (canExpandNavBar && fullExpand) {\r\n this._drawCollapseService.setNavBarHeight(bodyTopPadding + (prevScrollY - nextScrollY));\r\n }\r\n }\r\n\r\n if (canExpand) {\r\n if (newHeight <= expandedHeight) {\r\n return this._updateHeightValues(newHeight);\r\n }\r\n\r\n return this._updateHeightValues(expandedHeight);\r\n }\r\n }\r\n });\r\n\r\n this._renderer2.setStyle(this._elem, 'transition', `height ${this._drawCollapseService.transition}`);\r\n this._renderer2.setStyle(document.body, 'transition', `padding-top ${this._drawCollapseService.transition}`);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this._drawCollapseService.initDrawDirective();\r\n }, 500);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._expandListener$ && !this._expandListener$.closed) this._expandListener$.unsubscribe();\r\n\r\n if (this._offsetListener$ && !this._offsetListener$.closed) this._offsetListener$.unsubscribe();\r\n\r\n if (this._offsetMobileListener$ && !this._offsetMobileListener$.closed) this._offsetMobileListener$.unsubscribe();\r\n\r\n if (this._scrollListener$ && !this._scrollListener$.closed) this._scrollListener$.unsubscribe();\r\n\r\n if (this._navBarHeightListener$ && !this._navBarHeightListener$.closed) this._navBarHeightListener$.unsubscribe();\r\n\r\n if(this._headerBaseHeightListener$ && !this._headerBaseHeightListener$.closed) this._headerBaseHeightListener$.unsubscribe();\r\n\r\n this._renderer2.setStyle(this._elem, 'transition', null);\r\n this._renderer2.setStyle(document.body, 'transition', null);\r\n this._renderer2.setStyle(this._elem, 'height', null);\r\n this._renderer2.setStyle(document.body, 'padding-top', null);\r\n\r\n this._drawCollapseService.destroy();\r\n }\r\n\r\n private _calcMaximumExpandedHeight(): number {\r\n const bottomPadding = 50;\r\n this.expandedHeight = this._drawCollapseService.drawCanvasExpandedHeight + this._topOffset + bottomPadding;\r\n\r\n this._drawCollapseService.maxContentMargin = this._drawCollapseService.drawCanvasExpandedHeight + bottomPadding;\r\n\r\n return this.expandedHeight;\r\n }\r\n\r\n private _expandStart(): void {\r\n this._setTargetHeight(this._calcMaximumExpandedHeight(), true);\r\n }\r\n\r\n private _collapseStart(): void {\r\n this._setTargetHeight(this._topOffset, false);\r\n }\r\n\r\n private _updateHeightValues(height: number): void {\r\n const collapsedHeight = this._topOffset;\r\n height = height > this.expandedHeight ? this.expandedHeight : height;\r\n\r\n if (height <= collapsedHeight) {\r\n this._isCollapsed = true;\r\n } else {\r\n this._isCollapsed = false;\r\n }\r\n\r\n this._renderer2.setStyle(this._elem, 'height', `${height}px`);\r\n this._renderer2.setStyle(document.body, 'padding-top', `${height}px`);\r\n\r\n this._drawCollapseService.updateDrawHeight(height);\r\n\r\n const difference = this._drawCollapseService.expand ? this.expandedHeight - height : 0; /* For adding additional margin preventing from initial content scrolling */\r\n /* Update collapsed percent value for better opacity handling */\r\n const progress = (((this._elem.clientHeight - this._topOffset) * 100) / (this.expandedHeight - this._topOffset));\r\n this._drawCollapseService.setProgress(progress / 100, difference);\r\n\r\n window.dispatchEvent(new Event('update')); /* Kind of custom event to inform other components about changes - check max-screen-height-directive */\r\n }\r\n\r\n private async _setTargetHeight(targetHeight: number, expand: boolean = true, transitionTime: number = this._drawCollapseService.transitionTime): Promise {\r\n return new Promise(resolve => {\r\n\r\n if (!this._init) {\r\n this._init = true;\r\n\r\n if (!expand) {\r\n this._updateHeightValues(targetHeight);\r\n\r\n return resolve(true);\r\n }\r\n }\r\n\r\n if (this._drawCollapseService.preventOnWindowScrolled) {\r\n /* Prevent from expanding when user has scrolled down page and it should not be expanded */\r\n if (window.scrollY >= this._drawCollapseService.drawCanvasExpandedHeight) {\r\n return resolve(true);\r\n }\r\n }\r\n\r\n let startHeight: number = this._elem.clientHeight;\r\n\r\n if (!expand && startHeight === this._mobileScrollStop) {\r\n startHeight = targetHeight;\r\n }\r\n\r\n const startTime: number = Date.now();\r\n const setHeight = () => {\r\n const now: number = Date.now();\r\n const time: number = Math.min(1, ((now - startTime) / this._drawCollapseService.transitionTime));\r\n const timeFunction: any = this._easing(time);\r\n\r\n const rawToRoundUp = (timeFunction * (targetHeight - startHeight)) + startHeight;\r\n let currentHeightSet = Math.ceil(rawToRoundUp);\r\n /* Sometimes you get iteger instead of float... On Mac */\r\n if(rawToRoundUp === currentHeightSet && !expand) {\r\n currentHeightSet -= 1;\r\n }\r\n\r\n this._updateHeightValues(currentHeightSet);\r\n /* Check next step */\r\n const rangeMin: number = targetHeight;\r\n const rangeMax: number = targetHeight;\r\n const currentRange: number = Math.floor(this._elem.clientHeight);\r\n const shouldFinish: boolean = expand && currentRange >= rangeMax || !expand && currentRange <= rangeMin;\r\n\r\n if (shouldFinish) {\r\n resolve(true);\r\n\r\n return;\r\n }\r\n\r\n if ('requestAnimationFrame' in window === false) {\r\n setTimeout(() => setHeight(), 0);\r\n } else {\r\n window.requestAnimationFrame(() => setHeight());\r\n }\r\n };\r\n\r\n setHeight();\r\n\r\n });\r\n }\r\n\r\n private _easing(t: number): number {\r\n return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * (--t) * t * t * t;\r\n }\r\n}\r\n"]}