{"version":3,"file":"common.d50a54a83557757c.js","mappings":"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","names":["CheckoutService","_CheckoutService","constructor","http","configurationService","this","deletedOrders","currentOrder","BehaviorSubject","createOrder","order","post","getApiBaseUrlForTenant","pipe","map","data","next","getOrderAsCurrentFromId","orderId","get","deleteOrderById","Promise","resolve","asObservable","take","subscribe","delete","toPromise","then","createPayment","payment","__decorate","Injectable","providedIn","__metadata","HttpClient","ConfigurationService","BasketTimeTypes","Asap","Time","Future","PaymentType","PayLater","PaymentCard","SocialMediaAccountType","Facebook","Instagram","TikTok","X","YouTube","WhatsApp","Snapchat","Pinterest","FooterComponent","_FooterComponent","AndroWebCoreComponent","_siteService","_navigatorService","super","ngOnInit","hasPageSeoKeywords","_c","_b","_a","tenant","PageSeos","Keywords","length","getSites","takeUntil","destroy$","sites","showStripeBanner","some","x","PaymentProvidersSupported","includes","PaymentProviderType","Stripe","_showLocationsUrl","setNavLinks","setSocialMediaLinks","appStoreUrl","_d","AppStoreUrl","playStoreUrl","_e","PlayStoreUrl","navigateToAndromeda","window","open","navLinks","CorporateLinkUri","push","isExternal","label","routerLink","CustomHtmlSections","filter","Enabled","DisplayOrder","Title","toLowerCase","forEach","title","clean","socialMediaLinks","SocialMediaAccounts","sort","first","second","Type","icon","getSocialMediaIcon","url","Url","class","type","Component","imports","CommonModule","RouterModule","selector","standalone","template","SiteService","NavigatorService","BackgroundImageService","_BackgroundImageService","_configurationService","_branding","Branding","getBackgroundImage","landscapeType","portraitType","fallback","_screenSizeService","screenSizeState$","state","getFirstSliceUrl","assetType","asset","VisualAssets","find","queryMediaImage","Slices","isLandscape","StructuredDataService","_StructuredDataService","AndroWebCoreService","_menuService","_serviceHelper","_menuHelperService","_menuDealHelperService","scriptType","getCurrentUrl","location","href","endsWith","slice","getCurrentTenant","buildTenantStructuredData","currentUrl","getMenuUrl","site","generateRoutePath","getLocationBySiteId","Id","OccasionsSupported","NavigationSectionType","Menu","storeLocations","result","name","Name","telephone","Phone","geo","latitude","Address","Latitude","longitude","Longitude","priceRange","address","streetAddress","Line1","Line2","trim","addressLocality","Town","addressRegion","State","postalCode","Postcode","addressCountry","Country","menu","encodeURI","openingHoursSpecification","getOpeningTimes","getOpeningDatesAndTimes","OpeningHours","image","LogoImageUrl","cuisines","servesCuisine","OrderOccasion","Delivery","hasDelivery","deliveryArea","DeliveryZone","Units","unit","Code","EstimatedDeliveryTime","deliveryTime","getEstimatedOccasionTime","Collection","EstimatedCollectionTime","collectionTime","organization","logo","JSON","stringify","error","trackException","buildMenuStructuredData","occasion","structuredMenu","inLanguage","hasMenuSection","Sections","section","description","Description","ImageBase","hasMenuItem","Products","flatMap","productId","product","p","Variants","variant","variantPrice","Prices","price","Occasion","optionNames","getVariantOptionsPathText","productOptionsById","offers","Amount","priceCurrency","Nutrition","nutrition","calories","Calories","servingSize","PortionDescription","NumberOfPortions","Allergens","additionalProperty","Contains","value","getFriendlyAllergenValue","undefined","MayContain","menuItem","Deals","dealId","deal","d","RequiresUnlock","getMinPriceForDeal","dealItem","openingDaysAndTimes","times","Array","isArray","dateAndTime","timePeriod","Start","startTime","End","endTime","dayOfWeek","getDayOfWeek","DayOfWeek","isNextDayClosing","opens","closes","startHour","split","Number","endHour","day","estimatedTimeString","hours","minutes","seconds","Math","round","MenuService","ServiceHelper","MenuHelperService","MenuDealHelperService","___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___","__webpack_require__","___CSS_LOADER_EXPORT___","___CSS_LOADER_API_IMPORT___","module","id","exports","toString"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./src/app/api/checkout.service.ts","./src/app/models/basket-time-types.enum.ts","./src/app/models/payment-type.enum.ts","./src/app/models/social-media-account-type.ts","./src/app/shared/components/footer/footer.component.ts","./src/app/shared/services/background-image/background-image.service.ts","./src/app/shared/services/structured-data/structured-data.service.ts","./src/app/shared/components/footer/footer.component.scss"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, BehaviorSubject } from 'rxjs';\r\nimport { map, take } from 'rxjs/operators';\r\nimport { ConfigurationService } from '@app/app-initialisers/configuration-service/configuration.service';\r\nimport { Order } from '@app/models/Order';\r\nimport { PaymentSessionCreate } from '@app/models/payment-session-create';\r\nimport { PaymentSession } from '@app/models/payment-session';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CheckoutService {\r\n public currentOrder: BehaviorSubject;\r\n\r\n private deletedOrders: { [id: string]: 'started' | 'completed' } = {};\r\n\r\n constructor(\r\n private http: HttpClient,\r\n public configurationService: ConfigurationService,\r\n ) {\r\n this.currentOrder = new BehaviorSubject(null);\r\n }\r\n\r\n /**\r\n * does an HTTP POST/order to the API\r\n * @param order\r\n */\r\n public createOrder(order: Order): Observable {\r\n return this.http.post(`${this.configurationService.getApiBaseUrlForTenant()}/orders`, order)\r\n .pipe(map((data: Order) => {\r\n this.currentOrder.next(data);\r\n return data;\r\n }));\r\n }\r\n\r\n /**\r\n * does an HTTP Get/orders/{orderId} and returns the order\r\n * @param orderId\r\n */\r\n public getOrderAsCurrentFromId(orderId: string): Observable {\r\n return this.http.get(`${this.configurationService.getApiBaseUrlForTenant()}/orders/${orderId}`)\r\n .pipe(map((data: Order) => {\r\n this.currentOrder.next(data);\r\n return data;\r\n }));\r\n }\r\n\r\n /**\r\n * does an HTTP/delete to delete the order with matching Id\r\n * @param orderId\r\n */\r\n public deleteOrderById(orderId: string): Promise {\r\n if (this.deletedOrders[orderId]) {\r\n return this.deletedOrders[orderId] === 'completed' ?\r\n Promise.resolve(null) :\r\n new Promise((resolve) => this.currentOrder.asObservable().pipe(take(1)).subscribe(() => resolve(null)));\r\n }\r\n\r\n this.deletedOrders[orderId] = 'started';\r\n\r\n return this.http.delete(`${this.configurationService.getApiBaseUrlForTenant()}/orders/${orderId}`)\r\n .toPromise()\r\n .then((order: Order) => {\r\n this.deletedOrders[orderId] = 'completed';\r\n this.currentOrder.next(order);\r\n return null;\r\n });\r\n }\r\n\r\n /**\r\n * does an HTTP POST/payments to create a payment session\r\n * @param payment\r\n */\r\n public createPayment(payment: PaymentSessionCreate): Observable {\r\n return this.http.post(`${this.configurationService.getApiBaseUrlForTenant()}/payments`, payment)\r\n .pipe(map((data: PaymentSession) => data));\r\n }\r\n}\r\n\r\n","/**\r\n * Enumerator for all basket time types\r\n * @export\r\n * @enum BasketTimeTypes\r\n */\r\nexport enum BasketTimeTypes {\r\n Asap = 'Asap',\r\n Time = 'Time',\r\n Future = 'Future'\r\n }\r\n","/**\r\n * Enumerator for all payment types\r\n * @export\r\n * @enum DayOfWeek\r\n */\r\nexport enum PaymentType {\r\n PayLater = 'PayLater',\r\n PaymentCard = 'PaymentCard'\r\n }\r\n","export enum SocialMediaAccountType {\r\n Facebook = 1,\r\n Instagram = 2,\r\n TikTok = 3,\r\n X = 4,\r\n YouTube = 5,\r\n WhatsApp = 6,\r\n Snapchat = 7,\r\n Pinterest = 8\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { AndroWebCoreComponent } from '@app/core/AndroWebCoreComponent';\r\nimport { NavigatorService } from '@app/core/navigator.service';\r\nimport { CustomHtmlSection } from '@app/models/custom-html-section';\r\nimport { NavLink } from '@app/models/shared/nav-link';\r\nimport { Site } from '@app/models/site';\r\nimport { PaymentProviderType } from '@app/models/site/PaymentProviderType.enum';\r\nimport { SiteService } from '@app/api/site.service';\r\nimport { takeUntil } from 'rxjs';\r\nimport { SocialMediaAccountType } from '@app/models/social-media-account-type';\r\nimport { SocialMediaLinks } from '@app/models/social-media-links';\r\nimport { SocialMediaAccount } from '@app/models/social-media-account';\r\n\r\n@Component({\r\n imports: [CommonModule, RouterModule],\r\n selector: 'app-footer',\r\n standalone: true,\r\n styleUrls: ['./footer.component.scss'],\r\n templateUrl: './footer.component.html'\r\n})\r\n\r\nexport class FooterComponent extends AndroWebCoreComponent implements OnInit {\r\n public navLinks: NavLink[];\r\n public showStripeBanner: boolean;\r\n public hasPageSeoKeywords: boolean;\r\n public socialMediaLinks: SocialMediaLinks[];\r\n public appStoreUrl: string;\r\n public playStoreUrl: string;\r\n\r\n private _showLocationsUrl: boolean;\r\n\r\n constructor(\r\n private _siteService: SiteService,\r\n private _navigatorService: NavigatorService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.hasPageSeoKeywords = this.tenant?.PageSeos[0]?.Keywords?.length > 0;\r\n\r\n this._siteService.getSites()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((sites: Site[]) => {\r\n this.showStripeBanner = sites.some((x: Site) => x.PaymentProvidersSupported.includes(PaymentProviderType.Stripe));\r\n this._showLocationsUrl = sites.length > 0;\r\n this.setNavLinks();\r\n });\r\n\r\n this.setSocialMediaLinks();\r\n this.appStoreUrl = this.tenant?.AppStoreUrl;\r\n this.playStoreUrl = this.tenant?.PlayStoreUrl;\r\n }\r\n\r\n /**\r\n * opens https://andromedapos.com/ in a new window\r\n */\r\n public navigateToAndromeda(): void {\r\n window.open('https://andromedapos.com/');\r\n }\r\n\r\n /**\r\n * sets the navigation links.\r\n * @param sites\r\n */\r\n private setNavLinks(): void {\r\n const navLinks: NavLink[] = [];\r\n\r\n if (this.tenant.CorporateLinkUri) {\r\n navLinks.push({ isExternal: true, label: 'Home Page', routerLink: this.tenant.CorporateLinkUri });\r\n }\r\n\r\n if (this._showLocationsUrl) {\r\n navLinks.push({ label: 'Locations', routerLink: '/locations' });\r\n }\r\n\r\n this.tenant.CustomHtmlSections\r\n .filter((x: CustomHtmlSection) => x.Enabled && x.DisplayOrder !== 0 && x.Title.toLowerCase() !== 'follow us on social media')\r\n .map((x: CustomHtmlSection) => x.Title)\r\n .forEach((title: string) => {\r\n navLinks.push({\r\n label: title,\r\n routerLink: `/sections/${this._navigatorService.clean(title)}`\r\n });\r\n });\r\n\r\n this.navLinks = navLinks;\r\n }\r\n\r\n private setSocialMediaLinks(): void {\r\n this.socialMediaLinks = this.tenant.SocialMediaAccounts.sort((first: SocialMediaAccount, second: SocialMediaAccount) => first.Type - second.Type).map((x) => ({\r\n icon: this.getSocialMediaIcon(x.Type),\r\n url: x.Url,\r\n class: SocialMediaAccountType[x.Type].toLowerCase()\r\n } as SocialMediaLinks));\r\n }\r\n\r\n private getSocialMediaIcon(type: SocialMediaAccountType): string {\r\n switch (type) {\r\n case SocialMediaAccountType.Facebook: return 'facebook';\r\n case SocialMediaAccountType.Instagram: return 'instagram';\r\n case SocialMediaAccountType.TikTok: return 'tiktok';\r\n case SocialMediaAccountType.X: return 'x';\r\n case SocialMediaAccountType.YouTube: return 'youtube';\r\n case SocialMediaAccountType.WhatsApp: return 'whatsapp';\r\n case SocialMediaAccountType.Snapchat: return 'snapchat';\r\n case SocialMediaAccountType.Pinterest: return 'pinterest';\r\n default: return null;\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ScreenSizeState } from '@app/models/shared/screen-size-state';\r\nimport { TenantBranding } from '@app/models/TenantBranding';\r\nimport { map, Observable } from 'rxjs';\r\nimport { ConfigurationService } from '@app/app-initialisers/configuration-service/configuration.service';\r\nimport { VisualAssetType } from '@app/models/shared/visual-asset-type';\r\nimport { VisualAsset } from '@app/models/shared/visual-asset';\r\nimport { AndroWebCoreComponent } from '@app/core/AndroWebCoreComponent';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BackgroundImageService extends AndroWebCoreComponent {\r\n private _branding: TenantBranding;\r\n\r\n constructor(\r\n protected _configurationService: ConfigurationService\r\n ) {\r\n super();\r\n this._branding = this._configurationService.tenant?.Branding;\r\n }\r\n\r\n public getBackgroundImage(landscapeType: VisualAssetType, portraitType: VisualAssetType, fallback?: string): Observable {\r\n return this._screenSizeService.screenSizeState$.pipe(\r\n map((state: ScreenSizeState) => {\r\n const getFirstSliceUrl = (assetType: VisualAssetType) => {\r\n const asset = this._branding?.VisualAssets?.find((x: VisualAsset) => x.Type === assetType);\r\n return this.queryMediaImage(asset?.Slices[0]?.Url, state);\r\n };\r\n const getLandscapeAsset = () => getFirstSliceUrl(landscapeType);\r\n const getPortraitAsset = () => getFirstSliceUrl(portraitType);\r\n return (state.isLandscape ? getLandscapeAsset() : getPortraitAsset()) ?? fallback;\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AndroWebCoreService } from '@app/core/AndroWebCoreService';\r\nimport { OpeningDaysAndTime } from '@app/models/opening-days-and-time';\r\nimport { Site } from '@app/models/site';\r\nimport { ServiceHelper } from '@app/shared/services/service.helper';\r\nimport { Product } from '@app/models/menu/product';\r\nimport { Menu } from '@app/models/menu/menu';\r\nimport { ConfigurationService } from '@app/app-initialisers/configuration-service/configuration.service';\r\nimport { NavigatorService } from '@app/core/navigator.service';\r\nimport { OrderOccasion } from '@app/models/order-occasion';\r\nimport { NavigationSectionType } from '@app/models/navigation/navigation-section-type';\r\nimport { Tenant } from '@app/models/tenant';\r\nimport { Deal } from '@app/models/menu/deal';\r\nimport { MenuService } from '@app/api/menu.service';\r\nimport { StructuredMenu } from '@app/models/structured-data/structured-menu';\r\nimport { StructuredOpeningHours } from '@app/models/structured-data/structured-opening-hours';\r\nimport { StructuredOrganizationData } from '@app/models/structured-data/structured-organization-data';\r\nimport { StructuredRestaurantData } from '@app/models/structured-data/structured-restaurant-data';\r\nimport { MenuDealHelperService } from '@app/shared/services/menu-deal-helper/menu-deal-helper.service';\r\nimport { MenuHelperService } from '@app/shared/services/menu-helper/menu-helper.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StructuredDataService extends AndroWebCoreService {\r\n public readonly scriptType: string = 'application/json+ld';\r\n\r\n constructor(\r\n private _menuService: MenuService,\r\n private _serviceHelper: ServiceHelper,\r\n private _navigatorService: NavigatorService,\r\n private _menuHelperService: MenuHelperService,\r\n private _configurationService: ConfigurationService,\r\n private _menuDealHelperService: MenuDealHelperService\r\n ) {\r\n super();\r\n }\r\n\r\n /**\r\n * Builds the Json-ld structure\r\n * @param {Site[]} sites\r\n * @return {*} {string}\r\n * @memberof JsonStructuredDataService\r\n */\r\n public buildTenantStructuredData(sites: Site[]): string | null {\r\n if (!sites) {\r\n return null;\r\n }\r\n\r\n try {\r\n const currentUrl: string = this.getCurrentUrl();\r\n const tenant: Tenant = this.getCurrentTenant();\r\n const getMenuUrl = (site: Site) => this._navigatorService.generateRoutePath(\r\n this._navigatorService.getLocationBySiteId(site.Id),\r\n site.OccasionsSupported[0],\r\n NavigationSectionType.Menu\r\n );\r\n\r\n const storeLocations: StructuredRestaurantData[] = sites.map((site: Site) => {\r\n const result: StructuredRestaurantData = {\r\n '@type': 'Restaurant',\r\n 'name': site.Name,\r\n 'telephone': site.Phone,\r\n 'geo': {\r\n '@type': 'GeoCoordinates',\r\n 'latitude': site.Address?.Latitude,\r\n 'longitude': site.Address?.Longitude\r\n },\r\n 'priceRange': '£5 - £25',\r\n 'address': {\r\n '@type': 'PostalAddress',\r\n 'streetAddress': `${site.Address.Line1} ${site.Address.Line2 || ''}`.trim(),\r\n 'addressLocality': site.Address.Town,\r\n 'addressRegion': site.Address.State,\r\n 'postalCode': site.Address.Postcode,\r\n 'addressCountry': site.Address.Country\r\n },\r\n 'menu': encodeURI(`${currentUrl}/${getMenuUrl(site)}`),\r\n 'openingHoursSpecification': this.getOpeningTimes(this._serviceHelper.getOpeningDatesAndTimes(site.OpeningHours)),\r\n 'image': tenant.Branding?.LogoImageUrl\r\n };\r\n\r\n const cuisines: string = tenant.PageSeos?.[0]?.Keywords;\r\n if (cuisines) {\r\n result.servesCuisine = cuisines;\r\n }\r\n\r\n if (site.OccasionsSupported.includes(OrderOccasion.Delivery)) {\r\n result.hasDelivery = true;\r\n result.deliveryArea = site.DeliveryZone?.Units.map((unit) => ({\r\n '@type': 'Place',\r\n 'postalCode': unit.Code\r\n })) || [];\r\n\r\n if (site.EstimatedDeliveryTime) {\r\n result.deliveryTime = this.getEstimatedOccasionTime(site.EstimatedDeliveryTime);\r\n }\r\n }\r\n\r\n if (site.OccasionsSupported.includes(OrderOccasion.Collection) && site.EstimatedCollectionTime) {\r\n result.collectionTime = this.getEstimatedOccasionTime(site.EstimatedCollectionTime);\r\n }\r\n\r\n return result;\r\n });\r\n\r\n const organization: StructuredOrganizationData = {\r\n '@context': 'https://schema.org',\r\n '@type': 'Organization',\r\n 'name': tenant.Name,\r\n 'logo': tenant.Branding?.LogoImageUrl,\r\n 'url': currentUrl,\r\n 'location': storeLocations\r\n };\r\n\r\n return JSON.stringify(organization, null, 2);\r\n } catch (error) {\r\n this.trackException(error, false);\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Creates the menu structured data\r\n * @param {DisplayMenu} menu\r\n * @return {*} {string}\r\n */\r\n public buildMenuStructuredData(menu: Menu, occasion: OrderOccasion): string | null {\r\n if (!menu) {\r\n return null;\r\n }\r\n\r\n try {\r\n const structuredMenu: StructuredMenu = {\r\n '@context': 'https://schema.org',\r\n '@type': 'Menu',\r\n 'inLanguage': 'English',\r\n 'hasMenuSection': menu.Sections.map((section) => ({\r\n '@type': 'MenuSection',\r\n 'name': section.Name,\r\n 'description': section.Description,\r\n 'image': section.ImageBase ? `${section.ImageBase}/landscape-small.jpg` : null,\r\n 'hasMenuItem': [\r\n ...section.Products.flatMap((productId: string) => {\r\n const product: Product | undefined = menu.Products.find((p: Product) => p.Id === productId);\r\n\r\n if (!product) {\r\n return [];\r\n }\r\n\r\n return product.Variants.map((variant) => {\r\n const variantPrice = variant.Prices.find((price) => price.Occasion === occasion);\r\n const optionNames = this._menuHelperService.getVariantOptionsPathText(variant, this._menuService.productOptionsById);\r\n\r\n const result: any = {\r\n '@type': 'MenuItem',\r\n 'name': `${product.Name} ${optionNames}`,\r\n 'description': product.Description,\r\n 'image': product.ImageBase ? `${product.ImageBase}/landscape-small.jpg` : null\r\n };\r\n\r\n if (variantPrice) {\r\n result.offers = {\r\n '@type': 'Offer',\r\n 'price': variantPrice.Amount,\r\n 'priceCurrency': 'GBP'\r\n };\r\n }\r\n\r\n if (variant.Nutrition) {\r\n result.nutrition = {\r\n '@type': 'NutritionInformation',\r\n 'calories': variant.Nutrition.Calories,\r\n 'servingSize': variant.Nutrition.PortionDescription || `${variant.Nutrition.NumberOfPortions} servings`\r\n };\r\n }\r\n\r\n if (product.Allergens) {\r\n result.additionalProperty = [\r\n product.Allergens.Contains ? {\r\n '@type': 'PropertyValue',\r\n 'name': 'Contains',\r\n 'value': this._menuHelperService.getFriendlyAllergenValue(product.Allergens.Contains)\r\n } : undefined,\r\n product.Allergens.MayContain ? {\r\n '@type': 'PropertyValue',\r\n 'name': 'May contain',\r\n 'value': this._menuHelperService.getFriendlyAllergenValue(product.Allergens.MayContain)\r\n } : undefined\r\n ].filter((x) => !!x);\r\n }\r\n\r\n return result;\r\n });\r\n }).filter((menuItem) => !!menuItem),\r\n\r\n // Include the deals in the same hasMenuItem array\r\n ...section.Deals.map((dealId: string) => {\r\n const deal: Deal | undefined = menu.Deals.find((d: Deal) => d.Id === dealId);\r\n\r\n if (!deal || deal.RequiresUnlock) {\r\n return null;\r\n }\r\n\r\n return {\r\n '@type': 'MenuItem',\r\n 'name': deal.Name,\r\n 'description': deal.Description,\r\n 'image': deal.ImageBase ? `${deal.ImageBase}/landscape-small.jpg` : null,\r\n 'offers': {\r\n '@type': 'Offer',\r\n 'price': this._menuDealHelperService.getMinPriceForDeal(deal, occasion) || 0,\r\n 'priceCurrency': 'GBP'\r\n }\r\n };\r\n }).filter((dealItem) => !!dealItem)\r\n ]\r\n }))\r\n };\r\n\r\n return JSON.stringify(structuredMenu, null, 2);\r\n } catch (error) {\r\n this.trackException(error, false);\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Formats the opening times and returns an array of StructuredOpeningHours objects, handling multiple periods and next-day closing times.\r\n * @param {OpeningDaysAndTime[]} openingDaysAndTimes - Array of opening days and times.\r\n * @return {StructuredOpeningHours[]} - Array of formatted StructuredOpeningHours objects.\r\n */\r\n private getOpeningTimes(openingDaysAndTimes: OpeningDaysAndTime[]): StructuredOpeningHours[] {\r\n const times: StructuredOpeningHours[] = [];\r\n\r\n if (openingDaysAndTimes && Array.isArray(openingDaysAndTimes)) {\r\n openingDaysAndTimes.forEach((dateAndTime: OpeningDaysAndTime) => {\r\n // Process each time period for the current day\r\n dateAndTime.times.forEach((timePeriod) => {\r\n const { Start: startTime, End: endTime } = timePeriod;\r\n\r\n if (startTime && endTime) {\r\n const dayOfWeek = this.getDayOfWeek(dateAndTime.DayOfWeek);\r\n\r\n if (startTime === endTime) {\r\n // Handle 24-hour period (e.g., 06:30 - 06:30 the next day)\r\n times.push({\r\n '@type': 'OpeningHoursSpecification',\r\n 'dayOfWeek': dayOfWeek,\r\n 'opens': startTime,\r\n 'closes': '23:59'\r\n });\r\n times.push({\r\n '@type': 'OpeningHoursSpecification',\r\n 'dayOfWeek': this.getDayOfWeek((dateAndTime.DayOfWeek + 1) % 7), // Next day\r\n 'opens': '00:00',\r\n 'closes': endTime\r\n });\r\n } else if (this.isNextDayClosing(startTime, endTime)) {\r\n // Split into two periods if the end time is on the next day\r\n times.push({\r\n '@type': 'OpeningHoursSpecification',\r\n 'dayOfWeek': dayOfWeek,\r\n 'opens': startTime,\r\n 'closes': '23:59'\r\n });\r\n times.push({\r\n '@type': 'OpeningHoursSpecification',\r\n 'dayOfWeek': this.getDayOfWeek((dateAndTime.DayOfWeek + 1) % 7), // Next day\r\n 'opens': '00:00',\r\n 'closes': endTime\r\n });\r\n } else {\r\n // Normal time period within the same day\r\n times.push({\r\n '@type': 'OpeningHoursSpecification',\r\n 'dayOfWeek': dayOfWeek,\r\n 'opens': startTime,\r\n 'closes': endTime\r\n });\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n return times;\r\n }\r\n\r\n /**\r\n * Checks if the end time is on the next day compared to the start time.\r\n * @param {string} startTime - The start time (e.g., \"22:00\").\r\n * @param {string} endTime - The end time (e.g., \"03:15\").\r\n * @return {boolean} - True if the end time is on the next day.\r\n */\r\n private isNextDayClosing(startTime: string, endTime: string): boolean {\r\n const [startHour] = startTime.split(':').map(Number);\r\n const [endHour] = endTime.split(':').map(Number);\r\n return endHour < startHour;\r\n }\r\n\r\n /**\r\n * Converts a numerical day representation to the corresponding day of the week in string format.\r\n * @private\r\n * @param {number} day - The numerical representation of the day.\r\n * @return {string} - The day of the week.\r\n */\r\n private getDayOfWeek(day: number): string {\r\n const daysOfWeekMap: { [key: number]: string } = {\r\n 0: 'Monday',\r\n 1: 'Tuesday',\r\n 2: 'Wednesday',\r\n 3: 'Thursday',\r\n 4: 'Friday',\r\n 5: 'Saturday',\r\n 6: 'Sunday'\r\n };\r\n return daysOfWeekMap[day];\r\n }\r\n\r\n /**\r\n * Gets the estimated time in ISO 8601 duration format (e.g., \"PT30M\") for the given occasion.\r\n * @param {Site} site - The site to get the estimated time for.\r\n * @return {string} - The estimated time in ISO 8601 duration format.\r\n */\r\n private getEstimatedOccasionTime(estimatedTimeString: string): string {\r\n const [hours, minutes, seconds] = estimatedTimeString.split(':').map(Number);\r\n const totalMinutes = hours * 60 + minutes + Math.round(seconds / 60);\r\n\r\n return `PT${totalMinutes}M`;\r\n }\r\n\r\n private getCurrentUrl: () => string = () => window.location.href.endsWith('/') ? window.location.href.slice(0, -1) : window.location.href;\r\n private getCurrentTenant: () => Tenant = () => this._configurationService.tenant;\r\n}\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, `: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\n.footer {\n position: relative;\n overflow: hidden;\n}\n.footer-branding {\n display: flex;\n align-items: center;\n overflow: hidden;\n color: #000045;\n cursor: pointer;\n white-space: nowrap;\n justify-content: center;\n height: 32px;\n}\n.footer-branding-img {\n max-height: 46px;\n margin: 2px -13px 0;\n margin-bottom: 3px;\n}\n.footer-branding-text {\n font-size: 12px;\n font-weight: 600;\n}\n.footer-legal-links {\n height: 100%;\n display: flex;\n align-items: center;\n}\n.footer-legal-links-item {\n margin-bottom: -1px !important;\n font-size: 13px;\n cursor: pointer;\n color: #000045;\n padding: 0 3px;\n white-space: nowrap;\n text-decoration: none;\n}\n.footer-legal-links-item:hover {\n text-decoration: underline;\n}\n\nsection.footer.flex-column.flex-center {\n background-color: var(--footer-background-colour);\n}\n\nsection.footer.flex-column.flex-center ul {\n list-style: none;\n padding: 0;\n}\n\n.footer-legal-links-item.alternate {\n color: var(--footer-link-colour);\n}\n\nsection.footer.flex-column.flex-center li {\n margin-bottom: 5px;\n height: 38px;\n display: flex;\n align-items: center;\n}\n\nsection.footer.flex-column.flex-center .flex-row.no-wrap {\n padding: 20px;\n}\n\n.footer-powered-by {\n background-color: #fff;\n width: 100%;\n display: flex;\n flex-direction: row;\n justify-content: center;\n}\n\n.stripe-banner {\n max-width: 435px;\n}\n.stripe-banner img {\n width: 100%;\n background-color: #fff;\n margin: 0;\n border-radius: 5px;\n}\n\n.social-media .badges {\n gap: 20px;\n justify-content: center;\n margin-bottom: 20px;\n}\n.social-media .badges img {\n max-height: 40px;\n}\n.social-media .links {\n gap: 15px;\n margin-bottom: 15px;\n}\n.social-media .links img {\n max-width: 32px;\n max-height: 32px;\n}\n\n@media screen and (max-width: 479px) {\n .footer {\n font-size: 12px;\n flex-direction: column-reverse;\n align-items: center;\n }\n .footer-legal-links {\n height: unset;\n padding-top: 5px;\n }\n .footer-legal-links span {\n display: block;\n }\n .footer-branding {\n padding: 0;\n margin-top: -1px;\n }\n .footer-branding-img {\n margin-right: -13px;\n }\n .footer-powered-by {\n flex-direction: column;\n }\n}`, \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n"],"x_google_ignoreList":[]}