{"version":3,"file":"useCarData-be35c4df.js","sources":["../../src/composables/useCarData.ts"],"sourcesContent":["import { capitalize, computed } from 'vue';\r\nimport { IVariant } from '../foundation/interfaces/IVariant';\r\n\r\n/**\r\n * Helpful functions that return computed car data.\r\n *\r\n * Note: The car data is based off the getVehicleById API endpoint.\r\n *\r\n * @param carData\r\n *\r\n * @returns\r\n */\r\nexport function useCarData(carData: Record) {\r\n /**\r\n *\r\n */\r\n const makeModel = computed(() => `${carData.Make} ${carData.Model}`);\r\n\r\n /**\r\n * Show car body, doors, wheels, seats data (if present)\r\n *\r\n * PJ306 - 753 Error and Exception Handling\r\n * FR1.1 - When information is missing, then the data point should not be shown.\r\n *\r\n **/\r\n const bodyDoorsSeats = computed(() => {\r\n let result = capitalize(carData.Body_type || '');\r\n\r\n if (carData.Body_type && carData.Doors) {\r\n result += `, ${carData.Doors} doors`;\r\n } else if (carData.Doors) {\r\n result += `${carData.Doors} doors`;\r\n }\r\n\r\n if ((carData.Body_type || carData.Doors) && carData.Seats) {\r\n result += `, ${carData.Seats} seats`;\r\n } else if (carData.Seats) {\r\n result += `${carData.Seats} seats`;\r\n }\r\n\r\n return result;\r\n });\r\n\r\n /**\r\n * Show the fuel type and range based on vehicle type (EV, ICE, Hybrid, etc).\r\n *\r\n * Assumptions / rules (as of 06/04/23) are as follows:\r\n *\r\n * - Plug in hybrid: Show primary fuel type and range as well as secondary fuel type and range.\r\n * - ICE: Show fuel type and range lt/100km\r\n * - Hybrid: Show fuel type and range lt/100km\r\n */\r\n const fuelTypeAndRange = computed(() => {\r\n const powertrain = (carData.Powertrain || carData.Overall_Powertrain)?.toLowerCase();\r\n let range = '';\r\n\r\n switch (powertrain) {\r\n case 'hybrid electric vehicle':\r\n case 'hybrid electric vehicle (plug-in)':\r\n case 'plug-in hybrid electric vehicle': {\r\n // Build up an array with the fuel types and values if they exist\r\n let rangeArrayStr: string[] = [];\r\n\r\n if (carData?.Primary_engine_motor_Fuel_type) {\r\n rangeArrayStr.push(carData.Primary_engine_motor_Fuel_type);\r\n }\r\n\r\n const rangeValue = Number(carData.Driving_range_Electric_motor_only_km);\r\n if (rangeValue) {\r\n rangeArrayStr.push(`${rangeValue}km range`);\r\n }\r\n\r\n if (carData?.Secondary_engine_motor_Fuel_type && carData?.Secondary_engine_motor_Fuel_type?.toLowerCase() !== 'none') {\r\n rangeArrayStr.push(capitalize(carData.Secondary_engine_motor_Fuel_type));\r\n }\r\n\r\n if (carData.Fuel_consumption_Combined_ADR8102_lt_100km && Number(carData.Fuel_consumption_Combined_ADR8102_lt_100km) > 0) {\r\n rangeArrayStr.push(carData.Fuel_consumption_Combined_ADR8102_lt_100km + 'L/100km');\r\n }\r\n\r\n if (rangeArrayStr.length) {\r\n range = rangeArrayStr.join(', ');\r\n }\r\n\r\n break;\r\n }\r\n\r\n case 'bev':\r\n case 'electric':\r\n case 'electric vehicle':\r\n case 'battery electric vehicle':\r\n case 'fuel-cell electric vehicle':\r\n case 'extended-range electric vehicle': {\r\n const rangeValue = Number(carData.Driving_range_Electric_motor_only_km) || carData.Driving_range_ADR8102_combined_km;\r\n const rangeValueString = rangeValue ? `, ${rangeValue}km range` : '';\r\n\r\n range = carData.Primary_engine_motor_Fuel_type + rangeValueString;\r\n break;\r\n }\r\n\r\n case 'combustion':\r\n case 'mild hybrid electric vehicle':\r\n case 'mhev': {\r\n // Build up an array with the fuel values if they exist\r\n let rangeArrayStr: string[] = [];\r\n if (carData.Primary_engine_motor_Fuel_type?.length) {\r\n rangeArrayStr.push(carData.Primary_engine_motor_Fuel_type);\r\n }\r\n if (carData.Fuel_consumption_Combined_ADR8102_lt_100km && Number(carData.Fuel_consumption_Combined_ADR8102_lt_100km) > 0) {\r\n rangeArrayStr.push(carData.Fuel_consumption_Combined_ADR8102_lt_100km + 'L/100km');\r\n }\r\n\r\n if (rangeArrayStr.length) {\r\n range = rangeArrayStr.join(', ');\r\n }\r\n break;\r\n }\r\n\r\n default:\r\n range = carData.Primary_engine_motor_Fuel_type || carData.Fuel_type || 'No data available';\r\n }\r\n\r\n if (!range.length) {\r\n range = carData.Primary_engine_motor_Fuel_type || carData.Fuel_type || 'No data available';\r\n }\r\n\r\n return capitalize(range);\r\n });\r\n\r\n /**\r\n * Show the emissions rating based on car environment score.\r\n */\r\n const emissionsRating = computed(() => {\r\n const envScoreNumber = Number(carData.environment_score || carData.Environmentscore);\r\n let emissions = '';\r\n\r\n switch (envScoreNumber) {\r\n case 1:\r\n case 2: {\r\n emissions = 'Very high';\r\n break;\r\n }\r\n\r\n case 3:\r\n case 4: {\r\n emissions = 'High';\r\n break;\r\n }\r\n\r\n case 5:\r\n case 6: {\r\n emissions = 'Average';\r\n break;\r\n }\r\n\r\n case 7:\r\n case 9:\r\n case 8: {\r\n emissions = 'Low';\r\n break;\r\n }\r\n \r\n case 10: {\r\n emissions = 'Zero';\r\n break;\r\n }\r\n\r\n default:\r\n return 'Data not available';\r\n }\r\n\r\n return emissions + ' emissions';\r\n });\r\n\r\n const formattedCarPrice = computed(() =>\r\n new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'AUD',\r\n currencyDisplay: 'narrowSymbol',\r\n currencySign: 'accounting',\r\n maximumFractionDigits: 0,\r\n }).format(Number(carData.RACQ_PRICE))\r\n );\r\n\r\n function getVariantYearRange(currentVariant: IVariant): string {\r\n let range = '';\r\n\r\n if (currentVariant?.yearLow && currentVariant?.yearHigh) {\r\n if (currentVariant.yearLow === currentVariant.yearHigh) {\r\n return String(currentVariant.yearLow);\r\n }\r\n\r\n return `${currentVariant.yearLow} - ${currentVariant.yearHigh}`;\r\n }\r\n\r\n if (currentVariant?.yearLow) {\r\n range += currentVariant.yearLow;\r\n } else if (currentVariant?.yearHigh) {\r\n range += currentVariant.yearHigh;\r\n } else {\r\n range = 'No year data';\r\n }\r\n\r\n return range;\r\n }\r\n\r\n return {\r\n makeModel,\r\n bodyDoorsSeats,\r\n formattedCarPrice,\r\n fuelTypeAndRange,\r\n emissionsRating,\r\n getVariantYearRange,\r\n };\r\n}\r\n"],"names":["useCarData","carData","makeModel","computed","bodyDoorsSeats","result","capitalize","fuelTypeAndRange","powertrain","_a","range","rangeArrayStr","rangeValue","_b","rangeValueString","_c","emissionsRating","envScoreNumber","emissions","formattedCarPrice","getVariantYearRange","currentVariant"],"mappings":"gDAYO,SAASA,EAAWC,EAA8B,CAIvD,MAAMC,EAAYC,EAAS,IAAM,GAAGF,EAAQ,QAAQA,EAAQ,OAAO,EAS7DG,EAAiBD,EAAS,IAAM,CACpC,IAAIE,EAASC,EAAWL,EAAQ,WAAa,EAAE,EAE3C,OAAAA,EAAQ,WAAaA,EAAQ,MAC/BI,GAAU,KAAKJ,EAAQ,cACdA,EAAQ,QACjBI,GAAU,GAAGJ,EAAQ,gBAGlBA,EAAQ,WAAaA,EAAQ,QAAUA,EAAQ,MAClDI,GAAU,KAAKJ,EAAQ,cACdA,EAAQ,QACjBI,GAAU,GAAGJ,EAAQ,eAGhBI,CAAA,CACR,EAWKE,EAAmBJ,EAAS,IAAM,WACtC,MAAMK,GAAcC,EAAAR,EAAQ,YAAcA,EAAQ,qBAA9B,YAAAQ,EAAmD,cACvE,IAAIC,EAAQ,GAEZ,OAAQF,EAAY,CAClB,IAAK,0BACL,IAAK,oCACL,IAAK,kCAAmC,CAEtC,IAAIG,EAA0B,CAAA,EAE1BV,GAAA,MAAAA,EAAS,gCACGU,EAAA,KAAKV,EAAQ,8BAA8B,EAGrD,MAAAW,EAAa,OAAOX,EAAQ,oCAAoC,EAClEW,GACYD,EAAA,KAAK,GAAGC,WAAoB,EAGxCX,GAAA,MAAAA,EAAS,oCAAoCY,EAAAZ,GAAA,YAAAA,EAAS,mCAAT,YAAAY,EAA2C,iBAAkB,QAC5GF,EAAc,KAAKL,EAAWL,EAAQ,gCAAgC,CAAC,EAGrEA,EAAQ,4CAA8C,OAAOA,EAAQ,0CAA0C,EAAI,GACvGU,EAAA,KAAKV,EAAQ,2CAA6C,SAAS,EAG/EU,EAAc,SACRD,EAAAC,EAAc,KAAK,IAAI,GAGjC,KACF,CAEA,IAAK,MACL,IAAK,WACL,IAAK,mBACL,IAAK,2BACL,IAAK,6BACL,IAAK,kCAAmC,CACtC,MAAMC,EAAa,OAAOX,EAAQ,oCAAoC,GAAKA,EAAQ,kCAC7Ea,EAAmBF,EAAa,KAAKA,YAAuB,GAElEF,EAAQT,EAAQ,+BAAiCa,EACjD,KACF,CAEA,IAAK,aACL,IAAK,+BACL,IAAK,OAAQ,CAEX,IAAIH,EAA0B,CAAA,GAC1BI,EAAAd,EAAQ,iCAAR,MAAAc,EAAwC,QAC5BJ,EAAA,KAAKV,EAAQ,8BAA8B,EAEvDA,EAAQ,4CAA8C,OAAOA,EAAQ,0CAA0C,EAAI,GACvGU,EAAA,KAAKV,EAAQ,2CAA6C,SAAS,EAG/EU,EAAc,SACRD,EAAAC,EAAc,KAAK,IAAI,GAEjC,KACF,CAEA,QACUD,EAAAT,EAAQ,gCAAkCA,EAAQ,WAAa,mBAC3E,CAEI,OAACS,EAAM,SACDA,EAAAT,EAAQ,gCAAkCA,EAAQ,WAAa,qBAGlEK,EAAWI,CAAK,CAAA,CACxB,EAKKM,EAAkBb,EAAS,IAAM,CACrC,MAAMc,EAAiB,OAAOhB,EAAQ,mBAAqBA,EAAQ,gBAAgB,EACnF,IAAIiB,EAAY,GAEhB,OAAQD,EAAgB,CACtB,IAAK,GACL,IAAK,GAAG,CACMC,EAAA,YACZ,KACF,CAEA,IAAK,GACL,IAAK,GAAG,CACMA,EAAA,OACZ,KACF,CAEA,IAAK,GACL,IAAK,GAAG,CACMA,EAAA,UACZ,KACF,CAEA,IAAK,GACL,IAAK,GACL,IAAK,GAAG,CACMA,EAAA,MACZ,KACF,CAEA,IAAK,IAAI,CACKA,EAAA,OACZ,KACF,CAEA,QACS,MAAA,oBACX,CAEA,OAAOA,EAAY,YAAA,CACpB,EAEKC,EAAoBhB,EAAS,IACjC,IAAI,KAAK,aAAa,QAAS,CAC7B,MAAO,WACP,SAAU,MACV,gBAAiB,eACjB,aAAc,aACd,sBAAuB,CACxB,CAAA,EAAE,OAAO,OAAOF,EAAQ,UAAU,CAAC,CAAA,EAGtC,SAASmB,EAAoBC,EAAkC,CAC7D,IAAIX,EAAQ,GAER,OAAAW,GAAA,MAAAA,EAAgB,UAAWA,GAAA,MAAAA,EAAgB,UACzCA,EAAe,UAAYA,EAAe,SACrC,OAAOA,EAAe,OAAO,EAG/B,GAAGA,EAAe,aAAaA,EAAe,YAGnDA,GAAA,MAAAA,EAAgB,QAClBX,GAASW,EAAe,QACfA,GAAA,MAAAA,EAAgB,SACzBX,GAASW,EAAe,SAEhBX,EAAA,eAGHA,EACT,CAEO,MAAA,CACL,UAAAR,EACA,eAAAE,EACA,kBAAAe,EACA,iBAAAZ,EACA,gBAAAS,EACA,oBAAAI,CAAA,CAEJ"}