{ "version": 3, "sources": ["../javascripts/shared/tracking.ts", "../javascripts/actions/tracking.ts", "../javascripts/shared/event-context.ts", "../javascripts/utils/string.ts"], "sourcesContent": ["export const softConversionEvents = {\n SOFT_CONVERSION_SHOW_IMAGES: 'imagesClick',\n SOFT_CONVERSION_FULLSCREEN_IMAGES: 'imagesFullscreenClick',\n SOFT_CONVERSION_SHOW_VEHICLE_OPTIONS: 'optionsClick',\n SOFT_CONVERSION_SHOW_VEHICLE_INFORMATION: 'informationClick',\n SOFT_CONVERSIONS_SUBSCRIBED: 'subscribed',\n SOFT_CONVERSIONS_INSURANCE: 'insuranceInterest',\n SOFT_CONVERSIONS_FINANCE: 'financeInterest',\n SOFT_CONVERSIONS_PAYMENT_OPTION: 'paymentOptionClick',\n SOFT_CONVERSIONS_SHARE: 'share',\n SOFT_CONVERSIONS_SHARE_INIT: 'shareInitialized',\n SOFT_CONVERSIONS_SAVE: 'save',\n SOFT_CONVERSIONS_SAVE_INIT: 'saveInitialized',\n SOFT_CONVERSIONS_ITEM_DEALER_MAP_CLICK: 'showDealerMap',\n SOFT_CONVERSIONS_ITEM_DEALER_ADDRESS_CLICK: 'outboundLinkGoogleMaps',\n SOFT_CONVERSIONS_ITEM_DEALER_PAGE_CLICK: 'linkClickToDealerPage',\n SOFT_CONVERSIONS_ITEM_DEALER_READ_MORE_CLICK: 'dealerContentReadMore',\n SOFT_CONVERSIONS_ITEM_PROPERTIES_TAB: 'carDetailTab',\n SOFT_CONVERSIONS_TAB_CLICK: 'tabClick',\n SOFT_CONVERSIONS_ITEM_PROPERTIES_TAB_FILTER_SEARCH: 'propertiesFilterSearch',\n SOFT_CONVERSIONS_ITEM_EQUIPMENT_FILTER_SEARCH: 'equipmentFilterSearch',\n};\n\nexport const conversionEvents = {\n CONVERSION_MAIL_SENT: 'mail-sent',\n CONVERSION_MESSAGE_SENT: 'message-sent',\n CONVERSION_PHONENUMBER_CALL: 'phonenumber-call',\n CONVERSION_CHAT_STARTED: 'chat-started',\n CONVERSION_MAIL_VISIBLE: 'mail-visible',\n CONVERSION_PHONENUMBER_VISIBLE: 'phonenumber-visible',\n CONVERSION_ACTION_AUCTION_CLICK: 'action-auction-click',\n CONVERSION_ECOM_ORDER_CREATED: 'car-reservation',\n PHONENUMBER_VISIBLE_RETAILER: 'phonenumber-visible-retailer',\n MAIL_VISIBLE_RETAILER: 'mail-visible-retailer',\n MESSAGE_INITIATED_RETAILER: 'message-initiated-retailer',\n OUTBOUNDLINK_RETAILER: 'outbountlink-retailer',\n LOGIN_MODULE_IN_VIEWPORT: 'inViewport',\n LOGIN_MODULE_CLICK_LOGIN: 'clickLogin',\n SELL_TO_DEALER_START_APPLICATION: 'startApplication',\n};\n\nexport const interactionEventType = {\n SAVE_OBJECT: 'Save object',\n SAVE_OBJECT_IN_SEARCH_RESULT: 'Save object in search result',\n MESSAGE_DEALER: 'Message dealer',\n SAVE_SEARCH_RESULT: 'Save search result',\n SAVE_CATEGORY: 'Save category',\n SELL_TO_DEALER: 'Sell to dealer',\n START_APPLICATION: 'Start application',\n};\n\nexport const conversionType = {\n LINK_CLICK: 'linkClick',\n OUTBOUND_CLICK: 'outboundClick',\n};\n\nexport const otherEvents = {\n MESSAGE_INITATED: 'message-initiated',\n MESSAGE_MODAL_CLOSE: 'message-modal-close',\n CONVERSION_PHONENUMBER_CALL_RETAILER: 'phonenumber-call-retailer',\n CONVERSION_MAIL_SENT_RETAILER: 'mail-sent-retailer',\n};\n\nexport const eventTypes = {\n HAS_REGISTERED: 'hasRegistered',\n ITEM_VIEWED: 'view',\n PAGE_VIEW: 'pageview',\n ITEM_EXPOSED: 'exposure',\n CONVERSION: 'conversion',\n SOFT_CONVERSION: 'microConversion',\n SEARCH: 'search',\n NAVIGATION: 'navigation',\n SUBSCRIBED: 'subscribed',\n SHOWN_INTEREST: 'shownInterest',\n PRODUCT_CLICK: 'productClick',\n OTHER: 'other',\n CAR_DETAIL: 'carDetail',\n CAR_DETAIL_NAVIGATION: 'carDetailNavigation',\n LOGIN_MODULE: 'loginModule',\n SELL_TO_DEALER: 'sellToDealer',\n};\n\nexport const assignmentEvents = {\n INIT: 'assignmentInitiated',\n RESUME: 'assignmentResume',\n PREVIEW: 'assignmentPreview',\n COMPLETED: 'assignmentCompleted',\n REMOVE: 'assignmentRemove',\n SAVE_DRAFT: 'assignmentSaveDraft',\n LOAD_DRAFT: 'assignmentLoadDraft',\n UPDATE_DRAFT: 'assignmentUpdateDraft',\n};\n\nexport const creditApplicationEvents = {\n INIT: 'creditApplicationInitiated',\n SUBMITTED: 'creditApplicationSubmitted',\n};\n\nexport const heroEvents = {\n HERO_LINK_CLICK: 'heroLinkClick',\n HERO_LINK_SECONDARY_CLICK: 'heroLinkSecondaryClick',\n};\n\nexport const GuaranteeEvents = {\n MANUFACTURER_PACKAGE_BANNER_CLICK: 'manufacturerPackageBannerClick',\n MANUFACTURER_PACKAGE_MODAL_SHOW: 'manufacturerPackageModalShow',\n MANUFACTURER_PACKAGE_MODAL_READ_MORE: 'manufacturerPackageModalReadMore',\n MANUFACTURER_PACKAGE_PAGE_VIEW: 'manufacturerPackagePageView',\n MANUFACTURER_PACKAGE_PAGE_READ_MORE: 'manufacturerPackagePageReadMore',\n MANUFACTURER_PACKAGE_PAGE_GO_TO_SEARCH: 'manufacturerPackagePageGotoSearch',\n MRF_PACKAGE_PAGE_VIEW: 'mrfPackagePageView',\n GUARANTEE_INTERACTION: 'guaranteeInteraction',\n};\n\nexport const ContentEvents = {\n NEWS_ITEM_SEARCH_MATCHED: 'newsItemSearchMatched',\n NEWS_ITEM_SEARCH_PAGING_CLICK: 'newsItemSearchPagingClick',\n NEWS_ITEM_SEARCH_SHOW_MORE: 'newsItemSearchShowMore',\n NEWS_ITEM_EXPOSURE: 'newsItemExposure',\n NEWS_ITEM_VIEW: 'newsItemView',\n NEWS_ITEM_SHARE: 'newsItemShare',\n};\n\nexport const EcomEvents = {\n ECOM_INFO_CLICK: 'ecomInfoModalClick',\n ECOM_BUTTON_CLICK: 'ecomButtonClick',\n ECOM_MODAL_INTERNAL_EVENT: 'ecomModalInternalEvent',\n};\n\nexport const ElectricCostEvents = {\n CHARGING_COST_PARAMETER_CHANGE: 'chargingCostParameterChange',\n CHARGING_COST_CUSTOMIZE_CLICK: 'chargingCostCustomizeClick',\n CHARGING_COST_DETAILS_CLICK: 'chargingCostDetailsClick',\n};\n\nexport const LiveShopping = {\n LIVE_SHOPPING_INTERACTION: 'liveshoppingInteraction',\n};\n\nexport const ValuationEvents = {\n MY_VEHICLE_VALUATION_SIGN_IN_MODAL: 'myVehicleValuationSignInModal',\n MY_VEHICLE_VALUATION_INIT: 'myVehicleValuationInit',\n MY_VEHICLE_VALUATION_COMPLETED: 'myVehicleValuationCompleted',\n MY_VEHICLE_SAVE: 'myVehicleSave',\n MY_VEHICLE_DELETE: 'myVehicleDelete',\n MY_VEHICLE_VALUATION_INFORMATION_CLICK: 'myVehicleValuationInformationClick',\n MY_VEHICLE_VALUATION_PARAMETER_CHANGE: 'myVehicleValuationParameterChange',\n};\n", "import type { Dispatch } from '@reduxjs/toolkit';\nimport Cookies from 'cookies-js';\nimport { formatISO } from 'date-fns';\nimport type { SubscriptionSearch } from '../@types/AdvertismentSubscription';\nimport type { ElasticSearchResponse } from '../@types/ElasticSearchResponse';\nimport type { ElasticRetailerInfo, ElasticVehicle } from '../@types/ElasticVehicle';\nimport type { InsuranceProviderResponse } from '../@types/Insurance';\nimport type { Retailer } from '../@types/Retailer';\nimport type { Vehicle } from '../@types/Vehicle';\nimport type { Assignment } from '../@types/assignment';\nimport type { DetailedVehicle } from '../@types/detailed-vehicle';\nimport type Item from '../@types/item';\nimport type { RetailerInfo } from '../@types/item';\nimport type { PropertyTab } from '../@types/tracking';\nimport type { RootState } from '../reducers';\nimport EventContext from '../shared/event-context';\nimport {\n ElectricCostEvents,\n assignmentEvents,\n conversionEvents,\n eventTypes,\n interactionEventType,\n otherEvents,\n softConversionEvents,\n} from '../shared/tracking';\nimport { trackWithUser, trackerHub, trackerHubInstant } from '../utils';\nimport { isString } from '../utils/string';\nimport { COOKIE_CENTRAL_STORAGE } from './retailer';\n\ntype SoftConversionType = {\n id: string | null;\n tracked: string[];\n shareTracked: string[];\n};\n\nconst source = 'web';\nconst __current_search: { [key: string]: number | undefined } = {};\nconst __softConversion: SoftConversionType = {\n id: null,\n tracked: [],\n shareTracked: [],\n};\n\nconst getSearchSortOption = (response: ElasticSearchResponse) => {\n let sortOption = null;\n if (response.documentList && response.documentList.sortOptions) {\n sortOption = response.documentList.sortOptions\n .filter((so) => so.selected)\n .map((so) => so.query)[0];\n }\n return sortOption;\n};\n\nconst createUrlParams = (params: string) => (params ? { urlParameters: params } : {});\n\nconst createConversionType = (conversionType: string | null | undefined) =>\n isString(conversionType) ? { conversionType } : {};\n\nconst createSearchTimingObject = (params: string) =>\n (__current_search[JSON.stringify(params)] = new Date().getTime());\n\nconst createSearchTimingValue = (params: string) => {\n const v = __current_search[JSON.stringify(params)];\n\n return v ? new Date().getTime() - v : -1;\n};\n\nconst createSearchStats = (_params: string, response: ElasticSearchResponse) =>\n response.stats ? response.stats : {};\n\nexport const createSearchData = (\n params: string,\n response: ElasticSearchResponse,\n newsItemSearchMatchedId: string | null = null,\n) =>\n response\n ? {\n ...createSearchStats(params, response),\n searchRequestTimeInMillis: createSearchTimingValue(params),\n sortOption: getSearchSortOption(response),\n newsItemSearchMatchedId,\n }\n : {};\n\ninterface MapCentralStorageBranch {\n id: string | undefined;\n city: string | null;\n latitude: number | null;\n longitude: number | null;\n name: string | null;\n connectedBranches: never[];\n isCentralStorage: boolean;\n}\n\nconst mapCentralStorageBranch = (\n item: DetailedVehicle | ElasticVehicle | Item,\n): MapCentralStorageBranch | null => {\n const id = Cookies.get(COOKIE_CENTRAL_STORAGE);\n\n const branch =\n id &&\n (item as ElasticVehicle | Item)?.branches?.[0]?.connectedBranches?.find((x) => x.id === id);\n\n if (branch) {\n return {\n id: branch?.id,\n city: branch?.position?.city ? branch.position.city : null,\n latitude: branch?.position?.location?.lat ? branch.position.location.lat : null,\n longitude: branch?.position?.location?.lon ? branch.position.location.lon : null,\n name: branch?.name || null,\n connectedBranches: [],\n isCentralStorage: false,\n };\n }\n return null;\n};\n\nconst mapLeasingDetails = (\n branch: MapCentralStorageBranch | ElasticRetailerInfo | RetailerInfo | { name: string } | null,\n item: ElasticVehicle | DetailedVehicle | Item,\n) => {\n const leasingPromos = (item as ElasticVehicle | Item).leasingPromos?.[0];\n return leasingPromos\n ? {\n leasing: true,\n 'service-agreement': leasingPromos.serviceIncluded,\n 'dealer-car-insurance': leasingPromos.insuranceIncluded,\n 'other-services': leasingPromos.description,\n ...branch,\n }\n : branch;\n};\n\nexport const mapVehicleData = (\n item: ElasticVehicle | DetailedVehicle | Item | null | undefined,\n overrideBranch = false,\n) => {\n if (!item) {\n return null;\n }\n\n let branches: string[] | null = null;\n let branchDetails: any[] | null = null;\n\n if (overrideBranch && mapCentralStorageBranch(item)) {\n const branch = mapCentralStorageBranch(item);\n branches = branch?.id ? [branch.id] : [];\n branchDetails = [mapLeasingDetails(branch, item)];\n } else {\n branches = ((item as ElasticVehicle | Item)?.branches || []).map((b) => b.id);\n branchDetails = (\n (item as ElasticVehicle | Item)?.branches || [\n {\n name: 'private',\n },\n ]\n ).map((b) => mapLeasingDetails(b, item));\n }\n\n return {\n id: (item as Item)._id || (item as ElasticVehicle | Item)?.id,\n manufacturer: item.manufacturer,\n model: item.modelSeries,\n price: (item as ElasticVehicle | Item)?.price,\n manufactureYear: item.manufactureYear,\n fuelType: item.fuelType,\n mileage: item.mileage,\n odometerReading: (item as ElasticVehicle | Item)?.odometerReading,\n gearboxType: item.gearboxType,\n horsepower: item.enginePower || null,\n segment: (item.properties || { segment: null }).segment,\n branches,\n branchDetails,\n financialOptions:\n ((item as ElasticVehicle | Item)?.financialOptions &&\n (item as ElasticVehicle | Item)?.financialOptions.length > 0 &&\n ((item as ElasticVehicle | Item)?.financialOptions || []).map(\n (f) => f.financialInstitution,\n )) ||\n null,\n insuranceOptions:\n ((item as ElasticVehicle | Item)?.insuranceOptions &&\n (item as ElasticVehicle | Item)?.insuranceOptions.length > 0 && [\n (item as ElasticVehicle | Item)?.insuranceOptions[0].institute,\n ]) ||\n null,\n sellerType:\n (item as ElasticVehicle | Item)?.sellerType ||\n ((item as ElasticVehicle | Item)?.branches && 'dealer') ||\n 'private',\n };\n};\n\nconst mapRetailerDetails = (item: Retailer | null) => {\n return {\n branchDetails: [\n {\n id: item && item.id,\n city: item && item.position && item.position.city,\n latitude: item && item.position && item.position.location && item.position.location.lat,\n longitude: item && item.position && item.position.location && item.position.location.lon,\n name: item && item.name,\n slug: item && item.slug,\n },\n ],\n branches: item?.id ? [item.id] : [],\n };\n};\n\ninterface EventV2Data {\n eventType: any;\n searchData?: any;\n item?: any;\n params?: any;\n _pageType?: any;\n conversionType?: string | null;\n information?: any;\n list?: any;\n newsItemId?: any;\n newsItemName?: any;\n newsItemSearchMatchedId?: any;\n spreadable?: { [key: string]: any };\n}\n\nconst eventV2 = (data: EventV2Data) => (_dispatch: Dispatch, getState: () => RootState) =>\n trackerHub(\n trackWithUser(getState(), {\n eventType: data.eventType,\n source,\n ...createConversionType(data.conversionType || null),\n url: location.href,\n ...createUrlParams(data.params || null),\n eventTimestamp: formatISO(new Date()),\n list: data.list || null,\n item: data.item,\n searchData: data.searchData,\n information: data.information || null,\n newsItemId: data.newsItemId || null,\n newsItemName: data.newsItemName || null,\n newsItemSearchMatchedId: data.newsItemId,\n pageType: EventContext.pageType,\n ...(data.spreadable || {}),\n }),\n );\n\nconst event =\n (\n eventType: string,\n searchData: any,\n item: any,\n params: any = null,\n _pageType: any = null,\n conversionType: string | null = null,\n information: any = null,\n list: any = null,\n newsItemId: any = null,\n newsItemName: any = null,\n newsItemSearchMatchedId: any = null,\n spreadable: any = null,\n ) =>\n (_dispatch: Dispatch, getState: () => RootState) =>\n trackerHub(\n trackWithUser(getState(), {\n eventType,\n source,\n ...createConversionType(conversionType),\n url: location.href,\n ...createUrlParams(params),\n eventTimestamp: formatISO(new Date()),\n list,\n item,\n searchData,\n information,\n newsItemId,\n newsItemName,\n newsItemSearchMatchedId,\n pageType: EventContext.pageType,\n ...spreadable,\n }),\n );\n\nconst eventInstant =\n (\n eventType: string,\n searchData: any,\n item: any,\n params: any = null,\n _pageType: any = null,\n conversionType: string | null = null,\n information: any = null,\n list: any = null,\n newsItemId: any = null,\n newsItemName: any = null,\n newsItemSearchMatchedId: any = null,\n spreadable: any = null,\n ) =>\n (_dispatch: Dispatch, getState: () => RootState) =>\n trackerHubInstant(\n trackWithUser(getState(), {\n eventType,\n source,\n ...createConversionType(conversionType),\n url: location.href,\n ...createUrlParams(params),\n eventTimestamp: formatISO(new Date()),\n list,\n item,\n searchData,\n information,\n newsItemId,\n newsItemName,\n newsItemSearchMatchedId,\n pageType: EventContext.pageType,\n ...spreadable,\n }),\n );\n\nconst ifCookieNotSet = (cookieName: string, value: boolean) => (actionIfNotSet: () => void) => {\n const cookie = Cookies.get(cookieName) || false;\n\n if (cookie) return;\n\n Cookies.set(cookieName, value, {\n path: '/',\n });\n\n actionIfNotSet();\n};\n\n/** START WD-2428 **/\n\nconst trackLoginModule =\n (conversionType: string, interactionType: string) =>\n (dispatch: Dispatch, getState: () => RootState) =>\n event(\n eventTypes.LOGIN_MODULE,\n null,\n null,\n null,\n null,\n conversionType,\n null,\n null,\n null,\n null,\n null,\n {\n interactionType,\n },\n )(dispatch, getState);\n\nconst trackLoginModuleInstant =\n (conversionType: string, interactionType: string) =>\n (dispatch: Dispatch, getState: () => RootState) =>\n eventInstant(\n eventTypes.LOGIN_MODULE,\n null,\n null,\n null,\n null,\n conversionType,\n null,\n null,\n null,\n null,\n null,\n {\n interactionType,\n },\n )(dispatch, getState);\n\n// Popup-rutan \u00E4r synlig\nconst trackLoginModuleInViewport =\n (interactionType: string) => (dispatch: Dispatch, getState: () => RootState) =>\n trackLoginModule(conversionEvents.LOGIN_MODULE_IN_VIEWPORT, interactionType)(\n dispatch,\n getState,\n );\n\nexport const trackLoginModuleInViewportSaveObject =\n () => (dispatch: Dispatch, getState: () => RootState) =>\n trackLoginModuleInViewport(interactionEventType.SAVE_OBJECT)(dispatch, getState);\n\nexport const trackLoginModuleInViewportSaveObjectInSearchResult =\n () => (dispatch: Dispatch, getState: () => RootState) =>\n trackLoginModuleInViewport(interactionEventType.SAVE_OBJECT_IN_SEARCH_RESULT)(\n dispatch,\n getState,\n );\n\nexport const trackLoginModuleInViewportMessageDealer =\n () => (dispatch: Dispatch, getState: () => RootState) =>\n trackLoginModuleInViewport(interactionEventType.MESSAGE_DEALER)(dispatch, getState);\n\nexport const trackLoginModuleInViewportSaveSearchResult =\n () => (dispatch: Dispatch, getState: () => RootState) =>\n trackLoginModuleInViewport(interactionEventType.SAVE_SEARCH_RESULT)(dispatch, getState);\n\nexport const trackLoginModuleInViewportSaveCategory =\n () => (dispatch: Dispatch, getState: () => RootState) =>\n trackLoginModuleInViewport(interactionEventType.SAVE_CATEGORY)(dispatch, getState);\n\nexport const trackLoginModuleInViewportSellToDealer =\n () => (dispatch: Dispatch, getState: () => RootState) =>\n trackLoginModuleInViewport(interactionEventType.SELL_TO_DEALER)(dispatch, getState);\n\n// Klick p\u00E5 Logga in i popup-rutan\nconst trackLoginModuleClickLogin =\n (interactionType: string) => (dispatch: Dispatch, getState: () => RootState) =>\n trackLoginModuleInstant(conversionEvents.LOGIN_MODULE_CLICK_LOGIN, interactionType)(\n dispatch,\n getState,\n );\n\nexport const trackLoginModuleClickLoginSaveObject =\n () => (dispatch: Dispatch, getState: () => RootState) =>\n trackLoginModuleClickLogin(interactionEventType.SAVE_OBJECT)(dispatch, getState);\n\nexport const trackLoginModuleClickLoginSaveObjectInSearchResult =\n () => (dispatch: Dispatch, getState: () => RootState) =>\n trackLoginModuleClickLogin(interactionEventType.SAVE_OBJECT_IN_SEARCH_RESULT)(\n dispatch,\n getState,\n );\n\nexport const trackLoginModuleClickLoginMessageDealer =\n () => (dispatch: Dispatch, getState: () => RootState) =>\n trackLoginModuleClickLogin(interactionEventType.MESSAGE_DEALER)(dispatch, getState);\n\nexport const trackLoginModuleClickLoginSaveSearchResult =\n () => (dispatch: Dispatch, getState: () => RootState) =>\n trackLoginModuleClickLogin(interactionEventType.SAVE_SEARCH_RESULT)(dispatch, getState);\n\nexport const trackLoginModuleClickLoginSaveCategory =\n () => (dispatch: Dispatch, getState: () => RootState) =>\n trackLoginModuleClickLogin(interactionEventType.SAVE_CATEGORY)(dispatch, getState);\n\nexport const trackLoginModuleClickLoginSellToDealer =\n () => (dispatch: Dispatch, getState: () => RootState) =>\n trackLoginModuleClickLogin(interactionEventType.SELL_TO_DEALER)(dispatch, getState);\n\n// S\u00E4lj till handlare\nconst trackSellToDelaer =\n (conversionType: string, interactionType: string) =>\n (dispatch: Dispatch, getState: () => RootState) =>\n event(\n eventTypes.SELL_TO_DEALER,\n null,\n null,\n null,\n null,\n conversionType,\n null,\n null,\n null,\n null,\n null,\n {\n interactionType,\n },\n )(dispatch, getState);\n\nexport const trackSellToDelaerStartApplication =\n () => (dispatch: Dispatch, getState: () => RootState) =>\n trackSellToDelaer(\n conversionEvents.SELL_TO_DEALER_START_APPLICATION,\n interactionEventType.START_APPLICATION,\n )(dispatch, getState);\n\n/** END WD-2428 **/\n\nexport const trackPageViewEvent =\n (item?: any, spreadable = {}) =>\n (dispatch: Dispatch, getState: () => RootState) => {\n const spread = {\n ...spreadable,\n documentTitle: document.title,\n };\n\n return event(\n eventTypes.PAGE_VIEW,\n null,\n item ? mapVehicleData(item) : null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n spread,\n )(dispatch, getState);\n };\n\nexport const trackViewEvent =\n (item: Item, spreadable: any = {}) =>\n (dispatch: Dispatch, getState: () => RootState) =>\n event(\n eventTypes.ITEM_VIEWED,\n null,\n mapVehicleData(item),\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n spreadable,\n )(dispatch, getState);\n\nexport const trackExposureEvent =\n (item: ElasticVehicle | null, params: string, index: number, list: string | undefined) =>\n (dispatch: Dispatch, getState: () => RootState) =>\n event(\n eventTypes.ITEM_EXPOSED,\n null,\n mapVehicleData(item),\n params,\n null,\n null,\n { index },\n list,\n )(dispatch, getState);\n\nexport const trackConversionEvent =\n (item: Item | Retailer | null, conversionType: string, spreadable: any = {}) =>\n (dispatch: Dispatch, getState: () => RootState) =>\n event(\n eventTypes.CONVERSION,\n null,\n conversionType === otherEvents.CONVERSION_MAIL_SENT_RETAILER ||\n conversionType === otherEvents.CONVERSION_PHONENUMBER_CALL_RETAILER\n ? mapRetailerDetails(item as Retailer)\n : mapVehicleData(item as Item, true),\n null,\n null,\n conversionType,\n null,\n null,\n null,\n null,\n null,\n spreadable,\n )(dispatch, getState);\n\nexport const trackSoftConversionEvent =\n (item: Item | ElasticVehicle | null, conversionType: string, information: any = null) =>\n (dispatch: Dispatch, getState: () => RootState) => {\n const shouldTrackShareEvent =\n conversionType === softConversionEvents.SOFT_CONVERSIONS_SHARE &&\n !__softConversion.shareTracked.includes(information?.target);\n\n if (item && item?.id !== __softConversion.id) {\n __softConversion.id = item.id;\n __softConversion.tracked = [];\n event(eventTypes.SHOWN_INTEREST, null, mapVehicleData(item), null)(dispatch, getState);\n }\n\n if (!__softConversion.tracked.includes(conversionType) || shouldTrackShareEvent) {\n event(\n eventTypes.SOFT_CONVERSION,\n null,\n mapVehicleData(item),\n null,\n null,\n conversionType,\n information,\n )(dispatch, getState);\n __softConversion.tracked.push(conversionType);\n\n if (shouldTrackShareEvent) {\n __softConversion.shareTracked.push(information.target);\n }\n }\n };\n\nexport const trackSoftConversionEventInsurance =\n (\n item: Item | null,\n provider: InsuranceProviderResponse,\n conversionType: string,\n information: any = null,\n ) =>\n (dispatch: Dispatch, getState: () => RootState) => {\n const shouldTrackShareEvent =\n conversionType === softConversionEvents.SOFT_CONVERSIONS_SHARE &&\n !__softConversion.shareTracked.includes(information?.target);\n\n if (!__softConversion.tracked.includes(conversionType) || shouldTrackShareEvent) {\n const vehicleData = mapVehicleData(item);\n vehicleData!.insuranceOptions = {\n institute: provider.institute,\n identifier: provider.identifier,\n } as unknown as string[];\n event(\n eventTypes.SOFT_CONVERSION,\n null,\n vehicleData,\n null,\n null,\n conversionType,\n information,\n )(dispatch, getState);\n __softConversion.tracked.push(conversionType);\n\n if (shouldTrackShareEvent) {\n __softConversion.shareTracked.push(information.target);\n }\n }\n };\n\ntype ShownInterestInsuranceType = {\n id: string | null;\n};\n\nconst __shownInterestInsurance: ShownInterestInsuranceType = {\n id: null,\n};\n\nexport const trackShownInterestInsurance =\n (item: Item | null, provider: InsuranceProviderResponse) =>\n (dispatch: Dispatch, getState: () => RootState) => {\n const vehicleData = mapVehicleData(item);\n\n vehicleData!.insuranceOptions = {\n institute: provider.institute,\n identifier: provider.identifier,\n } as unknown as string[];\n if (item && item.id !== __shownInterestInsurance.id && item.id !== __softConversion.id) {\n __shownInterestInsurance.id = item.id;\n event(eventTypes.SHOWN_INTEREST, null, vehicleData, null)(dispatch, getState);\n }\n };\n\nexport const beginSearchEvent = (params: string) => createSearchTimingObject(params);\n\nexport const trackSearchEvent =\n (params: string, searchResponse: ElasticSearchResponse) =>\n (dispatch: Dispatch, getState: () => RootState) =>\n event(\n eventTypes.SEARCH,\n createSearchData(params, searchResponse),\n null,\n params,\n )(dispatch, getState);\n\nexport const trackRoutingEvent =\n (params: { path: string | undefined; from: string | undefined }) =>\n (dispatch: Dispatch, getState: () => RootState) =>\n event(eventTypes.NAVIGATION, null, null, null, null, null, params)(dispatch, getState);\n\nexport const trackAddSubscription =\n (subscription: SubscriptionSearch, searchResults: RootState['search'] | undefined) =>\n (dispatch: Dispatch, getState: () => RootState) =>\n event(eventTypes.SUBSCRIBED, null, null, null, null, null, {\n subscription,\n numberOfHits: searchResults?.documentList?.numberOfHits,\n })(dispatch, getState);\n\ninterface ExtendedAssignmentVehicle extends Vehicle {\n position?: {\n city?: string | null;\n location: {\n lan: string | number | null;\n lon: string | number | null;\n };\n zip?: string;\n };\n}\n\nexport const trackAssignmentEvent =\n (eventType: string, data: ExtendedAssignmentVehicle, spreadable?: any) =>\n (_dispatch: Dispatch, getState: () => RootState) =>\n eventV2({\n eventType,\n information: data,\n spreadable,\n })(_dispatch, getState);\n\nexport const trackClickItemEvent =\n (item: ElasticVehicle, index: number, list: string | undefined) =>\n (dispatch: Dispatch, getState: () => RootState) =>\n event(\n eventTypes.PRODUCT_CLICK,\n null,\n mapVehicleData(item),\n null,\n null,\n null,\n { index },\n list,\n )(dispatch, getState);\n\nexport const trackRegistrationEvent = () => (dispatch: Dispatch, getState: () => RootState) =>\n ifCookieNotSet(\n eventTypes.HAS_REGISTERED,\n true,\n )(() => event('registration', null, null, null, null, null, null)(dispatch, getState));\n\nexport const trackOtherEvent =\n (retailer: Retailer | null, eventType: string) =>\n (dispatch: Dispatch, getState: () => RootState) => {\n return event(\n eventTypes.OTHER,\n null,\n null,\n null,\n null,\n eventType,\n null,\n null,\n null,\n null,\n null,\n {\n branch: {\n id: retailer?.id,\n },\n },\n )(dispatch, getState);\n };\n\nexport const trackSafetyAddons =\n (\n eventType: string,\n item: Item,\n data: { safetyAddon: { origin: 'conversation' } } | null = null,\n ) =>\n (dispatch: Dispatch, getState: () => RootState) =>\n event(eventType, null, { ...mapVehicleData(item, true), ...data }, null)(dispatch, getState);\n\nexport const trackCreditApplicationEvent =\n (eventType: string, item: Item | null, data: any) =>\n (dispatch: Dispatch, getState: () => RootState) =>\n event(eventType, null, { ...mapVehicleData(item, true), ...data }, null)(dispatch, getState);\n\ninterface TrackDefaultEventInformation {\n callToActionTitle?: string;\n callToActionUrl?: string;\n}\n\nexport const trackDefaultEvent =\n (eventType: string, information: TrackDefaultEventInformation) =>\n (dispatch: Dispatch, getState: () => RootState) =>\n event(eventType, null, null, null, null, null, information)(dispatch, getState);\n\nexport const trackEcomEvent =\n (eventType: string, eventInformation: string | null, item: Item | null) =>\n (dispatch: Dispatch, getState: () => RootState) =>\n event(\n eventType,\n null,\n mapVehicleData(item),\n null,\n null,\n null,\n eventInformation,\n )(dispatch, getState);\n\nexport const trackPropertyTabFirstClick =\n (item: DetailedVehicle | Item | null | undefined, tab: PropertyTab) =>\n (dispatch: Dispatch, getState: () => RootState) => {\n event(\n eventTypes.CAR_DETAIL_NAVIGATION,\n null,\n mapVehicleData(item),\n null,\n null,\n softConversionEvents.SOFT_CONVERSIONS_TAB_CLICK,\n tab,\n )(dispatch, getState);\n event(\n eventTypes.SHOWN_INTEREST,\n null,\n mapVehicleData(item),\n null,\n null,\n softConversionEvents.SOFT_CONVERSIONS_ITEM_PROPERTIES_TAB,\n )(dispatch, getState);\n };\n\nexport const trackPropertyTabClick =\n (item: Item | DetailedVehicle | null | undefined, tab: PropertyTab) =>\n (dispatch: Dispatch, getState: () => RootState) =>\n event(\n eventTypes.SOFT_CONVERSION,\n null,\n mapVehicleData(item),\n null,\n null,\n softConversionEvents.SOFT_CONVERSION_SHOW_VEHICLE_INFORMATION,\n tab,\n )(dispatch, getState);\n\ninterface TrackData {\n searchData?: any | null;\n item?: any | null;\n params?: any | null;\n conversionType?: any | null;\n information?: any | null;\n list?: any | null;\n newsItemId?: any | null;\n newsItemName?: any | null;\n newsItemSearchMatchedId?: any | null;\n spreadable?: any | null;\n}\n\nexport const track =\n (\n eventType: string,\n {\n searchData = null,\n item = null,\n params = null,\n conversionType = null,\n information = null,\n list = null,\n newsItemId = null,\n newsItemName = null,\n newsItemSearchMatchedId = null,\n spreadable = null,\n }: TrackData,\n ) =>\n (dispatch: Dispatch, getState: () => RootState) => {\n event(\n eventType,\n searchData,\n item,\n params,\n null,\n conversionType,\n information,\n list,\n newsItemId,\n newsItemName,\n newsItemSearchMatchedId,\n spreadable,\n )(dispatch, getState);\n };\n\ninterface TrackAssignmentRemoval {\n information: Assignment & {\n reason: string;\n timeUntilSold: string;\n };\n}\n\nexport const trackAssignmentRemoval = (spreadable: TrackAssignmentRemoval) =>\n track(assignmentEvents.REMOVE, { spreadable });\n\ninterface TrackChargingCostParameterChange {\n item: Item;\n information: {\n parameter: string;\n distance: string;\n context: string;\n chargingCost?: number;\n electricityCost?: number;\n };\n}\n\nexport const trackChargingCostParameterChange = (spreadable: TrackChargingCostParameterChange) =>\n track(ElectricCostEvents.CHARGING_COST_PARAMETER_CHANGE, {\n spreadable,\n });\n\ninterface TrackChargingCostCustomizeClick {\n item: Item;\n information: {\n label?: string;\n parameter?: string;\n distance: string;\n context: string;\n chargingCost?: number;\n electricityCost?: number;\n };\n}\n\nexport const trackChargingCostCustomizeClick = (spreadable: TrackChargingCostCustomizeClick) =>\n track(ElectricCostEvents.CHARGING_COST_CUSTOMIZE_CLICK, {\n spreadable,\n });\n\ninterface TrackChargingCostDetailsClick {\n information: {\n distance: string;\n context: string;\n chargingCost: number | undefined;\n };\n}\n\nexport const trackChargingCostDetailsClick = (spreadable: TrackChargingCostDetailsClick) =>\n track(ElectricCostEvents.CHARGING_COST_DETAILS_CLICK, {\n spreadable,\n });\n\nexport const trackPropertiesFilterSearch = (\n item: Item | DetailedVehicle,\n spreadable: { search: string },\n) =>\n track(softConversionEvents.SOFT_CONVERSIONS_ITEM_PROPERTIES_TAB_FILTER_SEARCH, {\n item: mapVehicleData(item),\n spreadable,\n });\n\nexport const trackEquipmentFilterSearch = (item: Item, spreadable: { search: string }) =>\n track(softConversionEvents.SOFT_CONVERSIONS_ITEM_EQUIPMENT_FILTER_SEARCH, {\n item: mapVehicleData(item),\n spreadable,\n });\n", "export const getPageTypeFromPath = (path: string) => {\n if (path) {\n if (path.match(/\\/objekt\\/.+$/g)) {\n return 'product page';\n } else if (path.match(/\\/(aterforsaljare|forhandler)\\/.+$/g)) {\n return 'dealer page';\n }\n }\n return null;\n};\n\nclass EventContext {\n private _pageType: string | null;\n\n constructor() {\n this._pageType = !process.env.SSR ? getPageTypeFromPath(document.location.href) : null;\n }\n\n get pageType() {\n return this._pageType;\n }\n\n set pageType(pageType) {\n this._pageType = pageType;\n }\n}\n\nexport default new EventContext();\n", "export const isString = (str: any) => typeof str === 'string' || str instanceof String;\n\nexport const trimLeft = (str: string, characters: string) => {\n if (!characters) {\n characters = 's';\n }\n return str.replace(new RegExp(`^[${characters}]+`), '');\n};\n\nexport const trimRight = (str: string, characters: string) => {\n if (!characters) {\n characters = 's';\n }\n return str.replace(new RegExp(`[${characters}]+$`), '');\n};\n\nexport const trim = (str: string, characters: string) => {\n str = trimLeft(str, characters);\n return trimRight(str, characters);\n};\n"], "mappings": "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", "names": ["softConversionEvents", "conversionEvents", "interactionEventType", "conversionType", "otherEvents", "eventTypes", "assignmentEvents", "creditApplicationEvents", "GuaranteeEvents", "ContentEvents", "EcomEvents", "ElectricCostEvents", "LiveShopping", "ValuationEvents", "import_cookies_js", "getPageTypeFromPath", "path", "EventContext", "pageType", "event_context_default", "isString", "str", "trimLeft", "characters", "trimRight", "trim", "source", "__current_search", "__softConversion", "getSearchSortOption", "response", "sortOption", "so", "createUrlParams", "params", "createConversionType", "conversionType", "isString", "createSearchTimingObject", "createSearchTimingValue", "v", "createSearchStats", "_params", "createSearchData", "newsItemSearchMatchedId", "mapCentralStorageBranch", "item", "id", "Cookies", "COOKIE_CENTRAL_STORAGE", "branch", "x", "mapLeasingDetails", "leasingPromos", "mapVehicleData", "overrideBranch", "branches", "branchDetails", "b", "f", "mapRetailerDetails", "eventV2", "data", "_dispatch", "getState", "tracker_hub_default", "tracker_with_user_default", "formatISO", "event_context_default", "event", "eventType", "searchData", "_pageType", "information", "list", "newsItemId", "newsItemName", "spreadable", "eventInstant", "trackerHubInstant", "ifCookieNotSet", "cookieName", "value", "actionIfNotSet", "trackLoginModule", "interactionType", "dispatch", "eventTypes", "trackLoginModuleInstant", "trackLoginModuleInViewport", "conversionEvents", "trackLoginModuleInViewportSaveObject", "interactionEventType", "trackLoginModuleInViewportSaveObjectInSearchResult", "trackLoginModuleInViewportMessageDealer", "trackLoginModuleInViewportSaveSearchResult", "trackLoginModuleInViewportSaveCategory", "trackLoginModuleInViewportSellToDealer", "trackLoginModuleClickLogin", "trackLoginModuleClickLoginSaveObject", "trackLoginModuleClickLoginSaveObjectInSearchResult", "trackLoginModuleClickLoginMessageDealer", "trackLoginModuleClickLoginSaveSearchResult", "trackLoginModuleClickLoginSaveCategory", "trackLoginModuleClickLoginSellToDealer", "trackSellToDelaer", "trackSellToDelaerStartApplication", "trackPageViewEvent", "spread", "trackViewEvent", "trackExposureEvent", "index", "trackConversionEvent", "otherEvents", "trackSoftConversionEvent", "shouldTrackShareEvent", "softConversionEvents", "trackSoftConversionEventInsurance", "provider", "vehicleData", "__shownInterestInsurance", "trackShownInterestInsurance", "beginSearchEvent", "trackSearchEvent", "searchResponse", "trackRoutingEvent", "trackAddSubscription", "subscription", "searchResults", "trackAssignmentEvent", "trackClickItemEvent", "trackRegistrationEvent", "trackOtherEvent", "retailer", "trackSafetyAddons", "trackCreditApplicationEvent", "trackDefaultEvent", "trackEcomEvent", "eventInformation", "trackPropertyTabFirstClick", "tab", "trackPropertyTabClick", "track", "trackAssignmentRemoval", "assignmentEvents", "trackChargingCostParameterChange", "ElectricCostEvents", "trackChargingCostCustomizeClick", "trackChargingCostDetailsClick", "trackPropertiesFilterSearch", "trackEquipmentFilterSearch"] }