{"version":3,"file":"coopse.script.4624.7afefe3c.chunk.js","mappings":"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","sources":["webpack:///./src/microApps/common/contexts/microAppContext.tsx","webpack:///./src/microApps/common/store/structureDefinitions/uiState.ts","webpack:///./src/microApps/common/tracking/common/interactionClickEvents.ts","webpack:///./src/microApps/common/tracking/commonEvents.ts","webpack:///./src/microApps/common/tracking/contextAware/timeslotEvents.ts","webpack:///./src/microApps/common/tracking/ecommerce/currentProductOffers.ts","webpack:///./src/microApps/common/tracking/recipe/RecipeFilterPageTrackingContextProvider.tsx","webpack:///./src/microApps/common/tracking/abtest/abTestEvent.ts","webpack:///./src/microApps/common/tracking/checkout/homeDeliveryEvents.ts","webpack:///./src/microApps/common/tracking/checkout/itemReplaceEvents.ts","webpack:///./src/microApps/common/tracking/checkout/storeDeliveryEvents.ts","webpack:///./src/microApps/common/tracking/checkout/subscriptionEvents.ts","webpack:///./src/microApps/common/tracking/checkout/checkoutEvents.ts","webpack:///./src/microApps/common/tracking/checkout/editOrderEvents.ts","webpack:///./src/microApps/common/tracking/cnc/utils.ts","webpack:///./src/microApps/common/tracking/cnc/deliveryOptionEvents.ts","webpack:///./src/microApps/common/tracking/cnc/headerEvents.ts","webpack:///./src/microApps/common/tracking/cnc/miniCartEvents.ts","webpack:///./src/microApps/common/tracking/cnc/notificationEvents.ts","webpack:///./src/microApps/common/tracking/cnc/selectPostalCodeEvents.ts","webpack:///./src/microApps/common/tracking/cnc/cncEvents.ts","webpack:///./src/microApps/common/tracking/common/commonEvents.ts","webpack:///./src/microApps/common/tracking/ecommerce/dynamicYield/dynamicYield.ts","webpack:///./src/microApps/common/tracking/ecommerce/recipes.ts","webpack:///./src/microApps/common/tracking/ecommerce/ecommerceEvents.ts","webpack:///./src/microApps/common/tracking/ecommerce/sustainability.ts","webpack:///./src/microApps/common/tracking/ecommerce/filter.ts","webpack:///./src/microApps/common/tracking/header/loginReminderEvents.ts","webpack:///./src/microApps/common/tracking/header/headerEvents.ts","webpack:///./src/microApps/common/tracking/myCoop/matkonto/index.ts","webpack:///./src/microApps/common/tracking/myCoop/myPoints/index.ts","webpack:///./src/microApps/common/tracking/myCoop/myProfile/index.ts","webpack:///./src/microApps/common/tracking/myCoop/index.ts","webpack:///./src/microApps/common/tracking/orderReclamation/orderReclamationEvents.ts","webpack:///./src/microApps/common/tracking/recipe/recipeEvents.ts","webpack:///./src/microApps/common/tracking/search/searchEvents.ts","webpack:///./src/microApps/common/tracking/tracking.ts","webpack:///./src/microApps/common/utils/orderUtils.ts"],"sourcesContent":["import type { FC } from 'react';\nimport { createContext, useContext, useMemo } from 'react';\n\nexport const enum MicroAppContextType {\n    Checkout,\n    Start,\n    Ecommerce,\n    Stores,\n    CnC,\n    Recipes,\n    MyCoop,\n}\n\ninterface IMicroAppContext {\n    microAppContextType?: MicroAppContextType;\n}\n\nconst MicroAppContext = createContext<IMicroAppContext>({ microAppContextType: undefined });\n\nexport const useMicroAppContext = () => {\n    const featureContext = useContext(MicroAppContext);\n    return featureContext;\n};\n\nexport const useIsInCheckoutMicroApp = () => {\n    const context = useContext(MicroAppContext);\n\n    return context?.microAppContextType === MicroAppContextType.Checkout;\n};\n\nexport const useIsInEcommerceMicroApp = () => {\n    const context = useContext(MicroAppContext);\n\n    return context?.microAppContextType === MicroAppContextType.Ecommerce;\n};\n\nexport const useIsInCncMicroApp = () => {\n    const context = useContext(MicroAppContext);\n\n    return context?.microAppContextType === MicroAppContextType.CnC;\n};\n\nexport const MicroAppContextProvider: FC<\n    React.PropsWithChildren<{ microAppType: MicroAppContextType }>\n> = (props) => {\n    const value = useMemo<IMicroAppContext>(\n        () => ({ microAppContextType: props.microAppType }),\n        [props.microAppType],\n    );\n\n    return <MicroAppContext.Provider value={value}>{props.children}</MicroAppContext.Provider>;\n};\n","import type {\n    CoopContentPageSize,\n    CoopLayoutSize,\n} from '../../../../utility/coopSwiperBreakpoints';\nimport type { PriceType } from '../../models/priceData/priceData';\n\nexport interface SharedUiState {\n    hasSideBar: boolean;\n    hideFooterMobile: boolean;\n    hideSubMenu: boolean;\n    layoutSize: CoopLayoutSize;\n    contentPageSize: CoopContentPageSize;\n    hideLoginReminder: boolean;\n    userName: string | null;\n    featureFlags: FeatureFlagsState;\n    preferredPriceType?: PriceType;\n}\n\nexport interface CncUiState {\n    stepTrail: CncStep[];\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    currentStepNavigationParams: any; // can be anything when something needs to be passed from one step to another\n    reloadOnClose: boolean;\n    previewPostalCode: string | null;\n}\n\nexport interface FeatureFlagsState {\n    // add new flags here\n}\n\nexport enum CncStep {\n    MiniCart = 'MiniCart',\n    TimeSlots = 'TimeSlots',\n    Map = 'Map',\n    PostalCodeSelector = 'PostalCodeSelector',\n    PostalCodePreview = 'PostalCodePreview',\n}\n","import { isB2BMode } from '../../utils/b2bUtils';\nimport { sendInteractionEvent } from '../utils';\n\nexport const sendInteractionClickEventWithCustomerSegment = ({\n    eventCategory,\n    eventAction,\n    eventLabel,\n}: {\n    eventCategory: string;\n    eventAction: string;\n    eventLabel: string;\n}) => {\n    const customerSegment = isB2BMode() ? 'Företag' : 'Privat';\n\n    if (!eventCategory || !eventAction) {\n        return;\n    }\n\n    sendInteractionEvent({\n        eventCategory,\n        eventAction,\n        eventLabel,\n        customerSegment,\n    });\n};\n\nexport const sendGaInteractionClickEvent = ({\n    eventCategory,\n    eventAction,\n    eventLabel,\n}: {\n    eventCategory: string;\n    eventAction: string;\n    eventLabel: string;\n}) => {\n    if (!eventCategory || !eventAction) {\n        return;\n    }\n\n    sendInteractionEvent({\n        eventCategory,\n        eventAction,\n        eventLabel,\n    });\n};\n\n// Mimics the legacy events, escape hatch to make it easier to refactor to the new way of tracking or when specific events do not make sense\nexport default {\n    clickWithCustomerSegment: sendInteractionClickEventWithCustomerSegment,\n    click: sendGaInteractionClickEvent,\n};\n","import type { AnalyticsInteractionClickEvent } from '../../../analytics/analyticsHandler';\nimport { Browser } from '../../../utility/browser';\n\nexport const sendGaNavigationInteractionEvent = (currRoute: string, clickedRoute: string) => {\n    const gaEvent = <AnalyticsInteractionClickEvent>(\n        Browser.createNewEvent('ga:interactionWithoutCustomerSegment')\n    );\n    gaEvent.eventCategory = 'Ecommerce';\n    gaEvent.eventAction = `Checkout - ${currRoute}`;\n    gaEvent.eventLabel = clickedRoute;\n    window.dispatchEvent(gaEvent);\n};\n\nexport const sendGaInteractionWithoutCustomerSegment = (\n    category: string,\n    action: string,\n    label: string,\n) => {\n    const gaEvent = <AnalyticsInteractionClickEvent>(\n        Browser.createNewEvent('ga:interactionWithoutCustomerSegment')\n    );\n    gaEvent.eventCategory = category;\n    gaEvent.eventAction = action;\n    gaEvent.eventLabel = label;\n    window.dispatchEvent(gaEvent);\n};\n","import type { ApiHybrisTimeslot } from '../../api/timeslots/timeslotsApi';\nimport { MicroAppContextType } from '../../contexts/microAppContext';\nimport { DeliveryMode } from '../../store/structureDefinitions/storeState';\nimport { sendInteractionEvent } from '../utils';\n\nconst getGaFormatTimeslotFunction = (microAppType: MicroAppContextType | undefined) => {\n    switch (microAppType) {\n        case MicroAppContextType.CnC:\n            return () => 'Slider - Varukorg - Överblick';\n        case MicroAppContextType.Checkout:\n            return (deliveryModeText: string, reservationText: string) =>\n                `Checkout - Leverans - ${deliveryModeText} - Leveranstid - Reservera ${reservationText}`;\n        default:\n            return () => 'undefined';\n    }\n};\n\nconst sendGaTimeslotInteractionEvent =\n    (microAppType: MicroAppContextType | undefined, deliveryMode: DeliveryMode) =>\n    (eventLabel: string, additionalData: object | null) => {\n        const isHomeDelivery = deliveryMode === DeliveryMode.homedelivery;\n        const deliveryModeText = isHomeDelivery ? 'Hemleverans' : 'Hämta i butik';\n        const reservationText = isHomeDelivery ? 'leveranstid' : 'avhämtningstid';\n\n        const gaContextEventFormatted = getGaFormatTimeslotFunction(microAppType)(\n            deliveryModeText,\n            reservationText,\n        );\n\n        sendInteractionEvent({\n            eventAction: isHomeDelivery\n                ? gaContextEventFormatted\n                : `${gaContextEventFormatted} - Hämta`,\n            eventLabel,\n            ...additionalData,\n        });\n    };\n\nconst sendGaCalendarInteractionClickPrev =\n    (microAppType: MicroAppContextType | undefined, deliveryMode: DeliveryMode) => () => {\n        sendGaTimeslotInteractionEvent(microAppType, deliveryMode)('Slide bakåt', null);\n    };\n\nconst sendGaCalendarInteractionClickNext =\n    (microAppType: MicroAppContextType | undefined, deliveryMode: DeliveryMode) => () => {\n        sendGaTimeslotInteractionEvent(microAppType, deliveryMode)('Slide framåt', null);\n    };\n\nconst sendGaCalendarInteractionClickOpen =\n    (microAppType: MicroAppContextType | undefined, deliveryMode: DeliveryMode) => () => {\n        sendGaTimeslotInteractionEvent(microAppType, deliveryMode)('Kalender öppna', null);\n    };\n\nconst sendGaCalendarInteractionClickSelect =\n    (microAppType: MicroAppContextType | undefined, deliveryMode: DeliveryMode) => () => {\n        sendGaTimeslotInteractionEvent(microAppType, deliveryMode)('Kalender val', null);\n    };\n\nconst sendGaTimeslotInteractionClickSelect =\n    (microAppType: MicroAppContextType | undefined, deliveryMode: DeliveryMode) =>\n    (timeslot: ApiHybrisTimeslot, nextTimeslot: ApiHybrisTimeslot | null) => {\n        const deliveryModePretty =\n            deliveryMode === DeliveryMode.homedelivery ? 'Hemleverans' : 'Hämta i butik';\n\n        const time = timeslot.timeSlotTime;\n        const date = new Date(timeslot.startTime).toLocaleDateString('sv-SE').split('-').join('');\n\n        let hoursUntilNextTimeslot;\n        if (nextTimeslot) {\n            hoursUntilNextTimeslot = (nextTimeslot.startTime - timeslot.startTime) / (1000 * 3600);\n        }\n\n        const additionalData = {\n            deliveryDate: date,\n            deliveryTime: `${date} ${time}`,\n            deliveryMethod: deliveryModePretty,\n            nextDelivery: hoursUntilNextTimeslot,\n            // TODO : deliveryType: Custom dim: 64. Ordinarie order, Förplock, Express (only for Kungens kurva at the moment) - available in Hybris\n        };\n\n        sendGaTimeslotInteractionEvent(microAppType, deliveryMode)(\n            `Valt ${\n                deliveryMode === DeliveryMode.homedelivery ? 'leveranstid' : 'leveranstid - Hämta'\n            }`,\n            additionalData,\n        );\n    };\n\nconst timeslotTracking = {\n    calendar: {\n        prev: sendGaCalendarInteractionClickPrev,\n        next: sendGaCalendarInteractionClickNext,\n        open: sendGaCalendarInteractionClickOpen,\n        select: sendGaCalendarInteractionClickSelect,\n    },\n    timeslot: {\n        select: sendGaTimeslotInteractionClickSelect,\n    },\n};\n\nexport default timeslotTracking;\n","import { sendInteractionEvent } from '../utils';\n\nexport const gaProductListDropdownLabel = 'ProductList - dropdown';\n\nconst openProductListDropdown = () => {\n    sendInteractionEvent({\n        eventAction: 'Visa produkt',\n        eventLabel: gaProductListDropdownLabel,\n    });\n};\n\nexport default { openProductListDropdown };\n","import type { FC, ReactNode } from 'react';\nimport * as React from 'react';\nimport { createContext, useMemo } from 'react';\n\nimport type { RecipeCategoryFacet } from '../../../search/models/models';\n\nconst getSelectedCategories = (\n    parentName: string,\n    categoryFacets: RecipeCategoryFacet[] | null,\n): Record<string, string> => {\n    if (categoryFacets === null) {\n        return {};\n    }\n    return categoryFacets.reduce(\n        (acc, categoryFacet) => {\n            if (categoryFacet.selected) {\n                const parentAlreadyHasValue = Boolean(acc[parentName]);\n                const newValue = parentAlreadyHasValue\n                    ? `${acc[parentName]}+${categoryFacet.item}`\n                    : categoryFacet.item;\n\n                return {\n                    ...acc,\n                    [parentName]: newValue,\n                };\n            }\n\n            if (Array.isArray(categoryFacet.categories)) {\n                return {\n                    ...acc,\n                    ...getSelectedCategories(categoryFacet.item, categoryFacet.categories),\n                };\n            }\n\n            return acc;\n        },\n        {} as Record<string, string>,\n    );\n};\n\n// mimic old tracking logic\nexport const getRecipeComboHit = (categories: RecipeCategoryFacet[]) => {\n    const selectedCategoryFacets = categories.reduce(\n        (acc, categoryFacet) => ({\n            ...acc,\n            ...getSelectedCategories(categoryFacet.item, categoryFacet.categories),\n        }),\n        {},\n    );\n\n    return Object.entries(selectedCategoryFacets).reduce((acc, [parentName, childrenStr]) => {\n        if (acc.length) {\n            return `${acc};${parentName}:${childrenStr}`;\n        }\n\n        return `${parentName}:${childrenStr}`;\n    }, '');\n};\n\nconst ValueContext = createContext<{ recipeComboHit: string | null }>({\n    recipeComboHit: null,\n});\n\nexport const useRecipeFilterTrackingContext = () => {\n    const { recipeComboHit } = React.useContext(ValueContext);\n\n    return {\n        recipeComboHit,\n    };\n};\n\ninterface RecipeFilterPageTrackingContextProviderProps {\n    categories: RecipeCategoryFacet[];\n    children: ReactNode;\n}\n\nconst RecipeFilterPageTrackingContextProvider: FC<\n    React.PropsWithChildren<RecipeFilterPageTrackingContextProviderProps>\n> = ({ categories, children }) => {\n    const value = useMemo(\n        () => ({ recipeComboHit: getRecipeComboHit(categories ?? []) }),\n        [categories],\n    );\n\n    return <ValueContext.Provider value={value}>{children}</ValueContext.Provider>;\n};\n\nexport default RecipeFilterPageTrackingContextProvider;\n","import { sendEvent } from '../utils';\n\nexport interface AbTestGaEvent {\n    event: 'abtest';\n    experiment_name: string;\n    experiment_variant: string;\n}\n\n/**\n * experiment_name: Name of experiment\n * experiment_variant: Normal variant should always be A\n */\nconst userInteraction = (experiment_name: string, experiment_variant: string) => {\n    sendEvent<AbTestGaEvent>({\n        event: 'abtest',\n        experiment_name,\n        experiment_variant,\n    });\n};\n\nconst AbTestTracking = {\n    userInteraction,\n};\nexport default AbTestTracking;\n","import { sendInteractionEvent } from '../utils';\n\n// Checkout - Step 3 - Leverans - Hemleverans\nconst sendHomeDeliveryTabInteractionClick = (eventLabel: string) => {\n    sendInteractionEvent({\n        eventAction: 'Checkout - Leverans - Hemleverans',\n        eventLabel,\n    });\n};\n\nconst sendGaHomeDeliveryTabAddressInteractionClickAdd = () => {\n    sendHomeDeliveryTabInteractionClick('Adress - Lägg till');\n};\n\nconst sendGaHomeDeliveryTabAddressInteractionClickChange = () => {\n    sendHomeDeliveryTabInteractionClick('Adress - Ändra');\n};\n\nconst sendGaHomeDeliveryTabDateInteractionClickAdd = () => {\n    sendHomeDeliveryTabInteractionClick('Leveranstid - Lägg till');\n};\n\nconst sendGaHomeDeliveryTabDateInteractionClickChange = () => {\n    sendHomeDeliveryTabInteractionClick('Leveranstid - Ändra');\n};\n\nconst sendGaHomeDeliveryTabMessageToDriverInteractionClick = () => {\n    sendHomeDeliveryTabInteractionClick('Meddelande till chauffören');\n};\n\n// Checkout - Leverans - Hemleverans - Fakturaadress\nconst sendHomeDeliveryBillingTabInteractionClick = (eventLabel: string) => {\n    sendInteractionEvent({\n        eventAction: 'Checkout - Leverans - Hemleverans- Fakturadress',\n        eventLabel,\n    });\n};\n\nconst sendGaHomeDeliveryTabBillingAddressInteractionClickAdd = () => {\n    sendHomeDeliveryBillingTabInteractionClick('Lägg till fakturaadress');\n};\n\nconst sendGaHomeDeliveryTabBillingAddressInteractionClickChange = () => {\n    sendHomeDeliveryBillingTabInteractionClick('Ändra fakturaadress');\n};\n\n// Checkout - Step 3 - Leverans - Hemleverans - Leveransadress\nconst sendHomeDeliveryAddressInteractionClick = (eventLabel: string) => {\n    sendInteractionEvent({\n        eventAction: 'Checkout - Leverans - Hemleverans - Leveransadress',\n        eventLabel,\n    });\n};\n\nconst sendGaHomeDeliveryAddressInteractionClickAdd = () => {\n    sendHomeDeliveryAddressInteractionClick('Lägg till leveransadress');\n};\n\nconst sendGaHomeDeliveryAddressInteractionClickEdit = () => {\n    sendHomeDeliveryAddressInteractionClick('Redigera leveransadress');\n};\n\nconst sendGaHomeDeliveryAddressInteractionClickSelect = () => {\n    sendHomeDeliveryAddressInteractionClick('Ändra leveransadress');\n};\n\nconst sendGaHomeDeliveryAddressInteractionClickClose = () => {\n    sendHomeDeliveryAddressInteractionClick('Stäng');\n};\n\n// Checkout - Step 3 - Leverans - Hemleverans - Leveransadress - Redigera adress\nconst sendHomeDeliveryEditAddressInteractionClick = (eventLabel: string) => {\n    sendInteractionEvent({\n        eventAction: 'Checkout - Leverans - Hemleverans - Leveransadress - Redigera adress',\n        eventLabel,\n    });\n};\n\nconst sendGaHomeDeliveryEditAddressInteractionClickRemoveAddress = () => {\n    sendHomeDeliveryEditAddressInteractionClick('Ta bort adress');\n};\n\nconst sendGaHomeDeliveryEditAddressInteractionClickSaveAddress = () => {\n    sendHomeDeliveryEditAddressInteractionClick('Spara ändringar');\n};\n\n// Checkout - Step 3 - Leverans - Hemleverans - Leveransadress - Lägg till leveransadress\nconst sendHomeDeliveryAddAddressInteractionClick = (eventLabel: string) => {\n    sendInteractionEvent({\n        eventAction:\n            'Checkout - Leverans - Hemleverans - Leveransadress - Lägg till leveransadress',\n        eventLabel,\n    });\n};\n\nconst sendGaHomeDeliveryAddAddressInteractionClickSaveAddress = () => {\n    sendHomeDeliveryAddAddressInteractionClick('Spara ändringar');\n};\n\nconst homeDeliveryTracking = {\n    deliveryAddress: {\n        add: sendGaHomeDeliveryTabAddressInteractionClickAdd,\n        change: sendGaHomeDeliveryTabAddressInteractionClickChange,\n        flyIn: {\n            add: sendGaHomeDeliveryAddressInteractionClickAdd,\n            editClick: sendGaHomeDeliveryAddressInteractionClickEdit,\n            select: sendGaHomeDeliveryAddressInteractionClickSelect,\n            close: sendGaHomeDeliveryAddressInteractionClickClose,\n            edit: {\n                save: sendGaHomeDeliveryEditAddressInteractionClickSaveAddress,\n                remove: sendGaHomeDeliveryEditAddressInteractionClickRemoveAddress,\n            },\n            create: {\n                save: sendGaHomeDeliveryAddAddressInteractionClickSaveAddress,\n            },\n        },\n    },\n    billingAddress: {\n        add: sendGaHomeDeliveryTabBillingAddressInteractionClickAdd,\n        change: sendGaHomeDeliveryTabBillingAddressInteractionClickChange,\n    },\n    timeslot: {\n        add: sendGaHomeDeliveryTabDateInteractionClickAdd,\n        change: sendGaHomeDeliveryTabDateInteractionClickChange,\n    },\n    messageToDriverClick: sendGaHomeDeliveryTabMessageToDriverInteractionClick,\n};\n\nexport default homeDeliveryTracking;\n","import { sendInteractionEvent } from '../utils';\n\nconst sendGaReplacableItemSwitchInteractionClick = (eventLabel: string) => {\n    sendInteractionEvent({\n        eventAction: 'Checkout - Varukorg',\n        eventLabel,\n    });\n};\n\nconst sendGaReplacableItemSwitchInteractionClickAllCheckbox = () => () => {\n    sendGaReplacableItemSwitchInteractionClick('Ersätt varor - Ersätt varor');\n};\n\nconst sendGaReplacableItemSwitchInteractionClickProductCheckbox = () => () => {\n    sendGaReplacableItemSwitchInteractionClick('Ersätt varor - Ersätt vara');\n};\n\nconst itemReplaceEvents = {\n    clickAll: sendGaReplacableItemSwitchInteractionClickAllCheckbox,\n    clickProductCheckbox: sendGaReplacableItemSwitchInteractionClickProductCheckbox,\n};\n\nexport default itemReplaceEvents;\n","import { sendInteractionEvent } from '../utils';\n\n// Checkout - Step 3 - Leverans - Hämta i butik\nconst sendPickupDeliveryTabInteractionClick = (eventLabel: string) => {\n    sendInteractionEvent({\n        eventAction: 'Checkout - Leverans - Hämta i butik',\n        eventLabel,\n    });\n};\n\nconst sendGaPickupDeliveryTabLocationInteractionClickAdd = () => {\n    sendPickupDeliveryTabInteractionClick('Hämtas på - Lägg till');\n};\n\nconst sendGaPickupDeliveryTabLocationInteractionClickChange = () => {\n    sendPickupDeliveryTabInteractionClick('Hämtas på - Ändra');\n};\n\nconst sendGaPickupDeliveryTabContactDetailsInteractionClickAdd = () => {\n    sendPickupDeliveryTabInteractionClick('Kontaktuppgifter - Lägg till');\n};\n\nconst sendGaPickupDeliveryTabContactDetailsInteractionClickChange = () => {\n    sendPickupDeliveryTabInteractionClick('Kontaktuppgifter - Ändra');\n};\n\nconst sendGaPickupDeliveryTabPickupDateInteractionClickAdd = () => {\n    sendPickupDeliveryTabInteractionClick('Avhämtningstid - Lägg till');\n};\n\nconst sendGaPickupDeliveryTabPickupDateInteractionClickChange = () => {\n    sendPickupDeliveryTabInteractionClick('Avhämtningstid - Ändra');\n};\n\n// Checkout - Leverans - Hämta i butik - Fakturaadress\nconst sendPickupDeliveryBillingTabInteractionClick = (eventLabel: string) => {\n    sendInteractionEvent({\n        eventAction: 'Checkout - Leverans - Hämta i butik - Fakturadress',\n        eventLabel,\n    });\n};\n\nconst sendGaPickupDeliveryTabBillingAddressInteractionClickAdd = () => {\n    sendPickupDeliveryBillingTabInteractionClick('Lägg till fakturaadress');\n};\n\nconst sendGaPickupDeliveryTabBillingAddressInteractionClickChange = () => {\n    sendPickupDeliveryBillingTabInteractionClick('Ändra fakturaadress');\n};\n\n// Checkout - Step 3 - Leverans - Hämta i butik - Kontaktuppgifter\nconst sendPickupDeliveryAddressInteractionClick = (eventLabel: string) => {\n    sendInteractionEvent({\n        eventAction: 'Checkout - Leverans - Hämta i butik - Kontaktuppgifter',\n        eventLabel,\n    });\n};\n\nconst sendGaPickupDeliveryAddressInteractionClickAdd = () => {\n    sendPickupDeliveryAddressInteractionClick('Lägg till kontaktuppgifter');\n};\n\nconst sendGaPickupDeliveryAddressInteractionClickEdit = () => {\n    sendPickupDeliveryAddressInteractionClick('Redigera kontaktuppgifter');\n};\n\nconst sendGaPickupDeliveryAddressInteractionClickSelect = () => {\n    sendPickupDeliveryAddressInteractionClick('Ändra kontaktuppgifter');\n};\n\nconst sendGaPickupDeliveryAddressInteractionClickClose = () => {\n    sendPickupDeliveryAddressInteractionClick('Stäng');\n};\n\n// Checkout - Step 3 - Leverans - Hämta i butik - Kontaktuppgifter - Redigera adress\nconst sendPickupDeliveryEditAddressInteractionClick = (eventLabel: string) => {\n    sendInteractionEvent({\n        eventAction: 'Checkout - Leverans - Hämta i butik - Kontaktuppgifter - Redigera adress',\n        eventLabel,\n    });\n};\n\nconst sendGaPickupDeliveryEditAddressInteractionClickBack = () => {\n    sendPickupDeliveryEditAddressInteractionClick('Tillbaka');\n};\n\nconst sendGaPickupDeliveryEditAddressInteractionClickClose = () => {\n    sendPickupDeliveryEditAddressInteractionClick('Stäng');\n};\n\nconst sendGaPickupDeliveryEditAddressInteractionClickSaveAddress = () => {\n    sendPickupDeliveryEditAddressInteractionClick('Spara ändringar');\n};\n\nconst sendGaPickupDeliveryEditAddressInteractionClickRemoveAddress = () => {\n    sendPickupDeliveryEditAddressInteractionClick('Ta bort adress');\n};\n\nconst sendGaPickupDeliveryEditAddressInteractionClickRemoveAddressYes = () => {\n    sendPickupDeliveryEditAddressInteractionClick('Ta bort adress - Ja');\n};\n\nconst sendGaPickupDeliveryEditAddressInteractionClickRemoveAddressNo = () => {\n    sendPickupDeliveryEditAddressInteractionClick('Ta bort adress - Avbryt');\n};\n\n// Checkout - Step 3 - Leverans - Hämta i butik - Kontaktuppgifter - Redigera adress\nconst sendPickupDeliveryAddAddressInteractionClick = (eventLabel: string) => {\n    sendInteractionEvent({\n        eventAction:\n            'Checkout - Leverans - Hämta i butik - Kontaktuppgifter - Lägg till kontaktuppgifter',\n        eventLabel,\n    });\n};\n\nconst sendGaPickupDeliveryAddAddressInteractionClickSaveAddress = () => {\n    sendPickupDeliveryAddAddressInteractionClick('Spara ändringar');\n};\n\nconst sendGaPickupDeliveryAddAddressInteractionClickBack = () => {\n    sendPickupDeliveryAddAddressInteractionClick('Gå tillbaka');\n};\n\nconst sendGaPickupDeliveryAddAddressInteractionClickClose = () => {\n    sendPickupDeliveryAddAddressInteractionClick('Stäng');\n};\n\nconst pickupTracking = {\n    pickupStore: {\n        add: sendGaPickupDeliveryTabLocationInteractionClickAdd,\n        change: sendGaPickupDeliveryTabLocationInteractionClickChange,\n    },\n    contactAddress: {\n        add: sendGaPickupDeliveryTabContactDetailsInteractionClickAdd,\n        change: sendGaPickupDeliveryTabContactDetailsInteractionClickChange,\n        flyIn: {\n            add: sendGaPickupDeliveryAddressInteractionClickAdd,\n            editClick: sendGaPickupDeliveryAddressInteractionClickEdit,\n            select: sendGaPickupDeliveryAddressInteractionClickSelect,\n            close: sendGaPickupDeliveryAddressInteractionClickClose,\n            edit: {\n                back: sendGaPickupDeliveryEditAddressInteractionClickBack,\n                close: sendGaPickupDeliveryEditAddressInteractionClickClose,\n                save: sendGaPickupDeliveryEditAddressInteractionClickSaveAddress,\n                remove: sendGaPickupDeliveryEditAddressInteractionClickRemoveAddress,\n                removeConfirm: sendGaPickupDeliveryEditAddressInteractionClickRemoveAddressYes,\n                removeCancel: sendGaPickupDeliveryEditAddressInteractionClickRemoveAddressNo,\n            },\n            create: {\n                save: sendGaPickupDeliveryAddAddressInteractionClickSaveAddress,\n                back: sendGaPickupDeliveryAddAddressInteractionClickBack,\n                close: sendGaPickupDeliveryAddAddressInteractionClickClose,\n            },\n        },\n    },\n    billingAddress: {\n        add: sendGaPickupDeliveryTabBillingAddressInteractionClickAdd,\n        change: sendGaPickupDeliveryTabBillingAddressInteractionClickChange,\n    },\n    timeslot: {\n        add: sendGaPickupDeliveryTabPickupDateInteractionClickAdd,\n        change: sendGaPickupDeliveryTabPickupDateInteractionClickChange,\n    },\n};\n\nexport default pickupTracking;\n","import { sendInteractionEvent } from '../utils';\n\nconst sendGaSubscriptionInteractionEvent = (week: number | null, eventLabel: string) => {\n    let interval;\n\n    if (week) {\n        if (week === 1) {\n            interval = 'Varje vecka';\n        } else if (week === 2) {\n            interval = 'Varannan vecka';\n        } else if (week === 3) {\n            interval = 'Var tredje vecka';\n        } else if (week === 4) {\n            interval = 'Var fjärde vecka';\n        }\n    }\n\n    sendInteractionEvent({\n        eventAction: 'Checkout - Leverans - Abonnemang',\n        eventLabel,\n        subscriptionInterval: interval,\n    });\n};\n\nconst sendGaSubscriptionInteractionStart = (week: number | null) => {\n    sendGaSubscriptionInteractionEvent(week, 'Starta abonnemang');\n};\n\nconst sendGaSubscriptionInteractionEdit = (week: number | null) => {\n    sendGaSubscriptionInteractionEvent(week, 'Ändra abonnemang');\n};\n\nconst sendGaSubscriptionInteractionCancel = (week: number | null) => {\n    sendGaSubscriptionInteractionEvent(week, 'Avsluta abonnemang');\n};\n\nconst sendGaSubscriptionInteractionCancelConfirm = () => {\n    sendGaSubscriptionInteractionEvent(null, 'Avsluta abonnemang - Ja');\n};\n\nconst sendGaSubscriptionInteractionCancelCancel = () => {\n    sendGaSubscriptionInteractionEvent(null, 'Avsluta abonnemang - Avbryt');\n};\n\nconst sendGaSubscriptionInteractionOpen = () => {\n    sendGaSubscriptionInteractionEvent(null, 'Öppna dropdown');\n};\n\nconst sendGaSubscriptionInteractionClose = () => {\n    sendGaSubscriptionInteractionEvent(null, 'Stäng dropdown');\n};\n\nconst subscriptionTracking = {\n    start: sendGaSubscriptionInteractionStart,\n    edit: sendGaSubscriptionInteractionEdit,\n    cancel: sendGaSubscriptionInteractionCancel,\n    cancelConfirm: sendGaSubscriptionInteractionCancelConfirm,\n    cancelCancel: sendGaSubscriptionInteractionCancelCancel,\n    open: sendGaSubscriptionInteractionOpen,\n    close: sendGaSubscriptionInteractionClose,\n};\n\nexport default subscriptionTracking;\n","import type { AnalyticsVoucherInteractionEvent } from '../../../../analytics/analyticsHandler';\nimport { Browser } from '../../../../utility/browser';\nimport { DeliveryMode } from '../../store/structureDefinitions/storeState';\nimport { sendGaInteractionWithoutCustomerSegment } from '../commonEvents';\nimport { sendInteractionEvent } from '../utils';\nimport editOrderTracking from './editOrderEvents';\nimport homeDeliveryTracking from './homeDeliveryEvents';\nimport itemReplaceEvents from './itemReplaceEvents';\nimport pickupTracking from './storeDeliveryEvents';\nimport subscriptionTracking from './subscriptionEvents';\n\nconst sendGaDeliveryStepInit = () => {\n    const gaEvent = Browser.createNewEvent('ga:deliveryInfo');\n    window.dispatchEvent(gaEvent);\n};\n\nconst sendGaDeliveryTabClickEvent = (mode: DeliveryMode) => {\n    const tab = mode === DeliveryMode.homedelivery ? 'Hemleverans' : 'Hämta i butik';\n    sendGaInteractionWithoutCustomerSegment('Ecommerce', 'Checkout - Leverans', tab);\n};\n\nconst sendGaAddVoucherEvent = (code: string, err: string | null) => {\n    if (err) {\n        const gaEvent = Browser.createNewEvent(\n            'ga:voucherInteraction',\n        ) as AnalyticsVoucherInteractionEvent;\n        gaEvent.eventLabel = 'Registrering kampanjkod - Felmeddelande';\n        gaEvent.campaignCode = err;\n        window.dispatchEvent(gaEvent);\n    } else {\n        const gaEvent = Browser.createNewEvent(\n            'ga:voucherInteraction',\n        ) as AnalyticsVoucherInteractionEvent;\n        gaEvent.eventLabel = 'Registrering kampanjkod';\n        gaEvent.campaignCode = code;\n        window.dispatchEvent(gaEvent);\n    }\n};\n\nconst sendGaInteractionCheckoutLoginConfirm = () => {\n    sendGaInteractionWithoutCustomerSegment('Ecommerce', 'Checkout - Login prompt', 'Login');\n};\n\nconst sendGaInteractionCheckoutLoginCancel = () => {\n    sendGaInteractionWithoutCustomerSegment('Ecommerce', 'Checkout - Login prompt', 'Avbryt');\n};\n\nconst sendGaSaveCartOpen = () => {\n    sendInteractionEvent({ eventAction: 'Checkout - Varukorg', eventLabel: 'Spara varukorg' });\n};\n\nconst sendGaSaveCartSave = () => {\n    sendInteractionEvent({\n        eventAction: 'Checkout - Varukorg - Spara din varukorg',\n        eventLabel: 'Bekräfta - Spara varukorg',\n    });\n};\n\nconst sendGaSaveCartClose = () => {\n    sendInteractionEvent({\n        eventAction: 'Checkout - Varukorg - Spara din varukorg',\n        eventLabel: 'Stäng - Spara varukorg',\n    });\n};\n\nconst checkoutTracking = {\n    cart: {\n        replaceItems: itemReplaceEvents,\n        voucher: {\n            add: sendGaAddVoucherEvent,\n        },\n        saveCart: {\n            save: sendGaSaveCartSave,\n            close: sendGaSaveCartClose,\n            open: sendGaSaveCartOpen,\n        },\n    },\n    delivery: {\n        init: sendGaDeliveryStepInit,\n        tabClick: sendGaDeliveryTabClickEvent,\n        subscription: subscriptionTracking,\n        pickup: pickupTracking,\n        homeDelivery: homeDeliveryTracking,\n    },\n    loginDialog: {\n        confirm: sendGaInteractionCheckoutLoginConfirm,\n        cancel: sendGaInteractionCheckoutLoginCancel,\n    },\n    editOrder: editOrderTracking,\n};\n\nexport default checkoutTracking;\n","import { Helpers } from '../../../../utility/helpers';\nimport { sendInteractionEvent } from '../utils';\n\nconst sendGaEditOrderCheckoutSummary = (\n    editOrderTotalPrice: number,\n    total: number,\n    editOrderTotalDifference: number,\n) => {\n    sendInteractionEvent({\n        eventAction: 'Edit Order',\n        eventLabel: 'Slutför köp - edit order',\n        editOrder: 'Editerad order',\n        tidigareBetalt_metric9: Helpers.truncateDecimalsWithSeparator(\n            editOrderTotalPrice,\n            2,\n            '',\n            '.',\n        ).replace(/ /g, ''),\n        nyttOrdervärde_metric10: Helpers.truncateDecimalsWithSeparator(total, 2, '', '.').replace(\n            / /g,\n            '',\n        ),\n        differensOrdervärde_metric11: Helpers.truncateDecimalsWithSeparator(\n            editOrderTotalDifference,\n            2,\n            '',\n            '.',\n        ).replace(/ /g, ''),\n    });\n};\n\nconst editOrderTracking = {\n    summary: sendGaEditOrderCheckoutSummary,\n};\n\nexport default editOrderTracking;\n","import { CncStep } from '../../store/structureDefinitions/uiState';\n\nexport const POSTAL_CODE_PREVIEW_EVENT_ACTION = 'Slider - Välj leveranssätt';\nexport const TIMESLOTS_EVENT_ACTION = 'Slider - Välj leveranstid';\nexport const POSTAL_CODE_SELECTOR_EVENT_ACTION = 'Slider - Ange ditt postnummer';\nexport const MINI_CART_EVENT_ACTION = 'Slider - Varukorg - Överblick';\nexport const MAP_EVENT_ACTION = 'Slider - Välj butik';\nexport const POPUP_CHANGE_DELIVERY_OPTION = 'Slider - Byte av leveranssätt - pop up';\nexport const OPEN_CNC_EVENT_ACTION = 'Slider - Slider öppnas';\n\nexport const getEventAction = (step: CncStep) => {\n    const STEP_TO_ACTION = {\n        [CncStep.Map]: MAP_EVENT_ACTION,\n        [CncStep.TimeSlots]: TIMESLOTS_EVENT_ACTION,\n        [CncStep.PostalCodeSelector]: POSTAL_CODE_SELECTOR_EVENT_ACTION,\n        [CncStep.PostalCodePreview]: POSTAL_CODE_PREVIEW_EVENT_ACTION,\n        [CncStep.MiniCart]: MINI_CART_EVENT_ACTION,\n    };\n\n    return STEP_TO_ACTION[step];\n};\n","import type { IApiStore } from '../../../../models/ecommerce/store/storeModel';\nimport { sendInteractionEvent } from '../utils';\nimport { POSTAL_CODE_PREVIEW_EVENT_ACTION } from './utils';\n\nconst sendDeliveryOptionEvent = (eventLabel: string, additionalData?: object) => {\n    sendInteractionEvent({\n        eventAction: POSTAL_CODE_PREVIEW_EVENT_ACTION,\n        eventLabel,\n        ...additionalData,\n    });\n};\n\nconst createSendDeliveryOptionEvent = (eventLabel: string) => () =>\n    sendDeliveryOptionEvent(eventLabel);\n\nconst sendDeliveryHomeOptionSelect = (\n    zipCode: string | undefined,\n    newStore: IApiStore | undefined,\n) => {\n    sendDeliveryOptionEvent('Hemleverans valt - leveranstid', {\n        zipCode,\n        deliverySearch: zipCode,\n        deliveryMethod: 'Hemleverans - Leveranssätt vald av kund\"',\n        storeId: newStore?.id,\n        storeName: newStore?.name,\n        Utbud: 'Fullsortiment',\n    });\n};\n\nexport default {\n    goToZipCode: createSendDeliveryOptionEvent('Gå till byt postnummer'),\n    readMoreExpress: createSendDeliveryOptionEvent('Läs mer om snabbleverans'),\n    home: {\n        select: sendDeliveryHomeOptionSelect,\n        seeMore: createSendDeliveryOptionEvent('Se fler tider'),\n    },\n    pickup: {\n        select: createSendDeliveryOptionEvent('Hämta valt - gå till tidsbokning - Hämta i butik'), // This doesn't really select - it navigates to store map.\n        seeMore: createSendDeliveryOptionEvent('Se fler butiker och tider'),\n    },\n};\n","import type { CncStep } from '../../store/structureDefinitions/uiState';\nimport { sendInteractionEvent } from '../utils';\nimport { getEventAction, MINI_CART_EVENT_ACTION } from './utils';\n\nconst sendCncHeaderGoToDeliveryOption = () => {\n    sendInteractionEvent({\n        eventAction: MINI_CART_EVENT_ACTION,\n        eventLabel: 'Gå till byte av leveranssätt och leveranstid',\n    });\n};\n\nconst sendCncHeaderGoToZipCode = () => {\n    sendInteractionEvent({\n        eventAction: MINI_CART_EVENT_ACTION,\n        eventLabel: 'Gå till postnummer-sidan',\n    });\n};\n\nconst sendCncHeaderGoToMap = () => {\n    sendInteractionEvent({\n        eventAction: MINI_CART_EVENT_ACTION,\n        eventLabel: 'Gå till sök efter butik',\n    });\n};\n\nconst sendCncHeaderGoToTimeslots = () => {\n    sendInteractionEvent({\n        eventAction: MINI_CART_EVENT_ACTION,\n        eventLabel: 'Gå till byte av leveranstid',\n    });\n};\n\nconst sendCncNavigationGoBack = (currentStep: CncStep) => {\n    sendInteractionEvent({\n        eventAction: getEventAction(currentStep),\n        eventLabel: 'Gå tillbaka pilen',\n    });\n};\n\nconst sendCncNavigationClose = (currentStep: CncStep) => {\n    sendInteractionEvent({\n        eventAction: getEventAction(currentStep),\n        eventLabel: 'Stänger pop up',\n    });\n};\n\nexport default {\n    navigationClose: sendCncNavigationClose,\n    navigationGoBack: sendCncNavigationGoBack,\n    goToDeliveryOption: sendCncHeaderGoToDeliveryOption,\n    goToZipCode: sendCncHeaderGoToZipCode,\n    goToTimeslots: sendCncHeaderGoToTimeslots,\n    goToMap: sendCncHeaderGoToMap,\n};\n","import { sendInteractionEvent } from '../utils';\nimport { MINI_CART_EVENT_ACTION } from './utils';\n\nconst createSendMiniCartEvent = (eventLabel: string) => () => {\n    sendInteractionEvent({ eventAction: MINI_CART_EVENT_ACTION, eventLabel });\n};\n\nexport default {\n    goToCheckout: createSendMiniCartEvent('Gå till kassan'),\n    startShopping: createSendMiniCartEvent('Börja handla'),\n    startEmptyCart: createSendMiniCartEvent('Töm varukorg'),\n    saveCart: {\n        open: createSendMiniCartEvent('Spara varukorg'),\n        save: createSendMiniCartEvent('Bekräfta spara varor'),\n        close: createSendMiniCartEvent('Avbryt spara varor'),\n    },\n};\n","import { sendInteractionEvent } from '../utils';\nimport { POPUP_CHANGE_DELIVERY_OPTION } from './utils';\n\nconst createSendStoreChangeEvent = (eventAction: string, eventLabel: string) => () => {\n    sendInteractionEvent({ eventAction, eventLabel });\n};\n\nexport default {\n    storeChange: {\n        deliveryOption: {\n            accept: createSendStoreChangeEvent(POPUP_CHANGE_DELIVERY_OPTION, 'Fortsätt'),\n            decline: createSendStoreChangeEvent(POPUP_CHANGE_DELIVERY_OPTION, 'Avbryt'),\n        },\n    },\n};\n","import type { IApiStore } from '../../../../models/ecommerce/store/storeModel';\nimport { sendInteractionEvent } from '../utils';\nimport { POSTAL_CODE_SELECTOR_EVENT_ACTION } from './utils';\n\nconst sendPostalCodeSelectorEvent = (eventLabel: string, additionalData?: object) => {\n    sendInteractionEvent({\n        eventAction: POSTAL_CODE_SELECTOR_EVENT_ACTION,\n        eventLabel,\n        ...additionalData,\n    });\n};\n\nconst sendPostalCodeZipCodeUpdateInteraction = (\n    eventLabel: string,\n    zipCode: string,\n    newStore: IApiStore,\n) => {\n    sendPostalCodeSelectorEvent(eventLabel, {\n        zipCode,\n        deliverySearch: zipCode,\n        deliveryMethod: 'Hemleverans - Leveranssätt ej vald av kund',\n        storeId: newStore?.id,\n        storeName: newStore?.name,\n        Utbud: 'Fullsortiment',\n    });\n};\n\nconst sendPostalCodeSelectorZipFirstSelect = (zipCode: string, newStore: IApiStore) => {\n    sendPostalCodeZipCodeUpdateInteraction('Angett postnummer', zipCode, newStore);\n};\n\nconst sendPostalCodeSelectorZipUpdated = (zipCode: string, newStore: IApiStore) => {\n    sendPostalCodeZipCodeUpdateInteraction('Ändra postnummer', zipCode, newStore);\n};\n\nconst sendPostalCodeSelectorZipSelectedWithPreviousAddress = (\n    zipCode: string,\n    newStore: IApiStore,\n) => {\n    sendPostalCodeZipCodeUpdateInteraction('Förvalt postnummer valt', zipCode, newStore);\n};\n\nconst sendPostalCodeSelectorZipSelectedError = (zipCode: string) => {\n    sendPostalCodeSelectorEvent('Postnummer finns ej', {\n        Utbud: 'Utbud hos butik hittades ej',\n        deliveryMethod: 'Leveranssätt och butik hittades ej',\n        deliverySearch: zipCode,\n        eventLabel: 'Postnummer finns ej',\n        storeId: 'StoreID hittades ej',\n        storeName: 'Store Name hittades ej',\n        zipCode: 'name not picked',\n    });\n};\n\nconst sendPostalCodeSelectorGoToStoreSearch = () => {\n    sendPostalCodeSelectorEvent('Gå till sök efter butik');\n};\n\nconst sendPostalCodeSelectorGoToCreateLogin = () => {\n    sendPostalCodeSelectorEvent('Gå till Skapa Inloggning');\n};\n\nconst sendPostalCodeSelectorGoToLogin = () => {\n    sendPostalCodeSelectorEvent('Gå till Logga in');\n};\n\nexport default {\n    select: {\n        inputFirst: sendPostalCodeSelectorZipFirstSelect,\n        inputUpdate: sendPostalCodeSelectorZipUpdated,\n        address: sendPostalCodeSelectorZipSelectedWithPreviousAddress,\n        error: sendPostalCodeSelectorZipSelectedError,\n    },\n    goToMap: sendPostalCodeSelectorGoToStoreSearch,\n    goToCreateLogin: sendPostalCodeSelectorGoToCreateLogin,\n    goToLogin: sendPostalCodeSelectorGoToLogin,\n};\n","import { sendInteractionEvent } from '../utils';\nimport deliveryOption from './deliveryOptionEvents';\nimport header from './headerEvents';\nimport miniCart from './miniCartEvents';\nimport notification from './notificationEvents';\nimport selectPostalCode from './selectPostalCodeEvents';\nimport { OPEN_CNC_EVENT_ACTION } from './utils';\n\nconst sendOpenCncEvent = (hasSelectedZip: boolean, eventLabel: string) => {\n    const zipCodeAlreadyChosen = hasSelectedZip\n        ? '​Postnummer populerat'\n        : 'Postnummer icke populerat​';\n\n    sendInteractionEvent({\n        eventAction: OPEN_CNC_EVENT_ACTION,\n        eventLabel,\n        zipCodeAlreadyChosen,\n    });\n};\n\nconst sendOpenFromAddToCart = (hasSelectedZip: boolean) => {\n    sendOpenCncEvent(hasSelectedZip, 'Add to Cart');\n};\n\nconst sendOpenFromIcon = (hasSelectedZip: boolean) => {\n    sendOpenCncEvent(hasSelectedZip, 'Cart ikon');\n};\n\nconst sendOpenFromNoticeRibbonDefaultStore = (hasSelectedZip: boolean) => {\n    sendOpenCncEvent(hasSelectedZip, 'Default store notice ribbon');\n};\n\nconst cncTracking = {\n    openFrom: {\n        cartIcon: sendOpenFromIcon,\n        addToCart: sendOpenFromAddToCart,\n        noticeRibbonDefaultStore: sendOpenFromNoticeRibbonDefaultStore,\n    },\n    notification,\n    deliveryOption,\n    header,\n    miniCart,\n    selectPostalCode,\n};\n\nexport default cncTracking;\n","import interactionClickEvents from './interactionClickEvents';\n\nconst commonTracking = {\n    interaction: interactionClickEvents,\n};\n\nexport default commonTracking;\n","import type { DynamicYieldAnalyticsMetadataBody } from '../../../models/product/productDomainModels';\nimport { sendEvent } from '../../utils';\n\nconst sendGaCampaignEvent = (\n    selectorName: string,\n    analyticsData?: DynamicYieldAnalyticsMetadataBody,\n) => {\n    if (analyticsData && selectorName) {\n        sendEvent({\n            event: 'experiment',\n            type: 'dynamic yield',\n            selector_name: selectorName,\n            campaign_id: analyticsData.campaignId,\n            campaign_name: analyticsData.campaignName,\n            experience_id: analyticsData.experienceId,\n            experience_name: analyticsData.experienceName,\n            variation_id: analyticsData.variationId,\n            variation_name: analyticsData.variationName,\n        });\n    }\n};\n\nexport default {\n    campaign: sendGaCampaignEvent,\n};\n","import type { ApiRecipe } from '../../../../models/recipe/recipeModel';\nimport { Helpers } from '../../../../utility/helpers';\nimport type {\n    RecipeCalculationType,\n    RecipeModalTab,\n    RecipePrioritizationType,\n} from '../../../recipe/models';\nimport { sendEvent, sendInteractionEvent } from '../utils';\nimport type {\n    ModalPopupGaEvent,\n    RecipeEcommerceInteractionGaEvent,\n    RecipeInteractionGaEvent,\n    RecipeModalInteractionGaEvent,\n    RecipeSubstituteProductGaEvent,\n} from './recipesTrackingTypes';\n\nconst sendModalPopupEvent = (\n    recipe: ApiRecipe,\n    modalTabToDisplay: RecipeModalTab,\n    portions?: number,\n) => {\n    if (recipe) {\n        const { name, externalId, recipePart, cookingTime, totalTime } = recipe;\n        const actualCookingTime = totalTime || cookingTime;\n        const amountOfIngredients =\n            recipePart?.reduce((acc, curr) => acc + curr.ingredients.length, 0) || 0;\n\n        sendEvent<ModalPopupGaEvent>({\n            event: 'modalPopup',\n            recipeName: name,\n            modalName: `Receptmodal - ${name}`,\n            modalTitle: `${window.location.pathname}receptmodal/${Helpers.slugify(name)}`,\n            recipeId: externalId.toString(),\n            recipeCookingTime: actualCookingTime,\n            recipeStartTab: modalTabToDisplay === 2 ? 'Varor' : 'Recept',\n            recipePrefilledPortions: portions?.toString() || 'undefined',\n            recipeAmountOfIngredients: amountOfIngredients.toString(),\n        });\n    }\n};\n\nconst sendRecipeBuyInteractionEvent = (recipeName: string, recipeId: string, portions?: number) => {\n    sendInteractionEvent<RecipeEcommerceInteractionGaEvent>({\n        event: 'interaction',\n        eventLabel: 'Köp varor',\n        eventAction: 'Receptmodal',\n        recipeName,\n        recipeId,\n        portions: portions?.toString() || 'undefined',\n    });\n};\n\nconst sendRecipePortionChangeInteractionEvent = (\n    recipeName: string,\n    recipeId: string,\n    previousPortions?: number,\n    portions?: number,\n) => {\n    let eventLabel = '';\n    if (portions !== undefined && previousPortions !== undefined) {\n        if (previousPortions > portions) {\n            eventLabel = 'Minska portioner';\n        } else {\n            eventLabel = 'Öka portioner';\n        }\n    }\n\n    sendInteractionEvent<RecipeEcommerceInteractionGaEvent>({\n        event: 'interaction',\n        eventLabel,\n        eventAction: 'Receptmodal',\n        recipeName,\n        recipeId,\n        portions: portions?.toString() || 'undefined',\n    });\n};\n\nconst sendModalButtonClickEvent = (recipeName: string, recipeId: string) => {\n    sendInteractionEvent<RecipeModalInteractionGaEvent>({\n        event: 'interaction',\n        eventLabel: 'Öppna receptmodal - Knapp',\n        eventAction: 'Köpklara recept',\n        recipeName,\n        recipeId,\n    });\n};\n\nconst sendModalLinkClickEvent = (recipeName: string, recipeId: string) => {\n    sendInteractionEvent<RecipeModalInteractionGaEvent>({\n        event: 'interaction',\n        eventLabel: 'Öppna receptmodal - Bild',\n        eventAction: 'Köpklara recept',\n        recipeName,\n        recipeId,\n    });\n};\n\nconst sendRecipeCalculationInteractionEvent = (\n    recipeName: string,\n    recipeId: string,\n    calculationType: RecipeCalculationType,\n    prioritization: RecipePrioritizationType | null,\n    portions?: number,\n) => {\n    let eventLabel = '';\n\n    switch (calculationType) {\n        case 'price':\n            eventLabel = 'Ändra kalkyleringstyp - Billigt';\n            break;\n        case 'waste':\n            if (prioritization === 'organic') {\n                eventLabel = 'Ändra kalkyleringstyp - Eko';\n                break;\n            }\n            eventLabel = 'Ändra kalkyleringstyp - Bästa val';\n            break;\n        default:\n            break;\n    }\n\n    sendInteractionEvent<RecipeEcommerceInteractionGaEvent>({\n        event: 'interaction',\n        eventLabel,\n        eventAction: 'Receptmodal',\n        recipeName,\n        recipeId,\n        portions: portions?.toString() || 'undefined',\n    });\n};\n\nconst sendCustomInteractionEvent = <T extends {}>(eventData: T) => {\n    sendEvent({\n        event: 'interaction',\n        eventCategory: 'Recept',\n        ...eventData,\n    });\n};\n\nconst sendCustomRecipeInteractionEvent = (\n    eventAction: string,\n    eventLabel: string,\n    recipeName: string,\n) => {\n    sendCustomInteractionEvent<RecipeInteractionGaEvent>({\n        event: 'interaction',\n        eventAction,\n        eventLabel,\n        recipeName,\n    });\n};\n\nconst sendRecipeLinkInteractionEvent = (\n    recipeName: string,\n    recipeId: string,\n    portions?: number,\n) => {\n    sendInteractionEvent<RecipeEcommerceInteractionGaEvent>({\n        event: 'interaction',\n        eventLabel: 'Gå till receptsidan',\n        eventAction: 'Receptmodal',\n        recipeName,\n        recipeId,\n        portions: portions?.toString() || 'undefined',\n    });\n};\n\nconst sendSubstituteProductEvent = (\n    recipeName: string,\n    recipeId: string,\n    productId: string,\n    productName: string,\n) => {\n    sendInteractionEvent<RecipeSubstituteProductGaEvent>({\n        event: 'interaction',\n        eventLabel: 'Byt Vara',\n        eventAction: 'Köpklara recept',\n        recipeName,\n        recipeId,\n        productId,\n        productName,\n    });\n};\n\nexport default {\n    modalPopup: sendModalPopupEvent,\n    modalButtonClick: sendModalButtonClickEvent,\n    modalLinkClick: sendModalLinkClickEvent,\n    buyRecipe: sendRecipeBuyInteractionEvent,\n    portionChange: sendRecipePortionChangeInteractionEvent,\n    calculationChange: sendRecipeCalculationInteractionEvent,\n    linkClick: sendRecipeLinkInteractionEvent,\n    substituteProduct: sendSubstituteProductEvent,\n    interaction: sendCustomRecipeInteractionEvent,\n};\n","import currentProductOffers from './currentProductOffers';\nimport dynamicYield from './dynamicYield/dynamicYield';\nimport filter from './filter';\nimport recipes from './recipes';\nimport sustainability from './sustainability';\n\nexport default {\n    sustainability,\n    filter,\n    currentProductOffers,\n    recipes,\n    dynamicYield,\n};\n","import { sendInteractionEvent } from '../utils';\n\ninterface GaSustainabilityOpenPayload {\n    ean: string;\n    name: string;\n    manufacturer: string;\n    price?: number;\n}\n\nconst open = (data: GaSustainabilityOpenPayload) => {\n    sendInteractionEvent({\n        eventLabel: 'Hållbarhetsdeklaration - öppna',\n        product: {\n            id: data.ean,\n            name: data.name,\n            brand: data.manufacturer,\n            price: data.price,\n        },\n    });\n};\n\nexport default {\n    open,\n};\n","import { sendEvent } from '../utils';\n\ninterface FilterGaEvent {\n    event: 'filtrering';\n    eventCategory: 'Filtrering';\n    filterMärkning: string | null;\n    filterVarumärke: string | null;\n}\n\nexport type GaFilterEvents = FilterGaEvent;\n\nconst openFlyin = () => {\n    sendEvent({\n        event: 'interaction',\n        eventCategory: 'Filtrering',\n        eventAction: 'Navigation',\n        eventLabel: 'Start - Alla filter',\n    });\n};\n\nconst closeFlyin = () => {\n    sendEvent({\n        event: 'interaction',\n        eventCategory: 'Filtrering',\n        eventAction: 'Navigation',\n        eventLabel: 'Start - Stänger filter',\n    });\n};\n\nconst clearFilters = (view: string) => {\n    sendEvent({\n        event: 'interaction',\n        eventCategory: 'Filtrering',\n        eventAction: 'Navigation',\n        eventLabel: `Rensa filter - ${view}`,\n    });\n};\n\nconst applyFilter = (selectedFilters: {\n    selectedEnvironmentalLabels?: string[];\n    selectedBrands?: string[];\n}) => {\n    let hasAnyFiltersSelected = false;\n    let markning = null;\n    let varumkare = null;\n\n    if (selectedFilters.selectedEnvironmentalLabels?.length) {\n        const filters: string[] = [];\n        hasAnyFiltersSelected = true;\n\n        selectedFilters.selectedEnvironmentalLabels?.forEach((f) =>\n            filters.push(f.indexOf('onlineEnvironmentalLabels') === -1 ? f : f.split('=')[1]),\n        );\n        markning = filters.join(',');\n    }\n\n    if (selectedFilters.selectedBrands?.length) {\n        const filters: string[] = [];\n        hasAnyFiltersSelected = true;\n\n        selectedFilters.selectedBrands?.forEach((f) =>\n            filters.push(f.indexOf('brand') === -1 ? f : f.split('=')[1]),\n        );\n        varumkare = filters.join(',');\n    }\n\n    const eventPayload: FilterGaEvent = {\n        event: 'filtrering',\n        eventCategory: 'Filtrering',\n        filterMärkning: markning,\n        filterVarumärke: varumkare,\n    };\n\n    if (hasAnyFiltersSelected) {\n        sendEvent(eventPayload);\n    }\n};\n\nexport default {\n    openFlyin,\n    closeFlyin,\n    applyFilter,\n    clearFilters,\n};\n","import { sendInteractionEvent } from '../utils';\n\nconst createSendLoginReminderEvent = (eventLabel: string) => () => {\n    sendInteractionEvent({\n        eventCategory: 'login',\n        eventAction: 'Psst-logga-in-puff',\n        eventLabel,\n    });\n};\n\nexport default {\n    goToLogin: createSendLoginReminderEvent('Logga in'),\n    goToCreateAccount: createSendLoginReminderEvent('Skapa inloggning'),\n    close: createSendLoginReminderEvent('Stäng'),\n};\n","import loginReminderEvents from './loginReminderEvents';\n\nexport default {\n    loginReminder: loginReminderEvents,\n};\n","import { sendEvent } from '../../utils';\n\ntype MatkontoAccountType = 'Matkonto' | 'Matkonto_Credit' | 'Matkonto_Invoice';\n\nconst ACCOUNT_TYPE_TO_TEXT: { [key in MatkontoAccountType]: string } = {\n    Matkonto: 'Debet',\n    Matkonto_Credit: 'Kredit',\n    Matkonto_Invoice: 'Faktura',\n};\n\nconst loginWithBankIdStart = (accountType: MatkontoAccountType) =>\n    sendEvent({\n        event: 'bankId',\n        login: 'bankId',\n        loginService: 'Login - matkonto',\n        loginAttempt: 'Påbörjad',\n        userService: `Matkonto - ${ACCOUNT_TYPE_TO_TEXT[accountType]}`,\n    });\n\nconst loginWithBankIdSuccess = (accountType: MatkontoAccountType) =>\n    sendEvent({\n        event: 'bankId',\n        login: 'bankId',\n        loginService: 'Login - matkonto',\n        loginAttempt: 'Slutförd',\n        userService: `Matkonto - ${ACCOUNT_TYPE_TO_TEXT[accountType]}`,\n    });\n\nexport default {\n    loginWithBankIdStart,\n    loginWithBankIdSuccess,\n};\n","import { isB2BMode } from '../../../utils/b2bUtils';\nimport { sendEvent } from '../../utils';\n\nconst getCustomerSegment = () => {\n    return isB2BMode() ? 'Företag' : 'Privat';\n};\n\nconst showAllPointsHistory = () =>\n    sendEvent({\n        event: 'interaction',\n        eventCategory: 'Poängtrappan',\n        eventAction: 'Poänghistorik',\n        customerSegment: getCustomerSegment(),\n    });\n\nconst showWithdrawnPointsHistory = () =>\n    sendEvent({\n        event: 'interaction',\n        eventCategory: 'Poängtrappan',\n        eventAction: 'Uttagna poäng',\n        customerSegment: getCustomerSegment(),\n    });\n\nconst togglePositiveTransaction = () =>\n    sendEvent({\n        event: 'interaction',\n        eventCategory: 'Poängtrappan',\n        eventAction: 'Utökad flik insamlade poäng',\n        customerSegment: getCustomerSegment(),\n    });\n\nconst toggleNegativeTransaction = () =>\n    sendEvent({\n        event: 'interaction',\n        eventCategory: 'Poängtrappan',\n        eventAction: 'Utökad flik uttagna poäng',\n        customerSegment: getCustomerSegment(),\n    });\n\nexport default {\n    showAllPointsHistory,\n    showWithdrawnPointsHistory,\n    togglePositiveTransaction,\n    toggleNegativeTransaction,\n};\n","import { isB2BMode } from '../../../utils/b2bUtils';\nimport { sendInteractionEvent } from '../../utils';\n\nconst getServiceEventAction = (service: string): string => {\n    // AC name - remove when bloomreach is active\n    const isStoreNewsletter = service.includes('store_');\n    if (isStoreNewsletter) {\n        return 'Butikserbjudanden från Coop';\n    }\n\n    switch (service) {\n        case 'cooNewsletter':\n            return 'Medlemsutskick från Coop'; // AC name - remove when bloomreach is active\n        case 'cooOnline':\n            return 'Nyhetsbrev från Coop'; // AC name - remove when bloomreach is active\n        case 'cooPartnermail':\n            return 'Utskick från Coops medlemsprogram'; // AC name - remove when bloomreach is active\n        case 'cooDRDigital':\n            return 'Veckans reklamblad'; // AC name - remove when bloomreach is active\n        case 'coop_offers':\n            return 'Min Coop-butik';\n        case 'xtra_offers':\n            return 'X:-tra butiker';\n        case 'member_association':\n            return 'Min konsumentförening';\n        case 'membership_program':\n            return 'Coops medlemsprogram';\n        case 'sms':\n            return 'Erbjudanden via SMS';\n        case 'other':\n            return 'Personliga annonser';\n        default:\n            return service;\n    }\n};\n\nconst subscribe = (service: string) => {\n    sendInteractionEvent({\n        eventCategory: 'Mina sidor',\n        eventAction: getServiceEventAction(service),\n        eventLabel: 'På',\n    });\n};\n\nconst unsubscribe = (service: string) => {\n    sendInteractionEvent({\n        eventCategory: 'Mina sidor',\n        eventAction: getServiceEventAction(service),\n        eventLabel: 'Av',\n    });\n};\n\nconst subscribeToWeeklyNewsletter = (page: string, storeName?: string) => {\n    sendInteractionEvent({\n        eventCategory: page,\n        eventAction: 'Inskickad E-postadress DR',\n        eventLabel: storeName,\n        customerSegment: isB2BMode() ? 'Företag' : 'Privat',\n    });\n};\n\nexport default {\n    subscribe,\n    unsubscribe,\n    subscribeToWeeklyNewsletter,\n};\n","import matkonto from './matkonto';\nimport myPoints from './myPoints';\nimport myProfile from './myProfile';\n\nexport default {\n    matkonto,\n    myPoints,\n    myProfile,\n};\n","import { AnalyticsHelper } from '../../../../analytics/analyticsHandler';\nimport { DefaultProductSection } from '../../../../models/ecommerce/product/productSectionModel';\nimport type { OrderReclamationProduct } from '../../../myCoop/orderReclamation/models/OrderReclamationProduct';\nimport type { Order } from '../../models/domain/order';\nimport { orderEntryItemEqualsPredicate } from '../../utils/orderUtils';\nimport { sendEvent } from '../utils';\n\nconst ORDER_RECLAMATION_EVENT_CATEGORY = 'Reklamationsflöde';\nconst REFUND_INTERACTION_EVENT = 'refundInteraction';\nconst REFUND_EVENT = 'refund';\n\ntype OrderReclamationRefundType = 'Återbetalning' | 'Tillgodokvitto';\ntype OrderReclamationProductEvent = {\n    name: string;\n    id: string;\n    variantId?: string;\n    price?: number;\n    brand: string;\n    quantity: number;\n    category: string;\n    refundReason?: string;\n};\n\nconst getStepEventAction = (step: number) => {\n    switch (step) {\n        case -1:\n            return 'Mina beställningar - Reklamation - Påbörjad reklamation';\n        case 0:\n            return 'Steg 1 - Välj varor att Reklamera';\n        case 1:\n            return 'Steg 2 - Ange anledning';\n        case 2:\n            return 'Steg 3 - Välj Kompensation';\n        default:\n            return 'Mina beställningar - Reklamation - Inskickad reklamation';\n    }\n};\n\nconst getNextStepEventAction = (nextStep: number) => {\n    switch (nextStep) {\n        case 1:\n            return 'Gå vidare till Steg 2 - Ange Anledning';\n        case 2:\n            return 'Gå vidare till Steg 3 - Välj kompensation';\n        case 3:\n            return 'Gå vidare - Skicka in';\n        default:\n            return getStepEventAction(nextStep);\n    }\n};\n\nconst sendInitEvent = () => {\n    sendEvent({\n        event: REFUND_INTERACTION_EVENT,\n        eventCategory: ORDER_RECLAMATION_EVENT_CATEGORY,\n        eventAction: getStepEventAction(-1),\n        eventLabel: 'Reklamera vara-knapp',\n        loginStatus: AnalyticsHelper.getLoginStatus(),\n    });\n};\n\nconst sendGoToStepEvent = (currentStep: number, nextStep: number) => {\n    sendEvent({\n        event: REFUND_INTERACTION_EVENT,\n        eventCategory: ORDER_RECLAMATION_EVENT_CATEGORY,\n        eventAction: getStepEventAction(currentStep),\n        eventLabel: getNextStepEventAction(nextStep),\n        loginStatus: AnalyticsHelper.getLoginStatus(),\n    });\n};\n\nconst sendSelectCompensationEvent = (refundType: OrderReclamationRefundType) => {\n    sendEvent({\n        event: REFUND_INTERACTION_EVENT,\n        eventCategory: ORDER_RECLAMATION_EVENT_CATEGORY,\n        eventAction: getStepEventAction(2),\n        refundType,\n        loginStatus: AnalyticsHelper.getLoginStatus(),\n    });\n};\n\nconst sendAddReclamationProductEvent = () => {\n    sendEvent({\n        event: REFUND_INTERACTION_EVENT,\n        eventCategory: ORDER_RECLAMATION_EVENT_CATEGORY,\n        eventAction: getStepEventAction(0),\n        eventLabel: 'Lägg till vara',\n        loginStatus: AnalyticsHelper.getLoginStatus(),\n    });\n};\n\nconst sendRemoveReclamationProductEvent = (currentStep: number) => {\n    sendEvent({\n        event: REFUND_INTERACTION_EVENT,\n        eventCategory: ORDER_RECLAMATION_EVENT_CATEGORY,\n        eventAction: getStepEventAction(currentStep),\n        eventLabel: 'Ta bort vara',\n        loginStatus: AnalyticsHelper.getLoginStatus(),\n    });\n};\n\nconst sendSaveReclamationProductEvent = (refundReason: string) => {\n    sendEvent({\n        event: REFUND_INTERACTION_EVENT,\n        eventCategory: ORDER_RECLAMATION_EVENT_CATEGORY,\n        eventAction: getStepEventAction(1),\n        eventLabel: 'Bekräfta',\n        refundReason,\n        loginStatus: AnalyticsHelper.getLoginStatus(),\n    });\n};\n\nconst sendCancelReclamationProductEvent = (refundReason?: string) => {\n    sendEvent({\n        event: REFUND_INTERACTION_EVENT,\n        eventCategory: ORDER_RECLAMATION_EVENT_CATEGORY,\n        eventAction: getStepEventAction(1),\n        eventLabel: 'Avbryt',\n        refundReason,\n        loginStatus: AnalyticsHelper.getLoginStatus(),\n    });\n};\n\nconst sendCancelOrderReclamationEvent = (eventLabel: string, currentStep: number) => {\n    sendEvent({\n        event: REFUND_INTERACTION_EVENT,\n        eventCategory: ORDER_RECLAMATION_EVENT_CATEGORY,\n        eventAction: getStepEventAction(currentStep),\n        eventLabel: `Avsluta reklamation - ${eventLabel}`,\n        loginStatus: AnalyticsHelper.getLoginStatus(),\n    });\n};\n\nconst sendOrderReclamationSubmittedEvent = (\n    refundType: OrderReclamationRefundType,\n    orderReclamationProducts: OrderReclamationProduct[],\n    productList: ApiProduct[],\n    order: Order,\n) => {\n    const products = orderReclamationProducts\n        .map((product): OrderReclamationProductEvent | null => {\n            const apiProduct = productList.find((pl) => pl.identifier === product.productId);\n\n            if (!apiProduct) {\n                return null;\n            }\n\n            const topSection =\n                apiProduct && apiProduct.sections && apiProduct.sections[0]\n                    ? apiProduct.sections[0][0]\n                    : new DefaultProductSection();\n\n            const orderItem = order.entries.find(orderEntryItemEqualsPredicate(product));\n\n            return {\n                name: apiProduct.name,\n                id: product.productId,\n                variantId: product.variantId,\n                price: orderItem?.totalPrice?.inclTaxPrice,\n                brand: apiProduct.manufacturer,\n                quantity: product.quantity,\n                category: topSection.name,\n                refundReason: product.reclamationReason,\n            };\n        })\n        .filter(Boolean);\n\n    const totalRefundAmount = orderReclamationProducts.reduce(\n        (currentTotal, orderReclamationProduct) => {\n            const orderItem = order.entries.find(\n                orderEntryItemEqualsPredicate(orderReclamationProduct),\n            );\n\n            if (orderItem && orderItem.piecePrice) {\n                return (\n                    currentTotal +\n                    (orderItem.piecePrice.inclTaxPrice || 0) * orderReclamationProduct.quantity\n                );\n            }\n            return currentTotal;\n        },\n        0,\n    );\n\n    sendEvent({\n        event: REFUND_EVENT,\n        eventCategory: ORDER_RECLAMATION_EVENT_CATEGORY,\n        eventAction: getStepEventAction(3),\n        ecommerce: {\n            refund: {\n                products,\n            },\n        },\n        refundType,\n        refundAmount: totalRefundAmount,\n        storeId: order.pointOfService?.storeId || order.store,\n        transactionId: order.code,\n        loginStatus: AnalyticsHelper.getLoginStatus(),\n    });\n};\n\nconst orderReclamationTracking = {\n    init: sendInitEvent,\n    cancel: sendCancelOrderReclamationEvent,\n    goToStep: sendGoToStepEvent,\n    submit: sendSelectCompensationEvent,\n    submitFinished: sendOrderReclamationSubmittedEvent,\n    product: {\n        add: sendAddReclamationProductEvent,\n        remove: sendRemoveReclamationProductEvent,\n        save: sendSaveReclamationProductEvent,\n        cancel: sendCancelReclamationProductEvent,\n    },\n};\n\nexport default orderReclamationTracking;\n","import type { LightSearchRecipe, RecipeCategoryFacet } from '../../../search/models/models';\nimport { sendEvent } from '../utils';\nimport { useRecipeFilterTrackingContext } from './RecipeFilterPageTrackingContextProvider';\n\nconst sendRecipeTeaserClick = ({\n    recipe,\n    recipeComboHit,\n}: {\n    recipe: LightSearchRecipe;\n    recipeComboHit: string;\n}) => {\n    sendEvent({\n        event: 'interaction',\n        eventCategory: 'Receptsidor',\n        eventAction: 'Gå till recept',\n        eventLabel: recipe.name,\n        recipeComboHit,\n    });\n};\n\nconst sendRecipeCategoryInteractionClick = ({\n    recipeCategoryFacet,\n    parentCategoryFacet,\n    recipeComboHit,\n}: {\n    recipeCategoryFacet: RecipeCategoryFacet;\n    parentCategoryFacet: RecipeCategoryFacet;\n    recipeComboHit: string;\n}) => {\n    sendEvent({\n        event: 'interaction',\n        eventCategory: 'Receptsidor',\n        eventAction: 'Tillagd kategori',\n        recipeComboHit: recipeComboHit || undefined,\n        recipeCategory: `${parentCategoryFacet.item}:${recipeCategoryFacet.item}`,\n    });\n};\n\nconst sendRecipeNonInteractionEvent = ({\n    recipeComboHit,\n    recipeHits,\n}: {\n    recipeComboHit: string;\n    recipeHits: number | null;\n}) => {\n    sendEvent({\n        event: 'nonInteraction',\n        eventCategory: 'Dimensioner',\n        eventAction: 'Klar',\n        recipeCombo: recipeComboHit || undefined,\n        recipeHits: recipeHits && recipeHits > 0 ? recipeHits : undefined,\n    });\n};\n\nconst useRecipeFilterPageTracking = () => {\n    const { recipeComboHit } = useRecipeFilterTrackingContext();\n\n    if (recipeComboHit === null) {\n        return null;\n    }\n\n    return {\n        nonInteractionEvent: (data: { recipeHits: number | null }) =>\n            sendRecipeNonInteractionEvent({ ...data, recipeComboHit }),\n\n        categoryLinkClick: (\n            recipeCategoryFacet: RecipeCategoryFacet,\n            parentCategoryFacet: RecipeCategoryFacet,\n        ) =>\n            sendRecipeCategoryInteractionClick({\n                recipeCategoryFacet,\n                parentCategoryFacet,\n                recipeComboHit,\n            }),\n\n        recipeTeaserClick: (recipe: LightSearchRecipe) =>\n            sendRecipeTeaserClick({ recipe, recipeComboHit }),\n    };\n};\n\nexport default {\n    useFilterPageTracking: useRecipeFilterPageTracking,\n};\n","import { ga4PromotionTracking } from '../ga4/promotion';\nimport type { IGaPromoData } from '../models/IGaPromoData';\nimport { getLoginStatus, sendEvent } from '../utils';\n\nconst sendGaGlobalSearchPageNavigationEvent = (formattedSearchResultType: string) => {\n    sendEvent({\n        event: 'interaction',\n        eventCategory: 'Globalt Sök',\n        eventAction: 'Navigering',\n        eventLabel: formattedSearchResultType,\n        loginStatus: getLoginStatus(),\n    });\n};\n\nconst sendGaGlobalSearchOverlayNavigationEvent = (formattedSearchResultType: string) => {\n    sendEvent({\n        event: 'interaction',\n        eventCategory: 'Globalt Sök dropdown',\n        eventAction: 'Navigering',\n        eventLabel: formattedSearchResultType,\n        loginStatus: getLoginStatus(),\n    });\n};\n\nconst sendGaGlobalSearchPagePromoImpressionEvent = (\n    items: { name: string }[],\n    formattedSearchResultType: string,\n) => {\n    items\n        .map<IGaPromoData>((item, index) => ({\n            gaPromoId: 'Intern',\n            gaPromoName: `globalt-sök_${formattedSearchResultType}`,\n            gaPromoCreative: item.name,\n            gaPromoPosition: index.toString(),\n        }))\n        .forEach((promotion) => {\n            ga4PromotionTracking.viewPromotion(promotion);\n        });\n};\n\nconst sendGaGlobalSearchOverlayPromoImpressionEvent = (\n    items: { name: string }[],\n    formattedSearchResultType: string,\n) => {\n    items\n        .map<IGaPromoData>((item, index) => ({\n            gaPromoId: 'Intern',\n            gaPromoName: `globalt-sök_${formattedSearchResultType} dropdown`,\n            gaPromoCreative: item.name,\n            gaPromoPosition: index.toString(),\n        }))\n        .forEach((promotion) => {\n            ga4PromotionTracking.viewPromotion(promotion);\n        });\n};\n\nconst sendGaSearchResultClick = (\n    name: string,\n    position: number,\n    formattedSearchResultType?: string,\n) => {\n    const promotion: IGaPromoData = {\n        gaPromoId: 'Intern',\n        gaPromoName: `globalt-sök_${formattedSearchResultType}`,\n        gaPromoCreative: name,\n        gaPromoPosition: position.toString(),\n    };\n\n    ga4PromotionTracking.selectPromotion(promotion);\n};\nconst sendGaSearchResultOverlayClick = (\n    name: string,\n    position: number,\n    formattedSearchResultType?: string,\n) => {\n    const promotion: IGaPromoData = {\n        gaPromoId: 'Intern',\n        gaPromoName: `globalt-sök_${formattedSearchResultType} dropdown`,\n        gaPromoCreative: name,\n        gaPromoPosition: position.toString(),\n    };\n\n    ga4PromotionTracking.selectPromotion(promotion);\n};\n\nconst searchTracking = {\n    resultsPage: {\n        navigation: sendGaGlobalSearchPageNavigationEvent,\n        promoImpression: sendGaGlobalSearchPagePromoImpressionEvent,\n        resultClick: sendGaSearchResultClick,\n    },\n    overlay: {\n        navigation: sendGaGlobalSearchOverlayNavigationEvent,\n        promoImpression: sendGaGlobalSearchOverlayPromoImpressionEvent,\n        resultClick: sendGaSearchResultOverlayClick,\n    },\n};\n\nexport default searchTracking;\n","import AbTestTracking from './abtest/abTestEvent';\nimport checkoutTracking from './checkout/checkoutEvents';\nimport cncTracking from './cnc/cncEvents';\nimport commonTracking from './common/commonEvents';\nimport timeslotTracking from './contextAware/timeslotEvents';\nimport ecommerce from './ecommerce/ecommerceEvents';\nimport headerEvents from './header/headerEvents';\nimport myCoop from './myCoop';\nimport orderReclamationTracking from './orderReclamation/orderReclamationEvents';\nimport recipe from './recipe/recipeEvents';\nimport searchTracking from './search/searchEvents';\n\nconst gaTracking = {\n    abTest: AbTestTracking,\n    common: commonTracking,\n    header: headerEvents,\n    cnc: cncTracking,\n    checkout: checkoutTracking,\n    contextAware: {\n        timeslots: timeslotTracking,\n    },\n    orderReclamation: orderReclamationTracking,\n    search: searchTracking,\n    myCoop,\n    ecommerce,\n    recipe,\n};\n\nexport default gaTracking;\n","import { Helpers } from '../../../utility/helpers';\nimport type { OrderEntry } from '../models/domain/order';\n\nexport const orderEntryEqualsPredicate =\n    (orderEntry: OrderEntry) => (productId: string, variantId?: string) => {\n        return (\n            orderEntry.product.code === productId &&\n            (!variantId || orderEntry.variance?.code === variantId)\n        );\n    };\n\nexport const orderEntryItemEqualsPredicate =\n    <TItem extends { productId: string; variantId?: string }>(item: TItem) =>\n    (orderEntry: OrderEntry) => {\n        return orderEntryEqualsPredicate(orderEntry)(item.productId, item.variantId);\n    };\n\nexport const convertToFriendlyDateString = (\n    date?: Date,\n    lowerCase = false,\n    comma = false,\n    allowYesterday = false,\n) => {\n    if (!date) return '';\n\n    const weekdays = ['Söndag', 'Måndag', 'Tisdag', 'Onsdag', 'Torsdag', 'Fredag', 'lördag'];\n    const months = [\n        'jan',\n        'feb',\n        'mar',\n        'apr',\n        'maj',\n        'jun',\n        'jul',\n        'aug',\n        'sep',\n        'okt',\n        'nov',\n        'dec',\n    ];\n\n    const day = date.getDate();\n    const weekday = weekdays[date.getDay()];\n    const month = months[date.getMonth()];\n\n    const today: boolean = Helpers.dateIsToday(date);\n    const tommorow: boolean = Helpers.dateIsTomorrow(date);\n    const yesterday: boolean = Helpers.dateIsYesterday(date);\n\n    if (today) {\n        return lowerCase ? 'idag' : 'Idag';\n    }\n\n    if (tommorow) {\n        return lowerCase ? 'imorgon' : 'Imorgon';\n    }\n\n    if (yesterday && allowYesterday) {\n        return lowerCase ? 'igår' : 'Igår';\n    }\n\n    return lowerCase\n        ? `${weekday.toLowerCase()}${comma ? ',' : ''} ${day} ${month}`\n        : `${weekday}, ${day} ${month}`;\n};\n\nexport const convertTimeWindowToFriendlyString = (window: {\n    startTime?: Date;\n    endTime?: Date;\n}): string => {\n    const start = window.startTime;\n    const end = window.endTime;\n\n    let startTime = '';\n\n    if (start) {\n        const sHours = start !== null ? start.getHours().toString().padStart(2, '0') : '00';\n        const sMins = start !== null ? start.getMinutes().toString().padStart(2, '0') : '00';\n\n        startTime = `${sHours}.${sMins}`;\n    }\n\n    let endTime = '';\n\n    if (end) {\n        const eHours = end !== null ? end.getHours().toString().padStart(2, '0') : '00';\n        const eMins = end !== null ? end.getMinutes().toString().padStart(2, '0') : '00';\n\n        endTime = `${eHours}.${eMins}`;\n    }\n\n    return startTime && endTime ? `${startTime}–${endTime}` : '';\n};\n\nexport const orderTimelineStepAccessibleName = (\n    item: { accessibleTitle?: string; description?: string; title: string; checked: boolean },\n    isActive: boolean,\n    orderStatus: OrderStatus,\n) => {\n    const title = item.accessibleTitle || item.title;\n\n    if (isActive) {\n        return `${title} - Pågår. ${item.description || ''}`;\n    }\n    if (item.checked) {\n        return `${title} - ${orderStatus === 'picked' ? 'Klart' : 'Klar'}. ${\n            item.description || ''\n        }`;\n    }\n\n    return `${title}. ${item.description || ''}`;\n};\n"],"names":["MicroAppContextType","MicroAppContext","createContext","microAppContextType","undefined","useMicroAppContext","useContext","useIsInCheckoutMicroApp","context","Checkout","MicroAppContextProvider","props","value","useMemo","microAppType","Provider","children","CncStep","sendGaInteractionClickEvent","eventCategory","eventAction","eventLabel","clickWithCustomerSegment","customerSegment","click","sendGaNavigationInteractionEvent","currRoute","clickedRoute","gaEvent","createNewEvent","window","dispatchEvent","sendGaInteractionWithoutCustomerSegment","category","action","label","sendGaTimeslotInteractionEvent","deliveryMode","additionalData","isHomeDelivery","homedelivery","deliveryModeText","reservationText","gaContextEventFormatted","CnC","getGaFormatTimeslotFunction","timeslotTracking","calendar","prev","next","open","select","timeslot","nextTimeslot","deliveryModePretty","time","timeSlotTime","date","Date","startTime","toLocaleDateString","split","join","hoursUntilNextTimeslot","deliveryDate","deliveryTime","deliveryMethod","nextDelivery","gaProductListDropdownLabel","openProductListDropdown","getSelectedCategories","parentName","categoryFacets","reduce","acc","categoryFacet","selected","newValue","Boolean","item","Array","isArray","categories","getRecipeComboHit","selectedCategoryFacets","Object","entries","childrenStr","length","ValueContext","recipeComboHit","useRecipeFilterTrackingContext","userInteraction","experiment_name","experiment_variant","event","sendHomeDeliveryTabInteractionClick","sendHomeDeliveryBillingTabInteractionClick","sendHomeDeliveryAddressInteractionClick","sendHomeDeliveryEditAddressInteractionClick","sendGaReplacableItemSwitchInteractionClick","sendPickupDeliveryTabInteractionClick","sendPickupDeliveryBillingTabInteractionClick","sendPickupDeliveryAddressInteractionClick","sendPickupDeliveryEditAddressInteractionClick","sendPickupDeliveryAddAddressInteractionClick","sendGaSubscriptionInteractionEvent","week","interval","subscriptionInterval","cart","replaceItems","clickAll","clickProductCheckbox","voucher","add","code","err","campaignCode","saveCart","save","close","delivery","init","tabClick","mode","tab","subscription","start","edit","cancel","cancelConfirm","cancelCancel","pickup","pickupStore","change","contactAddress","flyIn","editClick","back","remove","removeConfirm","removeCancel","create","billingAddress","homeDelivery","deliveryAddress","messageToDriverClick","loginDialog","confirm","editOrder","summary","editOrderTotalPrice","total","editOrderTotalDifference","tidigareBetalt_metric9","truncateDecimalsWithSeparator","replace","POSTAL_CODE_PREVIEW_EVENT_ACTION","POSTAL_CODE_SELECTOR_EVENT_ACTION","MINI_CART_EVENT_ACTION","POPUP_CHANGE_DELIVERY_OPTION","getEventAction","step","Map","TimeSlots","PostalCodeSelector","PostalCodePreview","MiniCart","sendDeliveryOptionEvent","createSendDeliveryOptionEvent","goToZipCode","readMoreExpress","home","zipCode","newStore","deliverySearch","storeId","id","storeName","name","Utbud","seeMore","navigationClose","currentStep","navigationGoBack","goToDeliveryOption","goToTimeslots","goToMap","createSendMiniCartEvent","goToCheckout","startShopping","startEmptyCart","createSendStoreChangeEvent","storeChange","deliveryOption","accept","decline","sendPostalCodeSelectorEvent","sendPostalCodeZipCodeUpdateInteraction","sendOpenCncEvent","hasSelectedZip","zipCodeAlreadyChosen","openFrom","cartIcon","addToCart","noticeRibbonDefaultStore","notification","header","miniCart","selectPostalCode","inputFirst","inputUpdate","address","error","goToCreateLogin","goToLogin","interaction","campaign","selectorName","analyticsData","type","selector_name","campaign_id","campaignId","campaign_name","campaignName","experience_id","experienceId","experience_name","experienceName","variation_id","variationId","variation_name","variationName","modalPopup","recipe","modalTabToDisplay","portions","externalId","recipePart","cookingTime","totalTime","actualCookingTime","amountOfIngredients","curr","ingredients","recipeName","modalName","modalTitle","location","pathname","slugify","recipeId","toString","recipeCookingTime","recipeStartTab","recipePrefilledPortions","recipeAmountOfIngredients","modalButtonClick","modalLinkClick","buyRecipe","portionChange","previousPortions","calculationChange","calculationType","prioritization","linkClick","substituteProduct","productId","productName","eventData","sustainability","data","product","ean","brand","manufacturer","price","filter","openFlyin","closeFlyin","applyFilter","selectedFilters","hasAnyFiltersSelected","markning","varumkare","selectedEnvironmentalLabels","filters","forEach","f","push","indexOf","selectedBrands","eventPayload","clearFilters","view","currentProductOffers","recipes","dynamicYield","createSendLoginReminderEvent","loginReminder","goToCreateAccount","ACCOUNT_TYPE_TO_TEXT","Matkonto","Matkonto_Credit","Matkonto_Invoice","loginWithBankIdStart","accountType","login","loginService","loginAttempt","userService","loginWithBankIdSuccess","getCustomerSegment","getServiceEventAction","service","includes","matkonto","myPoints","showAllPointsHistory","showWithdrawnPointsHistory","togglePositiveTransaction","toggleNegativeTransaction","myProfile","subscribe","unsubscribe","subscribeToWeeklyNewsletter","page","ORDER_RECLAMATION_EVENT_CATEGORY","REFUND_INTERACTION_EVENT","getStepEventAction","getNextStepEventAction","nextStep","loginStatus","getLoginStatus","goToStep","submit","refundType","submitFinished","orderReclamationProducts","productList","order","products","map","apiProduct","find","pl","identifier","topSection","sections","orderItem","variantId","totalPrice","inclTaxPrice","quantity","refundReason","reclamationReason","totalRefundAmount","currentTotal","orderReclamationProduct","piecePrice","ecommerce","refund","refundAmount","pointOfService","store","transactionId","useFilterPageTracking","nonInteractionEvent","recipeHits","recipeCombo","sendRecipeNonInteractionEvent","categoryLinkClick","recipeCategoryFacet","parentCategoryFacet","recipeCategory","sendRecipeCategoryInteractionClick","recipeTeaserClick","sendRecipeTeaserClick","resultsPage","navigation","formattedSearchResultType","promoImpression","items","index","gaPromoId","gaPromoName","gaPromoCreative","gaPromoPosition","promotion","viewPromotion","resultClick","position","selectPromotion","overlay","abTest","common","cnc","checkout","contextAware","timeslots","orderReclamation","search","myCoop","orderEntryItemEqualsPredicate","orderEntry","variance","orderEntryEqualsPredicate","convertToFriendlyDateString","lowerCase","comma","allowYesterday","day","getDate","weekday","getDay","month","getMonth","today","dateIsToday","tommorow","dateIsTomorrow","yesterday","dateIsYesterday","toLowerCase","convertTimeWindowToFriendlyString","end","endTime","getHours","padStart","getMinutes","orderTimelineStepAccessibleName","isActive","orderStatus","title","accessibleTitle","description","checked"],"sourceRoot":""}