{"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":""}