{"version":3,"file":"bundle.1115.ebd811843873d272ee096236e65c519e.js","mappings":"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","sources":["webpack://ws-tagging/./src/utils/asc/utils.js"],"sourcesContent":["export const project = 'asc'; // need this for when we dynamically import utils\n\n/**\n *\n * @param {Object} win - The window object.\n * @param {Object} payload - The payload to send coming from mappings.\n *\n */\n\n// We need to add the gtag function for the new integration, but let's avoid override it if already there\nwindow.gtag =\n\twindow.gtag ||\n\tfunction gtag() {\n\t\t// eslint-disable-next-line prefer-rest-params\n\t\twindow.dataLayer.push(arguments);\n\t};\n\nconst adwordsIds = new Promise((resolve) => {\n\t// the asc_datalayer object should be already created by this time\n\tif (window?.asc_datalayer?.measurement_ids?.length) {\n\t\tresolve(window.asc_datalayer.measurement_ids);\n\t} else {\n\t\twindow.addEventListener('googleAdwordsConversionIdsReady', (event) => {\n\t\t\tresolve(event.detail);\n\t\t});\n\t}\n});\n\nexport const sending = ({ win, data: payload, preview, eventData }) => {\n\t// Event Viewer\n\tconst reportsForEventViewer = [];\n\tconst reportsForNewRelic = [];\n\n\tif (!preview) {\n\t\tif (payload.event === 'asc_form_submission') {\n\t\t\twin.gtag('set', 'user_data', {\n\t\t\t\tsha256_email_address: eventData?.fields?.email,\n\t\t\t\tsha256_phone_number: eventData?.fields?.phone\n\t\t\t});\n\n\t\t\treportsForEventViewer.push({\n\t\t\t\tclientEventName: 'user_data',\n\t\t\t\tpayload,\n\t\t\t\tsender: 'win.gtag'\n\t\t\t});\n\n\t\t\treportsForNewRelic.push({\n\t\t\t\tclientEventName: 'user_data',\n\t\t\t\tsender: 'win.gtag'\n\t\t\t});\n\t\t}\n\t\t// utils/dataMapper.js can handle an array of promises for reporting purposes\n\t\treportsForEventViewer.push(\n\t\t\tnew Promise((resolve) => {\n\t\t\t\t// if we have g-ids from the page or the event in the web integration then proceed\n\t\t\t\tadwordsIds.then((gids) => {\n\t\t\t\t\twin.gtag('event', payload.event, {\n\t\t\t\t\t\tsend_to: gids,\n\t\t\t\t\t\t...payload\n\t\t\t\t\t});\n\t\t\t\t\tresolve({\n\t\t\t\t\t\tclientEventName: payload.event,\n\t\t\t\t\t\tmeasurement_ids: gids,\n\t\t\t\t\t\tpayload,\n\t\t\t\t\t\tsender: 'window.dataLayer'\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t})\n\t\t);\n\t}\n\n\t// PUSH events\n\twin.asc_datalayer.events.push(payload);\n\n\tconst sender = 'asc_datalayer.events';\n\n\treportsForEventViewer.push({\n\t\tclientEventName: payload.event,\n\t\tpayload,\n\t\tsender\n\t});\n\n\treportsForNewRelic.push({\n\t\tclientEventName: payload.event,\n\t\tsender\n\t});\n\n\treturn {\n\t\treportsForEventViewer,\n\t\treportsForNewRelic\n\t};\n};\n\nconst getVehicle = (eventData, vehicles) =>\n\tvehicles.length === 1 ? vehicles[0] : eventData?.vehicle;\n\nexport const getLanguage = ({ window }) =>\n\twindow.DDC.dataLayer.page.attributes?.locale?.substring(0, 2);\n\nexport const getBrand = ({ window }) =>\n\twindow.DDC.dataLayer.site.franchises.join('|');\n\nconst getPriceFromVehicle = (vehicle) => {\n\tlet price;\n\tif (vehicle) {\n\t\tprice =\n\t\t\tvehicle.newOrUsed === 'new' ? vehicle.msrp : vehicle.retailValue;\n\t}\n\treturn price;\n};\n\nexport const getPrice = ({ eventData, vehicles = [] }) =>\n\tgetPriceFromVehicle(getVehicle(eventData, vehicles));\n\nconst getConditionFromVehicle = (vehicle) => {\n\tlet condition;\n\tif (vehicle) {\n\t\tif (vehicle.newOrUsed === 'used') {\n\t\t\tcondition = vehicle.certified === 'true' ? 'cpo' : 'used';\n\t\t} else if (vehicle.newOrUsed === 'new') {\n\t\t\tcondition = 'new';\n\t\t}\n\t}\n\treturn condition;\n};\n\nexport const getCondition = ({ eventData, vehicles = [] }) =>\n\tgetConditionFromVehicle(getVehicle(eventData, vehicles));\n\nconst convertDateFormat = (mmddyyy) => {\n\tif (!mmddyyy) return mmddyyy;\n\tconst date = new Date(mmddyyy);\n\tconst year = date.getFullYear();\n\tconst month = date.getMonth() + 1;\n\tconst day = date.getDate();\n\tconst formatted = `${year}/${`${month}`.padStart(\n\t\t2,\n\t\t'0'\n\t)}/${`${day}`.padStart(2, '0')}`;\n\treturn formatted;\n};\n\nexport const getItemlistType = ({ window }) => {\n\tconst pageAlias = window.DDC.dataLayer.page.pageInfo.pageName;\n\tconst types = {\n\t\t_NEW: 'new',\n\t\t_USED: 'used',\n\t\t_CERTIFIED_USED: 'cpo',\n\t\t_ALL: 'all'\n\t};\n\tlet type;\n\tObject.keys(types).forEach((key) => {\n\t\ttype = pageAlias.indexOf(key) > -1 ? types[key] : type;\n\t});\n\treturn type;\n};\n\nexport const getFacetRange = ({ eventData }) => {\n\treturn eventData.isSlider &&\n\t\teventData.clickedFacetValue?.indexOf?.('-') > -1\n\t\t? `minmax_${eventData.clickedFacetName}`\n\t\t: '';\n};\n\nexport const getInventoryDate = (options) => {\n\tconst { eventData: { vehicle = {} } = {}, window } = options;\n\tif (\n\t\twindow.DDC.dataLayer.vehicles.length === 1 ||\n\t\tObject.keys(vehicle).length ||\n\t\twindow.DDC.dataLayer?.confirmation?.vehicle?.inventoryDate\n\t) {\n\t\treturn convertDateFormat(\n\t\t\twindow.DDC.dataLayer.vehicles?.[0]?.inventoryDate ||\n\t\t\t\tvehicle?.inventoryDate ||\n\t\t\t\twindow.DDC.dataLayer?.confirmation?.vehicle?.inventoryDate\n\t\t);\n\t}\n\treturn '';\n};\n\nlet uuidVehicleMap; // its a cache to make future uuid->vhicle lookups faster\nexport const getVehicleFromUuid = ({ eventData, vehicles }) => {\n\tconst { uuid } = eventData;\n\tif (uuid) {\n\t\tif (!uuidVehicleMap) {\n\t\t\tuuidVehicleMap = vehicles.reduce((map, vehicle) => {\n\t\t\t\treturn {\n\t\t\t\t\t...map,\n\t\t\t\t\t[vehicle.uuid]: vehicle\n\t\t\t\t};\n\t\t\t}, {});\n\t\t}\n\t\treturn uuidVehicleMap[uuid] || ''; // fallback to blank if uuid is not found in vechiles array\n\t}\n\treturn ''; // fallback to blank if uuid is not provided in eventData\n};\n\nexport const getItemIdFromUuid = ({ eventData }) => {\n\treturn eventData.uuid || '';\n};\nexport const getStockNumberFromUuid = ({ eventData, vehicles }) => {\n\tconst vehicle = getVehicleFromUuid({ eventData, vehicles });\n\treturn vehicle ? vehicle.stockNumber : '';\n};\nexport const getConditionFromUuid = ({ eventData, vehicles }) =>\n\tgetConditionFromVehicle(getVehicleFromUuid({ eventData, vehicles }));\n\nexport const getColorFromUuid = ({ eventData, vehicles }) => {\n\tconst vehicle = getVehicleFromUuid({ eventData, vehicles });\n\treturn vehicle ? vehicle.exteriorColor : '';\n};\nexport const getYearFromUuid = ({ eventData, vehicles }) => {\n\tconst vehicle = getVehicleFromUuid({ eventData, vehicles });\n\treturn vehicle ? vehicle.modelYear : '';\n};\nexport const getMakeFromUuid = ({ eventData, vehicles }) => {\n\tconst vehicle = getVehicleFromUuid({ eventData, vehicles });\n\treturn vehicle ? vehicle.make : '';\n};\nexport const getModelFromUuid = ({ eventData, vehicles }) => {\n\tconst vehicle = getVehicleFromUuid({ eventData, vehicles });\n\treturn vehicle ? vehicle.model : '';\n};\nexport const getTrimFromUuid = ({ eventData, vehicles }) => {\n\tconst vehicle = getVehicleFromUuid({ eventData, vehicles });\n\treturn vehicle ? vehicle.trim : '';\n};\nexport const getTypeFromUuid = ({ eventData, vehicles }) => {\n\tconst vehicle = getVehicleFromUuid({ eventData, vehicles });\n\treturn vehicle ? vehicle.bodyStyle : '';\n};\nexport const getFuelType = ({ window, eventData, vehicles }) => {\n\t// some logic from getReplacement to duplicate how fuelType was set up prior to this mapping change\n\tconst vehicle =\n\t\t// single vehicle lookups should only happen on pages with 1 vehicle\n\t\t(window?.DDC?.dataLayer?.vehicles?.length === 1 &&\n\t\t\twindow?.DDC?.dataLayer?.vehicles?.[0]) ||\n\t\t// form confirmation pages\n\t\twindow?.DDC?.dataLayer?.confirmation?.vehicle;\n\n\tlet fuelType =\n\t\tvehicle?.normalFuelType ||\n\t\teventData?.normalFuelType ||\n\t\teventData?.vehicle?.normalFuelType;\n\n\tif (!fuelType) {\n\t\tconst vehicleFromUuid = getVehicleFromUuid({ eventData, vehicles });\n\t\tfuelType = vehicleFromUuid ? vehicleFromUuid.normalFuelType : '';\n\t}\n\n\tif (fuelType) {\n\t\tfuelType = fuelType.toLowerCase();\n\t}\n\n\t// if no vehicle, fuelType should stay empty string\n\t// for pages that do not have vehicle data\n\t// otherwise on those pages all vehicle attributes will be empty string and fuelType will be unknown\n\t// which is not what the client wants\n\tif (\n\t\tvehicle?.normalFuelType ||\n\t\teventData?.uuid ||\n\t\teventData?.vehicle?.uuid ||\n\t\teventData?.normalFuelType ||\n\t\teventData?.vehicle?.normalFuelType\n\t) {\n\t\t// ASC spec: gas, diesel, liquified_natural_gas, electric, propane, nitrogen, methane, unknown\n\t\tif (fuelType === 'gasoline' || fuelType?.includes?.('hybrid')) {\n\t\t\tfuelType = 'gas';\n\t\t} else if (fuelType === 'natural gas') {\n\t\t\tfuelType = 'liquified_natural_gas';\n\t\t} else if (fuelType !== 'diesel' && fuelType !== 'electric') {\n\t\t\tfuelType = 'unknown';\n\t\t}\n\t}\n\n\treturn fuelType;\n};\nexport const getVehicleItems = ({ vehicles = [] }) => {\n\tconst items = [];\n\tvehicles.forEach((vehicle) => {\n\t\tconst item = {\n\t\t\titem_id: (vehicle.vin || vehicle.uuid)?.toLowerCase?.(),\n\t\t\titem_number: vehicle.stockNumber?.toLowerCase?.(),\n\t\t\titem_condition: getCondition({\n\t\t\t\teventData: {\n\t\t\t\t\tvehicle\n\t\t\t\t}\n\t\t\t})?.toLowerCase?.(),\n\t\t\titem_year: vehicle.modelYear,\n\t\t\titem_make: vehicle.make?.toLowerCase?.(),\n\t\t\titem_model: vehicle.model?.toLowerCase?.(),\n\t\t\titem_variant: vehicle.trim?.toLowerCase?.(),\n\t\t\titem_color: vehicle.exteriorColor?.toLowerCase?.(),\n\t\t\titem_type: vehicle.bodyStyle?.toLowerCase?.(),\n\t\t\titem_fuel_type: getFuelType({\n\t\t\t\twindow,\n\t\t\t\teventData: {\n\t\t\t\t\tuuid: vehicle.uuid\n\t\t\t\t},\n\t\t\t\tvehicles\n\t\t\t}),\n\t\t\titem_inventory_date: convertDateFormat(vehicle.inventoryDate),\n\t\t\titem_price: getPrice({\n\t\t\t\teventData: {\n\t\t\t\t\tvehicle\n\t\t\t\t}\n\t\t\t})\n\t\t};\n\t\titems.push(item);\n\t});\n\treturn items;\n};\nexport const getInventoryDateFromUuid = ({ eventData, vehicles }) => {\n\tconst vehicle = getVehicleFromUuid({ eventData, vehicles });\n\treturn vehicle ? convertDateFormat(vehicle.inventoryDate) : '';\n};\nexport const getPriceFromUuid = ({ eventData, vehicles }) =>\n\tgetPriceFromVehicle(getVehicleFromUuid({ eventData, vehicles }));\n\n// at one point in DDC history the copy page tool was making forms with trackingId and formId as a 32 character string\n// the client wants these forms labeled as custom\n// we are unable to fix them as they are all over DVS and will be hard to identify and then actually know what form\n// they were based on before copy page tool messed them up\nconst isFunkyForm = (customFormId, trackingId) =>\n\tcustomFormId?.length === 32 && customFormId === trackingId;\n\n// \"form_name\": \"[[eventData.trackingId]] >> {{EMPTYSTRING}}\",\nexport const getFormName = ({ eventData }) => {\n\tlet formName = eventData?.trackingId || '';\n\n\tif (isFunkyForm(eventData.customFormId, eventData.trackingId)) {\n\t\tformName = 'custom';\n\t}\n\n\treturn formName;\n};\n\n// \"form_type\": \"[[mapping.form.formType.[[eventData.trackingId]]]] >> [[eventData.customFormId]] >> {{EMPTYSTRING}}\",\nexport const getFormType = ({ eventData, mapping }) => {\n\tlet formType =\n\t\tmapping?.form?.formType[eventData?.trackingId] ||\n\t\teventData?.customFormId ||\n\t\t'';\n\n\tif (isFunkyForm(eventData.customFormId, eventData.trackingId)) {\n\t\tformType = 'custom';\n\t}\n\n\treturn formType;\n};\n"],"names":["project","window","gtag","dataLayer","push","arguments","adwordsIds","Promise","resolve","asc_datalayer","measurement_ids","length","addEventListener","event","detail","sending","win","data","payload","preview","eventData","reportsForEventViewer","reportsForNewRelic","sha256_email_address","fields","email","sha256_phone_number","phone","clientEventName","sender","then","gids","send_to","events","getVehicle","vehicles","vehicle","getLanguage","DDC","page","attributes","locale","substring","getBrand","site","franchises","join","getPriceFromVehicle","price","newOrUsed","msrp","retailValue","getPrice","getConditionFromVehicle","condition","certified","getCondition","convertDateFormat","mmddyyy","date","Date","year","getFullYear","month","getMonth","day","getDate","padStart","getItemlistType","pageAlias","pageInfo","pageName","types","_NEW","_USED","_CERTIFIED_USED","_ALL","type","Object","keys","forEach","key","indexOf","getFacetRange","isSlider","clickedFacetValue","clickedFacetName","getInventoryDate","options","confirmation","inventoryDate","uuidVehicleMap","getVehicleFromUuid","uuid","reduce","map","getItemIdFromUuid","getStockNumberFromUuid","stockNumber","getConditionFromUuid","getColorFromUuid","exteriorColor","getYearFromUuid","modelYear","getMakeFromUuid","make","getModelFromUuid","model","getTrimFromUuid","trim","getTypeFromUuid","bodyStyle","getFuelType","fuelType","normalFuelType","vehicleFromUuid","toLowerCase","includes","getVehicleItems","items","item","item_id","vin","item_number","item_condition","item_year","item_make","item_model","item_variant","item_color","item_type","item_fuel_type","item_inventory_date","item_price","getInventoryDateFromUuid","getPriceFromUuid","isFunkyForm","customFormId","trackingId","getFormName","formName","getFormType","mapping","formType","form"],"sourceRoot":""}