{"version":3,"file":"js/fun-site-4f064d56.bundle.js?v=c1f31d1bde5bfba6bc85","mappings":"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","sources":["webpack:///./src/Api/CartService.ts","webpack:///./src/Api/ContentService.ts","webpack:///./src/Api/CouponService.ts","webpack:///./src/Api/ExperimentService.ts","webpack:///./src/Api/SubscriptionService.ts","webpack:///./src/Api/TrackingService.ts","webpack:///./src/Base/Engagement/Chat/ChatBase.ts","webpack:///./src/Api/EngagementService.ts","webpack:///./src/Base/Engagement/Engagement.ts"],"sourcesContent":["import { ICartCallback, ICartRentalProduct, ICartProduct } from \"@Utilities/Cart\";\r\nimport { HeaderBase } from \"@Base/Site/HeaderBase\";\r\nimport axios from \"axios\";\r\n\r\nexport class CartService\r\n{\r\n\tpublic AddProduct = (product: ICartProduct, callback?: ICartCallback): Promise =>\r\n\t{\r\n\t\tconst url = \"/product/addproduct\";\r\n\r\n\t\treturn axios.post(url, product)\r\n\t\t\t.catch((error) =>\r\n\t\t\t{\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t});\r\n\t};\r\n\r\n\tpublic AddRental = (product: ICartRentalProduct, callback?: ICartCallback): Promise =>\r\n\t{\r\n\t\tconst url = \"/services/cart.asmx/AddRental\";\r\n\r\n\t\treturn axios.post(url, product)\r\n\t\t\t.catch((error) =>\r\n\t\t\t{\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t});\r\n\t};\r\n\r\n\tpublic RestoreCart = (ogid: string): Promise =>\r\n\t{\r\n\t\tconst url = \"/api/carts/restorecart?ogid=\" + ogid;\r\n\r\n\t\treturn axios.post(url)\r\n\t\t\t.then((response) =>\r\n\t\t\t{\r\n\t\t\t\tconst itemOrderQuantity = response.data;\r\n\r\n\t\t\t\tif (itemOrderQuantity !== undefined)\r\n\t\t\t\t{\r\n\t\t\t\t\tconst itemOrderQuantityNumber: number = +itemOrderQuantity;\r\n\t\t\t\t\tconst headerBase = new HeaderBase();\r\n\t\t\t\t\theaderBase.UpdateCartIcon(itemOrderQuantityNumber);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error) =>\r\n\t\t\t{\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t});\r\n\t};\r\n}","import axios, { AxiosRequestConfig } from \"axios\";\r\n\r\nexport interface ISpecialContent\r\n{\r\n\tElement: string;\r\n\tHtml: string;\r\n\tReplaceExisting: boolean;\r\n}\r\ninterface IContentDto\r\n{\r\n\t__type: string;\r\n\tABContent: Array;\r\n\tAccountName: string;\r\n\tBasketID: number;\r\n\tCartID: number;\r\n\tCartItemCount: number;\r\n\tCloseBannerText: string;\r\n\tCouponBanner: string;\r\n\tCouponID: number;\r\n\tCouponIsPromotion: boolean;\r\n\tCouponIsValid: boolean;\r\n\tDisplayDataPrivacyPolicyLink: boolean;\r\n\tDisplayDataPrivacyPolicyModal: boolean;\r\n\tDisplaySellDataOptOutLink: boolean;\r\n\tDomainProjectID: string;\r\n\tExperimentID: string;\r\n\tHasPreOrderCart: boolean;\r\n\tHeaderCart: string;\r\n\tInternationalBanner: string;\r\n\tIsDirectToCheckout: boolean;\r\n\tIsMobileDevice: boolean;\r\n\tIsTabletDevice: boolean;\r\n\tPreOrderID: number;\r\n\tPreOrderItemCount: number;\r\n\tPreOrderItemQuantity: number;\r\n\tPreOrderSubTotal: number;\r\n\tRentalEventDate: string;\r\n\tRentalEventDays: number;\r\n\tScheduledContent: Array;\r\n\tSecureDomainUrl: string;\r\n\tSmsModalEligible: boolean;\r\n\tSmsWelcomeCoupon: string;\r\n\tSubTotal: number;\r\n\tTotalItemQuantity: number;\r\n\tTransitTimeContent: Array;\r\n\tWebsiteName: string;\r\n\tWebsiteSuggestionBanner: string;\r\n\tWelcomeCoupon: string;\r\n}\r\n\r\nexport interface IContentCallback\r\n{\r\n\t(): void;\r\n}\r\n\r\nexport class ContentService\r\n{\r\n\tstatic Response: IContentDto;\r\n\r\n\tpublic ApiCall = (): Promise =>\r\n\t{\r\n\t\tconst apiUrl = \"/services/client.asmx/GetContent\";\r\n\t\tconst data = {\r\n\t\t\turl: document.URL,\r\n\t\t\treferrer: document.URL\r\n\t\t};\r\n\r\n\t\treturn axios.post(apiUrl, data)\r\n\t\t\t.then((response) =>\r\n\t\t\t{\r\n\t\t\t\tContentService.Response = response.data.d;\r\n\t\t\t})\r\n\t\t\t.catch((error) =>\r\n\t\t\t{\r\n\t\t\t\tif (error.code !== \"ECONNABORTED\")\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.log(error);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t};\r\n}","import axios from \"axios\";\r\n\r\nexport class CouponService\r\n{\r\n\tpublic ApplyCoupon = (couponCode: string): Promise =>\r\n\t{\r\n\t\tconst apiUrl = `/api/carts/?coupon-code=${couponCode}`;\r\n\r\n\t\treturn axios.post(apiUrl)\r\n\t\t\t.catch((error) =>\r\n\t\t\t{\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t});\r\n\t};\r\n\r\n\tpublic RemoveCoupon = (): Promise =>\r\n\t{\r\n\t\tconst apiUrl = \"/api/carts/?remove-coupon=true\";\r\n\r\n\t\treturn axios.post(apiUrl)\r\n\t\t\t.catch((error) =>\r\n\t\t\t{\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t});\r\n\t};\r\n}","import axios, { AxiosResponse } from \"axios\";\r\nimport { TrackJS } from \"trackjs\";\r\n\r\nexport class ExperimentService\r\n{\r\n\tpublic AddTest = (thirdPartyTestID: string, variantSequence: number, callback?: Function): void =>\r\n\t{\r\n\t\tif (thirdPartyTestID !== undefined &&\r\n\t\t\tthirdPartyTestID !== null &&\r\n\t\t\tthirdPartyTestID.length > 0 &&\r\n\t\t\tvariantSequence !== undefined &&\r\n\t\t\tvariantSequence !== null && variantSequence > -1)\r\n\t\t{\r\n\t\t\taxios\r\n\t\t\t\t.post(\"/api/testvisitors/\",\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthirdPartyTestID: thirdPartyTestID,\r\n\t\t\t\t\t\tvariantSequence: variantSequence\r\n\t\t\t\t\t})\r\n\t\t\t\t.then(function (response: AxiosResponse)\r\n\t\t\t\t{\r\n\t\t\t\t\tif (callback != null)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcallback();\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch(function (error)\r\n\t\t\t\t{\r\n\t\t\t\t\tlet statusCode = 0;\r\n\r\n\t\t\t\t\tif (error.response)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tstatusCode = error.response.status;\r\n\t\t\t\t\t\tconsole.log(`TrackJS API error: ${error.response.status}: ${error.response.data}`);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (statusCode > 0)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// valid status code that we should handle (O means some sort of interruption)\r\n\t\t\t\t\t\tTrackJS.track(\"ExperimentSerivce error - API request\");\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\t};\r\n}","import axios from \"axios\";\r\n\r\nexport class SubscriptionService\r\n{\r\n\tpublic GetFooter = (): Promise =>\r\n\t{\r\n\t\tconst url = `/website/footerwelcome2`;\r\n\r\n\t\treturn axios.get(url)\r\n\t\t\t.catch((error) =>\r\n\t\t\t{\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t});\r\n\t};\r\n}","import axios, { AxiosResponse } from \"axios\";\r\nimport { TrackJS } from \"trackjs\";\r\n\r\nexport class TrackingService\r\n{\r\n\tpublic GetReferringCategory = async (referrer: string = document.referrer): Promise =>\r\n\t{\r\n\t\tconst url = `api/referrercategory?url=${referrer}`;\r\n\t\tconst response = await axios.get(url) as AxiosResponse;\r\n\t\treturn response.data;\r\n\t};\r\n\r\n\tpublic SubmitWebAPI = (pageViewData): void =>\r\n\t{\r\n\t\taxios.post(\"/api/tracking/pageview\", {\r\n\t\t\tPageType: pageViewData[0].ecomm_pagetype,\r\n\t\t\tDataLayer: JSON.stringify(pageViewData)\r\n\t\t})\r\n\t\t\t.catch(function (error)\r\n\t\t\t{\r\n\t\t\t\tlet statusCode = 0;\r\n\r\n\t\t\t\tif (error.response)\r\n\t\t\t\t{\r\n\t\t\t\t\tstatusCode = error.response.status;\r\n\t\t\t\t\tconsole.log(`TrackJS API error: ${error.response.status}: ${error.response.data}`);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (statusCode > 0)\r\n\t\t\t\t{\r\n\t\t\t\t\t// valid status code that we should handle (O means some sort of interruption)\r\n\t\t\t\t\tTrackJS.track(\"Fun.Tracking PageView error - API request\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t};\r\n}","// Quiq SDK docs: https://developers.goquiq.com/docs/webchat/#/reference/types\r\n// Quiq API docs: https://developers.goquiq.com/api/docs\r\n\r\nimport { CookieManager } from \"@Utilities/CookieManager\";\r\nimport { EngagementProvider } from \"@Base/Engagement/Engagement\";\r\nimport { IQuiqOptions } from \"./IQuiqOptions\";\r\nimport { TextResource } from \"@Utilities/TextResource\";\r\n\r\nimport deepmerge from \"deepmerge\";\r\nimport axios from \"axios\";\r\n\r\n// Declare Existing Vars.\r\ndeclare let Quiq;\r\nexport class ChatBase\r\n{\r\n\tprivate ChatCacheCookieName: string;\r\n\tprivate ChatQueryInterval: number;\r\n\tprivate ContactContainers: NodeListOf;\r\n\tprivate ContactLaunchers: NodeListOf;\r\n\tprivate readonly engagementProvider: EngagementProvider;\r\n\tprivate LaunchButtons: Array;\r\n\tprivate LaunchContainers: NodeListOf;\r\n\tprivate OfflineButtonSelector: string;\r\n\tprivate OnlineButtonSelector: string;\r\n\tprivate QuiqChat: any;\r\n\tprivate QuiqOptions: IQuiqOptions;\r\n\tprivate QuiqSDKUrl: string;\r\n\r\n\tconstructor()\r\n\t{\r\n\t\tthis.engagementProvider = new EngagementProvider();\r\n\r\n\t\t// Time in ms to check for chat availability when offline on initial page load (matching quiq default)\r\n\t\tthis.ChatQueryInterval = 60000;\r\n\r\n\t\t// Quiq SDK url\r\n\t\tthis.QuiqSDKUrl = \"https://fun.quiq-api.com/app/webchat/index.js\";\r\n\t\tthis.ChatCacheCookieName = \"CHATCACHE_V1\";\r\n\t\tthis.ContactContainers = document.querySelectorAll(\".contact\");\r\n\t\tthis.ContactLaunchers = document.querySelectorAll(\".contact__launcher\");\r\n\t\tthis.LaunchButtons = [];\r\n\t\tthis.LaunchContainers = document.querySelectorAll(\"[data-chatid=quiq]:not(.contact)\");\r\n\t\tthis.OfflineButtonSelector = \".stlc-ofl\";\r\n\t\tthis.OnlineButtonSelector = \".stlc-onl\";\r\n\r\n\t\tconst background = \"#f9f9f9\";\r\n\t\tconst bodyText = \"#333\";\r\n\t\tconst chatFontWeight = \"500\";\r\n\t\tconst grayBorder = \"1px solid #ddd\";\r\n\t\tconst messageRadius = \"10px 10px 10px 0\";\r\n\t\tconst pillRadius = \"50rem\";\r\n\t\tconst weightBold = \"600\";\r\n\t\tconst white = \"#fff\";\r\n\r\n\t\tlet bottomPosition = \"25px\";\r\n\t\tlet titleText = \"Customer Support\";\r\n\t\tlet headerText = \"Ask Us Anything\";\r\n\r\n\t\tthis.LaunchContainers.forEach(launchContainer =>\r\n\t\t{\r\n\t\t\tthis.LaunchButtons.push(`#${launchContainer.getAttribute(\"id\")} .stlc-onl`);\r\n\t\t});\r\n\r\n\t\tthis.ContactContainers.forEach(contactContainer =>\r\n\t\t{\r\n\t\t\tthis.LaunchButtons.push(`#${contactContainer.getAttribute(\"id\")} .contact__chat`);\r\n\t\t});\r\n\r\n\t\ttitleText = TextResource.GetTextByCulture(\"Feature_Chat_CustomerSupport\");\r\n\t\theaderText = TextResource.GetTextByCulture(\"Feature_Chat_AskAnything\");\r\n\r\n\t\t// @ts-expect-error Checking for google customer review presence and moving the quiq window up if it is\r\n\t\tif (typeof window.renderBadge !== \"undefined\")\r\n\t\t{\r\n\t\t\tbottomPosition = \"79px\";\r\n\t\t}\r\n\r\n\t\t/*\r\n\t\t* These options are provided to the Quiq chat object on initialization.\r\n\t\t* NOTE: Chat options can be overridden at the site level for various look-and-feel details.\r\n\t\t*\r\n\t\t* See the full list of available options that can be configured for Quiq chat:\r\n\t\t* https://developers.goquiq.com/docs/webchat/#/reference/types\r\n\t\t*/\r\n\t\tthis.QuiqOptions = {\r\n\t\t\tcontactPoint: \"funcom\",\r\n\t\t\tshowDefaultLaunchButton: false,\r\n\t\t\tcustomLaunchButtons: this.LaunchButtons,\r\n\t\t\tdefaultAgentAvatar: `${window.location.origin}/wwwroot/img/chat/avatar.png`,\r\n\t\t\twebFontUrls: [`${window.location.origin}/wwwroot/font/MonsterFont.css`],\r\n\t\t\tfontFamily: `\"MonsterFont\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"`,\r\n\t\t\twidth: \"min(calc(100% - 50px), 450px)\",\r\n\t\t\theight: \"min(calc(100% - 75px), 600px)\",\r\n\t\t\tborderRadius: 5,\r\n\t\t\tposition: {\r\n\t\t\t\tright: \"25px\",\r\n\t\t\t\tbottom: bottomPosition\r\n\t\t\t},\r\n\t\t\tcolors: {\r\n\t\t\t\tprimary: \"#900\",\r\n\t\t\t\tagentMessageBackground: white,\r\n\t\t\t\tagentMessageDropdownButtonIcons: white,\r\n\t\t\t\tagentMessageText: bodyText,\r\n\t\t\t\tcustomerMessageText: white,\r\n\t\t\t\tmenuText: \"#e6e6e6\",\r\n\t\t\t\ttranscriptBackground: background\r\n\t\t\t},\r\n\t\t\tstyles: {\r\n\t\t\t\tHeaderMenu: {\r\n\t\t\t\t\tpadding: \"10px\"\r\n\t\t\t\t},\r\n\t\t\t\tHeaderMenuIcons: {\r\n\t\t\t\t\twidth: \"20px\",\r\n\t\t\t\t\theight: \"20px\",\r\n\t\t\t\t\tmarginLeft: \"10px\",\r\n\t\t\t\t\tlineHeight: \"18px\",\r\n\t\t\t\t\tfill: white\r\n\t\t\t\t},\r\n\t\t\t\tHeaderBanner: {\r\n\t\t\t\t\tfontWeight: chatFontWeight,\r\n\t\t\t\t\tbackgroundColor: background,\r\n\t\t\t\t\tborderBottom: grayBorder,\r\n\t\t\t\t\tcolor: bodyText,\r\n\t\t\t\t\tpadding: \"0 20px\",\r\n\t\t\t\t\tminHeight: \"40px\"\r\n\t\t\t\t},\r\n\t\t\t\tWelcomeFormBanner: {\r\n\t\t\t\t\tfontWeight: chatFontWeight\r\n\t\t\t\t},\r\n\t\t\t\tWelcomeFormFieldLabel: {\r\n\t\t\t\t\tfontWeight: chatFontWeight\r\n\t\t\t\t},\r\n\t\t\t\tWelcomeFormSubmitButton: {\r\n\t\t\t\t\tcolor: white,\r\n\t\t\t\t\tfontWeight: weightBold,\r\n\t\t\t\t\tborderRadius: \"0.4rem\",\r\n\t\t\t\t\tpadding: \"0.5rem 1rem\"\r\n\t\t\t\t},\r\n\t\t\t\tWelcomeFormValidationStyle: {\r\n\t\t\t\t\tbackground: \"#f8d7da\",\r\n\t\t\t\t\tborder: \"1px #f5c6cb solid\",\r\n\t\t\t\t\tborderRadius: \"0.25rem\",\r\n\t\t\t\t\tcolor: \"#721c24\",\r\n\t\t\t\t\tpadding: \".75rem 1.25rem\"\r\n\t\t\t\t},\r\n\t\t\t\tErrorBanner: {\r\n\t\t\t\t\tbackground: \"#f8d7da\",\r\n\t\t\t\t\tborder: \"1px #f5c6cb solid\",\r\n\t\t\t\t\tborderRadius: \"0.25rem\",\r\n\t\t\t\t\tcolor: \"#721c24\",\r\n\t\t\t\t\tpadding: \".75rem 1.25rem\"\r\n\t\t\t\t},\r\n\t\t\t\tAgentAttachmentBubble: {\r\n\t\t\t\t\tborder: grayBorder,\r\n\t\t\t\t\tborderRadius: messageRadius\r\n\t\t\t\t},\r\n\t\t\t\tAgentAvatar: {\r\n\t\t\t\t\twidth: \"50px\",\r\n\t\t\t\t\theight: \"50px\",\r\n\t\t\t\t\tboxShadow: \"none\",\r\n\t\t\t\t\talignSelf: \"flex-end\"\r\n\t\t\t\t},\r\n\t\t\t\tAgentMessageBubble: {\r\n\t\t\t\t\tborder: grayBorder,\r\n\t\t\t\t\tborderRadius: messageRadius\r\n\t\t\t\t},\r\n\t\t\t\tAgentMessageText: {\r\n\t\t\t\t\tfontWeight: chatFontWeight\r\n\t\t\t\t},\r\n\t\t\t\tAgentOpenGraphLink: {\r\n\t\t\t\t\tbubble: {\r\n\t\t\t\t\t\tcolor: white,\r\n\t\t\t\t\t\tfontWeight: chatFontWeight\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tAgentRichMessage: {\r\n\t\t\t\t\tbody: {\r\n\t\t\t\t\t\tfontWeight: chatFontWeight\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbubble: {\r\n\t\t\t\t\t\tborderRadius: messageRadius,\r\n\t\t\t\t\t\tborder: grayBorder\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbutton: {\r\n\t\t\t\t\t\tfontWeight: weightBold,\r\n\t\t\t\t\t\tborderRadius: pillRadius\r\n\t\t\t\t\t},\r\n\t\t\t\t\ttitle: {\r\n\t\t\t\t\t\tfontWeight: chatFontWeight\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsubtitle: {\r\n\t\t\t\t\t\tfontWeight: chatFontWeight\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tCustomerAttachmentBubble: {\r\n\t\t\t\t\tborder: grayBorder,\r\n\t\t\t\t\tborderRadius: messageRadius\r\n\t\t\t\t},\r\n\t\t\t\tCustomerMessageBubble: {\r\n\t\t\t\t\tborderRadius: pillRadius\r\n\t\t\t\t},\r\n\t\t\t\tCustomerMessageText: {\r\n\t\t\t\t\tfontWeight: chatFontWeight\r\n\t\t\t\t},\r\n\t\t\t\tCustomerOpenGraphLink: {\r\n\t\t\t\t\tbubble: {\r\n\t\t\t\t\t\tfontWeight: chatFontWeight,\r\n\t\t\t\t\t\tcolor: white\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tCustomerRichMessage: {\r\n\t\t\t\t\tbody: {\r\n\t\t\t\t\t\tfontWeight: chatFontWeight\r\n\t\t\t\t\t},\r\n\t\t\t\t\ttitle: {\r\n\t\t\t\t\t\tfontWeight: chatFontWeight\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsubtitle: {\r\n\t\t\t\t\t\tfontWeight: chatFontWeight\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tInlineActionButton: {\r\n\t\t\t\t\tbackground: white,\r\n\t\t\t\t\tfontWeight: weightBold,\r\n\t\t\t\t\tfontSize: \"16px\",\r\n\t\t\t\t\tborderRadius: pillRadius,\r\n\t\t\t\t\tmarginTop: \"5px\"\r\n\t\t\t\t},\r\n\t\t\t\tMessageFormInput: {\r\n\t\t\t\t\tfontWeight: chatFontWeight\r\n\t\t\t\t},\r\n\t\t\t\tMessageFormSend: {\r\n\t\t\t\t\tcolor: white,\r\n\t\t\t\t\tborderColor: \"#600\",\r\n\t\t\t\t\tfontWeight: weightBold,\r\n\t\t\t\t\tborderRadius: \"0.4rem\",\r\n\t\t\t\t\tpadding: \"0.5rem 1rem\",\r\n\t\t\t\t\tmarginLeft: \"10px\",\r\n\t\t\t\t\tmarginRight: 0\r\n\t\t\t\t},\r\n\t\t\t\tOptionsMenuLineItem: {\r\n\t\t\t\t\tfontWeight: chatFontWeight\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tmessages: {\r\n\t\t\t\theaderText: headerText,\r\n\t\t\t\ttitleText: titleText,\r\n\t\t\t\tstorageDisabled: \"Storage Disabled\",\r\n\t\t\t\tunsupportedBrowser: \"Unsupported Browser\"\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.ConfigureChat();\r\n\t}\r\n\r\n\tpublic ConfigureChat = (): void =>\r\n\t{\r\n\t\tconst checkoutChat = document.querySelectorAll(\".stlc-sco\");\r\n\t\tconst noSearchChat = document.querySelectorAll(\".stlc-nsrc\");\r\n\t\tconst siteOptions = this.GetSiteOptions();\r\n\r\n\t\tif (typeof this.QuiqOptions !== \"undefined\" && typeof siteOptions !== \"undefined\" && siteOptions !== null && Object.keys(siteOptions).length > 0 && siteOptions.constructor === Object)\r\n\t\t{\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\tthis.QuiqOptions = deepmerge(this.QuiqOptions, siteOptions);\r\n\r\n\t\t\t\t// Always override the (production) contactPoints for lower environments.\r\n\t\t\t\tif (window.location.href.indexOf(\".test/\") > -1\r\n\t\t\t\t\t|| window.location.href.indexOf(\".alpha/\") > -1\r\n\t\t\t\t\t|| window.location.href.indexOf(\".beta/\") > -1\r\n\t\t\t\t\t|| window.location.href.indexOf(\".train/\") > -1\r\n\t\t\t\t\t|| window.location.href.indexOf(\".stage/\") > -1)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.QuiqOptions.contactPoint = \"devtesting\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// If the user (probably) has some kind of active chat going or is on the no search result page\r\n\t\t\t\tif (CookieManager.GetCookie(this.ChatCacheCookieName) === \"true\" || noSearchChat.length)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.DownloadChat();\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\t// Otherwise if not\r\n\t\t\t\t\t// and it's the checkout page\r\n\t\t\t\t\tif (checkoutChat.length)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcheckoutChat.forEach(element =>\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.ConfigureCheckoutChatButton(element);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// in all other cases\r\n\t\t\t\t\t\tthis.CheckChatStatus();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tcatch\r\n\t\t\t{\r\n\t\t\t\tconsole.error(\"Chat option merge error\");\r\n\t\t\t\tconsole.error(this.QuiqOptions);\r\n\t\t\t\tconsole.error(siteOptions);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tpublic GetSiteOptions(): IQuiqOptions\r\n\t{\r\n\t\t// return default quiq options\r\n\t\treturn this.QuiqOptions;\r\n\t}\r\n\r\n\tpublic ReinitializeChat = (): void =>\r\n\t{\r\n\t\tif (typeof this !== \"undefined\")\r\n\t\t{\r\n\t\t\tconst chatOnlineClass = \"stlc-onl\";\r\n\r\n\t\t\tconst launchContainers = document.querySelectorAll(\"[data-chatid=quiq]\");\r\n\t\t\tconst customLaunchButtons = [];\r\n\r\n\t\t\tif (launchContainers.length > 0)\r\n\t\t\t{\r\n\t\t\t\tfor (let i = 0; i < launchContainers.length; i++)\r\n\t\t\t\t{\r\n\t\t\t\t\tcustomLaunchButtons.push(`#${launchContainers[i].getAttribute(\"id\")} .${chatOnlineClass}`);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst reinitOptions = {\r\n\t\t\t\tcustomLaunchButtons: customLaunchButtons\r\n\t\t\t};\r\n\r\n\t\t\tthis.QuiqOptions = { ...this.QuiqOptions, ...reinitOptions };\r\n\r\n\t\t\tthis.QuiqChat.reinitialize(this.QuiqOptions).then((data) =>\r\n\t\t\t{\r\n\t\t\t\tthis.QuiqChat = data;\r\n\r\n\t\t\t\tthis.PostInitializeChat();\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\tprivate CheckChatStatus = (): void =>\r\n\t{\r\n\t\tconst contactPoint = this.QuiqOptions.contactPoint;\r\n\r\n\t\tthis.GetChatStatus(contactPoint)\r\n\t\t\t.then((available) =>\r\n\t\t\t{\r\n\t\t\t\tif (available === true)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.DownloadButtonsOnline();\r\n\t\t\t\t\tthis.ConfigureDownloadButtons();\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\t// Check status again after some interval if chat is offline\r\n\t\t\t\t\tsetTimeout(() =>\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.CheckChatStatus();\r\n\t\t\t\t\t}, this.ChatQueryInterval);\r\n\t\t\t\t}\r\n\t\t\t}).catch((error) =>\r\n\t\t\t{\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t});\r\n\t};\r\n\r\n\tprivate ConfigureDownloadButtons = (): void =>\r\n\t{\r\n\t\tconst mobileTrigger = document.querySelector(\"#offCanvasMenu\");\r\n\t\tconst desktopTrigger = document.querySelector(\".contact--head\");\r\n\t\tconst mobileEvent = \"shown.bs.offcanvas\";\r\n\t\tconst desktopEvent = \"shown.bs.dropdown\";\r\n\r\n\t\tmobileTrigger.addEventListener(mobileEvent, () =>\r\n\t\t{\r\n\t\t\tdesktopTrigger.removeEventListener(desktopEvent, null);\r\n\r\n\t\t\tif (typeof Quiq === \"undefined\")\r\n\t\t\t{\r\n\t\t\t\tthis.DownloadChat();\r\n\t\t\t}\r\n\t\t}, { once: true });\r\n\r\n\t\tdesktopTrigger.addEventListener(desktopEvent, () =>\r\n\t\t{\r\n\t\t\tmobileTrigger.removeEventListener(mobileEvent, null);\r\n\r\n\t\t\tif (typeof Quiq === \"undefined\")\r\n\t\t\t{\r\n\t\t\t\tthis.DownloadChat();\r\n\t\t\t}\r\n\t\t}, { once: true });\r\n\t};\r\n\r\n\tprivate ConfigureCheckoutChatButton = (checkoutChat): void =>\r\n\t{\r\n\t\t// // if the button hasn't been reached by the user, then set up a lazyload monitor\r\n\t\t// if (!checkoutChat.hasClass(\"lazyloaded\"))\r\n\t\t// {\r\n\t\t// \t// set up lazy loading of quiq on the checkout\r\n\t\t// \t$(document).on(\"lazybeforeunveil\", function (e)\r\n\t\t// \t{\r\n\t\t// \t\tif ($(e.target).attr(\"id\") === \"stlcsco\" && typeof this !== \"undefined\")\r\n\t\t// \t\t{\r\n\t\t// \t\t\tthis.DownloadChat();\r\n\t\t// \t\t}\r\n\t\t// \t});\r\n\t\t// }\r\n\t\t// else\r\n\t\t// {\r\n\t\t// \t// just download quiq if the button is in view\r\n\t\t// \tthis.DownloadChat();\r\n\t\t// }\r\n\t};\r\n\r\n\tprivate DownloadButtonsOnline = (): void =>\r\n\t{\r\n\t\tthis.ContactLaunchers.forEach(contactLauncher =>\r\n\t\t{\r\n\t\t\tif (!contactLauncher.classList.contains(\"btn-success\"))\r\n\t\t\t{\r\n\t\t\t\tcontactLauncher.classList.remove(\"btn-secondary\");\r\n\t\t\t\tcontactLauncher.classList.add(\"btn-success\");\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tprivate DownloadButtonsOffline = (): void =>\r\n\t{\r\n\t\tthis.ContactLaunchers.forEach(contactLauncher =>\r\n\t\t{\r\n\t\t\tif (contactLauncher.classList.contains(\"btn-success\"))\r\n\t\t\t{\r\n\t\t\t\tcontactLauncher.classList.add(\"btn-secondary\");\r\n\t\t\t\tcontactLauncher.classList.remove(\"btn-success\");\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tprivate DownloadChat = (): void =>\r\n\t{\r\n\t\t// Check if Quiq SDK has been initialized\r\n\t\tif (typeof Quiq === \"undefined\")\r\n\t\t{\r\n\t\t\t// Set up a script tag to download quiq\r\n\t\t\tconst quiqScript = document.createElement(\"script\");\r\n\t\t\tquiqScript.src = this.QuiqSDKUrl;\r\n\t\t\tquiqScript.charset = \"UTF-8\";\r\n\t\t\tquiqScript.defer = true;\r\n\t\t\tquiqScript.onload = (): void =>\r\n\t\t\t{\r\n\t\t\t\t// Initialize and open quiq\r\n\t\t\t\tthis.InitializeChat();\r\n\t\t\t};\r\n\r\n\t\t\tdocument.body.appendChild(quiqScript);\r\n\t\t}\r\n\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.ShowOnlineButton();\r\n\t\t}\r\n\t};\r\n\r\n\tprivate GetChatStatus = (contactPoint: string): Promise =>\r\n\t{\r\n\t\tconst apiUrl = `https://fun.quiq-api.com/api/v1/messaging/agents-available?contactPoint=${contactPoint}&platform=Chat`;\r\n\r\n\t\t// API Documentation: https://developers.goquiq.com/api/docs#tag/Messaging\r\n\r\n\t\treturn axios.get(apiUrl)\r\n\t\t\t.then((result) =>\r\n\t\t\t{\r\n\t\t\t\tif (typeof result !== \"undefined\" && typeof result.data !== \"undefined\" && typeof result.data.available !== \"undefined\")\r\n\t\t\t\t{\r\n\t\t\t\t\treturn result.data.available;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error) =>\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\t};\r\n\r\n\tprivate InitializeChat = (): void =>\r\n\t{\r\n\t\tif (typeof Quiq !== \"undefined\")\r\n\t\t{\r\n\t\t\tthis.QuiqChat = Quiq(this.QuiqOptions);\r\n\r\n\t\t\tthis.PostInitializeChat();\r\n\t\t}\r\n\t};\r\n\r\n\tprivate PostInitializeChat = (): void =>\r\n\t{\r\n\t\t// Set cookie to bypass the lazy loading measures when the user interacts with the chat button\r\n\t\t// https://developers.goquiq.com/docs/webchat/#/reference/sdk?id=chatvisibilitydidchange\r\n\t\tthis.QuiqChat.on(\"chatVisibilityDidChange\", (e) =>\r\n\t\t{\r\n\t\t\tif (e.visible === true)\r\n\t\t\t{\r\n\t\t\t\tthis.SetChatCache();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Verify agent availability\r\n\t\t// https://developers.goquiq.com/docs/webchat/#/reference/sdk?id=getagentavailability\r\n\t\tthis.QuiqChat.getAgentAvailability().then((data) =>\r\n\t\t{\r\n\t\t\tif (typeof this !== \"undefined\")\r\n\t\t\t{\r\n\t\t\t\tif (data.available)\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.ShowOnlineButton();\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.ShowOfflineButton();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\t// User (probably) has chat cached\r\n\tprivate SetChatCache = (): void =>\r\n\t{\r\n\t\tCookieManager.SetCookie(this.ChatCacheCookieName, \"true\", 1);\r\n\t};\r\n\r\n\tprivate ShowOfflineButton = (): void =>\r\n\t{\r\n\t\tconst buttons = document.querySelectorAll(\".contact__chat\");\r\n\t\tconst icons = document.querySelectorAll(\".contact__chat svg use\");\r\n\t\tconst offlineButtons = document.querySelectorAll(this.OfflineButtonSelector);\r\n\t\tconst onlineButtons = document.querySelectorAll(this.OnlineButtonSelector);\r\n\r\n\t\tbuttons.forEach(button =>\r\n\t\t{\r\n\t\t\tbutton.classList.add(\"disabled\");\r\n\t\t});\r\n\r\n\t\ticons.forEach(icon =>\r\n\t\t{\r\n\t\t\tconst currentAttribute = icon.getAttribute(\"xlink:href\").split(\"#\")[0];\r\n\t\t\ticon.setAttribute(\"xlink:href\", `${currentAttribute}#fa-solid-fa-spinner-third`);\r\n\t\t\ticon.parentElement.classList.add(\"fa-spin\");\r\n\t\t});\r\n\r\n\t\tofflineButtons.forEach(button =>\r\n\t\t{\r\n\t\t\tbutton.style.display = \"\";\r\n\t\t});\r\n\r\n\t\tonlineButtons.forEach(button =>\r\n\t\t{\r\n\t\t\tbutton.style.display = \"none\";\r\n\t\t});\r\n\r\n\t\tthis.DownloadButtonsOffline();\r\n\t};\r\n\r\n\tprivate ShowOnlineButton = (): void =>\r\n\t{\r\n\t\tconst buttons = document.querySelectorAll(\".contact__chat\");\r\n\t\tconst icons = document.querySelectorAll(\".contact__chat svg use\");\r\n\t\tconst offlineButtons = document.querySelectorAll(this.OfflineButtonSelector);\r\n\t\tconst onlineButtons = document.querySelectorAll(this.OnlineButtonSelector);\r\n\r\n\t\tbuttons.forEach(button =>\r\n\t\t{\r\n\t\t\tbutton.classList.remove(\"disabled\");\r\n\t\t});\r\n\r\n\t\ticons.forEach(icon =>\r\n\t\t{\r\n\t\t\tconst currentAttribute = icon.getAttribute(\"xlink:href\").split(\"#\")[0];\r\n\t\t\ticon.setAttribute(\"xlink:href\", `${currentAttribute}#fa-solid-fa-message-dots`);\r\n\t\t\ticon.parentElement.classList.remove(\"fa-spin\");\r\n\t\t});\r\n\r\n\t\tofflineButtons.forEach(button =>\r\n\t\t{\r\n\t\t\tbutton.style.display = \"none\";\r\n\t\t});\r\n\r\n\t\tonlineButtons.forEach(button =>\r\n\t\t{\r\n\t\t\tbutton.style.display = \"\";\r\n\t\t});\r\n\r\n\t\tthis.DownloadButtonsOnline();\r\n\t};\r\n}","import axios from \"axios\";\r\n\r\nexport class EngagementService\r\n{\r\n\tpublic AddGuestAccount = (email: string, phone: string, attentiveEmail: boolean, attentiveSms: boolean): Promise =>\r\n\t{\r\n\t\tlet url = `/api/engagement/save?email=${email}`;\r\n\r\n\t\tif (phone !== \"\")\r\n\t\t{\r\n\t\t\turl += `&phone=${phone}`;\r\n\t\t}\r\n\r\n\t\turl += `&subscribeAttentiveEmail=${attentiveEmail}`;\r\n\t\turl += `&subscribeAttentiveSms=${attentiveSms}`;\r\n\r\n\t\treturn axios.post(url)\r\n\t\t\t.catch((error) =>\r\n\t\t\t{\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t});\r\n\t};\r\n\r\n\tpublic AddSubscription = (phone: string, email: string, subscriptionId: string): Promise =>\r\n\t{\r\n\t\tconst url = `/api/engagement/addSubscription?phone=${phone}&email=${email}&subscriptionId=${subscriptionId}`;\r\n\r\n\t\treturn axios.post(url)\r\n\t\t\t.catch((error) =>\r\n\t\t\t{\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t});\r\n\t};\r\n\r\n\tpublic AddRecommendationClick = (unique: string): Promise =>\r\n\t{\r\n\t\tconst url = `/api/engagement/recommendationClick?accountGuid=${unique}`;\r\n\r\n\t\treturn axios.post(url)\r\n\t\t\t.catch((error) =>\r\n\t\t\t{\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t});\r\n\t};\r\n\r\n\tpublic GetAccountEmailPhone = (): Promise =>\r\n\t{\r\n\t\tconst url = \"/api/engagement/GetAccountEmailPhone\";\r\n\t\treturn axios.get(url)\r\n\t\t\t.catch((error) =>\r\n\t\t\t{\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t});\r\n\t};\r\n}","/* eslint-disable no-fallthrough */\r\nimport axios, { AxiosResponse } from \"axios\";\r\nimport { DataLayerObject } from \"@gtm-support/core\";\r\nimport { EngagementService } from \"@Api/EngagementService\";\r\nimport { ContentService } from \"@Api/ContentService\";\r\nimport { CookieManager } from \"@Utilities/CookieManager\";\r\nimport { DataPrivacyPolicy } from \"@Utilities/DataPrivacyPolicy\";\r\n\r\n//import { IBackInStockNotificationData } from \"@Api/BackInStockReminderService\";\r\nimport { TagManager } from \"@ThirdParty/TagManager\";\r\n\r\ndeclare global\r\n{\r\n\tinterface Window\r\n\t{\r\n\t\t__attnLoaded: true;\r\n\t\t__attentive: {\r\n\t\t\t/**\r\n\t\t\t * See documentation: https://help.attentivemobile.com/hc/en-us/articles/10913611055636-Set-up-Attentive-s-sign-up-unit-trigger\r\n\t\t\t * @param { string } filter - leave null\r\n\t\t\t * @param { string } client_id - leave null\r\n\t\t\t * @param { string } email - leave null\r\n\t\t\t * @param { string } creative_id: the creative id to be displayed. obtained from the Attentive dashboard\r\n\t\t\t */\r\n\t\t\ttrigger(filter: string, client_id: string, email: string, creative_id: string);\r\n\t\t};\r\n\t}\r\n}\r\n\r\ninterface ISubscriptionData\r\n{\r\n\temail: string;\r\n\tname?: string;\r\n\toptOut?: boolean;\r\n\tsmsSubscribed?: boolean;\r\n\tsubscriptionId: string;\r\n}\r\n\r\ninterface IIdentifyData\r\n{\r\n\tphone: string;\r\n\temail: string;\r\n\texternalIdentifiers: {\r\n\t\tname: string;\r\n\t\tvalue: string;\r\n\t};\r\n}\r\n\r\nexport class EngagementProvider\r\n{\r\n\tprivate readonly dataPrivacyPolicy: DataPrivacyPolicy;\r\n\tprivate readonly engagementService: EngagementService;\r\n\tprivate AttentiveOverlayID = \"attentive_overlay\";\r\n\tprivate BodyObserver: MutationObserver;\r\n\tprivate StyleObserver: MutationObserver;\r\n\tprivate Currency = \"currency\";\r\n\tprivate ItemNumber = \"ecomm_prodItemNumber\";\r\n\tprivate ItemQuantityList = \"ecomm_quantity\";\r\n\tprivate ItemSkuList = \"ecomm_prodsku\";\r\n\tprivate OrderGuidKey = \"ogid\";\r\n\tprivate ProductThumbList = \"ecomm_productThumbList\";\r\n\tprivate ProductTitle = \"ecomm_productTitle\";\r\n\tprivate ProductValue = \"ecomm_pvalue\";\r\n\tprivate CartCookie = \"CART_v1\";\r\n\tprivate VisitorCookie = \"VISITOR_v1\";\r\n\r\n\tconstructor()\r\n\t{\r\n\t\tthis.dataPrivacyPolicy = new DataPrivacyPolicy();\r\n\t\tthis.engagementService = new EngagementService();\r\n\t}\r\n\r\n\t//This happens when a user clicks a link in an email. Then we can tie the brower session to a known account.\r\n\tpublic AddRecommendationClick = (unique: string): void =>\r\n\t{\r\n\t\tthis.engagementService.AddRecommendationClick(unique);\r\n\t};\r\n\r\n\tpublic AddSubscription = (phone: string, email: string, subscriptionId: string): void =>\r\n\t{\r\n\t\tthis.engagementService.AddSubscription(phone, email, subscriptionId);\r\n\t};\r\n\r\n\tpublic BodyCallback: MutationCallback = (mutationList, observer): void =>\r\n\t{\r\n\t\tmutationList.forEach(mutation =>\r\n\t\t{\r\n\t\t\tif (mutation.type === \"childList\" && mutation.addedNodes.length > 0)\r\n\t\t\t{\r\n\t\t\t\tconst attentiveOverlay = document.getElementById(this.AttentiveOverlayID);\r\n\r\n\t\t\t\tif (attentiveOverlay)\r\n\t\t\t\t{\r\n\t\t\t\t\tattentiveOverlay.style.zIndex = \"\";\r\n\t\t\t\t\tobserver.disconnect();\r\n\r\n\t\t\t\t\tthis.StyleObserver = new MutationObserver(this.StyleCallback);\r\n\t\t\t\t\tthis.StyleObserver.observe(attentiveOverlay, {\r\n\t\t\t\t\t\tattributes: true,\r\n\t\t\t\t\t\tattributeFilter: [\"style\"]\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tmutation.addedNodes.forEach(node =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst element = node as HTMLElement;\r\n\r\n\t\t\t\t\tif (element.id === this.AttentiveOverlayID)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tobserver.disconnect();\r\n\t\t\t\t\t\telement.style.zIndex = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tpublic CreateGuestAccount = (email: string, phone = \"\", attentiveEmail = false, attentiveSms = false): Promise =>\r\n\t{\r\n\t\treturn this.engagementService.AddGuestAccount(email, phone, attentiveEmail, attentiveSms)\r\n\t\t\t.catch((error) =>\r\n\t\t\t{\r\n\t\t\t\tconsole.error(error);\r\n\t\t\t});\r\n\t};\r\n\r\n\tpublic PostAddToCartTagToAttentive = (): void =>\r\n\t{\r\n\t\tthis.engagementService.GetAccountEmailPhone()\r\n\t\t\t.then((response: AxiosResponse) =>\r\n\t\t\t{\r\n\t\t\t\tconst email: string = response.data.Email;\r\n\t\t\t\tconst phone: string = response.data.Phone;\r\n\r\n\t\t\t\tif (typeof window.dataLayer !== \"undefined\" && typeof window.attentive !== \"undefined\")\r\n\t\t\t\t{\r\n\t\t\t\t\tconst currency = window.dataLayer.find((obj: DataLayerObject) => Object.prototype.hasOwnProperty.call(obj, this.Currency))[this.Currency];\r\n\t\t\t\t\tconst itemNumber = window.dataLayer.find((obj: DataLayerObject) => Object.prototype.hasOwnProperty.call(obj, this.ItemNumber))[this.ItemNumber];\r\n\t\t\t\t\tconst itemSku = window.dataLayer.find((obj: DataLayerObject) => Object.prototype.hasOwnProperty.call(obj, this.ItemSkuList))[this.ItemSkuList];\r\n\t\t\t\t\tconst itemQuantity = window.dataLayer.find((obj: DataLayerObject) => Object.prototype.hasOwnProperty.call(obj, this.ItemQuantityList))[this.ItemQuantityList];\r\n\t\t\t\t\tconst productTitle = window.dataLayer.find((obj: DataLayerObject) => Object.prototype.hasOwnProperty.call(obj, this.ProductTitle))[this.ProductTitle];\r\n\t\t\t\t\tconst productThumbList = window.dataLayer.find((obj: DataLayerObject) => Object.prototype.hasOwnProperty.call(obj, this.ProductThumbList))[this.ProductThumbList];\r\n\t\t\t\t\tconst productValue = window.dataLayer.find((obj: DataLayerObject) => Object.prototype.hasOwnProperty.call(obj, this.ProductValue))[this.ProductValue];\r\n\t\t\t\t\tconst orderGuid = this.GetOrderGuid();\r\n\r\n\t\t\t\t\tif (itemNumber && productTitle && productThumbList && productValue && currency)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tvar product =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\titems:\r\n\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tproductId: itemNumber,\r\n\t\t\t\t\t\t\t\t\t\tproductVariantId: itemSku,\r\n\t\t\t\t\t\t\t\t\t\tname: productTitle,\r\n\t\t\t\t\t\t\t\t\t\tproductImage: productThumbList,\r\n\t\t\t\t\t\t\t\t\t\tprice:\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: productValue,\r\n\t\t\t\t\t\t\t\t\t\t\tcurrency: currency\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\tquantity: itemQuantity\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tcart:\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcartId: orderGuid\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tuser:\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tphone: phone,\r\n\t\t\t\t\t\t\t\temail: email\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\twindow.attentive.analytics.addToCart(product);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error) =>\r\n\t\t\t{\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t});;\r\n\t};\r\n\r\n\tpublic PostProductTagToAttentive = (): void =>\r\n\t{\r\n\t\tthis.engagementService.GetAccountEmailPhone()\r\n\t\t\t.then((response: AxiosResponse) =>\r\n\t\t\t{\r\n\t\t\t\tconst email: string = response.data.Email;\r\n\t\t\t\tconst phone: string = response.data.Phone;\r\n\r\n\t\t\t\tif (typeof window.dataLayer !== \"undefined\" && typeof window.attentive !== \"undefined\")\r\n\t\t\t\t{\r\n\t\t\t\t\tconst itemNumber = window.dataLayer.find((obj: DataLayerObject) => Object.prototype.hasOwnProperty.call(obj, this.ItemNumber))[this.ItemNumber];\r\n\t\t\t\t\tconst productTitle = window.dataLayer.find((obj: DataLayerObject) => Object.prototype.hasOwnProperty.call(obj, this.ProductTitle))[this.ProductTitle];\r\n\t\t\t\t\tconst productThumbList = window.dataLayer.find((obj: DataLayerObject) => Object.prototype.hasOwnProperty.call(obj, this.ProductThumbList))[this.ProductThumbList];\r\n\t\t\t\t\tconst productValue = window.dataLayer.find((obj: DataLayerObject) => Object.prototype.hasOwnProperty.call(obj, this.ProductValue))[this.ProductValue];\r\n\t\t\t\t\tconst currency = window.dataLayer.find((obj: DataLayerObject) => Object.prototype.hasOwnProperty.call(obj, this.Currency))[this.Currency];\r\n\r\n\t\t\t\t\tif (itemNumber && productTitle && productThumbList && productValue && currency)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tvar product =\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\titems:\r\n\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tproductId: itemNumber,\r\n\t\t\t\t\t\t\t\t\t\tname: productTitle,\r\n\t\t\t\t\t\t\t\t\t\tproductImage: productThumbList,\r\n\t\t\t\t\t\t\t\t\t\tprice:\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: productValue,\r\n\t\t\t\t\t\t\t\t\t\t\tcurrency: currency\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\tuser:\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tphone: phone,\r\n\t\t\t\t\t\t\t\temail: email\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\twindow.attentive.analytics.productView(product);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error) =>\r\n\t\t\t{\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t});;\r\n\t};\r\n\r\n\t/**\r\n * Displays an Attentive sign up modal\r\n * @param creativeID The creative ID you want to display. Obtained from the Attentive dashboard\r\n */\r\n\tpublic DisplaySignup = (creativeID: string): void =>\r\n\t{\r\n\t\tif (typeof window.__attentive !== \"undefined\")\r\n\t\t{\r\n\t\t\t// Documentation: https://docs.attentivemobile.com/pages/developer-guides/tag-management/set-up-attentive-signup-unit-trigger/\r\n\t\t\twindow.__attentive.trigger(\"null\", \"null\", \"null\", creativeID);\r\n\t\t}\r\n\t};\r\n\r\n\tpublic DownloadSdk = (): void =>\r\n\t{\r\n\t\tTagManager.CallEvent(TagManager.Events.AttentiveDownload);\r\n\t};\r\n\r\n\tpublic FixOverlay = (): void =>\r\n\t{\r\n\t\tconst body = document.querySelector(\"body\");\r\n\r\n\t\tthis.BodyObserver = new MutationObserver(this.BodyCallback);\r\n\t\tthis.BodyObserver.observe(body, {\r\n\t\t\tchildList: true,\r\n\t\t\tsubtree: false\r\n\t\t});\r\n\t};\r\n\r\n\tpublic HandleEmailCapture = (e: Event): void =>\r\n\t{\r\n\t\tconst input = e.currentTarget as HTMLInputElement;\r\n\t\tconst emailAddress = input.value.toString();\r\n\r\n\t\tif (emailAddress !== \"\")\r\n\t\t{\r\n\t\t\tthis.CreateGuestAccount(emailAddress);\r\n\t\t}\r\n\t};\r\n\r\n\tpublic StyleCallback: MutationCallback = (mutationList, observer): void =>\r\n\t{\r\n\t\tmutationList.forEach(mutation =>\r\n\t\t{\r\n\t\t\tif (mutation.type === \"attributes\")\r\n\t\t\t{\r\n\t\t\t\tconst element = mutation.target as HTMLElement;\r\n\t\t\t\telement.style.zIndex = \"\";\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tpublic SetModalEligibility = (): void =>\r\n\t{\r\n\t\tif (typeof ContentService !== \"undefined\" && typeof ContentService.Response !== \"undefined\")\r\n\t\t{\r\n\t\t\tconst footerExists = document.getElementById(\"footer-subscribe\");\r\n\t\t\tconst couponCookie = CookieManager.Cookies.Coupon;\r\n\t\t\tconst isPromotion = ContentService.Response.CouponIsPromotion;\r\n\t\t\tconst smsModalEligibleCookie = CookieManager.Cookies.SmsModalEligible;\r\n\t\t\tconst smsWelcomeCouponCookie = CookieManager.Cookies.SmsWelcomeCoupon;\r\n\t\t\tconst welcomeCouponCookie = CookieManager.Cookies.WelcomeCoupon;\r\n\t\t\tconst validCoupon = ContentService.Response.CouponIsValid;\r\n\r\n\t\t\tif (footerExists && (!validCoupon || isPromotion))\r\n\t\t\t{\r\n\t\t\t\t//Set modal eligibility if the footer exists AND either the coupon isn't valid or is a sitewide promo.\r\n\t\t\t\tCookieManager.SetCookie(smsModalEligibleCookie.Key, \"true\", 365);\r\n\t\t\t\tconst welcomeCouponValue = ContentService.Response.WelcomeCoupon;\r\n\t\t\t\tCookieManager.SetCookie(smsWelcomeCouponCookie.Key, welcomeCouponValue, 365);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tCookieManager.SetCookie(smsModalEligibleCookie.Key, \"false\", 365);\r\n\t\t\t\tCookieManager.SetCookie(smsWelcomeCouponCookie.Key, \"\", 365);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t* This is the callback that Attentive will fire when one of their hosted popups are interacted with. We have to associate their data with Listrak\r\n\t*/\r\n\tpublic SmsCallback = (data: any): void =>\r\n\t{\r\n\t\tif (data)\r\n\t\t{\r\n\t\t\tconst email = data.email;\r\n\t\t\tconst phone = data.phone;\r\n\t\t\tconst smsSubscribed = (typeof phone !== \"undefined\");\r\n\r\n\t\t\tthis.CreateGuestAccount(email, phone, true, smsSubscribed);\r\n\r\n\t\t\t//This function gets called twice by Attentive because it's a 2 step modal and it's possible\r\n\t\t\t//the user only completes the first step. The email gets saved on step 1 and the phone\r\n\t\t\t//gets saved on step 2.\r\n\t\t\tif (!smsSubscribed)\r\n\t\t\t{\r\n\t\t\t\tTagManager.CallEvent(TagManager.Events.EmailModalSignup);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tTagManager.CallEvent(TagManager.Events.SmsModalSignup);\r\n\t\t\t}\r\n\r\n\t\t\tCookieManager.SetCookie(\"seenModal\", \"true\", 365);\r\n\t\t}\r\n\t};\r\n\r\n\tpublic TriggerContentCallbacks = (): void =>\r\n\t{\r\n\t\tthis.SetModalEligibility();\r\n\t\tthis.FixOverlay();\r\n\t\tthis.ConfigureEmailCapture();\r\n\t};\r\n\r\n\t// Configure Email Capture on all email type inputs\r\n\tprivate ConfigureEmailCapture = (): void =>\r\n\t{\r\n\t\tif (this.dataPrivacyPolicy.MarketingApproved() === true)\r\n\t\t{\r\n\t\t\tconst emailInputs = document.querySelectorAll(\"input[type='email']\");\r\n\r\n\t\t\tif (emailInputs.length > 0)\r\n\t\t\t{\r\n\t\t\t\temailInputs.forEach((emailInput: HTMLInputElement) =>\r\n\t\t\t\t{\r\n\t\t\t\t\temailInput.addEventListener(\"blur\", this.HandleEmailCapture);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tprivate GetOrderGuid = (): string =>\r\n\t{\r\n\t\tlet orderGuid = \"\";\r\n\t\tconst cartCookie = CookieManager.GetCookie(this.CartCookie, this.OrderGuidKey);\r\n\t\tvar visitorCookie = CookieManager.GetCookie(this.VisitorCookie, this.OrderGuidKey);\r\n\r\n\t\tif (cartCookie)\r\n\t\t{\r\n\t\t\torderGuid = cartCookie;\r\n\t\t}\r\n\t\telse if (visitorCookie)\r\n\t\t{\r\n\t\t\torderGuid = visitorCookie;\r\n\t\t}\r\n\r\n\t\treturn orderGuid;\r\n\t};\r\n}"],"names":["CartService","AddProduct","product","callback","post","catch","error","console","log","AddRental","RestoreCart","ogid","url","then","response","itemOrderQuantity","data","undefined","itemOrderQuantityNumber","H","UpdateCartIcon","ContentService","ApiCall","document","URL","referrer","Response","d","code","CouponService","ApplyCoupon","couponCode","apiUrl","RemoveCoupon","ExperimentService","AddTest","thirdPartyTestID","variantSequence","length","statusCode","status","track","SubscriptionService","GetFooter","get","TrackingService","GetReferringCategory","SubmitWebAPI","pageViewData","PageType","ecomm_pagetype","DataLayer","JSON","stringify","ChatBase","constructor","ConfigureChat","checkoutChat","querySelectorAll","noSearchChat","siteOptions","this","GetSiteOptions","QuiqOptions","Object","keys","window","location","href","indexOf","contactPoint","GetCookie","ChatCacheCookieName","DownloadChat","forEach","element","ConfigureCheckoutChatButton","CheckChatStatus","ReinitializeChat","chatOnlineClass","launchContainers","customLaunchButtons","i","push","getAttribute","reinitOptions","QuiqChat","reinitialize","PostInitializeChat","GetChatStatus","available","DownloadButtonsOnline","ConfigureDownloadButtons","setTimeout","ChatQueryInterval","mobileTrigger","querySelector","desktopTrigger","mobileEvent","desktopEvent","addEventListener","removeEventListener","Quiq","once","ContactLaunchers","contactLauncher","classList","contains","remove","add","DownloadButtonsOffline","quiqScript","createElement","src","QuiqSDKUrl","charset","defer","onload","InitializeChat","body","appendChild","ShowOnlineButton","result","on","e","visible","SetChatCache","getAgentAvailability","ShowOfflineButton","SetCookie","buttons","icons","offlineButtons","OfflineButtonSelector","onlineButtons","OnlineButtonSelector","button","icon","currentAttribute","split","setAttribute","parentElement","style","display","engagementProvider","ContactContainers","LaunchButtons","LaunchContainers","background","bodyText","chatFontWeight","grayBorder","messageRadius","pillRadius","weightBold","white","bottomPosition","titleText","headerText","launchContainer","contactContainer","GetTextByCulture","renderBadge","showDefaultLaunchButton","defaultAgentAvatar","origin","webFontUrls","fontFamily","width","height","borderRadius","position","right","bottom","colors","primary","agentMessageBackground","agentMessageDropdownButtonIcons","agentMessageText","customerMessageText","menuText","transcriptBackground","styles","HeaderMenu","padding","HeaderMenuIcons","marginLeft","lineHeight","fill","HeaderBanner","fontWeight","backgroundColor","borderBottom","color","minHeight","WelcomeFormBanner","WelcomeFormFieldLabel","WelcomeFormSubmitButton","WelcomeFormValidationStyle","border","ErrorBanner","AgentAttachmentBubble","AgentAvatar","boxShadow","alignSelf","AgentMessageBubble","AgentMessageText","AgentOpenGraphLink","bubble","AgentRichMessage","title","subtitle","CustomerAttachmentBubble","CustomerMessageBubble","CustomerMessageText","CustomerOpenGraphLink","CustomerRichMessage","InlineActionButton","fontSize","marginTop","MessageFormInput","MessageFormSend","borderColor","marginRight","OptionsMenuLineItem","messages","storageDisabled","unsupportedBrowser","EngagementService","AddGuestAccount","email","phone","attentiveEmail","attentiveSms","axios","AddSubscription","subscriptionId","AddRecommendationClick","unique","GetAccountEmailPhone","EngagementProvider","AttentiveOverlayID","Currency","ItemNumber","ItemQuantityList","ItemSkuList","OrderGuidKey","ProductThumbList","ProductTitle","ProductValue","CartCookie","VisitorCookie","engagementService","BodyCallback","mutationList","observer","mutation","type","addedNodes","attentiveOverlay","getElementById","zIndex","disconnect","StyleObserver","MutationObserver","StyleCallback","observe","attributes","attributeFilter","node","id","CreateGuestAccount","PostAddToCartTagToAttentive","Email","Phone","dataLayer","attentive","currency","find","obj","prototype","hasOwnProperty","call","itemNumber","itemSku","itemQuantity","productTitle","productThumbList","productValue","orderGuid","GetOrderGuid","items","productId","productVariantId","name","productImage","price","value","quantity","cart","cartId","user","analytics","addToCart","PostProductTagToAttentive","productView","DisplaySignup","creativeID","__attentive","trigger","DownloadSdk","TagManager","CallEvent","Events","AttentiveDownload","FixOverlay","BodyObserver","childList","subtree","HandleEmailCapture","emailAddress","currentTarget","toString","target","SetModalEligibility","footerExists","isPromotion","CookieManager","Cookies","Coupon","CouponIsPromotion","smsModalEligibleCookie","SmsModalEligible","smsWelcomeCouponCookie","SmsWelcomeCoupon","validCoupon","WelcomeCoupon","CouponIsValid","Key","welcomeCouponValue","SmsCallback","smsSubscribed","SmsModalSignup","EmailModalSignup","TriggerContentCallbacks","ConfigureEmailCapture","dataPrivacyPolicy","MarketingApproved","emailInputs","emailInput","cartCookie","visitorCookie","DataPrivacyPolicy"],"sourceRoot":""}