{"version":3,"file":"4019.7d7b5f889a1d0bbe7fbf.js","mappings":"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","sources":["webpack://webstaurantstore/./App.tsx","webpack://webstaurantstore/./Conductrics.tsx","webpack://webstaurantstore/./common/GdprBanner/index.tsx","webpack://webstaurantstore/./common/Modal/index.tsx","webpack://webstaurantstore/./storeFrontBanner/index.client.tsx","webpack://webstaurantstore/./FullCheckout/CheckoutComplete/OrderConfirmation/Analytics/PriceSpiderAnalytics.ts","webpack://webstaurantstore/./Gtm/getCartAndSendEvent.ts","webpack://webstaurantstore/./analytics/AddToCart/addToCartHelpers.ts","webpack://webstaurantstore/./analytics/MarketingEvents/Pinterest/PinterestApiEvent.ts","webpack://webstaurantstore/./analytics/MarketingHelpers/MarketingEventHelpers.ts","webpack://webstaurantstore/./analytics/PageView/pageViewHelper.ts","webpack://webstaurantstore/./analytics/TrackingPixels/PinterestTrackingPixel.ts","webpack://webstaurantstore/./analytics/TrackingPixels/TagEvents/PinterestTagPageVisitEvent.ts","webpack://webstaurantstore/./analytics/apiHelpers.ts","webpack://webstaurantstore/./analytics/definitions.ts","webpack://webstaurantstore/./bingAnalytics.ts","webpack://webstaurantstore/./common/QueryString/QueryStringParameterSearch.ts","webpack://webstaurantstore/./common/Store/actions/updateUserAndChatFromOrigin.ts","webpack://webstaurantstore/./common/helpers/getTrackerData.ts","webpack://webstaurantstore/./gtm.js","webpack://webstaurantstore/./tracker.js","webpack://webstaurantstore/./userAnalytics.ts"],"sourcesContent":["/** @Developer be careful what you import here, it will affect every SF page */\nimport React, { PropsWithChildren, useEffect } from \"react\";\nimport { Toaster } from \"@clarkinc/zest-design-system/ui\";\nimport { StoreFrontBanner } from \"~/storeFrontBanner/index.client\";\nimport { GdprBannerModal } from \"~/common/GdprBanner\";\nimport tracker from \"~/tracker\";\nimport { loadUserAnalytics } from \"~/gtm\";\nimport Conductrics from \"./Conductrics\";\nimport \"~/less/recaptcha.less\";\nimport \"~/less/_critical/include.less\";\nimport \"~/css/tailwind.css\";\nimport \"~/fonts/fontello/css/fontello-top.less\";\nimport \"@clarkinc/zest-design-system/style.css\";\n/** Used in conjunction with SWC and BrowserList\n * @see {@link https://swc.rs/docs/configuration/supported-browsers#mode SWC Docs}\n */\nimport \"core-js\";\n/** Manually added due to the following issue.\n * @see {@link https://github.com/swc-project/swc/issues/7083 Github Issue}\n */\nimport \"core-js/actual/array/at\";\nexport default function App({\n children\n}: PropsWithChildren): JSX.Element {\n useEffect(tracker);\n useEffect(function initUserAnalytics() {\n if (!window.location.pathname.includes(\"cloudflareerror\")) {\n loadUserAnalytics();\n }\n }, []);\n return <>\n {children}\n \n \n \n \n ;\n}","import React, { useEffect, useRef } from \"react\";\nimport { createRoot } from \"@wss/react\";\nimport { getDynamicData } from \"./common/Store/actions/updateUserAndChatFromOrigin\";\nconst Conductrics = () => {\n const hasRan = useRef(false);\n useEffect(() => {\n if (!hasRan.current) {\n hasRan.current = true;\n getDynamicData.then(() => {\n window.dispatchEvent(new CustomEvent(\"ConductricsStateChange\", {\n detail: \"vs-VeqsqJUkLm\"\n }));\n });\n }\n }, []);\n return <>;\n};\nconst root = createRoot(document.createElement(\"div\"));\nroot.render();\nexport default Conductrics;","import React, { Component } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { getErrorTracking } from \"@wss/error-tracking\";\nimport { getDynamicData } from \"~/common/Store/actions/updateUserAndChatFromOrigin\";\nimport Modal from \"../Modal\";\nexport class GdprBannerModal extends Component {\n constructor(props: {\n [key: string]: unknown;\n }) {\n super(props);\n import(\"storage-factory\").then(({\n storageFactory\n }) => {\n const storage = storageFactory(() => window.localStorage);\n if (!storage.getItem(\"data-policy-seen\")) {\n this.isInEuropeanUnion();\n }\n });\n }\n\n // eslint-disable-next-line react/state-in-constructor\n state = {\n modalOpen: false\n };\n handleModalClose = () => {\n import(\"storage-factory\").then(({\n storageFactory\n }) => {\n const storage = storageFactory(() => window.localStorage);\n storage.setItem(\"data-policy-seen\", \"true\");\n });\n this.setState({\n modalOpen: false\n });\n };\n captureIPCheckError = async (error: unknown, response: Response | undefined | null, responseClone: Response | undefined | null) => {\n getErrorTracking().then(async ({\n captureException\n }) => {\n if (!response) {\n captureException(error);\n return;\n }\n const headerEntries = response?.headers ? Object.fromEntries(response.headers.entries()) : {};\n captureException(error, {\n extra: {\n response: {\n headers: headerEntries,\n ok: response.ok,\n redirected: response.redirected,\n status: response.status,\n statusText: response.statusText,\n type: response.type,\n url: response.url,\n text: responseClone ? await responseClone.text() : \"\"\n }\n }\n });\n });\n };\n async isInEuropeanUnion() {\n const result = await getDynamicData;\n if (result.isError) return;\n let results;\n let response: Response | undefined;\n let responseClone: Response | undefined;\n try {\n response = await fetch(\"/object/ip.cfc?method=isEuropeanUnion\");\n responseClone = response.clone();\n results = await response.json<{\n returnFlag: boolean;\n }>();\n } catch (error) {\n this.captureIPCheckError(error, response, responseClone);\n if (!results) return;\n }\n const backdrop = document.getElementById(\"productAccessoriesAndOptionsFormBackdrop\");\n if (backdrop) {\n backdrop.remove();\n }\n if (results.returnFlag) {\n import(\"./style.css\");\n import(/* webpackChunkName: \"modals-standalone\" */\"~/bootstrap/less/modals-standalone.less\");\n this.render();\n this.setState({\n modalOpen: true\n });\n } else {\n const {\n storageFactory\n } = await import(\"storage-factory\");\n const storage = storageFactory(() => window.localStorage);\n storage.setItem(\"outsideOfEuropeanUnion\", \"true\");\n }\n }\n render() {\n const {\n modalOpen\n } = this.state;\n return {\n this.setState({\n modalOpen: false\n });\n }} modalBodyClassName=\"gdprBody\" customFooter={} data-sentry-element=\"Modal\" data-sentry-component=\"GdprBannerModal\" data-sentry-source-file=\"index.tsx\">\n
\n We would like to use cookies and identify general user data to give\n you a better experience on our website.Using cookies and identifying\n data such as IP address and the type and version of your browser help\n us improve our website's navigation and provide more personalized\n services to you. To find out more, see our Privacy Policy\n
\n
;\n }\n}\nexport default function GdprBanner(): JSX.Element {\n const gdprBannerMount = document.getElementById(\"gdprBannerMount\");\n return <>{ReactDOM.render(, gdprBannerMount)};\n}","/**\n * This modal is kept for legacy purposes, any new modals should use the ModalReact component.\n */\n\nimport React, { Component, ReactNode } from \"react\";\nimport { Modal as BootstrapModal } from \"bootstrap.native\";\nexport interface Props {\n onClose?: EventListenerOrEventListenerObject;\n title?: string;\n titleIcon?: string;\n children?: ReactNode;\n primaryButtonText?: string;\n primaryButtonClick?: (event: React.MouseEvent) => void;\n className?: string;\n isOpen: boolean;\n customFooter?: JSX.Element;\n modalBodyClassName?: string;\n primaryButtonClassName?: string;\n hideFooter?: boolean;\n}\ninterface State {\n renderModal: boolean;\n}\nexport default class Modal extends Component {\n private modal?: BootstrapModal;\n private element: React.RefObject;\n public constructor(props: Props) {\n super(props);\n this.element = React.createRef();\n this.openModal = this.openModal.bind(this);\n this.closeModal = this.closeModal.bind(this);\n const {\n isOpen\n } = this.props;\n this.state = {\n renderModal: isOpen\n };\n }\n public componentDidMount() {\n const {\n onClose,\n isOpen\n } = this.props;\n if (!this.element.current) return;\n this.modal = new BootstrapModal(this.element.current);\n if (isOpen) {\n this.modal.show();\n }\n if (onClose) this.element.current.addEventListener(\"hidden.bs.modal\", onClose);\n this.element.current.addEventListener(\"show.bs.modal\", this.openModal);\n this.element.current.addEventListener(\"hidden.bs.modal\", this.closeModal);\n }\n public componentDidUpdate(prevProps: Props) {\n const {\n isOpen\n } = this.props;\n if (isOpen !== prevProps.isOpen && this.modal) {\n this.modal[isOpen ? \"show\" : \"hide\"]();\n }\n }\n public componentWillUnmount() {\n if (!this.element.current) return;\n this.element.current.removeEventListener(\"show.bs.modal\", this.openModal);\n this.element.current.removeEventListener(\"hidden.bs.modal\", this.closeModal);\n }\n openModal() {\n this.setState({\n renderModal: true\n });\n }\n closeModal() {\n this.setState({\n renderModal: false\n });\n }\n public render() {\n const {\n title,\n children,\n primaryButtonText,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n primaryButtonClick = () => {},\n className = \"\",\n customFooter,\n modalBodyClassName = \"\",\n primaryButtonClassName,\n hideFooter\n } = this.props;\n const {\n renderModal\n } = this.state;\n return
\n {renderModal &&
\n
\n {title &&
\n \n

{title}

\n
}\n
\n {children}\n
\n {customFooter ?
{customFooter}
: !hideFooter &&
\n {primaryButtonText && }\n \n
}\n
\n
}\n
;\n }\n}","/* eslint-disable import/prefer-default-export */\nimport React, { lazy, Suspense } from \"react\";\nimport { withPreloadedJSON } from \"@wss/hypernova\";\nimport { env } from \"~/common/Environment\";\nconst LazyStoreFrontBanner = lazy(() => {\n return import(\".\").then(({\n default: StoreFrontBanner\n }) => {\n const StoreFrontBannerWithData = withPreloadedJSON(StoreFrontBanner, \"StoreFrontBanner\");\n return {\n default: () => \n };\n });\n});\nexport function StoreFrontBanner() {\n return <>\n {!env.isProd ? \n \n : null}\n ;\n}","/* eslint-disable no-console */\nimport { OrderItemAnalyticsViewModel } from \"~/FullCheckout/Shared/Analytics/CheckoutAnalyticsViewModel\";\nimport QueryStringParameterSearch from \"~/common/QueryString/QueryStringParameterSearch\";\n\ndeclare global {\n interface Window {\n pswtb: PriceSpider;\n }\n}\n\nexport interface PriceSpider {\n purchaseTracking: PurchaseTracking;\n}\n\ninterface PurchaseTracking {\n createOrder: () => PriceSpiderOrder;\n}\n\nexport interface PriceSpiderOrder {\n redirectToken: string;\n purchaseDate: Date | string;\n currencyCode: string;\n purchaseTotal: number;\n purchaseDiscount: number;\n details: PriceSpiderItem[];\n submit: () => void;\n}\n\ninterface PriceSpiderItem {\n id?: string;\n sku: string;\n manufacturer: string;\n productName: string;\n unitPrice: number;\n quantity: number;\n}\n\nexport const PriceSpiderTokenStorageName = \"ps_token\";\nexport const PriceSpiderQueryParameterName = \"psrid\";\n\nexport const sendPriceSpiderPurchaseEvent = (\n shouldOnlyLogEvent: boolean,\n total: number,\n discount: number,\n datePurchased: string,\n items: OrderItemAnalyticsViewModel[],\n addScript: (src: string, async?: boolean, callback?: () => void) => void\n) => {\n const redirectToken = sessionStorage.getItem(PriceSpiderTokenStorageName);\n if (!redirectToken) {\n return;\n }\n\n if (!items.some((item) => item.canSendToPriceSpider)) {\n sessionStorage.removeItem(PriceSpiderTokenStorageName);\n return;\n }\n\n const priceSpiderItems: PriceSpiderItem[] = items\n .filter((item) => item.canSendToPriceSpider)\n .map((item) => ({\n sku: item.manufacturerSku,\n manufacturer: item.manufacturer,\n productName: item.description,\n unitPrice: item.price,\n quantity: item.quantity,\n }));\n\n if (shouldOnlyLogEvent) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n console &&\n console.log({\n redirectToken,\n purchaseDate: datePurchased,\n currencyCode: \"USD\",\n purchaseTotal: total,\n purchaseDiscount: discount,\n details: priceSpiderItems,\n });\n } else {\n const sendEvent = () => {\n const order = window.pswtb.purchaseTracking.createOrder();\n\n order.redirectToken = redirectToken;\n order.purchaseDate = datePurchased;\n order.currencyCode = \"USD\";\n order.purchaseTotal = total;\n order.purchaseDiscount = discount;\n order.details = priceSpiderItems;\n\n order.submit();\n };\n\n addScript(\n \"https://cdn.pricespider.com/pathinsights/ps-pi-ps.min.js\",\n true,\n sendEvent\n );\n }\n\n sessionStorage.removeItem(PriceSpiderTokenStorageName);\n};\n\nexport const addPriceSpiderTokenToSessionStorage = () => {\n const priceSpiderToken = QueryStringParameterSearch(\n PriceSpiderQueryParameterName\n );\n\n if (priceSpiderToken) {\n sessionStorage.setItem(PriceSpiderTokenStorageName, priceSpiderToken);\n }\n};\n","import { logException } from \"@wss/error-tracking\";\nimport { storageFactory } from \"storage-factory\";\nimport { sendGtmEvent } from \"~/analytics/definitions\";\n\ntype CartFunction = (\n itemList: string,\n totalCost: string,\n discountCodes: string\n) => void;\n\ntype CartData = {\n cartContent: {\n item: string;\n price: number;\n quantity: number;\n }[];\n activeDiscountCodes: string;\n};\n\nconst session = storageFactory(() => window.sessionStorage);\n\nconst getCartAndSendEvent = async (...callbacks: CartFunction[]) => {\n try {\n const response = await fetch(\"/api:cart/getcartwithfeedidentifier/\", {\n method: \"GET\",\n headers: { \"Content-Type\": \"application/json\" },\n });\n if (!response.ok) {\n throw new Error(\"Failed to fetch cart data\");\n }\n const cartData = await response.json();\n const cartItems = cartData.cartContent;\n const discountCodes = cartData.activeDiscountCodes;\n let itemList = \"\";\n let totalCost = 0;\n\n cartItems.forEach((product, index) => {\n totalCost += product.price * product.quantity;\n itemList += product.item;\n if (index !== cartItems.length - 1) {\n itemList += \",\";\n }\n });\n\n for (const callback of callbacks) {\n callback(itemList, Number(totalCost).toFixed(2), discountCodes);\n }\n } catch (error) {\n logException(error);\n }\n};\n\nexport const getCartAndSendShippingEvent = () => {\n getCartAndSendEvent(addShippingInfo);\n};\n\nexport const addShippingInfo: CartFunction = (\n itemList,\n totalCost,\n discountCodes\n) => {\n const shipping = session.getItem(\"shipping\");\n let quickCheckout = false;\n\n if (session.getItem(\"quick_checkout\")) {\n quickCheckout = true;\n }\n\n sendGtmEvent({\n event: \"add_shipping_info\",\n ecommerce: {\n items: itemList,\n value: totalCost,\n coupon: discountCodes,\n shipping_tier: shipping,\n quick_checkout: quickCheckout,\n },\n });\n};\n\nexport default getCartAndSendEvent;\n","/* eslint-disable camelcase */\nimport { Product } from \"~/userAnalytics\";\nimport { carouselIdDimension, itemNumberDimension } from \"../definitions\";\n\ntype GtmProduct = Omit & {\n item_name: string;\n item_brand: string;\n item_id: string;\n index?: number;\n};\n\ntype EcommerceProducts = Partial[];\n\nexport interface EcommerceData {\n currency: string;\n value?: number;\n items?: EcommerceProducts;\n coupon?: string;\n}\n\ninterface OptionalFields {\n position?: number;\n // eslint-disable-next-line camelcase\n item_list_name?: string;\n total?: number;\n coupons?: string;\n}\n\nexport const formatEcommerceData = (\n products: Product[],\n optionals?: OptionalFields\n) => {\n const googleProducts: GtmProduct[] = [];\n\n const ecommerceData: EcommerceData = {\n currency: \"USD\",\n };\n for (const product of products) {\n const isValidCartQuantity =\n product.quantity && Number(product.quantity) <= 30000;\n if (isValidCartQuantity) {\n const googleProduct = {\n item_id: product?.id,\n item_name: product?.name,\n [itemNumberDimension]: product[itemNumberDimension],\n [carouselIdDimension]: product[carouselIdDimension],\n item_brand: product?.brand,\n item_category: product?.item_category,\n item_category2: product?.item_category2,\n item_category3: product?.item_category3,\n item_category4: product?.item_category4,\n item_category5: product?.item_category5,\n price: product.price,\n index: optionals?.position,\n // Some marketing product items have a quantity of \"0\" returned, but we want to send 1 to GA for measuring ecommerce data\n quantity: product.quantity === \"0\" ? \"1\" : product.quantity,\n item_list_name: optionals?.item_list_name,\n category: product?.category,\n categoryId: product?.categoryId,\n };\n googleProducts.push(googleProduct);\n }\n }\n ecommerceData.items = googleProducts;\n\n if (optionals?.total) {\n ecommerceData.value = optionals.total;\n }\n if (optionals?.coupons) {\n ecommerceData.coupon = optionals.coupons;\n }\n\n return ecommerceData;\n};\n","import SHA256 from \"crypto-js/sha256\";\nimport { Throwable } from \"@wss/error-tracking/throwable\";\nimport type {\n Tag,\n PinterestEventUserData,\n PinterestUserAnalyticsData,\n MarketingApi,\n} from \"../MarketingDataDefinitions\";\nimport Environment from \"../../../common/Environment\";\nimport MarketingEventHelpers from \"../../MarketingHelpers/MarketingEventHelpers\";\nimport { getUserForPinterestEvent } from \"~/analytics/apiHelpers\";\n\nexport default class PinterestApiEvent implements MarketingApi {\n eventName: string;\n\n eventTime = MarketingEventHelpers.getCurrentTimeStamp();\n\n actionSource = \"Website\";\n\n eventId = MarketingEventHelpers.generateUniqueEventId();\n\n eventSourceUrl = MarketingEventHelpers.removeEmailFromUrl(\n new URL(window.location.href)\n );\n\n correspondingTagEvent: Tag;\n\n user: PinterestEventUserData;\n\n protected stashEndpoint = new URL(\n `https://${Environment.stashDomainWithEnvironment}/pinterestConversion`\n );\n\n constructor(eventName: string, associatedTagEvent: Tag) {\n this.eventName = eventName;\n this.correspondingTagEvent = associatedTagEvent;\n this.correspondingTagEvent.eventId = this.eventId;\n\n const user: PinterestUserAnalyticsData = getUserForPinterestEvent();\n\n this.user = {\n ClientIpAddress: user.ip,\n ClientUserAgent: user.user_agent,\n };\n\n if (user?.em) {\n this.user.Em = [SHA256(user.em).toString()];\n }\n\n if (user?.fn) {\n this.user.Fn = [SHA256(user?.fn).toString()];\n }\n\n if (user?.ln) {\n this.user.Ln = [SHA256(user?.ln).toString()];\n }\n\n if (user?.ph) {\n this.user.Ph = [SHA256(user?.ph).toString()];\n }\n\n if (user?.external_id) {\n this.user.ExternalId = [SHA256(user.external_id).toString()];\n }\n\n if (user?.maids) {\n this.user.hashedMaids = [SHA256(user.maids).toString()];\n }\n\n if (user?.ct) {\n this.user.Ct = [SHA256(user.ct).toString()];\n }\n\n if (user?.st) {\n this.user.St = [SHA256(user.st).toString()];\n }\n\n if (user?.country) {\n this.user.Country = [SHA256(user.country).toString()];\n }\n\n if (user?.zp) {\n this.user.Zp = [SHA256(user.zp).toString()];\n }\n }\n\n sendEvent(): void {\n this.makeApiRequest();\n this.correspondingTagEvent.sendEvent();\n }\n\n protected formatDataForStashApiRequest() {\n const pinterestStashRequest = {\n EventName: this.eventName,\n EventTime: this.eventTime,\n ActionSource: this.actionSource,\n EventId: this.eventId,\n EventSourceUrl: this.eventSourceUrl,\n UserData: {\n ...this.user,\n },\n };\n\n return pinterestStashRequest;\n }\n\n protected async makeApiRequest(): Promise> {\n try {\n const result = await fetch(this.stashEndpoint, {\n method: \"POST\",\n body: JSON.stringify(this.formatDataForStashApiRequest()),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n if (!result.ok) {\n return {\n isError: true,\n error: new Error(`Pinterest Stash Error: \"${await result.text()}\"`),\n };\n }\n return { isError: false };\n } catch (error) {\n return {\n isError: true,\n error: new Error(`Pinterest Fetch Error`, { cause: error }),\n };\n }\n }\n}\n","export default abstract class MarketingEventHelpers {\n public static removeEmailFromUrl(url: URL): string {\n const regexToReplaceEmails = /([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\\.[a-zA-Z0-9_-]+)/g;\n const query = url.search;\n\n if (query.search(regexToReplaceEmails) > -1) {\n return url.origin + url.pathname;\n }\n return url.origin + url.pathname + query;\n }\n\n public static generateUniqueEventId(): string {\n return `${Date.now()}${Math.round(Math.random() * 100000)}`;\n }\n\n public static getCurrentTimeStamp(): number {\n return Math.floor(Date.now() / 1000);\n }\n\n public static createItemPriceWithTrailingZero(itemPrice: number): string {\n // If value is an integer, use only one zero after the decimal point to match the API calls in C#\n if (Number.isInteger(itemPrice)) {\n return itemPrice.toFixed(1);\n }\n\n return itemPrice.toString();\n }\n}\n","import { sendGtmEvent } from \"../definitions\";\n\nexport const PageTypes = {\n QuickCheckout: 2,\n BillingPage: 3,\n ReviewPayment: 4,\n Checkout: 4,\n};\n\n// eslint-disable-next-line import/prefer-default-export\nexport const sendCheckoutEventPageView = (\n pageType: keyof typeof PageTypes,\n funnelType: string\n) => {\n sendGtmEvent({\n event: \"checkout\",\n ecommerce: {\n checkout: {\n actionField: {\n step: PageTypes[pageType],\n option: funnelType,\n },\n },\n },\n });\n};\n","import SHA256 from \"crypto-js/sha256\";\nimport Environment from \"../../common/Environment\";\nimport type { TrackingPixel } from \"../MarketingEvents/MarketingDataDefinitions\";\nimport { logException } from \"../../__alias__/error-tracking\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ndeclare const pintrk: any;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ndeclare const window: any;\n\nexport default class PinterestTrackingPixel implements TrackingPixel {\n public trackingPixelId = Environment.isProduction\n ? \"2612764898441\"\n : \"2614091255406\";\n\n private email?: string;\n\n constructor(email: string) {\n if (email && email !== \"\") {\n this.email = SHA256(email).toString();\n }\n }\n\n public async load(): Promise {\n try {\n await this.loadPixel();\n } catch (error) {\n await logException(new Error(`Error loading Pinterest Pixel:\"${error}\"`));\n }\n\n try {\n await this.initPixel();\n } catch (error) {\n await logException(\n new Error(`Error initializing Pinterest Pixel:\"${error}\"`)\n );\n }\n }\n\n private initPixel(): void {\n /* eslint-disable */\n if (this.email) {\n pintrk(\"load\", this.trackingPixelId, { em: this.email });\n } else {\n pintrk(\"load\", this.trackingPixelId);\n }\n\n pintrk(\"page\");\n }\n\n private async loadPixel() {\n // @ts-ignore\n !function (e) {\n if (!window.pintrk) {\n window.pintrk = function () {\n window.pintrk.queue.push(Array.prototype.slice.call(arguments))\n }; var n = window.pintrk; n.queue = [], n.version = \"3.0\";\n var t = document.createElement(\"script\"); t.async = !0, t.src = e;\n var r = document.getElementsByTagName(\"script\")[0];\n // @ts-ignore\n r.parentNode.insertBefore(t, r)\n }\n }(\"https://s.pinimg.com/ct/core.js\");\n }\n}","import type { Tag } from \"../../MarketingEvents/MarketingDataDefinitions\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ndeclare const pintrk: any;\nexport default class PinterestTagPageVisitEvent implements Tag {\n eventName = \"pagevisit\";\n\n eventId = \"\";\n\n sendEvent(): void {\n if (typeof pintrk === \"function\") {\n pintrk(\"track\", this.eventName, { event_id: this.eventId });\n }\n }\n}\n","/* eslint-disable camelcase */\nimport SHA256 from \"crypto-js/sha256\";\nimport { Throwable } from \"@wss/error-tracking/throwable\";\nimport Environment from \"~/common/Environment\";\nimport Store from \"~/common/Store\";\nimport MarketingEventHelpers from \"./MarketingHelpers/MarketingEventHelpers\";\nimport { getDynamicData } from \"~/common/Store/actions/updateUserAndChatFromOrigin\";\n\nexport const getFacebookPixelId = () => {\n return Environment.primary === \"dev\" ? \"230878098552719\" : \"480797725416035\";\n};\n\n// Note this has to be in a separate file from Pinterest class to avoid circular dependency\nexport const getUserForPinterestEvent = () => {\n const { user } = Store.getState();\n return {\n ...user.facebookUserData,\n external_id: user.index ?? \"0\",\n ip: user.analyticsData.ip,\n user_agent: navigator.userAgent,\n };\n};\n\nexport const getFacebookPixelUserData = () => {\n const { user } = Store.getState();\n return { ...user.facebookUserData, external_id: user.index ?? \"0\" };\n};\n\nexport const sendFacebookPixelServerEvent = async (\n eventName: string,\n eventId: string,\n userData: Record,\n eventParams = {}\n): Promise => {\n await getDynamicData;\n const userDataThatShouldNotBeHashed = [\n \"facebookClickId\",\n \"facebookBrowserId\",\n ];\n\n const combinedUserData = Object.keys(userData).reduce(\n (p, c) => ({\n ...p,\n [c]: userDataThatShouldNotBeHashed.includes(c)\n ? userData[c]\n : SHA256(userData[c] ?? \"\").toString(),\n }),\n {}\n );\n\n const fullUserData = {\n ...combinedUserData,\n client_ip_address: Store.getState().user.analyticsData.ip ?? \"\",\n client_user_agent: navigator.userAgent,\n };\n\n type FacebookServerUserData = {\n ct?: string;\n country?: string;\n em?: string;\n fn?: string;\n ln?: string;\n ph?: string;\n st?: string;\n zp?: string;\n external_id?: string;\n client_ip_address: string;\n client_user_agent: string;\n facebookClickId?: string;\n facebookBrowserId?: string;\n };\n\n type FacebookServerEvent = {\n /* eslint-disable camelcase */\n event_name: string;\n event_time: number;\n event_id: string;\n event_source_url: string;\n action_source: string;\n user_data: FacebookServerUserData;\n custom_data?: unknown;\n };\n\n const data: FacebookServerEvent = {\n event_name: eventName,\n event_time: Math.floor(Date.now() / 1000),\n event_id: eventId,\n event_source_url: MarketingEventHelpers.removeEmailFromUrl(\n new URL(window.location.href)\n ),\n action_source: \"website\",\n user_data: fullUserData,\n custom_data: eventParams,\n };\n\n const url = new URL(\n \"/facebookConversion\",\n `https://${Environment.stashDomainWithEnvironment}`\n );\n\n try {\n const result = await fetch(url.href, {\n method: \"POST\",\n body: JSON.stringify(data),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n if (!result.ok) {\n return {\n isError: true,\n error: new Error(\n `Request to \"${url.href}\" failed with response ${result.statusText}`\n ),\n };\n }\n return { isError: false };\n } catch (error) {\n return {\n isError: true,\n error: new Error(\n `Something went wrong with when requesting ${url.href}`,\n { cause: error }\n ),\n };\n }\n};\n","import { EcommerceData } from \"./AddToCart/addToCartHelpers\";\n\ntype TriggerEvent = {\n event: string;\n};\n\ntype CustomEvent = {\n event: string;\n eventLabel?: string;\n eventAction?: string;\n eventCategory?: string;\n eventName?: string;\n};\n\ntype EcommerceEvent = {\n event: string;\n ecommerce: EcommerceData | Record;\n firstTimePurchaser?: string;\n};\n\ntype DataLayerVariable = {\n [key: string]: string | number | null;\n};\n\ntype GtmEvent = TriggerEvent | CustomEvent | EcommerceEvent | DataLayerVariable;\n\nconst sendGtmEvent = (gtmEvent: GtmEvent) => {\n window.dataLayer.push(gtmEvent);\n};\n\nconst clearEcommerceInDataLayer = () => {\n sendGtmEvent({ ecommerce: null });\n};\n\nconst clearGa4EventInDataLayer = () => {\n sendGtmEvent({\n event: null,\n eventAction: null,\n eventName: null,\n eventCategory: null,\n eventLabel: null,\n });\n};\n\nconst vendorDimension = \"dimension39\";\n\nconst itemNumberDimension = \"dimension40\";\n\nconst carouselIdDimension = \"dimension52\";\n\nconst productReviewCountDimension = \"dimension64\";\n\nconst analyticsStorageKey = \"analyticsData\";\n\nexport {\n GtmEvent,\n sendGtmEvent,\n vendorDimension,\n itemNumberDimension,\n carouselIdDimension,\n productReviewCountDimension,\n analyticsStorageKey,\n clearEcommerceInDataLayer,\n clearGa4EventInDataLayer,\n};\n","type CustomBingEvent = {\n el: string;\n pagetype: string;\n prodid: string[];\n};\n\ntype BingEvent = CustomBingEvent;\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface Window {\n uetq?: BingEvent[];\n }\n}\n\nconst sendBingEvent = (bingEvent: BingEvent) => {\n window.uetq?.push(bingEvent);\n};\n\nexport const sendBingViewCartEvent = (productsFeedIds: string[]) => {\n if (productsFeedIds.length > 0) {\n sendBingEvent({\n el: \"cart\",\n pagetype: \"cart\",\n prodid: productsFeedIds,\n });\n }\n};\n\nexport const sendBingProductPageViewEvent = (productsFeedId: string) => {\n if (productsFeedId.length > 0) {\n sendBingEvent({\n el: \"product page\",\n pagetype: \"product\",\n prodid: [productsFeedId],\n });\n }\n};\n","export default function QueryStringParameterSearch(\n name: string,\n url = window?.location?.href\n) {\n if (!url) {\n return null;\n }\n\n const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`);\n const results = regex.exec(url);\n\n if (!results) {\n return null;\n }\n\n if (!results[2]) {\n return \"\";\n }\n\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\n}\n","import { ThunkAction } from \"StoreTypes\";\nimport { Dispatch } from \"redux\";\nimport { Throwable } from \"@wss/error-tracking/throwable\";\nimport { toError } from \"@wss/error-tracking/utils\";\nimport { toast } from \"@clarkinc/zest-design-system/ui\";\nimport { updateChat } from \"./chat\";\nimport { updateUser } from \"./user\";\nimport { Chat, User } from \"../connectUserAndChat\";\nimport getTrackerData from \"~/common/helpers/getTrackerData\";\n\nlet resolveGetDynamicData: (value: Throwable) => void;\n\nexport const getDynamicData = new Promise((resolve, reject) => {\n resolveGetDynamicData = resolve;\n});\n\nexport const updateUserAndChatFromOrigin = (): ThunkAction => async (\n dispatch: Dispatch\n) => {\n dispatch({\n type: \"UPDATE_USER_AND_CHAT_FROM_ORIGIN\",\n });\n\n const {\n Referer: referer,\n EmailTrackingData: emailTrackingData,\n } = getTrackerData();\n\n try {\n const response = await fetch(\n `/api:edgecache/getdynamicdata/?referer=${referer}` +\n `<id=${emailTrackingData.LtId}` +\n `&dlid=${emailTrackingData.DlId}` +\n `&link=${emailTrackingData.Link}`,\n {\n credentials: \"include\",\n }\n );\n\n const { user, chat } = await response.json<{ user: User; chat: Chat }>();\n\n if (!user.skipSettingGDDFetch) {\n user.lastGetDynamicDataFetch = new Date().getTime();\n }\n\n const camelcaseKeysImport = import(\"camelcase-keys\");\n const { default: camelcaseKeys } = await camelcaseKeysImport;\n\n user.wishLists = camelcaseKeys(user.wishLists);\n\n dispatch(updateUser(user));\n dispatch(updateChat(chat));\n\n resolveGetDynamicData({\n isError: false,\n });\n } catch (e) {\n const error = new Error(\n \"Error fetching and formatting User and Chat data from /api:edgecache/getdynamicdata/\",\n {\n cause: toError(e),\n }\n );\n\n toast.error(\"Please refresh your browser and try again\", {\n title: \"We were unable to load your account\",\n });\n\n resolveGetDynamicData({\n error,\n isError: true,\n });\n }\n};\n\nexport const isUserDataFresh = (user?: User): boolean => {\n if (user && user.skipSettingGDDFetch) {\n return true;\n }\n return new Date().getTime() - (user?.lastGetDynamicDataFetch || 0) < 2000;\n};\n","type EmailTrackingData = {\n Link: string;\n LtId: string;\n DlId: string;\n};\n\ntype TrackerData = {\n IsStoreFrontApp: boolean;\n TrackedPage: string;\n Referer: string;\n EmailTrackingData: EmailTrackingData;\n};\n\nconst getTrackerData = (): TrackerData => {\n return {\n IsStoreFrontApp: confirmPageIsStoreFrontApp(),\n TrackedPage: formatPageLinkForTracker(),\n Referer: document.referrer,\n EmailTrackingData: getEmailTrackingData(),\n };\n};\n\nconst confirmPageIsStoreFrontApp = (): boolean => {\n let isSFApp = false;\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const tPageDiv = document.querySelector(\"#tpage\") as HTMLElement;\n if (tPageDiv && tPageDiv.dataset.sf === \"1\") {\n isSFApp = true;\n }\n\n return isSFApp;\n};\n\nexport const formatPageLinkForTracker = (pageLink?: string) => {\n let tPage = pageLink || window.location.href;\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const tPageDiv = document.querySelector(\"#tpage\") as HTMLElement;\n if (tPageDiv) {\n tPage = tPageDiv.dataset.page || \"\";\n }\n\n const urlParts = tPage.split(\"?\");\n let link = \"\";\n let queryString = \"\";\n\n if (urlParts[0]) {\n if (urlParts[1]) {\n queryString = `?${urlParts[1].substring(0, 68)}`;\n link = urlParts[0].substring(0, 29);\n } else {\n link = urlParts[0].substring(0, 99);\n }\n }\n return link + queryString;\n};\n\nconst getEmailTrackingData = (): EmailTrackingData => {\n const url = window.location.href;\n let trackingParamsExist = false;\n const urlSplit = url.split(\"?\");\n const queryString = urlSplit[1];\n\n if (queryString) {\n trackingParamsExist =\n queryString.includes(\"ltid\") &&\n queryString.includes(\"dlid\") &&\n !queryString.includes(\"emeop\");\n }\n\n if (queryString && trackingParamsExist) {\n const queryParams = getEmailLinkTrackingParams(queryString);\n const page = encodeURIComponent(window.location.href);\n\n return {\n Link: page,\n LtId: queryParams.LtId,\n DlId: queryParams.DlId,\n };\n }\n\n return {\n Link: \"\",\n LtId: \"\",\n DlId: \"\",\n };\n};\n\nconst getEmailLinkTrackingParams = (queryString: string) => {\n const queryMap = new Map();\n\n const queryArray = queryString.split(\"&\");\n for (const query of queryArray) {\n const queryKvp = query.split(\"=\");\n\n const isDlidOrLtid = queryKvp[0] === \"ltid\" || queryKvp[0] === \"dlid\";\n queryMap.set(\n queryKvp[0]?.toLowerCase(),\n isDlidOrLtid ? removeUriFragmentFromDlidLtid(queryKvp[1]) : queryKvp[1]\n );\n }\n\n return {\n LtId: queryMap.get(\"ltid\"),\n DlId: queryMap.get(\"dlid\"),\n };\n};\n\nconst removeUriFragmentFromDlidLtid = (queryValue?: string) => {\n let queryValueWithoutUriFragment = queryValue;\n if (queryValue?.includes(\"#\")) {\n queryValueWithoutUriFragment = queryValue.slice(0, queryValue.indexOf(\"#\"));\n }\n\n return queryValueWithoutUriFragment;\n};\n\nexport default getTrackerData;\n","import \"element-closest\";\nimport { storageFactory } from \"storage-factory\";\nimport PinterestTrackingPixel from \"./analytics/TrackingPixels/PinterestTrackingPixel\";\nimport PinterestApiEvent from \"./analytics/MarketingEvents/Pinterest/PinterestApiEvent\";\nimport Store from \"./common/Store\";\nimport { updateUser } from \"./common/Store/actions/user\";\nimport {\n createProducts,\n trackYmanCarouselViews,\n bindYmanClickEvent,\n trackRPFYCarouselViews,\n getIsInternalUserStatus,\n getRandomNumberString,\n sendHashedCustomerEmailSignupEvent,\n CheckForUserDataChangesAndUpdate,\n bindTrackingForElements,\n getDataForProductsInRow,\n trackCarouselImpression,\n} from \"./userAnalytics\";\nimport {\n sendBingViewCartEvent,\n sendBingProductPageViewEvent,\n} from \"./bingAnalytics\";\nimport { sendGtmEvent } from \"./analytics/definitions\";\nimport { addPriceSpiderTokenToSessionStorage } from \"~/FullCheckout/CheckoutComplete/OrderConfirmation/Analytics/PriceSpiderAnalytics\";\nimport { getDynamicData } from \"./common/Store/actions/updateUserAndChatFromOrigin\";\nimport PinterestTagPageVisitEvent from \"./analytics/TrackingPixels/TagEvents/PinterestTagPageVisitEvent\";\nimport MarketingEventHelpers from \"./analytics/MarketingHelpers/MarketingEventHelpers\";\nimport getCartAndSendEvent, {\n getCartAndSendShippingEvent,\n} from \"./Gtm/getCartAndSendEvent\";\nimport {\n getFacebookPixelId,\n getFacebookPixelUserData,\n sendFacebookPixelServerEvent,\n getUserForPinterestEvent,\n} from \"./analytics/apiHelpers\";\nimport { formatEcommerceData } from \"./analytics/AddToCart/addToCartHelpers\";\nimport { sendCheckoutEventPageView } from \"./analytics/PageView/pageViewHelper\";\n\nconst session = storageFactory(() => window.sessionStorage);\nwindow.dataLayer = window.dataLayer || [];\n\n/* global fbq, gacData, XMLHttpRequest */\nconst createListingProduct = async (productElement) => {\n const itemNumber = productElement.getAttribute(\"data-itemnumber\");\n const products = await createProducts([{ itemNumber }]);\n\n if (products[0]) {\n products[0].position = productElement.getAttribute(\"data-position\");\n }\n return products;\n};\n\nexport const productPageViewV2 = async (itemNumber) => {\n const products = await createProducts([{ itemNumber }]);\n if (products[0]) {\n sendGtmEvent({\n event: \"productPageView\",\n ecommerce: {\n currencyCode: \"USD\",\n detail: {\n products,\n },\n },\n });\n sendBingProductPageViewEvent(products[0].id);\n sendFacebookPixelViewContentEvent(products[0].id);\n }\n};\n\nfunction getCheckoutFunnelType(pageType) {\n let isLoggedIn = false;\n let isLiftgate = false;\n let isLeasing = false;\n let funnelType = \"\";\n const formattedPageType = pageType || \"\";\n const { index } = Store.getState().user;\n\n isLoggedIn = index > 0;\n\n const commonCarrier = document.getElementById(\"common_carrier\");\n if (\n commonCarrier !== null ||\n formattedPageType === \"/liftgatepolicycart.cfm\"\n ) {\n isLiftgate = true;\n }\n\n const leasing = document.getElementById(\"isLeasing\");\n if (leasing !== null) {\n isLeasing = leasing.value === \"true\";\n }\n\n funnelType =\n (isLoggedIn ? \"Logged In\" : \"Guest\") +\n (isLiftgate ? \" With LiftGate\" : \"\") +\n (isLeasing ? \" With Leasing\" : \"\");\n\n return funnelType;\n}\n\nconst sendBeginCheckoutAndViewCartEvent = (\n products,\n totalValue,\n couponCodes\n) => {\n let coupons = \"\";\n for (let i = 0; i < couponCodes.length; i += 1) {\n coupons += couponCodes[i].getAttribute(\"data-discount-code\");\n if (i !== couponCodes.length - 1) {\n coupons += \",\";\n }\n }\n const formattedEcommerceData = formatEcommerceData(products, {\n coupons: couponCodes,\n total: totalValue,\n });\n sendGtmEvent({\n event: \"begin_checkout_and_view_cart\",\n ecommerce: formattedEcommerceData,\n });\n};\n\nconst viewCartPageView = async () => {\n const funnelType = getCheckoutFunnelType();\n const products = [];\n const productsFeedIds = [];\n const productBlocks = document.querySelectorAll(\"div.gtm-product-auto\");\n const couponCodes = document.querySelectorAll(\"a[data-discount-code]\");\n let totalValue = 0;\n\n for (let i = 0; i < productBlocks.length; i += 1) {\n /* eslint-disable-next-line no-await-in-loop */\n const product = await createListingProduct(productBlocks[i]);\n if (product[0]) {\n totalValue += product[0].price;\n products.push(product[0]);\n productsFeedIds.push(product[0].id);\n }\n }\n\n const { user } = Store.getState();\n user.cartTotal = totalValue;\n updateUser(user);\n\n sendBingViewCartEvent(productsFeedIds);\n sendBeginCheckoutAndViewCartEvent(products, totalValue, couponCodes);\n\n sendGtmEvent({\n event: \"checkout\",\n ecommerce: {\n checkout: {\n actionField: {\n step: 1,\n option: funnelType,\n },\n products,\n },\n },\n });\n};\n\nexport const sendAddPaymentInfoEvent = (itemList, totalCost, discountCodes) => {\n sendGtmEvent({\n event: \"add_payment_info\",\n ecommerce: {\n items: [itemList],\n value: totalCost,\n coupon: [discountCodes],\n },\n });\n};\n\nexport function fbPaymentInfo(itemList, totalCost) {\n if (typeof fbq === \"function\") {\n fbq(\"trackSingle\", getFacebookPixelId(), \"AddPaymentInfo\", {\n value: totalCost,\n currency: \"USD\",\n content_ids: [itemList],\n content_type: \"product\",\n });\n }\n}\n\nconst addPaymentInfo = (paymentType, isQuickCheckout) => {\n sendGtmEvent({\n payment_type: paymentType,\n quick_checkout: isQuickCheckout,\n });\n\n if (session.getItem(\"payment_added\") == null) {\n getCartAndSendEvent(fbPaymentInfo, sendAddPaymentInfoEvent);\n session.setItem(\"payment_added\", 1);\n } else {\n getCartAndSendEvent(sendAddPaymentInfoEvent);\n }\n};\n\nfunction fbInitiateCheckout(itemList, totalCost) {\n if (typeof fbq === \"function\") {\n fbq(\"trackSingle\", getFacebookPixelId(), \"InitiateCheckout\", {\n value: totalCost,\n currency: \"USD\",\n content_ids: [itemList],\n content_type: \"product\",\n });\n }\n}\n\nexport const initiateFacebookCheckout = (itemNumbers, total) =>\n fbInitiateCheckout(itemNumbers, total);\n\nfunction initiateLegacyFacebookCheckout() {\n if (session.getItem(\"checkout_initiated\") == null) {\n getCartAndSendEvent(fbInitiateCheckout);\n session.setItem(\"checkout_initiated\", 1);\n }\n}\n\nfunction setViewCartShipping() {\n const shippingTiers = document.querySelector(\".is-selected label input\");\n if (shippingTiers !== null) {\n const selectedShippingTier = shippingTiers.value;\n session.setItem(\"shipping\", selectedShippingTier);\n }\n}\n\nfunction setViewInfoShipping() {\n const shippingOptions = document.getElementById(\"shipping_options\");\n let shippingTier = session.getItem(\"shipping\");\n\n if (shippingOptions !== null) {\n if (shippingOptions.length > 0) {\n for (let i = 0; i < shippingOptions.length; i += 1) {\n if (shippingOptions[i].selected) {\n shippingTier = shippingOptions[i].value;\n }\n }\n }\n }\n session.setItem(\"shipping\", shippingTier);\n}\n\nfunction handlePageView(pageInfo) {\n if (typeof pageInfo.page_type !== \"undefined\") {\n switch (pageInfo.page_type) {\n case \"viewcart.cfm\": {\n // give the view cart js a bit of time to run before this\n setTimeout(viewCartPageView, 1000);\n\n const checkoutButtons = document.getElementsByClassName(\n \"standardCheckoutButton\"\n );\n if (checkoutButtons !== null) {\n for (let i = 0; i < checkoutButtons.length; i += 1) {\n checkoutButtons[i].addEventListener(\"click\", () => {\n setViewCartShipping();\n });\n }\n }\n\n break;\n }\n case \"/shipping-billinginfo.cfm\": {\n sendCheckoutEventPageView(\"BillingPage\", getCheckoutFunnelType());\n initiateLegacyFacebookCheckout();\n\n break;\n }\n case \"viewinfo.cfm\": {\n sendCheckoutEventPageView(\"ReviewPayment\", getCheckoutFunnelType());\n initiateLegacyFacebookCheckout();\n const ccField = document.getElementById(\"card_number\");\n if (ccField !== null) {\n ccField.addEventListener(\"focusout\", () => {\n let ccType = document.querySelector(\"ul.payment > li.active\");\n if (ccType === null) {\n ccType = \"credit_card\";\n } else {\n ccType = ccType.innerText;\n }\n addPaymentInfo(ccType, false);\n });\n }\n\n const savedccField = document.querySelector(\n \"select[name=storedCCPayment]\"\n );\n if (savedccField !== null) {\n savedccField.addEventListener(\"change\", () => {\n if (savedccField.value !== \"\") {\n addPaymentInfo(\"credit_card\", false);\n }\n });\n }\n\n const altPaymentCheckbox = document.querySelector(\n \"input[name=altpayment_confirm]\"\n );\n if (altPaymentCheckbox !== null) {\n altPaymentCheckbox.addEventListener(\"change\", () => {\n if (altPaymentCheckbox.checked) {\n addPaymentInfo(\"altpayment\", false);\n }\n });\n }\n\n let isLoggedIn = false;\n const { index } = Store.getState().user;\n isLoggedIn = index > 0;\n\n if (isLoggedIn === true) {\n setViewInfoShipping();\n getCartAndSendShippingEvent();\n }\n\n break;\n }\n default:\n break;\n }\n }\n}\n\nexport const emailSignupEvent = (email) => {\n sendGtmEvent({ event: \"emailsignup\" });\n sendHashedCustomerEmailSignupEvent(email);\n sendFacebookPixelLeadEvent();\n};\n\nexport const sendFacebookPixelInternalUserEvent = async () => {\n const eventId = getRandomNumberString();\n const userData = getFacebookPixelUserData();\n\n if (typeof fbq === \"function\") {\n fbq(\"trackSingleCustom\", getFacebookPixelId(), \"InternalUser\", {\n eventID: eventId,\n userData,\n });\n\n sendFacebookPixelServerEvent(\"InternalUser\", eventId, {\n userData,\n });\n }\n};\n\nexport const sendFacebookPixelLeadEvent = async () => {\n const eventId = getRandomNumberString();\n\n if (typeof fbq === \"function\") {\n fbq(\"trackSingle\", getFacebookPixelId(), \"Lead\", { eventID: eventId });\n sendFacebookPixelServerEvent(\"Lead\", eventId, getFacebookPixelUserData());\n }\n};\n\nexport const sendFacebookPixelPageViewEvent = async () => {\n const eventId = getRandomNumberString();\n\n if (typeof fbq === \"function\") {\n fbq(\"trackSingle\", getFacebookPixelId(), \"PageView\", { eventID: eventId });\n sendFacebookPixelServerEvent(\n \"PageView\",\n eventId,\n getFacebookPixelUserData()\n );\n }\n};\n\nexport const sendFacebookPixelViewContentEvent = async (feedIdentifier) => {\n const eventId = getRandomNumberString();\n\n if (typeof fbq === \"function\") {\n fbq(\"trackSingle\", getFacebookPixelId(), \"ViewContent\", {\n content_ids: [feedIdentifier],\n content_type: \"product\",\n eventID: eventId,\n });\n\n sendFacebookPixelServerEvent(\n \"ViewContent\",\n eventId,\n getFacebookPixelUserData(),\n {\n content_ids: [feedIdentifier],\n content_type: \"product\",\n }\n );\n }\n};\n\nexport const sendFacebookPixelPurchaseEvent = async (\n orderNumber,\n feedIdentifiers,\n orderValueSubtotal,\n isFirstTimePurchaser\n) => {\n const orderValueSubtotalFloat = MarketingEventHelpers.createItemPriceWithTrailingZero(\n parseFloat(orderValueSubtotal)\n );\n\n if (typeof fbq === \"function\") {\n fbq(\"trackSingle\", getFacebookPixelId(), \"Purchase\", {\n content_ids: feedIdentifiers,\n value: orderValueSubtotalFloat,\n currency: \"USD\",\n content_type: \"product\",\n is_first_time_purchase: isFirstTimePurchaser,\n eventID: orderNumber,\n });\n\n sendFacebookPixelServerEvent(\n \"Purchase\",\n orderNumber,\n getFacebookPixelUserData(),\n {\n content_ids: feedIdentifiers,\n value: orderValueSubtotalFloat,\n currency: \"USD\",\n content_type: \"product\",\n is_first_time_purchase: isFirstTimePurchaser,\n }\n );\n }\n};\n\nconst waitForFacebookPixel = async () => {\n /* eslint-disable */\n !(function (f, b, e, v, n, t, s) {\n if (f.fbq) return;\n n = f.fbq = function () {\n n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments);\n };\n if (!f._fbq) f._fbq = n;\n n.push = n;\n n.loaded = !0;\n n.version = \"2.0\";\n n.queue = [];\n t = b.createElement(e);\n t.async = !0;\n t.src = v;\n s = b.getElementsByTagName(e)[0];\n s.parentNode.insertBefore(t, s);\n })(\n window,\n document,\n \"script\",\n \"https://connect.facebook.net/en_US/fbevents.js\"\n );\n /* eslint-enable */\n};\n\nconst loadFacebookPixel = async () => {\n await waitForFacebookPixel();\n\n fbq(\"dataProcessingOptions\", [\"LDU\"], 0, 0);\n fbq(\"init\", getFacebookPixelId(), getFacebookPixelUserData());\n\n sendFacebookPixelPageViewEvent();\n\n if (getIsInternalUserStatus()) {\n sendFacebookPixelInternalUserEvent();\n }\n\n if (window.fbEventQueue) {\n window.fbEventQueue.forEach((event) => {\n fbq(\n \"trackSingle\",\n getFacebookPixelId(),\n event.eventName,\n event.eventParams\n );\n });\n }\n};\n\nconst trackGoogleAdsConversion = () => {\n if (\n typeof window.google_trackConversion === \"function\" &&\n typeof gacData !== \"undefined\" &&\n gacData.shouldIncludeTag &&\n gacData.conversionId > 0\n ) {\n const {\n memberType,\n ip,\n // eslint-disable-next-line camelcase, @typescript-eslint/naming-convention\n company_type,\n } = Store.getState().user.analyticsData;\n const info = {\n ...gacData.tags,\n memberType,\n ip,\n };\n\n // eslint-disable-next-line camelcase\n if (company_type && company_type.length > 0) {\n // eslint-disable-next-line camelcase, @typescript-eslint/naming-convention\n info.businessCategory = company_type;\n }\n\n const conversionData = {\n google_conversion_id: gacData.conversionId,\n google_conversion_label: gacData.conversionLabel,\n google_custom_params: info,\n google_remarketing_only: true,\n };\n\n if (info.hashedId > 0) {\n conversionData.google_user_id = info.hashedId;\n }\n\n window.google_trackConversion(conversionData);\n }\n};\n\nexport const loadUserAnalytics = async () => {\n Store.subscribe(CheckForUserDataChangesAndUpdate);\n\n if (typeof window.dataLayer[0] !== \"undefined\") {\n handlePageView(window.dataLayer[0]);\n }\n\n const quickCheckoutButton = document.getElementsByClassName(\"gtm-quick-co\");\n if (quickCheckoutButton.length === 1) {\n quickCheckoutButton[0].addEventListener(\"click\", () => {\n let ccType = document.querySelector(\n \"button.btn-select > span.credit-icon\"\n );\n if (ccType === null) {\n ccType = \"credit_card\";\n } else {\n ccType = ccType.innerText;\n }\n sendCheckoutEventPageView(\"QuickCheckout\", getCheckoutFunnelType());\n initiateLegacyFacebookCheckout();\n addPaymentInfo(ccType, true);\n session.setItem(\"quick_checkout\", true);\n setViewCartShipping();\n getCartAndSendShippingEvent();\n });\n }\n\n const footerSignupForm = document.getElementById(\"footerEmailSignup\");\n if (footerSignupForm !== null) {\n footerSignupForm.addEventListener(\"submit\", emailSignupEvent);\n }\n\n const emailSignupForm = document.getElementById(\"emailform\");\n if (emailSignupForm !== null) {\n emailSignupForm.addEventListener(\"submit\", emailSignupEvent);\n }\n\n const outletEmailSignupForm = document.getElementById(\"outletEmailForm\");\n if (outletEmailSignupForm !== null) {\n outletEmailSignupForm.addEventListener(\"submit\", emailSignupEvent);\n }\n\n const productRecommendationsEmailform = document.getElementById(\n \"productRecommendationsEmailform\"\n );\n if (productRecommendationsEmailform !== null) {\n productRecommendationsEmailform.addEventListener(\n \"submit\",\n emailSignupEvent\n );\n }\n\n trackGoogleAdsConversion();\n\n loadFacebookPixel();\n const user = getUserForPinterestEvent();\n await new PinterestTrackingPixel(user?.em).load();\n\n trackYmanCarouselViews();\n\n bindYmanClickEvent();\n\n trackRPFYCarouselViews();\n\n addPriceSpiderTokenToSessionStorage();\n\n await getDynamicData;\n CheckForUserDataChangesAndUpdate();\n sendGtmEvent({ event: \"CustomerDataLoaded\" });\n\n new PinterestApiEvent(\n \"page_visit\",\n new PinterestTagPageVisitEvent()\n ).sendEvent();\n};\n\nwindow.addEventListener(\"load\", () => {\n bindTrackingForElements(\"[gtm-tracking-number]\", getDataForProductsInRow, 80);\n bindTrackingForElements(\"[gtm-carousel-name]\", trackCarouselImpression, 80);\n});\n","import Store from \"./common/Store\";\nimport { getDynamicData } from \"./common/Store/actions/updateUserAndChatFromOrigin\";\nimport Environment from \"./common/Environment\";\nimport getTrackerData from \"~/common/helpers/getTrackerData\";\n\nconst logToTracker = async () => {\n await getDynamicData;\n const { index, cfid } = Store.getState().user;\n const { ip } = Store.getState().user.analyticsData;\n let ttfb = 0;\n\n let userIndex = 0;\n if (window.performance) {\n const performanceTiming = window.performance.timing;\n ttfb =\n (performanceTiming.responseStart - performanceTiming.requestStart) / 1000;\n }\n\n if (index) {\n userIndex = index;\n }\n\n const {\n IsStoreFrontApp: isStoreFrontApp,\n TrackedPage: trackedPage,\n } = getTrackerData();\n\n if (ip && cfid) {\n const data = {\n userId: parseInt(userIndex, 10),\n company: \"webstaurantstore.com\",\n page: trackedPage,\n referer: document.referrer.substring(0, 199),\n loadTime: parseFloat(ttfb.toFixed(5)),\n serverNumber: 0,\n userAgent: window.navigator.userAgent.substring(0, 254),\n pageNotes: isStoreFrontApp ? \"loaded from storefront\" : \"\",\n IpAddress: ip.substring(0, 44),\n Cfid: cfid.substring(0, 69),\n DateViewed: new Date().toISOString(),\n };\n\n const url = new URL(\n \"/PageView\",\n `https://${Environment.stashDomainWithEnvironment}`\n );\n\n try {\n const result = await fetch(url.href, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n });\n if (!result.ok) {\n return {\n isError: true,\n error: new Error(\n `Stash page view fetch error: \"${result.statusText}\"`\n ),\n };\n }\n return { isError: false };\n } catch (error) {\n return {\n isError: true,\n error: new Error(\"Stash page view fetch error\", { cause: error }),\n };\n }\n }\n return { isError: false };\n};\n\nconst tracker = () => {\n logToTracker();\n};\n\nexport default tracker;\n","/* eslint-disable camelcase */\nimport { storageFactory } from \"storage-factory\";\nimport SHA256 from \"crypto-js/sha256\";\nimport isEqual from \"lodash/isEqual\";\nimport { MouseEvent } from \"react\";\nimport { Throwable } from \"@wss/error-tracking/throwable\";\nimport { toError } from \"@wss/error-tracking/utils\";\nimport { getDynamicData } from \"./common/Store/actions/updateUserAndChatFromOrigin\";\nimport { updateUser } from \"./common/Store/actions/user\";\nimport Store from \"./common/Store\";\nimport {\n GtmEvent,\n sendGtmEvent,\n carouselIdDimension,\n itemNumberDimension,\n vendorDimension,\n productReviewCountDimension,\n analyticsStorageKey,\n clearEcommerceInDataLayer,\n clearGa4EventInDataLayer,\n} from \"./analytics/definitions\";\nimport { AnalyticsData } from \"./common/Store/models/User\";\nimport { formatEcommerceData } from \"./analytics/AddToCart/addToCartHelpers\";\nimport {\n getFacebookPixelId,\n getFacebookPixelUserData,\n sendFacebookPixelServerEvent,\n} from \"./analytics/apiHelpers\";\n\nconst session = storageFactory(() => window.sessionStorage);\n\nexport type AbFeatureVariation = {\n featureName: string;\n featureOption: string;\n};\n\nexport interface Item {\n itemNumber: string;\n quantity?: number;\n price?: number;\n feedIdentifier?: string | number;\n}\n\nexport interface Product {\n name: string;\n id: string;\n price: string;\n brand: string;\n category: string;\n itemNumber?: string;\n quantity?: string;\n dimension39?: string;\n dimension40?: string;\n dimension52?: string;\n dimension64?: string;\n item_category?: string;\n item_category2?: string;\n item_category3?: string;\n item_category4?: string;\n item_category5?: string;\n item_list_name?: string;\n position?: number;\n categoryId: number;\n feedIdentifier?: string;\n}\n\ninterface InteractionLookup {\n [itemNumber: string]: string;\n}\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface Window {\n dataLayer: GtmEvent[];\n google_tag_manager: unknown;\n /* eslint-enable camelcase */\n }\n}\n\nwindow.dataLayer = window.dataLayer || [];\n\ntype Result = {\n description: string;\n feedIdentifier: string;\n price: number;\n brand: string;\n category: string;\n itemNumber: string;\n vendorCode: string;\n productReviewCount: number;\n categoryId: number;\n};\n\nexport const getProductData = async (\n itemNumbers: string\n): Promise> => {\n const result = await getDynamicData;\n if (result.isError) return result;\n const formattedItemNumbers = encodeURIComponent(itemNumbers);\n const endpointUrl =\n \"/marketing:analytics/getproductdataforanalytics/?itemNumbers=\";\n const getProductDataUrl = endpointUrl.concat(formattedItemNumbers);\n try {\n const response = await fetch(getProductDataUrl, { method: \"GET\" });\n if (!response.ok) {\n return {\n isError: true,\n error: new Error(\n \"Failed to fetch product data from marketing analytics\",\n { cause: response.statusText }\n ),\n };\n }\n const products: Result[] = await response.json();\n return { isError: false, value: products };\n } catch (e) {\n return { isError: true, error: toError(e) };\n }\n};\n\nexport const getCarouselInteraction = (): InteractionLookup => {\n const sessionValue = session.getItem(\"carousel\") || \"{}\";\n return JSON.parse(sessionValue);\n};\n\nexport const createProducts = async (items: Item[]) => {\n const products: Product[] = [];\n const itemNumbers = items.map((item: Item) => item.itemNumber);\n if (!itemNumbers) {\n return [];\n }\n\n const data = await getProductData(itemNumbers.toString());\n if (data.isError) {\n return [];\n }\n data.value.forEach((result: Result, index: number) => {\n const productLookup = items.find(\n (item) =>\n item.itemNumber.trim().toUpperCase() ===\n result.itemNumber.trim().toUpperCase()\n );\n\n const carouselLookup = getCarouselInteraction();\n const carouselId =\n carouselLookup[result.itemNumber.trim().toUpperCase()] || \"\";\n\n const categories = result.category.split(\"/\");\n\n const product: Product = {\n name: result.description,\n id: result.feedIdentifier,\n price: result.price.toString(),\n brand: result.brand,\n category: result.category,\n itemNumber: result.itemNumber,\n [vendorDimension]: result.vendorCode,\n [itemNumberDimension]: result.itemNumber.toUpperCase().trim(),\n [carouselIdDimension]: carouselId,\n [productReviewCountDimension]: result.productReviewCount.toString(),\n item_category: categories[0],\n item_category2: categories[1],\n item_category3: categories[2],\n item_category4: categories[3],\n item_category5: categories[4],\n position: index,\n categoryId: result.categoryId,\n feedIdentifier: result.feedIdentifier,\n };\n\n if (productLookup && productLookup.quantity) {\n product.quantity = productLookup.quantity.toString();\n } else {\n product.quantity = \"0\";\n }\n\n products.push(product);\n });\n\n return products;\n};\n\nexport const trackClickThroughStats = (event: MouseEvent) => {\n if (event.currentTarget instanceof HTMLElement) {\n const body = new FormData();\n\n const { ctt, ctd } = event.currentTarget.dataset;\n\n if (ctt) body.append(\"ctt\", ctt);\n if (ctd) body.append(\"ctd\", ctd);\n\n fetch(\"/marketing:analytics/trackclickthroughstats/\", {\n method: \"POST\",\n body,\n keepalive: true,\n });\n }\n};\n\nconst carouselView = (\n carouselAnchor: HTMLElement,\n observer: IntersectionObserver,\n eventName: string\n) => {\n if (eventName === \"recAiEvent\") {\n const { placementId, category } = carouselAnchor.dataset;\n const { id } = carouselAnchor;\n if (placementId || id) {\n sendGtmEvent({\n event: eventName,\n eventCategory: category || \"RecAi\",\n eventLabel: placementId || id,\n eventAction: \"Carousel Impression\",\n });\n }\n observer.disconnect();\n } else {\n sendGtmEvent({\n event: eventName,\n eventAction: \"Carousel Impression\",\n });\n observer.disconnect();\n }\n};\n\nexport const getCarouselObserver = (\n carouselAnchor: HTMLElement,\n eventName: string\n) => {\n const carouselObserver = new window.IntersectionObserver(\n (entries) =>\n entries.forEach((entry) => {\n if (entry.isIntersecting === true) {\n setTimeout(() =>\n carouselView(carouselAnchor, carouselObserver, eventName)\n );\n }\n }),\n { threshold: [0.8] }\n );\n\n return carouselObserver;\n};\n\nconst setCarouselView = (carouselAnchor: HTMLElement, eventName: string) => {\n const carouselObserver = getCarouselObserver(carouselAnchor, eventName);\n\n window.addEventListener(\"load\", () => {\n carouselObserver.observe(carouselAnchor);\n });\n};\n\nconst trackProductClick = async (itemNumber: string) => {\n const products = await createProducts([{ itemNumber }]);\n if (products.length) {\n const formattedEcommerceProduct = formatEcommerceData(products);\n sendGtmEvent({\n event: \"productClick\",\n ecommerce: formattedEcommerceProduct,\n });\n }\n};\n\nconst setCarouselInteraction = (itemNumber: string, carouselId: string) => {\n const lookup = getCarouselInteraction();\n lookup[itemNumber.trim().toUpperCase()] = carouselId;\n session.setItem(\"carousel\", JSON.stringify(lookup));\n};\n\nexport const bindRecAiClickEvent = (id: string) => {\n const recAiCarousel = document.querySelector(id);\n if (recAiCarousel instanceof HTMLElement) {\n // This is the data-placement-id attribute on the recAi carousel\n const { placementId } = recAiCarousel.dataset;\n recAiCarousel\n .querySelectorAll(\"a.image,a.description,input[data-action=addToCart]\")\n .forEach((link) => {\n link.addEventListener(\"click\", ({ currentTarget: productLink }) => {\n if (!(productLink instanceof HTMLElement)) {\n throw new Error(\"product link must be instance of HTMLElement\");\n }\n\n const parentItem = productLink.closest(\".ag-item\");\n if (!(parentItem instanceof HTMLElement)) {\n throw new Error(\"parent item must be instance of HTMLElement\");\n }\n\n const { itemNumber } = parentItem.dataset;\n if ((placementId || id) && itemNumber) {\n setCarouselInteraction(\n itemNumber,\n placementId || id.replace(\"#\", \"\")\n );\n if (productLink.nodeName === \"A\") {\n trackProductClick(itemNumber);\n }\n }\n });\n });\n }\n};\n\nexport const bindYmanClickEvent = () => {\n const ymanCarousel = document.querySelector(\"div[data-feature-name=YMAN]\");\n if (ymanCarousel instanceof HTMLElement) {\n ymanCarousel\n .querySelectorAll(\"a.image,a.description,input[data-action=addToCart]\")\n .forEach((link) => {\n link.addEventListener(\"click\", ({ currentTarget: productLink }) => {\n if (!(productLink instanceof HTMLElement)) {\n throw new Error(\"product link must be instance of HTMLElement\");\n }\n\n const parentItem = productLink.closest(\".ag-item\");\n if (!(parentItem instanceof HTMLElement)) {\n throw new Error(\"parent item must be instance of HTMLElement\");\n }\n\n const { itemNumber } = parentItem.dataset;\n if (itemNumber) {\n setCarouselInteraction(itemNumber, \"yman\");\n trackProductClick(itemNumber);\n }\n });\n });\n }\n};\n\nexport const trackYmanCarouselViews = async () => {\n const carouselAnchor = document.querySelector(\"div[data-feature-name=YMAN]\");\n if (carouselAnchor instanceof HTMLElement) {\n setCarouselView(carouselAnchor, \"ymanEvent\");\n }\n};\n\nexport const trackRPFYCarouselViews = async () => {\n const observerAnchor = document.querySelector(\n \"div[data-hypernova-key=RecommendedProductsForYou]\"\n );\n if (observerAnchor instanceof HTMLElement) {\n setCarouselView(observerAnchor, \"recAiEvent\");\n const { getRecommendedProductsForYouCarousel } = await import(\n \"./home/Carousel/Container\"\n );\n\n await getRecommendedProductsForYouCarousel;\n\n const carouselAnchor = document.querySelector(\"#recommend-for-you\");\n if (carouselAnchor instanceof HTMLElement) {\n sendGtmEvent({\n event: \"recAiEvent\",\n eventLabel: carouselAnchor.id,\n eventAction: \"AI Impression\",\n });\n }\n }\n};\n\nexport const bindHomepageRecAiClickEvent = () => {\n const carouselAnchor = document.querySelector(\"#recommend-for-you\");\n if (carouselAnchor instanceof HTMLElement) {\n carouselAnchor.querySelectorAll(\"a.image,a.description\").forEach((link) => {\n link.addEventListener(\"click\", ({ currentTarget: productLink }) => {\n if (!(productLink instanceof HTMLElement)) {\n throw new Error(\"product link must be instance of HTMLElement\");\n }\n\n const parentItem = productLink.closest(\".ag-item\");\n if (!(parentItem instanceof HTMLElement)) {\n throw new Error(\"parent item must be instance of HTMLElement\");\n }\n\n const { itemNumber } = parentItem.dataset;\n if (itemNumber) {\n setCarouselInteraction(itemNumber, carouselAnchor.id);\n if (productLink.nodeName === \"A\") {\n trackProductClick(itemNumber);\n }\n }\n });\n });\n }\n};\n\nexport const sendATCWarrantyViewEvent = () => {\n sendGtmEvent({\n event: \"WarrantyItemAddToCart\",\n });\n};\n\nexport const getIsInternalUserStatus = () => {\n const { user } = Store.getState();\n return user.analyticsData.is_internal === \"YES\";\n};\n\nexport const getRandomNumberString = () => {\n return `${Date.now()}${Math.round(Math.random() * 100000)}`;\n};\n\nexport const sendMiniAdsCarouselImpressionEvent = () => {\n sendGtmEvent({\n event: \"MiniHomepageAd Impression\",\n eventCategory: \"MiniHomepageAd\",\n eventAction: \"All Impressions\",\n });\n};\n\nexport const bindMiniAdsCarouselClickEvent = () => {\n const miniAdsCarousel = document.querySelector(\".subfeature-grid\");\n if (miniAdsCarousel instanceof HTMLElement) {\n const miniAdLinks = miniAdsCarousel.querySelectorAll(\"div>a\");\n\n miniAdLinks.forEach(function (link) {\n link.addEventListener(\"click\", function () {\n sendGtmEvent({\n event: \"MiniHomepageAd Click\",\n eventCategory: \"MiniHomepageAd\",\n eventAction: \"Click\",\n });\n });\n });\n }\n};\n\nexport const bindMiniAdsCarouselActualImpressionEvent = () => {\n const miniAdsCarousel = document.querySelector(\".subfeature-grid\");\n\n const carouselObserver = new window.IntersectionObserver(\n (entries) =>\n entries.forEach((entry) => {\n if (entry.isIntersecting === true) {\n setTimeout(() => sendMiniAdsCarouselActualImpressionEvent());\n carouselObserver.disconnect();\n }\n }),\n { threshold: [0.8] }\n );\n\n if (miniAdsCarousel instanceof HTMLElement) {\n carouselObserver.observe(miniAdsCarousel);\n }\n};\n\nconst sendMiniAdsCarouselActualImpressionEvent = () => {\n sendGtmEvent({\n event: \"MiniHomepageAd Actual Impression\",\n eventCategory: \"MiniHomepageAd\",\n eventAction: \"Carousel Impression\",\n });\n};\n\nexport const bindMiniAdsCarouselTracking = () => {\n sendMiniAdsCarouselImpressionEvent();\n bindMiniAdsCarouselClickEvent();\n bindMiniAdsCarouselActualImpressionEvent();\n};\n\nexport const getAbTestResult = async (featureName: string) => {\n const endpointUrl = `/api:edgecache/getabtestresult/?abfeaturename=${featureName}`;\n\n return fetch(endpointUrl).then((response) => {\n if (response.ok) {\n return response.json();\n }\n return null;\n });\n};\n\nexport const getHashedCustomerEmail = (email: string) => {\n if (email) {\n return `${SHA256(email.trim().toLowerCase())}`;\n }\n return \"\";\n};\n\nexport const sendHashedCustomerEmailSignupEvent = (email: string) => {\n const hashedEmail = getHashedCustomerEmail(email);\n sendGtmEvent({\n event: \"setHashedUserEmailSha256\",\n hashedEmail,\n });\n};\n\nexport const addToWishlistClick = async (itemNumber: string) => {\n const products = await createProducts([{ itemNumber }]);\n if (products.length) {\n const formattedEcommerceData = formatEcommerceData(products);\n sendGtmEvent({\n event: \"add_to_wishlist\",\n ecommerce: formattedEcommerceData,\n });\n }\n};\n\nexport const updateUserWithNewCartTotal = async (\n isAddition: boolean,\n update: number\n): Promise> => {\n const result = await getDynamicData;\n if (result.isError) return result;\n const { user } = Store.getState();\n const startingCartTotal = user?.analyticsData?.cart_total ?? 0;\n\n user.analyticsData.cart_total = isAddition\n ? startingCartTotal + update\n : startingCartTotal - update;\n\n user.analyticsData.cart_total =\n Math.floor(user.analyticsData.cart_total * 100) / 100;\n\n if (user.analyticsData.cart_total < 0) {\n user.analyticsData.cart_total = 0;\n }\n Store.dispatch(updateUser(user));\n return { value: user.analyticsData.cart_total, isError: false };\n};\n\nconst getAnalyticsDataFromStorage = () => {\n const storedData = session.getItem(analyticsStorageKey);\n if (storedData) {\n return JSON.parse(storedData);\n }\n return null;\n};\n\nconst updateCustomDimensions = (analyticsData: AnalyticsData) => {\n const data = JSON.stringify(analyticsData);\n\n PushUserDataToDataLayer(analyticsData, true);\n session.setItem(analyticsStorageKey, data);\n};\n\nexport const CheckForUserDataChangesAndUpdate = () => {\n const { analyticsData } = Store.getState().user;\n\n const data = getAnalyticsDataFromStorage();\n if (!data || !isEqual(data, analyticsData)) {\n updateCustomDimensions(analyticsData);\n } else {\n PushUserDataToDataLayer(analyticsData);\n }\n};\n\nconst PushUserDataToDataLayer = (\n analyticsData: AnalyticsData,\n shouldFireCdsEvent = false\n): void => {\n sendGtmEvent(analyticsData);\n if (shouldFireCdsEvent) {\n sendGtmEvent({ event: \"setCds\" });\n }\n};\n\n/**\n * Sends a GTM event containing the applied feature flag variations for the session.\n */\nexport const updateVariationIds = async (\n abResponseOptions: AbFeatureVariation[]\n) => {\n const featureVariationsStorageKey = \"featureVariations\";\n\n const existingFeatureVariations =\n sessionStorage.getItem(featureVariationsStorageKey)?.split(\",\") || [];\n\n const newFeatureVariations = abResponseOptions\n .filter(\n (abResponseOption) =>\n !existingFeatureVariations?.find(\n (featureVariation) =>\n featureVariation.slice(0, featureVariation.indexOf(\":\")) ===\n abResponseOption.featureName\n )\n )\n .map((x) => `${x.featureName}:${x.featureOption}`);\n\n if (newFeatureVariations.length) {\n const updatedFeatureVariations = existingFeatureVariations\n ?.filter(Boolean)\n ?.concat(newFeatureVariations)\n .join(\",\");\n sessionStorage.setItem(\n featureVariationsStorageKey,\n updatedFeatureVariations\n );\n\n sendGtmEvent({\n event: \"updateVariationId\",\n updatedVariationId: updatedFeatureVariations,\n });\n }\n};\n\nexport const pushAnalyticsDataToDataLayer = async () => {\n const result = await getDynamicData;\n if (result.isError) return;\n const { analyticsData } = Store.getState().user;\n sendGtmEvent(analyticsData);\n};\n\n/**\n * This sends impression events to GTM and should only be used to batch and send ~10 events maximum per call to limit GTM request sizes.\n * GTM will reject requests that are too large.\n * @param itemNumbers\n */\nconst sendProductImpressionEvent = async (itemNumbers: Item[]) => {\n const products = await createProducts(itemNumbers);\n if (products.length) {\n products.forEach((product) => {\n const formattedEcommerceProduct = formatEcommerceData([product], {\n item_list_name: \"Product Impression\",\n });\n clearEcommerceInDataLayer();\n sendGtmEvent({\n event: \"view_item_list\",\n ecommerce: formattedEcommerceProduct,\n });\n });\n }\n};\n\nexport const bindTrackingForElements = (\n querySelectorForElementsToTrack: string,\n callback: IntersectionObserverCallback,\n percentageOfElementToTrack: number\n) => {\n const elementsToTrack = document.querySelectorAll(\n querySelectorForElementsToTrack\n );\n\n if (elementsToTrack !== null) {\n const promoObserver = new window.IntersectionObserver(callback, {\n threshold: [percentageOfElementToTrack / 100],\n });\n\n Array.from(elementsToTrack).forEach((element) =>\n promoObserver.observe(element)\n );\n }\n};\n\nexport const trackCarouselImpression = async (\n entries: IntersectionObserverEntry[],\n observer: IntersectionObserver\n) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const carouselName = entry.target.getAttribute(\"gtm-carousel-name\");\n const carouselModel = entry.target.getAttribute(\"gtm-carousel-model\");\n const carouselLookup = getCarouselInteraction();\n const carouselId =\n carouselLookup[\n entry.target.getAttribute(\"item-number\")?.trim().toUpperCase() ?? \"\"\n ] || \"\";\n if (carouselName) {\n pushCarouselEventToDataLayer(carouselName, carouselId, carouselModel);\n observer?.unobserve(entry.target);\n }\n }\n });\n};\n\nexport const getDataForProductsInRow = async (\n entries: IntersectionObserverEntry[],\n observer: IntersectionObserver\n) => {\n const itemNumbers: Item[] = [];\n\n entries.forEach(async (entry) => {\n if (entry.isIntersecting === true) {\n const itemNumber = entry.target.getAttribute(\"gtm-tracking-number\");\n\n if (itemNumber) {\n itemNumbers.push({ itemNumber });\n }\n\n observer?.unobserve(entry.target);\n }\n });\n\n if (itemNumbers.length > 0) {\n await sendProductImpressionEvent(itemNumbers);\n }\n};\n\nexport const markProductViewed = async (itemNumber: string) => {\n await sendProductImpressionEvent([{ itemNumber }]);\n};\n\nexport const checkIfOrderNumberWasPreviouslyTrackedInGA = (\n orderNumber: string\n): boolean => {\n const previouslyStoredOrderNumbers =\n window.localStorage.getItem(\"orderNumbers\")?.split(\",\") ?? [];\n\n if (previouslyStoredOrderNumbers.includes(orderNumber)) {\n return true;\n }\n\n storeOrderNumbers(previouslyStoredOrderNumbers, orderNumber);\n return false;\n};\n\nconst storeOrderNumbers = (\n previouslyStoredOrderNumbers: string[],\n mostRecentOrderNumber: string\n): void => {\n previouslyStoredOrderNumbers.push(mostRecentOrderNumber);\n let orderNumbersToStore = previouslyStoredOrderNumbers;\n\n const maxAmountOfOrderNumbersToStore = 15;\n\n if (previouslyStoredOrderNumbers.length > maxAmountOfOrderNumbersToStore) {\n orderNumbersToStore = [mostRecentOrderNumber];\n }\n\n window.localStorage.setItem(\"orderNumbers\", orderNumbersToStore.toString());\n};\n\nconst pushCarouselEventToDataLayer = (\n carouselName: string,\n carouselId: string,\n carouselModel?: string | null\n) => {\n sendGtmEvent({\n event: \"carouselImpression\",\n eventLabel: \"\",\n carouselName,\n carouselModel: carouselModel ?? checkIfCarouselIsRecAi(carouselName),\n [carouselIdDimension]: carouselId,\n });\n};\n\nexport const checkIfCarouselIsRecAi = (carouselName: string) => {\n const RecAiCarouselNames = [\n \"Recommended For You\",\n \"Best Selling Products\",\n \"Recommended Products\",\n \"Items You Might Like\",\n ];\n\n if (RecAiCarouselNames.includes(carouselName)) {\n return \"RecAi\";\n }\n return \"Manual\";\n};\n\nexport const getSelectedOptionAndSendGtmEvent = (\n selectedValue: string | number,\n eventName: string,\n rootNode: HTMLElement | Document = document\n) => {\n const selectedText =\n rootNode.querySelector(\n `[value='${selectedValue.toString().replaceAll(\"'\", \"\\\\'\")}']`\n )?.textContent ?? \"\";\n clearGa4EventInDataLayer();\n sendGtmEvent({\n event: \"ga4_event\",\n eventName,\n eventAction: eventName,\n eventLabel: selectedText,\n });\n};\n\nexport const sendEmailSignUpEvent = (email: string) => {\n sendGtmEvent({ event: \"emailsignup\" });\n sendHashedCustomerEmailSignupEvent(email);\n sendFacebookPixelLeadEvent();\n};\n\nconst sendFacebookPixelLeadEvent = () => {\n const eventId = getRandomNumberString();\n\n if (typeof fbq === \"function\") {\n fbq(\"trackSingle\", getFacebookPixelId(), \"Lead\", { eventID: eventId });\n sendFacebookPixelServerEvent(\"Lead\", eventId, getFacebookPixelUserData());\n }\n};\n"],"names":["App","children","useEffect","tracker","window","location","pathname","includes","loadUserAnalytics","StoreFrontBanner","data-sentry-element","data-sentry-source-file","GdprBannerModal","Conductrics","Toaster","hasRan","useRef","current","getDynamicData","then","dispatchEvent","CustomEvent","detail","createRoot","document","createElement","render","GdprBanner","props","state","modalOpen","handleModalClose","storageFactory","localStorage","setItem","setState","captureIPCheckError","error","response","responseClone","getErrorTracking","captureException","headerEntries","headers","Object","fromEntries","entries","ok","redirected","status","statusText","type","url","text","extra","getItem","isInEuropeanUnion","results","backdrop","isError","fetch","clone","json","getElementById","remove","returnFlag","this","Modal","title","className","isOpen","Boolean","onClose","modalBodyClassName","customFooter","button","indexOf","onClick","data-sentry-component","div","Component","gdprBannerMount","ReactDOM","element","React","createRef","openModal","bind","closeModal","renderModal","componentDidMount","modal","BootstrapModal","show","addEventListener","componentDidUpdate","prevProps","componentWillUnmount","removeEventListener","primaryButtonText","primaryButtonClick","primaryButtonClassName","hideFooter","tabIndex","role","ref","data-dismiss","aria-label","span","aria-hidden","h3","LazyStoreFrontBanner","lazy","default","StoreFrontBannerWithData","withPreloadedJSON","env","isProd","Suspense","PriceSpiderTokenStorageName","PriceSpiderQueryParameterName","sendPriceSpiderPurchaseEvent","addPriceSpiderTokenToSessionStorage","shouldOnlyLogEvent","total","discount","datePurchased","items","addScript","redirectToken","sessionStorage","some","item","canSendToPriceSpider","priceSpiderItems","filter","map","sku","manufacturerSku","manufacturer","productName","description","unitPrice","price","quantity","console","log","purchaseDate","currencyCode","purchaseTotal","purchaseDiscount","details","order","pswtb","purchaseTracking","createOrder","submit","removeItem","priceSpiderToken","QueryStringParameterSearch","getCartAndSendShippingEvent","addShippingInfo","session","getCartAndSendEvent","callbacks","cartData","cartItems","discountCodes","itemList","totalCost","method","Error","cartContent","activeDiscountCodes","forEach","product","index","length","callback","Number","toFixed","logException","shipping","quickCheckout","sendGtmEvent","event","ecommerce","value","coupon","shipping_tier","quick_checkout","formatEcommerceData","products","optionals","googleProducts","ecommerceData","currency","googleProduct","item_id","id","item_name","name","itemNumberDimension","carouselIdDimension","item_brand","brand","item_category","item_category2","item_category3","item_category4","item_category5","position","item_list_name","category","categoryId","push","coupons","PinterestApiEvent","eventName","associatedTagEvent","eventTime","MarketingEventHelpers","getCurrentTimeStamp","actionSource","eventId","generateUniqueEventId","eventSourceUrl","removeEmailFromUrl","URL","href","stashEndpoint","Environment","stashDomainWithEnvironment","correspondingTagEvent","user","getUserForPinterestEvent","ClientIpAddress","ip","ClientUserAgent","user_agent","em","Em","SHA256","toString","fn","Fn","ln","Ln","ph","Ph","external_id","ExternalId","maids","hashedMaids","ct","Ct","st","St","country","Country","zp","Zp","sendEvent","makeApiRequest","formatDataForStashApiRequest","EventName","EventTime","ActionSource","EventId","EventSourceUrl","UserData","result","body","JSON","stringify","cause","query","search","origin","Math","Date","now","round","random","floor","createItemPriceWithTrailingZero","itemPrice","isInteger","PageTypes","sendCheckoutEventPageView","QuickCheckout","BillingPage","ReviewPayment","Checkout","pageType","funnelType","checkout","actionField","step","option","PinterestTrackingPixel","email","trackingPixelId","isProduction","load","loadPixel","initPixel","pintrk","e","queue","Array","prototype","slice","call","arguments","n","version","t","async","src","r","getElementsByTagName","parentNode","insertBefore","PinterestTagPageVisitEvent","event_id","getFacebookPixelId","getFacebookPixelUserData","sendFacebookPixelServerEvent","primary","Store","getState","facebookUserData","analyticsData","navigator","userAgent","userData","eventParams","userDataThatShouldNotBeHashed","combinedUserData","fullUserData","data","keys","reduce","p","c","client_ip_address","client_user_agent","event_name","event_time","event_source_url","action_source","user_data","custom_data","vendorDimension","productReviewCountDimension","analyticsStorageKey","clearEcommerceInDataLayer","clearGa4EventInDataLayer","gtmEvent","dataLayer","eventAction","eventCategory","eventLabel","sendBingViewCartEvent","sendBingProductPageViewEvent","sendBingEvent","bingEvent","uetq","productsFeedIds","el","pagetype","prodid","productsFeedId","regex","RegExp","exec","decodeURIComponent","replace","updateUserAndChatFromOrigin","isUserDataFresh","resolveGetDynamicData","Promise","resolve","reject","dispatch","getTrackerData","referer","emailTrackingData","chat","camelcaseKeys","Referer","EmailTrackingData","LtId","DlId","Link","credentials","skipSettingGDDFetch","lastGetDynamicDataFetch","getTime","wishLists","updateUser","updateChat","toError","toast","formatPageLinkForTracker","confirmPageIsStoreFrontApp","isSFApp","tPageDiv","querySelector","dataset","sf","pageLink","tPage","page","urlParts","split","link","queryString","substring","getEmailTrackingData","trackingParamsExist","queryParams","getEmailLinkTrackingParams","encodeURIComponent","queryMap","Map","queryArray","queryKvp","isDlidOrLtid","set","toLowerCase","removeUriFragmentFromDlidLtid","get","queryValue","queryValueWithoutUriFragment","IsStoreFrontApp","TrackedPage","referrer","productPageViewV2","sendAddPaymentInfoEvent","fbPaymentInfo","initiateFacebookCheckout","emailSignupEvent","sendFacebookPixelInternalUserEvent","sendFacebookPixelLeadEvent","sendFacebookPixelPageViewEvent","sendFacebookPixelViewContentEvent","sendFacebookPixelPurchaseEvent","createListingProduct","productElement","itemNumber","getAttribute","createProducts","getCheckoutFunnelType","isLoggedIn","isLiftgate","isLeasing","formattedPageType","leasing","viewCartPageView","productBlocks","couponCodes","totalValue","i","querySelectorAll","cartTotal","formattedEcommerceData","sendBeginCheckoutAndViewCartEvent","fbq","content_ids","content_type","addPaymentInfo","paymentType","isQuickCheckout","payment_type","fbInitiateCheckout","itemNumbers","initiateLegacyFacebookCheckout","setViewCartShipping","shippingTiers","selectedShippingTier","handlePageView","pageInfo","page_type","setTimeout","checkoutButtons","getElementsByClassName","ccField","ccType","innerText","savedccField","altPaymentCheckbox","checked","shippingOptions","shippingTier","selected","setViewInfoShipping","sendHashedCustomerEmailSignupEvent","getRandomNumberString","eventID","feedIdentifier","orderNumber","feedIdentifiers","orderValueSubtotal","isFirstTimePurchaser","orderValueSubtotalFloat","parseFloat","is_first_time_purchase","waitForFacebookPixel","f","b","s","callMethod","apply","_fbq","loaded","loadFacebookPixel","getIsInternalUserStatus","fbEventQueue","trackGoogleAdsConversion","google_trackConversion","gacData","shouldIncludeTag","conversionId","memberType","company_type","info","tags","businessCategory","conversionData","google_conversion_id","google_conversion_label","conversionLabel","google_custom_params","google_remarketing_only","hashedId","google_user_id","quickCheckoutButton","footerSignupForm","emailSignupForm","outletEmailSignupForm","productRecommendationsEmailform","subscribe","CheckForUserDataChangesAndUpdate","trackYmanCarouselViews","bindYmanClickEvent","trackRPFYCarouselViews","bindTrackingForElements","getDataForProductsInRow","trackCarouselImpression","logToTracker","cfid","ttfb","userIndex","performanceTiming","isStoreFrontApp","trackedPage","performance","timing","responseStart","requestStart","userId","parseInt","company","loadTime","serverNumber","pageNotes","IpAddress","Cfid","DateViewed","toISOString","getProductData","getCarouselInteraction","trackClickThroughStats","getCarouselObserver","bindRecAiClickEvent","bindHomepageRecAiClickEvent","sendATCWarrantyViewEvent","sendMiniAdsCarouselImpressionEvent","bindMiniAdsCarouselClickEvent","bindMiniAdsCarouselActualImpressionEvent","bindMiniAdsCarouselTracking","getAbTestResult","getHashedCustomerEmail","addToWishlistClick","updateUserWithNewCartTotal","updateVariationIds","pushAnalyticsDataToDataLayer","markProductViewed","checkIfOrderNumberWasPreviouslyTrackedInGA","checkIfCarouselIsRecAi","getSelectedOptionAndSendGtmEvent","sendEmailSignUpEvent","formattedItemNumbers","getProductDataUrl","concat","sessionValue","parse","productLookup","find","trim","toUpperCase","carouselId","categories","vendorCode","productReviewCount","currentTarget","HTMLElement","FormData","ctt","ctd","append","keepalive","carouselAnchor","carouselObserver","IntersectionObserver","entry","isIntersecting","observer","placementId","disconnect","carouselView","threshold","setCarouselView","observe","trackProductClick","formattedEcommerceProduct","setCarouselInteraction","lookup","recAiCarousel","productLink","parentItem","closest","nodeName","ymanCarousel","observerAnchor","getRecommendedProductsForYouCarousel","is_internal","miniAdsCarousel","sendMiniAdsCarouselActualImpressionEvent","featureName","endpointUrl","hashedEmail","isAddition","update","startingCartTotal","cart_total","storedData","isEqual","PushUserDataToDataLayer","updateCustomDimensions","shouldFireCdsEvent","abResponseOptions","featureVariationsStorageKey","existingFeatureVariations","newFeatureVariations","updatedFeatureVariations","abResponseOption","featureVariation","x","featureOption","join","updatedVariationId","sendProductImpressionEvent","querySelectorForElementsToTrack","percentageOfElementToTrack","elementsToTrack","promoObserver","from","carouselName","target","carouselModel","pushCarouselEventToDataLayer","unobserve","previouslyStoredOrderNumbers","storeOrderNumbers","mostRecentOrderNumber","orderNumbersToStore","selectedValue","rootNode","selectedText","replaceAll","textContent"],"sourceRoot":""}