{"version":3,"file":"src_app_modules_home_home_module_ts.dbc583e64d9e1b1f.js","mappings":"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","names":["HomeComponent","_HomeComponent","AndroWebCoreComponent","constructor","router","seoService","siteService","navigatorService","serviceHelper","basketService","escapeHtmlPipe","structuredDataService","backgroundImageService","super","this","loadingSites","allSites","selectedTabIndex","orderOccasion","OrderOccasion","carouselSlides","updatePageSEO","setCustomHtmlSections","ngOnInit","getBackgroundImage","_a","tenant","Branding","HeroImageUrl","pipe","takeUntil","destroy$","subscribe","url","backgroundImage","getSites","sites","supportsDelivery","some","x","OccasionsSupported","includes","Delivery","supportsCollection","Collection","setFastestOccasionTime","buildTenantStructuredData","marketingCarousel","_c","_b","VisualAssets","filter","Type","map","Url","Slices","Title","Subtext","ngOnDestroy","seoSet","restore","onNoStoresFound","$event","noStoresFound","openConfirmWantedTimeModal","occasion","selectedStore","postcode","_this","_asyncToGenerator","isLoadingModal","basket","lastValueFrom","getCurrentBasketBySiteId","Id","IsModifiable","trackTrace","SeverityLevel","Warning","handleUnmodifiableBasket","setOccasionOfCurrentBasket","options","autoFocus","disableClose","width","isMobile","openDialog","confirmWantedTimeModal","onWantedTimeUpdated","location","getLocationBySiteId","routePath","generateRoutePath","Occasion","NavigationSectionType","Menu","navigate","CustomHtmlSections","top","find","section","Enabled","DisplayOrder","topHtmlSection","Content","transform","socialMedia","toLowerCase","socialMediaSection","siteId","_this2","clearOldAndCreateNewBasket","openSites","getOpeningDatesAndTimes","OpeningHours","y","open","length","fastestDeliveryTime","getFastestAvailableOccasionTime","fastestCollectionTime","estimatedDeliveryTime","estimatedCollectionTime","data","script","document","createElement","setAttribute","textContent","head","appendChild","description","PageSeos","Description","updateTitle","updateDescription","times","site","timeString","EstimatedDeliveryTime","EstimatedCollectionTime","hours","minutes","seconds","split","Number","Math","min","time","ViewChild","args","static","__decorate","Component","encapsulation","ViewEncapsulation","None","selector","template","__metadata","Router","SEOService","SiteService","NavigatorService","ServiceHelper","BasketService","EscapeHtmlPipe","StructuredDataService","BackgroundImageService","routes","component","path","HomeRoutingModule","NgModule","exports","RouterModule","imports","forChild","HomePageDeliveryTabComponent","_HomePageDeliveryTabComponent","_userService","_siteService","_basketService","_onSelection","EventEmitter","_onNoStoresFound","postcodeFormControl","FormControl","autoFillPostCode","inputPostCode","searchPerformed","searchInput","value","replace","errorPostCode","isValidPostalCode","currentUser","Contacts","localStorage","setItem","_sessionPostCodeKey","_enteredPostcode","findSitesByPostCode","getPhoneNumber","number","setSelectedStore","emit","subscriptions$","currentUser$","user","contacts","Nickname","defaultContact","c","IsDefault","PostCode","setValue","postCode","RegExp","toUpperCase","test","loadingStores","getSitesByPostCode","foundSites","updateMatchingSitesByOccasionAndPostcode","sort","a","b","Name","localeCompare","stores","foundStores","includesDelivery","noFoundSitesRedirect","noSitesFoundRedirect","_configurationService","getNoSitesForLocationUriTemplate","shouldRedirect","href","updatePostcodeWithinDelivery","Output","home_page_delivery_tab_component_metadata","UserService","HomePageCollectionTabComponent","_HomePageCollectionTabComponent","allCollectionSites","allDeliverySites","supportedSites","ngOnChanges","changes","_sites","showNoSitesError","Input","home_page_collection_tab_component_metadata","HomePageCarouselTabComponent","_HomePageCarouselTabComponent","publicSlides","slideConfig","slidesToShow","slidesToScroll","arrows","dots","autoplay","infinite","autoplaySpeed","adaptiveHeight","arrowsGap","slice","_typeof","o","Symbol","iterator","prototype","toPropertyKey","t","i","toPrimitive","r","e","call","TypeError","String","_defineProperty","obj","key","Object","defineProperty","enumerable","configurable","writable","home_page_carousel_tab_component_metadata","SlickCarouselComponent","inject","ElementRef","NgZone","isPlatformServer","PLATFORM_ID","unslick","ngAfterViewInit","ngAfterViewChecked","isServer","_addedSlides","_removedSlides","nextSlidesLength","slides","initialized","forEach","slickItem","push","zone","runOutsideAngular","$instance","slick","el","nativeElement","idx","indexOf","s","initSlick","jQuery","on","event","run","init","config","currentIndex","initialSlide","currentSlide","afterChange","first","last","$slides","nextSlide","beforeChange","breakpoint","destroy","addSlide","removeSlide","slickGoTo","index","slickNext","slickPrev","slickPause","slickPlay","undefined","previousValue","currentValue","refresh","newOptions","assign","_SlickCarouselComponent","i0","type","selectors","inputs","outputs","exportAs","features","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","ngContentSelectors","decls","vars","rf","ctx","SlickItemDirective","host","Renderer2","carousel","renderer","setStyle","_SlickItemDirective","SlickCarouselModule","_SlickCarouselModule","declarations","CommonModule","HomeModule","SharedComponentsModule","WantedTimePickerComponent","FooterComponent","___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___","__webpack_require__","___CSS_LOADER_EXPORT___","___CSS_LOADER_API_IMPORT___","module","id","toString"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./src/app/modules/home/home.component.ts","./src/app/modules/home/home-routing.module.ts","./src/app/modules/home/components/home-page-delivery-tab/home-page-delivery-tab.component.ts","./src/app/modules/home/components/home-page-collection-tab/home-page-collection-tab.component.ts","./src/app/modules/home/components/home-page-carousel-tab/home-page-carousel-tab.component.ts","./node_modules/@babel/runtime/helpers/esm/typeof.js","./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","./node_modules/@babel/runtime/helpers/esm/defineProperty.js","./node_modules/ngx-slick-carousel/fesm2022/ngx-slick-carousel.mjs","./src/app/modules/home/home.module.ts","./src/app/modules/home/components/home-page-carousel-tab/home-page-carousel-tab.component.css","./src/app/modules/home/components/home-page-carousel-tab/home-page-carousel-tab.component.scss","./src/app/modules/home/home.component.scss"],"sourcesContent":["import { Component, ViewEncapsulation, OnInit, ViewChild, TemplateRef, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Site } from '@app/models/site';\r\nimport { SiteService } from '@app/api/site.service';\r\nimport { BasketService } from '@app/api/basket.service';\r\nimport { Basket } from '@app/models/basket';\r\nimport { SEOService } from '@app/shared/services/seo.service';\r\nimport { EscapeHtmlPipe } from '@app/modules/pipes/escape-html.pipe';\r\nimport { OrderOccasion } from '@app/models/order-occasion';\r\nimport { CustomHtmlSection } from '@app/models/custom-html-section';\r\nimport { AndroWebCoreComponent } from '@app/core/AndroWebCoreComponent';\r\nimport { ServiceHelper } from '@app/shared/services/service.helper';\r\nimport { SeverityLevel } from '@microsoft/applicationinsights-web';\r\nimport { NavigatorService } from '@app/core/navigator.service';\r\nimport { NavigationSectionType } from '@app/models/navigation/navigation-section-type';\r\nimport { MatDialogConfig } from '@angular/material/dialog';\r\nimport { lastValueFrom, takeUntil } from 'rxjs';\r\nimport { BackgroundImageService } from '@app/shared/services/background-image/background-image.service';\r\nimport { MarketingCarousel } from '@app/models/MarketingCarousel';\r\nimport { VisualAsset } from '@app/models/shared/visual-asset';\r\nimport { StructuredDataService } from '@app/shared/services/structured-data/structured-data.service';\r\n\r\n/**\r\n * The home component where users initially land on Androweb\r\n * @export\r\n * @class HomeComponent\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'app-home',\r\n styleUrls: ['./home.component.scss'],\r\n templateUrl: './home.component.html'\r\n})\r\nexport class HomeComponent extends AndroWebCoreComponent implements OnInit, OnDestroy {\r\n @ViewChild('confirmWantedTime', { static: true }) private confirmWantedTimeModal: TemplateRef;\r\n\r\n public loadingSites: boolean = true;\r\n public noStoresFound: boolean;\r\n public isLoadingModal: boolean;\r\n public supportsDelivery: boolean;\r\n public supportsCollection: boolean;\r\n public basket: Basket;\r\n public allSites: Site[] = [];\r\n public topHtmlSection: CustomHtmlSection;\r\n public socialMediaSection: CustomHtmlSection;\r\n public estimatedDeliveryTime: string;\r\n public estimatedCollectionTime: string;\r\n public selectedTabIndex: number = 0;\r\n public orderOccasion: typeof OrderOccasion = OrderOccasion;\r\n public selectedStore: Site;\r\n\r\n private seoSet: boolean;\r\n public backgroundImage: string;\r\n public carouselSlides: MarketingCarousel[] = [];\r\n\r\n constructor(\r\n private router: Router,\r\n private seoService: SEOService,\r\n private siteService: SiteService,\r\n private navigatorService: NavigatorService,\r\n private serviceHelper: ServiceHelper,\r\n private basketService: BasketService,\r\n private escapeHtmlPipe: EscapeHtmlPipe,\r\n private structuredDataService: StructuredDataService,\r\n private backgroundImageService: BackgroundImageService\r\n ) {\r\n super();\r\n this.updatePageSEO();\r\n this.setCustomHtmlSections();\r\n }\r\n\r\n ngOnInit() {\r\n this.backgroundImageService.getBackgroundImage('landing-landscape', 'landing-portrait', this.tenant.Branding?.HeroImageUrl)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((url: string) => {\r\n this.backgroundImage = url;\r\n });\r\n\r\n this.siteService.getSites()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((sites: Site[]) => {\r\n this.allSites = sites;\r\n this.loadingSites = false;\r\n this.supportsDelivery = this.allSites.some((x: Site) => x.OccasionsSupported?.includes(OrderOccasion.Delivery));\r\n this.supportsCollection = this.allSites.some((x: Site) => x.OccasionsSupported?.includes(OrderOccasion.Collection));\r\n this.setFastestOccasionTime();\r\n this.buildTenantStructuredData(sites);\r\n });\r\n\r\n const marketingCarousel = this.tenant.Branding?.VisualAssets?.filter((x: VisualAsset) => x.Type === 'marketing-carousel');\r\n this.carouselSlides = marketingCarousel?.map((x: VisualAsset) => ({\r\n Url: x.Slices[0].Url,\r\n Title: x.Title,\r\n Subtext: x.Subtext\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n\r\n // restores the page title and meta description back to the original state only if it's been edited\r\n if (this.seoSet) {\r\n this.seoService.restore();\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param $event\r\n */\r\n public onNoStoresFound($event: boolean): void {\r\n if ($event) {\r\n this.selectedTabIndex = 1;\r\n }\r\n\r\n this.noStoresFound = $event;\r\n }\r\n\r\n /**\r\n * Opens the confirm wanted time modal and gets the users current basket\r\n * @param occasion - the order occasion\r\n * @param selectedStore - the selected store (optional)\r\n */\r\n public async openConfirmWantedTimeModal(occasion: OrderOccasion, selectedStore: Site, postcode?: string): Promise {\r\n if (!selectedStore) {\r\n return;\r\n }\r\n\r\n this.isLoadingModal = true;\r\n this.selectedStore = selectedStore;\r\n\r\n const basket: Basket = await lastValueFrom(this.basketService.getCurrentBasketBySiteId(this.selectedStore.Id, occasion, null));\r\n\r\n if (basket) {\r\n this.basket = basket;\r\n\r\n if (!basket.IsModifiable) {\r\n this.trackTrace('unmodifiable basket on home page', SeverityLevel.Warning);\r\n this.basket = await this.handleUnmodifiableBasket(this.selectedStore.Id);\r\n }\r\n\r\n await this.basketService.setOccasionOfCurrentBasket(this.selectedStore.Id, occasion, postcode);\r\n\r\n const options: MatDialogConfig = {\r\n autoFocus: false,\r\n disableClose: true,\r\n width: this.isMobile ? '100%' : ''\r\n };\r\n this.openDialog(this.confirmWantedTimeModal, 'order-wanted-time-modal', options);\r\n } else {\r\n this.trackTrace('openConfirmWantedTimeModal: getCurrentBasketBySiteId() => null basket', SeverityLevel.Warning);\r\n }\r\n\r\n this.isLoadingModal = false;\r\n }\r\n\r\n /**\r\n * Closes the confirm wanted time modal.\r\n * @param $event\r\n */\r\n public onWantedTimeUpdated($event: Basket): void {\r\n this.basket = $event;\r\n const location: string = this.navigatorService.getLocationBySiteId(this.selectedStore.Id);\r\n const routePath: string = this.navigatorService.generateRoutePath(location, this.basket.Occasion, NavigationSectionType.Menu);\r\n this.router.navigate([routePath]);\r\n }\r\n\r\n /**\r\n * sets the custom html sections.\r\n * @returns\r\n */\r\n private setCustomHtmlSections(): void {\r\n if (!this.tenant.CustomHtmlSections) {\r\n return;\r\n }\r\n\r\n const top: CustomHtmlSection = this.tenant.CustomHtmlSections.find((section: CustomHtmlSection) => section.Enabled && section.DisplayOrder === 0);\r\n\r\n if (top) {\r\n this.topHtmlSection = { ...top, Content: this.escapeHtmlPipe.transform(top.Content) };\r\n }\r\n\r\n const socialMedia: CustomHtmlSection = this.tenant.CustomHtmlSections.find((x: CustomHtmlSection) => x.Enabled && x.Title.toLowerCase() === 'follow us on social media');\r\n\r\n if (socialMedia) {\r\n this.socialMediaSection = { ...socialMedia, Content: this.escapeHtmlPipe.transform(socialMedia.Content) };\r\n }\r\n }\r\n\r\n /**\r\n * Clears the current basket for the given site id and creates a new basket then reloads the page\r\n * @param siteId - the order occasion\r\n */\r\n private async handleUnmodifiableBasket(siteId: string): Promise {\r\n return await this.basketService.clearOldAndCreateNewBasket(siteId);\r\n }\r\n\r\n /**\r\n * sets the fastest estimate time for delivery and collection.\r\n * @returns\r\n */\r\n private setFastestOccasionTime(): void {\r\n const openSites: Site[] = this.allSites.filter((x) => this.serviceHelper.getOpeningDatesAndTimes(x.OpeningHours).some((y) => y.open));\r\n\r\n if (openSites.length === 0) {\r\n return;\r\n }\r\n\r\n const fastestDeliveryTime = this.getFastestAvailableOccasionTime(openSites, OrderOccasion.Delivery) ?? 30;\r\n const fastestCollectionTime = this.getFastestAvailableOccasionTime(openSites, OrderOccasion.Collection) ?? 15;\r\n\r\n this.estimatedDeliveryTime = `${fastestDeliveryTime - 5}-${fastestDeliveryTime + 5} mins`;\r\n this.estimatedCollectionTime = `${fastestCollectionTime - 5}-${fastestCollectionTime + 5} mins`;\r\n }\r\n\r\n /**\r\n * adds structured data to the page.\r\n * see https://developers.google.com/search/docs/guides/intro-structured-data\r\n * @param sites\r\n */\r\n private buildTenantStructuredData(sites: Site[]): void {\r\n const data: string = this.structuredDataService.buildTenantStructuredData(sites);\r\n\r\n if (data) {\r\n const script: HTMLScriptElement = document.createElement('script');\r\n script.setAttribute('type', 'application/ld+json');\r\n script.textContent = data;\r\n document.head.appendChild(script);\r\n }\r\n }\r\n\r\n /**\r\n * Updates the page title and meta description\r\n */\r\n private updatePageSEO(): void {\r\n let description: string = '{{TenantWebsiteName}} fresh food prepared daily';\r\n if (this.tenant?.PageSeos?.length > 0) {\r\n description = this.tenant.PageSeos[0].Description;\r\n }\r\n this.seoService.updateTitle('{{TenantWebsiteName}}');\r\n this.seoService.updateDescription(description);\r\n }\r\n\r\n /**\r\n * Takes in a sites array and returns the fastest order occasion time out of all sites in a number of minutes format\r\n * @param openSites - the sites to use\r\n * @param occasion - the order occasion\r\n */\r\n private getFastestAvailableOccasionTime(openSites: Site[], occasion: OrderOccasion): number {\r\n const times: number[] = openSites.map((site: Site) => {\r\n const timeString: string = occasion === OrderOccasion.Delivery ? site.EstimatedDeliveryTime : site.EstimatedCollectionTime;\r\n const [hours, minutes, seconds] = timeString.split(':').map(Number);\r\n return hours * 3600 + minutes * 60 + seconds;\r\n });\r\n\r\n const fastestTime = Math.min(...times.filter((time) => time > 1));\r\n return fastestTime / 60; // Convert to minutes\r\n }\r\n}\r\n","import { HomeComponent } from '@app/modules/home/home.component';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { NgModule } from '@angular/core';\r\n\r\nconst routes: Routes = [\r\n {\r\n component: HomeComponent,\r\n path: '',\r\n },\r\n];\r\n\r\n@NgModule({\r\n exports: [RouterModule],\r\n imports: [RouterModule.forChild(routes)],\r\n})\r\nexport class HomeRoutingModule { }\r\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { AndroWebCoreComponent } from '@app/core/AndroWebCoreComponent';\r\nimport { Contact } from '@app/models/contact';\r\nimport { OrderOccasion } from '@app/models/order-occasion';\r\nimport { Site } from '@app/models/site';\r\nimport { User } from '@app/models/user';\r\nimport { BasketService } from '@app/api/basket.service';\r\nimport { SiteService } from '@app/api/site.service';\r\nimport { UserService } from '@app/api/user.service';\r\n\r\n@Component({\r\n selector: 'app-home-page-delivery-tab',\r\n templateUrl: './home-page-delivery-tab.component.html'\r\n})\r\nexport class HomePageDeliveryTabComponent extends AndroWebCoreComponent implements OnInit {\r\n @Output('onSelection') private _onSelection: EventEmitter<{ postcode: string, site: Site }>;\r\n @Output('onNoStoresFound') private _onNoStoresFound: EventEmitter;\r\n\r\n public searchPerformed: boolean;\r\n public errorPostCode: boolean;\r\n public noStoresFound: boolean;\r\n public shouldRedirect: boolean;\r\n public loadingStores: boolean;\r\n public foundStores: Site[];\r\n public postcodeFormControl: FormControl;\r\n\r\n private _enteredPostcode: string;\r\n\r\n constructor(\r\n private _userService: UserService,\r\n private _siteService: SiteService,\r\n private _basketService: BasketService\r\n ) {\r\n super();\r\n this._onSelection = new EventEmitter<{ postcode: string, site: Site }>();\r\n this._onNoStoresFound = new EventEmitter();\r\n this.postcodeFormControl = new FormControl('');\r\n }\r\n\r\n ngOnInit() {\r\n this.autoFillPostCode();\r\n }\r\n\r\n /**\r\n * validates if the given postcode is an actual valid postcode and if so, finds sites that can service it.\r\n * Additionally if the user is not logged in it'll cache the given postcode for auto-filling on\r\n * forms on the checkout page\r\n * @param postcode - the given postcode\r\n */\r\n public inputPostCode(): void {\r\n this.searchPerformed = false;\r\n const searchInput: string = this.postcodeFormControl.value.replace(/[\\s]/g, '').toLowerCase();\r\n\r\n this.errorPostCode = !this.isValidPostalCode(searchInput);\r\n\r\n if (!this.isValidPostalCode(searchInput)) {\r\n return;\r\n }\r\n\r\n if (!this._userService.currentUser || this._userService.currentUser.Contacts?.length === 0) {\r\n localStorage.setItem(this._sessionPostCodeKey, searchInput);\r\n }\r\n\r\n this._enteredPostcode = searchInput;\r\n this.findSitesByPostCode(searchInput);\r\n }\r\n\r\n /**\r\n * returns the phone number with the HTML tel marker to allow it function as a clickable phone number\r\n * @param number - the phone number\r\n */\r\n public getPhoneNumber(number: string): string {\r\n return `tel:${number?.replace(/\\s/g, '')}`;\r\n }\r\n\r\n /**\r\n * outputs the selected store and postcode.\r\n * @param site\r\n */\r\n public setSelectedStore(site: Site): void {\r\n this._onSelection.emit({ postcode: this._enteredPostcode, site });\r\n }\r\n\r\n /**\r\n * Auto-fills the postcode input with a logged-in Users default or first contact (address) details\r\n */\r\n private autoFillPostCode(): void {\r\n this.subscriptions$['HomePageDeliveryTabComponent-autoFillPostCode-userService-currentUser$']\r\n = this._userService.currentUser$.subscribe((user: User) => {\r\n const contacts = user?.Contacts.filter((x) => x.Nickname !== 'BlankAddress');\r\n\r\n if (contacts?.length > 0) {\r\n const defaultContact: Contact = contacts.find((c: Contact) => c.IsDefault);\r\n const postcode: string = defaultContact ? defaultContact.PostCode : contacts[0].PostCode;\r\n this.postcodeFormControl.setValue(postcode);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Does a regex test against the postcode and returns whether it's valid or not\r\n * @param postCode - the postcode\r\n */\r\n private isValidPostalCode(postcode: string): boolean {\r\n const regex: RegExp = /\\b((?:(?:gir)|(?:[a-pr-uwyz])(?:(?:[0-9](?:[a-hjkpstuw]|[0-9])?)|(?:[a-hk-y][0-9](?:[0-9]|[abehmnprv-y])?)))) ?([0-9][abd-hjlnp-uw-z]{2})\\b/i;\r\n const postCode: string = postcode.replace(new RegExp(' ', 'g'), '').toUpperCase();\r\n return regex.test(postCode);\r\n }\r\n\r\n /**\r\n * Finds sites that what trade zones that include the input postcode\r\n * @param postCode - the postcode\r\n */\r\n private findSitesByPostCode(postCode: string): void {\r\n this.loadingStores = true;\r\n\r\n this.subscriptions$['HomePageDeliveryTabComponent-findSitesByPostCode-siteService-getSitesByPostCode']\r\n = this._siteService.getSitesByPostCode(postCode).subscribe((foundSites: Site[]) => {\r\n this.searchPerformed = true;\r\n this.loadingStores = false;\r\n this.updateMatchingSitesByOccasionAndPostcode(foundSites.sort((a: Site, b: Site) => a.Name.localeCompare(b.Name)), postCode);\r\n });\r\n }\r\n\r\n /**\r\n * updates the list of sites matching postcode and occasion served.\r\n * @param {Site[]} stores\r\n */\r\n private updateMatchingSitesByOccasionAndPostcode(stores: Site[], postCode: string): Site[] {\r\n const includesDelivery: (occasions: OrderOccasion[]) => boolean = (x: OrderOccasion[]) => x.includes(OrderOccasion.Delivery);\r\n this.foundStores = stores.filter((site: Site) => includesDelivery(site.OccasionsSupported ?? this.tenant.OccasionsSupported));\r\n\r\n this.noStoresFound = this.foundStores.length === 0;\r\n this._onNoStoresFound.emit(this.noStoresFound);\r\n\r\n if (this.foundStores.length === 1) {\r\n this.setSelectedStore(this.foundStores[0]);\r\n } else if (this.noStoresFound) {\r\n this.noFoundSitesRedirect(postCode);\r\n }\r\n\r\n return this.foundStores;\r\n }\r\n\r\n /**\r\n * Finds sites have trade zones within the users postcode it either shows an info message or redirects the user\r\n * @param postCode - the postcode\r\n */\r\n private noFoundSitesRedirect(postCode: string): void {\r\n const noSitesFoundRedirect: string = this._configurationService.getNoSitesForLocationUriTemplate();\r\n this.shouldRedirect = (noSitesFoundRedirect && noSitesFoundRedirect !== '');\r\n\r\n if (this.shouldRedirect) {\r\n location.href = noSitesFoundRedirect.replace('{postCode}', postCode);\r\n } else {\r\n this._basketService.updatePostcodeWithinDelivery(false);\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\nimport { OrderOccasion } from '@app/models/order-occasion';\r\nimport { Site } from '@app/models/site';\r\n\r\n@Component({\r\n selector: 'app-home-page-collection-tab',\r\n templateUrl: './home-page-collection-tab.component.html'\r\n})\r\nexport class HomePageCollectionTabComponent implements OnChanges {\r\n @Input() public noStoresFound: boolean;\r\n public allCollectionSites: Site[] = [];\r\n public allDeliverySites: Site[] = [];\r\n public showNoSitesError: boolean;\r\n public supportedSites: Site[] = [];\r\n\r\n @Output('onSelection') private _onSelection: EventEmitter;\r\n @Input('sites') private _sites: Site[];\r\n\r\n constructor() {\r\n this._onSelection = new EventEmitter();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (!changes._sites) {\r\n return;\r\n }\r\n\r\n this.showNoSitesError = this._sites.length === 0;\r\n this.supportedSites = this._sites\r\n .filter((x: Site) => x.OccasionsSupported?.includes(OrderOccasion.Collection))\r\n .sort((a: Site, b: Site) => a.Name.localeCompare(b.Name));\r\n }\r\n\r\n /**\r\n * returns the phone number with the HTML tel marker to allow it function as a clickable phone number\r\n * @param number - the phone number\r\n */\r\n public getPhoneNumber(number: string): string {\r\n return `tel:${number?.replace(/\\s/g, '')}`;\r\n }\r\n\r\n /**\r\n * outputs the selected site.\r\n * @param site\r\n */\r\n public setSelectedStore(site: Site): void {\r\n this._onSelection.emit(site);\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { MarketingCarousel } from '@app/models/MarketingCarousel';\r\n\r\n@Component({\r\n selector: 'app-home-page-carousel-tab',\r\n templateUrl: './home-page-carousel-tab.component.html',\r\n styleUrls: ['./home-page-carousel-tab.component.scss', './home-page-carousel-tab.component.css']\r\n})\r\nexport class HomePageCarouselTabComponent implements OnInit {\r\n @Input() public carouselSlides: MarketingCarousel[] = [];\r\n public publicSlides: MarketingCarousel[] = [];\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.publicSlides = this.carouselSlides.slice(0, 15);\r\n }\r\n\r\n public slideConfig = {\r\n 'slidesToShow': 1,\r\n 'slidesToScroll': 1,\r\n 'arrows': false,\r\n 'dots': true,\r\n 'autoplay': true,\r\n 'infinite': true,\r\n 'autoplaySpeed': 5000,\r\n 'adaptiveHeight': true\r\n };\r\n\r\n public arrowsGap = this.publicSlides.length * 20;\r\n}\r\n","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import { isPlatformServer, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, ElementRef, inject, NgZone, PLATFORM_ID, forwardRef, Component, Input, Output, Renderer2, Directive, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Slick component\n */\nclass SlickCarouselComponent {\n config;\n afterChange = new EventEmitter();\n beforeChange = new EventEmitter();\n breakpoint = new EventEmitter();\n destroy = new EventEmitter();\n init = new EventEmitter();\n $instance;\n // access from parent component can be a problem with change detection timing. Please use afterChange output\n currentIndex = 0;\n slides = [];\n initialized = false;\n _removedSlides = [];\n _addedSlides = [];\n el = inject(ElementRef);\n zone = inject(NgZone);\n isServer = isPlatformServer(inject(PLATFORM_ID));\n /**\n * On component destroy\n */\n ngOnDestroy() {\n this.unslick();\n }\n ngAfterViewInit() {\n this.ngAfterViewChecked();\n }\n /**\n * On component view checked\n */\n ngAfterViewChecked() {\n if (this.isServer) {\n return;\n }\n if (this._addedSlides.length > 0 || this._removedSlides.length > 0) {\n const nextSlidesLength = this.slides.length - this._removedSlides.length + this._addedSlides.length;\n if (!this.initialized) {\n if (nextSlidesLength > 0) {\n this.initSlick();\n }\n // if nextSlidesLength is zere, do nothing\n }\n else if (nextSlidesLength === 0) { // unslick case\n this.unslick();\n }\n else {\n this._addedSlides.forEach(slickItem => {\n this.slides.push(slickItem);\n this.zone.runOutsideAngular(() => {\n this.$instance.slick('slickAdd', slickItem.el.nativeElement);\n });\n });\n this._addedSlides = [];\n this._removedSlides.forEach(slickItem => {\n const idx = this.slides.indexOf(slickItem);\n this.slides = this.slides.filter(s => s !== slickItem);\n this.zone.runOutsideAngular(() => {\n this.$instance.slick('slickRemove', idx);\n });\n });\n this._removedSlides = [];\n }\n }\n }\n /**\n * init slick\n */\n initSlick() {\n this.slides = this._addedSlides;\n this._addedSlides = [];\n this._removedSlides = [];\n this.zone.runOutsideAngular(() => {\n this.$instance = jQuery(this.el.nativeElement);\n this.$instance.on('init', (event, slick) => {\n this.zone.run(() => {\n this.init.emit({ event, slick });\n });\n });\n this.$instance.slick(this.config);\n this.zone.run(() => {\n this.initialized = true;\n this.currentIndex = this.config?.initialSlide || 0;\n });\n this.$instance.on('afterChange', (event, slick, currentSlide) => {\n this.zone.run(() => {\n this.afterChange.emit({\n event,\n slick,\n currentSlide,\n first: currentSlide === 0,\n last: slick.$slides.length === currentSlide + slick.options.slidesToScroll\n });\n this.currentIndex = currentSlide;\n });\n });\n this.$instance.on('beforeChange', (event, slick, currentSlide, nextSlide) => {\n this.zone.run(() => {\n this.beforeChange.emit({ event, slick, currentSlide, nextSlide });\n this.currentIndex = nextSlide;\n });\n });\n this.$instance.on('breakpoint', (event, slick, breakpoint) => {\n this.zone.run(() => {\n this.breakpoint.emit({ event, slick, breakpoint });\n });\n });\n this.$instance.on('destroy', (event, slick) => {\n this.zone.run(() => {\n this.destroy.emit({ event, slick });\n this.initialized = false;\n });\n });\n });\n }\n addSlide(slickItem) {\n this._addedSlides.push(slickItem);\n }\n removeSlide(slickItem) {\n this._removedSlides.push(slickItem);\n }\n /**\n * Slick Method\n */\n slickGoTo(index) {\n this.zone.runOutsideAngular(() => {\n this.$instance.slick('slickGoTo', index);\n });\n }\n slickNext() {\n this.zone.runOutsideAngular(() => {\n this.$instance.slick('slickNext');\n });\n }\n slickPrev() {\n this.zone.runOutsideAngular(() => {\n this.$instance.slick('slickPrev');\n });\n }\n slickPause() {\n this.zone.runOutsideAngular(() => {\n this.$instance.slick('slickPause');\n });\n }\n slickPlay() {\n this.zone.runOutsideAngular(() => {\n this.$instance.slick('slickPlay');\n });\n }\n unslick() {\n if (this.$instance) {\n this.zone.runOutsideAngular(() => {\n this.$instance.slick('unslick');\n });\n this.$instance = undefined;\n }\n this.initialized = false;\n }\n ngOnChanges(changes) {\n if (this.initialized) {\n const config = changes['config'];\n if (config.previousValue !== config.currentValue && config.currentValue !== undefined) {\n const refresh = config.currentValue['refresh'];\n const newOptions = Object.assign({}, config.currentValue);\n delete newOptions['refresh'];\n this.zone.runOutsideAngular(() => {\n this.$instance.slick('slickSetOption', newOptions, refresh);\n });\n }\n }\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.2\", ngImport: i0, type: SlickCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"17.0.2\", type: SlickCarouselComponent, selector: \"ngx-slick-carousel\", inputs: { config: \"config\" }, outputs: { afterChange: \"afterChange\", beforeChange: \"beforeChange\", breakpoint: \"breakpoint\", destroy: \"destroy\", init: \"init\" }, providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((() => SlickCarouselComponent)),\n multi: true\n }], exportAs: [\"slick-carousel\"], usesOnChanges: true, ngImport: i0, template: '', isInline: true });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.2\", ngImport: i0, type: SlickCarouselComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ngx-slick-carousel',\n exportAs: 'slick-carousel',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((() => SlickCarouselComponent)),\n multi: true\n }],\n template: '',\n }]\n }], propDecorators: { config: [{\n type: Input\n }], afterChange: [{\n type: Output\n }], beforeChange: [{\n type: Output\n }], breakpoint: [{\n type: Output\n }], destroy: [{\n type: Output\n }], init: [{\n type: Output\n }] } });\nclass SlickItemDirective {\n carousel = inject(SlickCarouselComponent, { host: true });\n renderer = inject(Renderer2);\n el = inject(ElementRef);\n isServer = isPlatformServer(inject(PLATFORM_ID));\n ngOnInit() {\n this.carousel.addSlide(this);\n if (this.isServer && this.carousel.slides.length > 0) {\n // Do not show other slides in server side rendering (broken ui can be affacted to Core Web Vitals)\n this.renderer.setStyle(this.el, 'display', 'none');\n }\n }\n ngOnDestroy() {\n this.carousel.removeSlide(this);\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.2\", ngImport: i0, type: SlickItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"17.0.2\", type: SlickItemDirective, selector: \"[ngxSlickItem]\", ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.2\", ngImport: i0, type: SlickItemDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngxSlickItem]',\n }]\n }] });\n\nclass SlickCarouselModule {\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"17.0.2\", ngImport: i0, type: SlickCarouselModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n /** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"17.0.2\", ngImport: i0, type: SlickCarouselModule, declarations: [SlickCarouselComponent,\n SlickItemDirective], imports: [CommonModule], exports: [SlickCarouselComponent,\n SlickItemDirective] });\n /** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"17.0.2\", ngImport: i0, type: SlickCarouselModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"17.0.2\", ngImport: i0, type: SlickCarouselModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule\n ],\n declarations: [\n SlickCarouselComponent,\n SlickItemDirective,\n ],\n exports: [\n SlickCarouselComponent,\n SlickItemDirective,\n ]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { SlickCarouselComponent, SlickCarouselModule, SlickItemDirective };\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HomeRoutingModule } from '@app/modules/home/home-routing.module';\r\nimport { SharedComponentsModule } from '@app/shared/components/shared-components.module';\r\nimport { HomeComponent } from '@app/modules/home/home.component';\r\nimport { HomePageDeliveryTabComponent } from '@app/modules/home/components/home-page-delivery-tab/home-page-delivery-tab.component';\r\nimport { HomePageCollectionTabComponent } from '@app/modules/home/components/home-page-collection-tab/home-page-collection-tab.component';\r\nimport { FooterComponent } from '@app/shared/components/footer/footer.component';\r\nimport { HomePageCarouselTabComponent } from '@app/modules/home/components/home-page-carousel-tab/home-page-carousel-tab.component';\r\nimport { SlickCarouselModule } from 'ngx-slick-carousel';\r\nimport { WantedTimePickerComponent } from '@app/shared/components/wanted-time/wanted-time-picker/wanted-time-picker.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n HomeComponent,\r\n HomePageDeliveryTabComponent,\r\n HomePageCollectionTabComponent,\r\n HomePageCarouselTabComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n HomeRoutingModule,\r\n SharedComponentsModule,\r\n WantedTimePickerComponent,\r\n FooterComponent,\r\n SlickCarouselModule\r\n ]\r\n})\r\nexport class HomeModule { }\r\n","// Imports\nvar ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = require(\"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.home-page-carousel-tab {\r\n .slick-dotted.slick-slider {\r\n margin-bottom: 12px;\r\n }\r\n\r\n .slick-dots {\r\n bottom: -30px;\r\n }\r\n\r\n @media screen and (max-width: 468px) {\r\n .slick-dots li {\r\n margin: 0 1px !important;\r\n }\r\n }\r\n\r\n @media screen and (min-width: 468px) {\r\n .slick-dots li button:before {\r\n font-size: 11px;\r\n }\r\n }\r\n}\r\n`, \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = require(\"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.home-page-carousel-tab__slide {\n display: flex;\n width: 100%;\n}\n.home-page-carousel-tab__slide .image {\n width: 100%;\n height: auto;\n max-height: 650px;\n object-fit: cover;\n position: relative;\n}\n.home-page-carousel-tab__slide--withContent .content {\n min-width: 400px;\n max-width: 600px;\n width: -moz-fit-content;\n width: fit-content;\n height: 80%;\n position: absolute;\n background-color: rgba(255, 255, 255, 0.8);\n border-radius: 8px;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n margin: 24px;\n padding: 24px;\n}\n.home-page-carousel-tab__slide--withContent .content h2 {\n font-size: 2.5rem;\n font-weight: 700;\n}\n.home-page-carousel-tab__slide--withContent .content p {\n font-size: 1.75rem;\n}\n@media screen and (max-width: 700px) {\n .home-page-carousel-tab__slide--withContent {\n flex-direction: column;\n }\n .home-page-carousel-tab__slide--withContent .content {\n width: 100%;\n max-width: 100%;\n height: 100px;\n position: relative;\n gap: 4px;\n margin: 0;\n padding: 8px;\n }\n .home-page-carousel-tab__slide--withContent .content h2 {\n font-size: 1.75rem;\n margin: 0;\n text-wrap: nowrap;\n }\n .home-page-carousel-tab__slide--withContent .content p {\n font-size: 1rem;\n margin: 0;\n text-wrap: nowrap;\n }\n}\n.home-page-carousel-tab__controller {\n cursor: pointer;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 8px;\n transform: translateY(-6px);\n z-index: 10;\n}\n.home-page-carousel-tab__controller .mock-dot {\n width: 22px;\n height: 20px;\n opacity: 0;\n}\n@media screen and (max-width: 468px) {\n .home-page-carousel-tab__controller .mock-dot {\n width: 14px;\n height: 12px;\n }\n}`, \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root {\n --footer-background-colour: #333333;\n --footer-link-colour: #fff;\n --nav-bar-background-colour: #fff;\n --product-content-padding: 0 10px;\n}\n\nrouter-outlet + app-home {\n height: 100%;\n position: relative;\n}\n\n.home-page-wrapper {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n.home-page-content-wrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-bottom: 40px;\n width: 100%;\n position: absolute;\n top: 1rem;\n}\n\n.body {\n height: 100%;\n}\n\n.input-container {\n text-align: center;\n width: 547px;\n}\n\n.home-page-background-image {\n width: 100%;\n}\n\n.home-page-landing {\n align-items: center;\n display: flex;\n height: 100%;\n justify-content: center;\n flex-direction: column;\n position: relative;\n width: 100%;\n}\n\n.delivery-tab {\n height: 100%;\n width: 100%;\n}\n\n.takeaway-tab {\n width: 434px;\n min-height: 183px;\n}\n.takeaway-tab-content {\n display: flex;\n justify-content: center;\n width: 100%;\n height: calc(100% - 52px);\n}\n.takeaway-tab-shouldRedirect {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n}\n\n.home-page-content {\n box-shadow: -1px 2px 30px 0px rgba(0, 0, 0, 0.6);\n background-color: #fff;\n z-index: 9;\n}\n.home-page-content .mat-mdc-tab-body-wrapper {\n min-height: 213.5px;\n}\n.home-page-content .mat-mdc-tab-body-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 10px 20px 20px;\n min-width: 474px;\n min-height: 213px;\n overflow: hidden;\n max-width: 550px;\n}\n.home-page-content .mdc-tab-indicator__content--underline {\n border-color: #E3000E !important;\n}\n.home-page-content .mat-mdc-tab {\n width: 50%;\n background-color: rgba(0, 0, 0, 0.12);\n opacity: 0.5;\n}\n.home-page-content .supports-single-only .mat-mdc-tab {\n width: 100% !important;\n}\n.home-page-content .mdc-tab--active {\n background-color: unset !important;\n opacity: 1 !important;\n}\n.home-page-content .mdc-tab__content {\n width: 100%;\n height: 100%;\n}\n.home-page-content .mdc-text-field--filled .mdc-line-ripple::after {\n border-bottom-color: #E3000E !important;\n}\n\n.home-page-content-tab-button {\n font-size: 18px;\n padding: 13px 30px;\n border: 1px solid;\n border-radius: 7px;\n cursor: Pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n}\n.home-page-content-tab-button-icon {\n margin: 0 5px;\n}\n\n.home-page-content-tab-error {\n margin: 0;\n color: red;\n margin-top: -20px;\n margin-bottom: 25px;\n text-align: center;\n}\n\n.home-page-content-tab-form {\n flex: 1;\n width: 100%;\n min-width: 400px;\n}\n\n.home-page-content-tab-label {\n margin: 0;\n padding: 10px;\n text-align: center;\n font-family: Tenant-Bold, Courier, Helvetica, sans-serif;\n font-weight: 600 !important;\n}\n\n.home-page-content-tab-header {\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n padding-top: 3px;\n font-family: Tenant-Bold, Courier, Helvetica, sans-serif;\n color: #000;\n}\n.home-page-content-tab-header-estimate {\n font-size: 10px;\n line-height: initial;\n text-transform: lowercase;\n}\n.home-page-content-tab-header-estimate .mat-icon {\n height: 15px;\n width: 15px;\n font-size: 15px;\n margin-right: 3px;\n}\n.home-page-content-tab-header-label {\n font-weight: bold;\n font-size: 19px;\n line-height: initial;\n}\n\n.home-page-content-tab-hasSites {\n display: flex;\n flex-direction: column;\n width: 100%;\n margin-top: 15px;\n}\n.home-page-content-tab-hasSites-content {\n padding: 10px 0 0;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n}\n.home-page-content-tab-hasSites-label {\n font-weight: bold;\n border-bottom: thin solid #E3000E;\n color: #E3000E;\n display: flex;\n align-items: center;\n}\n\n.home-page-content-tab-store-item {\n display: flex;\n padding: 6px 6px 6px 3px;\n margin: 0 5px 3px;\n border: thin solid rgba(0, 0, 0, 0.12);\n border-radius: 4px;\n cursor: pointer;\n flex-direction: column;\n width: calc(50% - 10px);\n}\n.home-page-content-tab-store-item:hover {\n box-shadow: 0 1px 9px 1px rgba(0, 0, 0, 0.07);\n}\n.home-page-content-tab-store-item:first-of-type {\n margin: 0 5px 3px 0;\n}\n.home-page-content-tab-store-item-icon {\n margin: 0 3px;\n}\n.home-page-content-tab-store-item-label {\n font-weight: bold;\n}\n.home-page-content-tab-store-item-text {\n font-size: 13px;\n}\n\n.tab-button-hasSites {\n margin-top: -10px;\n}\n\n.occasion-selector-stores {\n gap: 6px;\n justify-content: center;\n margin-top: 10px;\n}\n\n.occasion-selector-stores .card {\n padding: 6px;\n width: calc(50% - 12px);\n cursor: pointer;\n}\n.occasion-selector-stores .card span:first-of-type {\n font-weight: bold;\n}\n.occasion-selector-stores .card span, .occasion-selector-stores .card a {\n font-size: 13px;\n}\n.occasion-selector-stores .card:hover {\n box-shadow: 0 1px 9px 1px rgba(0, 0, 0, 0.07);\n}\n\n.stores-default-Item-body {\n margin: 0;\n margin-top: -20px;\n margin-bottom: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.home-page-landing-copy-container {\n position: relative;\n top: 0;\n padding: 10px 5%;\n text-align: center;\n color: #ffffff;\n width: 100%;\n}\n\n.home-page-section-group-details-text {\n color: black;\n}\n\n@media screen and (max-width: 1023px) {\n .home-page-landing {\n height: unset;\n }\n .home-page-landing-copy-container h1, .home-page-landing-copy-container h2, .home-page-landing-copy-container h3, .home-page-landing-copy-container h4, .home-page-landing-copy-container h5, .home-page-landing-copy-container p, .home-page-landing-copy-container span {\n line-height: 0.75;\n }\n .home-page-landing-copy-container h1 {\n font-size: 2rem;\n }\n .home-page-landing-copy-container h2 {\n font-size: 1.75rem;\n }\n .home-page-landing-copy-container h3 {\n font-size: 1.5rem;\n }\n .home-page-landing-copy-container h4 {\n font-size: 1.25rem;\n }\n .home-page-landing-copy-container p, .home-page-landing-copy-container span {\n font-size: 1rem;\n }\n .home-page-content {\n box-shadow: none;\n width: 100%;\n }\n .home-page-content .mat-mdc-tab-body-content {\n max-width: unset;\n }\n .home-page-content-wrapper {\n padding-bottom: 0;\n position: initial;\n }\n .home-page-content-card {\n margin: 0;\n box-shadow: none !important;\n }\n}\n@media screen and (max-width: 479px) {\n .home-page-background {\n width: 100%;\n }\n .home-page-content {\n width: 100%;\n }\n .home-page-content .mat-mdc-tab-body-content {\n min-width: 325px;\n }\n .takeaway-tab {\n width: 100%;\n }\n}\n@media screen and (max-width: 325px) {\n .home-page-content .mat-mdc-tab-body-content {\n min-width: 280px;\n }\n .home-page-content-tab-label {\n font-size: 20px;\n padding: 10px 0;\n }\n}`, \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n"],"x_google_ignoreList":[5,6,7,8,9]}