{"version":3,"file":"ByfVNydD.js","sources":["../../../../src/composables/useCar.ts"],"sourcesContent":["import type {Attribute, Car} from \"~/models/old/Car\";\nimport type {AxiosResponse} from \"axios\";\nimport {useFormData} from \"~/composables/useFormData\";\nimport type {CVCard} from \"~/interfaces/CVCard\";\nimport type {VehicleColor} from \"~/interfaces/VehicleColor\";\nimport {LISTINGS_SERVICE} from \"~/data/ServicesConstants\";\nimport type {Address} from \"~/models/services/listing/Address\";\nimport type {ListingCar} from \"~/models/services/listing/Listing\";\nimport {useNumberFormat} from \"~/composables/useNumberFormat\";\n\nconst currentMakes = ref([])\nconst currentModels = ref([])\nconst currentTrims = ref([])\n\nconst saveCar = async (car: Car): Promise => {\n let form: FormData = useFormData().objectToFormData(car)\n const axiosRequest = await useNuxtApp().$getApi(LISTINGS_SERVICE)\n return axiosRequest.post('/listings/cars', form, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n })\n}\nconst saveCarDraft = async (car: Car): Promise => {\n let form: FormData = useFormData().objectToFormData(car)\n const axiosRequest = await useNuxtApp().$getApi(LISTINGS_SERVICE)\n return axiosRequest.post('/listings/draft/cars', form, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n })\n}\nconst updateCar = async (car: Car): Promise => {\n let form: FormData = useFormData().objectToFormData(car)\n let i = 0;\n for (const index in car.pictures) {\n //@ts-ignore\n const el = car.pictures[index]\n\n if (typeof el == 'string') {\n form.append('picture_order[' + i + ']', el)\n } else {\n form.append('picture_order[' + i + ']', (el as File).name)\n }\n i += 1\n }\n\n\n const axiosRequest = await useNuxtApp().$getApi(LISTINGS_SERVICE)\n return axiosRequest.postForm(`/listings/cars/${car._id}`, form)\n}\nconst getUserCars = async (): Promise => {\n const axiosRequest = await useNuxtApp().$getApi(LISTINGS_SERVICE);\n return axiosRequest.get('/listings/cars')\n}\nconst destroyCar = async (car: Car): Promise => {\n const axiosRequest = await useNuxtApp().$getApi(LISTINGS_SERVICE)\n return axiosRequest.delete(`/listings/cars/${car._id ?? car.id}`)\n}\nconst getAllCars = async (params?: any): Promise => {\n const axiosRequest = await useNuxtApp().$getApi(LISTINGS_SERVICE)\n return axiosRequest.get('/listings/public/v2/cars', {\n params: params ?? {}\n })\n}\nconst fetchAveragePrice = async (make: string, model: string, year: string): Promise => {\n const axiosRequest = await useNuxtApp().$getApi(LISTINGS_SERVICE)\n return axiosRequest.get('/listings/cars/average-price', {\n params: {make, model, year}\n })\n}\nconst getVehicleColor = (color: string) => {\n const colorFound = vehicleColors.find(el => el.value == color)\n if (colorFound) {\n return colorFound.color\n }\n return color.toUpperCase()\n}\nconst transformCarToCard = (car: Car): any => {\n return {\n _id: car._id!,\n link: car.link!,\n price: car.price!,\n title: car.title!,\n pictures: car.pictures as Array,\n address: typeof car.address == 'string' ? car.address : useAddress().getFullAddress(car.address as Address),\n created_at: car.created_at ?? new Date(),\n status: !!car.is_used ? 'Usado' : 'Nuevo',\n isAdvertisement: !!car.is_ad,\n hasLike: (car.followers?.length ?? 0) > 0,\n type: 'car',\n originType: car.type,\n daysLeft: car.days_in_cv,\n agent: {\n _id: car.agent?._id ?? car.user_id,\n type: car.agent ? 'agent' : 'user',\n name: car.agent?.name ?? car.user_full_name,\n company: car.agent?.company,\n email: car.agent?.email,\n profile_picture: !!car.agent?.profile_picture && typeof car.agent.profile_picture == 'string' ? car.agent.profile_picture : undefined,\n link: car.agent?.link,\n },\n features: [\n `${getVehicleColor(car.color ?? '')}`,\n `${useNumberFormat().formatDecimal(car.current_millage ?? 0)} mi.`,\n `${car.transmission}`,\n `${car.fuel_type}`,\n `${car.drive_train}`,\n ]\n }\n}\n\nconst getCarMonthlyPrice = (car: ListingCar) => {\n if (car.car.price_type == 'monthly') {\n if (!!car.car.term && !!car.monthly_price) {\n const cuotaStr = car.car.term == 1 ? 'cuota' : 'cuotas'\n return `(${car.car.term} ${cuotaStr} de ${useNumberFormat().formatCurrency(car.monthly_price)})`\n }\n\n return `/mes`\n\n }\n}\n\nconst transformListingCarToCard = (car: ListingCar): CVCard => {\n return {\n _id: car.id!,\n link: car.link!,\n price: car.price!,\n monthly: getCarMonthlyPrice(car),\n title: car.title!,\n pictures: car.pictures as Array,\n address: car.address ? (typeof car.address == 'string' ? car.address : useAddress().getFullAddress(car.address as Address)) : '',\n created_at: car.created_at ?? new Date(),\n status: car.sub_category == 'USED' ? 'Usado' : 'Nuevo',\n isAdvertisement: false,\n hasLike: false,\n type: 'car',\n originType: car.type,\n daysLeft: 0,\n user_id: car.user_id as number,\n features: [\n `${getVehicleColor(car.car?.color ?? '')}`,\n `${useNumberFormat().formatNumberShort(car.car?.millage ?? 0)} mi.`,\n `${car.car?.transmission}`\n ].filter(el => el !== '')\n }\n}\nconst transformArrayCarsToCard = (car: Car[]): CVCard[] => {\n return car.map(el => (transformCarToCard(el)))\n}\nconst getMakeAndModel = async () => {\n const axiosRequest = await useNuxtApp().$getApi(LISTINGS_SERVICE)\n return await axiosRequest.get('/listings/public/cars/makes')\n}\nconst getBodies = async () => {\n const axiosRequest = await useNuxtApp().$getApi(LISTINGS_SERVICE)\n return await axiosRequest.get('/listings/public/cars/bodies')\n}\nconst getAllMakes = async () => {\n try {\n const makes: any = await $fetch('/api/compralovendelo/makes')\n currentMakes.value = makes\n return makes\n } catch (e) {\n console.log(e)\n }\n}\nconst getModelFromMake = async (make: string) => {\n try {\n const models: any = await $fetch('/api/compralovendelo/models-from-make?make=' + make)\n currentModels.value = models\n return models\n } catch (e) {\n console.log(e)\n }\n}\nconst getTrimsFromModel = async (model: string) => {\n try {\n const trims: any = await $fetch('/api/compralovendelo/trims-from-model?model=' + model)\n currentTrims.value = trims\n return trims\n } catch (e) {\n console.log(e)\n }\n}\nconst getTrims = async (make_model_id: string, year: string) => {\n try {\n const token = await useNuxtApp().$getCarApiToken()\n const trims: any = await $fetch(`/api/carapi/trims?make_model_id=${make_model_id}&year=${year}`, {\n headers: {\n 'API-TOKEN': token\n }\n })\n\n currentTrims.value = trims?.data\n return trims?.data\n } catch (e) {\n return []\n }\n}\nconst getExteriorColor = async (make_model_trim_id: string) => {\n try {\n const token = await useNuxtApp().$getCarApiToken()\n const colors: any = await $fetch(`/api/carapi/exterior-colors?make_model_trim_id=${make_model_trim_id}`, {\n headers: {\n 'API-TOKEN': token\n }\n })\n return colors?.data\n } catch (e) {\n return []\n }\n}\nconst getExteriorColorWithMakeModel = async (make_id: string, model_id: string) => {\n try {\n const token = await useNuxtApp().$getCarApiToken()\n const colors: any = await $fetch(`/api/carapi/exterior-colors?make_id=${make_id}&model_id=${model_id}`, {\n headers: {\n 'API-TOKEN': token\n }\n })\n return colors?.data\n } catch (e) {\n return []\n }\n}\nconst getExteriorColorWithTrim = async (trim: string) => {\n try {\n const token = await useNuxtApp().$getCarApiToken()\n const colors: any = await $fetch(`/api/carapi/exterior-colors?trim=${trim}`, {\n headers: {\n 'API-TOKEN': token\n }\n })\n return colors?.data\n } catch (e) {\n return []\n }\n}\nconst getInteriorColor = async (make_model_trim_id: string) => {\n try {\n const token = await useNuxtApp().$getCarApiToken()\n const colors: any = await $fetch(`/api/carapi/interior-colors?make_model_trim_id=${make_model_trim_id}`, {\n headers: {\n 'API-TOKEN': token\n }\n })\n return colors?.data\n } catch (e) {\n return []\n }\n}\nconst getInteriorColorWithMakeModel = async (make_id: string, model_id: string) => {\n try {\n const token = await useNuxtApp().$getCarApiToken()\n const colors: any = await $fetch(`/api/carapi/interior-colors?make_id=${make_id}&model_id=${model_id}`, {\n headers: {\n 'API-TOKEN': token\n }\n })\n return colors?.data\n } catch (e) {\n return []\n }\n}\nconst getInteriorColorWithTrim = async (trim: string) => {\n try {\n const token = await useNuxtApp().$getCarApiToken()\n const colors: any = await $fetch(`/api/carapi/interior-colors?trim=${trim}`, {\n headers: {\n 'API-TOKEN': token\n }\n })\n return colors?.data\n } catch (e) {\n return []\n }\n}\n\nconst mapObjectEquipments = (vinResponse: any, trimSelected: any) => {\n const equipments = [\n {\n group: \"General\",\n equipments: [\n {name: \"DestinationMarket\", availability: vinResponse.specs.destination_market || ''},\n {name: \"Make\", availability: vinResponse.make || ''},\n {name: \"Manufacturer\", availability: vinResponse.specs.manufacturer_name || ''},\n {name: \"Model\", availability: vinResponse.model || ''},\n {name: \"ModelYear\", availability: vinResponse.year?.toString() || ''},\n {name: \"PlantCity\", availability: vinResponse.specs.plant_city || ''},\n {name: \"Series\", availability: vinResponse.specs.series || ''},\n {name: \"Trim\", availability: trimSelected?.name || ''},\n {name: \"VehicleType\", availability: vinResponse.specs.vehicle_type || ''},\n {name: \"PlantCountry\", availability: vinResponse.specs.plant_country || ''},\n {name: \"PlantCompanyName\", availability: vinResponse.specs.plant_company_name || ''},\n {name: \"PlantState\", availability: vinResponse.specs.plant_state || ''},\n {name: \"Trim2\", availability: vinResponse.specs.trim2 || ''},\n {name: \"Series2\", availability: vinResponse.specs.series2 || ''},\n {name: \"Note\", availability: vinResponse.specs.note || ''},\n {name: \"BasePrice\", availability: trimSelected?.msrp?.toString() || ''},\n {name: \"InvoicePrice\", availability: trimSelected?.invoice?.toString() || ''},\n {name: \"NonLandUse\", availability: vinResponse.specs.non_land_use || ''}\n ]\n }, // General\n {\n group: \"Rendimiento\",\n equipments: [\n {\n name: \"CombinedMPG\",\n availability: trimSelected?.make_model_trim_mileage?.combined_mpg?.toString() || ''\n },\n {name: \"CityMPG\", availability: trimSelected?.make_model_trim_mileage?.epa_city_mpg?.toString() || ''},\n {\n name: \"HighwayMPG\",\n availability: trimSelected?.make_model_trim_mileage?.epa_highway_mpg?.toString() || ''\n },\n {name: \"RangeCity\", availability: trimSelected?.make_model_trim_mileage?.range_city?.toString() || ''},\n {\n name: \"RangeHighway\",\n availability: trimSelected?.make_model_trim_mileage?.range_highway?.toString() || ''\n },\n ]\n },\n {\n group: \"Carrocería\",\n equipments: [\n {name: \"BodyType\", availability: trimSelected?.make_model_trim_body?.type || ''},\n {name: \"Length\", availability: trimSelected?.make_model_trim_body?.length || ''},\n {name: \"Width\", availability: trimSelected?.make_model_trim_body?.width || ''},\n {name: \"Height\", availability: trimSelected?.make_model_trim_body?.height || ''},\n {name: \"Wheelbase\", availability: trimSelected?.make_model_trim_body?.wheel_base || ''},\n {name: \"CurbWeight\", availability: trimSelected?.make_model_trim_body?.curb_weight?.toString() || ''},\n {\n name: \"MaxTowingCapacity\",\n availability: trimSelected?.make_model_trim_body?.max_towing_capacity?.toString() || ''\n },\n ]\n },\n {\n group: \"Transmisión\",\n equipments: [\n {name: \"TransmissionType\", availability: trimSelected?.make_model_trim_engine?.transmission || ''},\n {name: \"DriveType\", availability: trimSelected?.make_model_trim_engine?.drive_type || ''},\n {name: \"TransmissionStyle\", availability: vinResponse.specs.transmission_style || ''},\n {name: \"TransmissionSpeeds\", availability: vinResponse.specs.transmission_speeds || ''}\n ]\n },\n {\n group: \"Motor\",\n equipments: [\n {name: \"EngineCylinders\", availability: vinResponse.specs.engine_number_of_cylinders || ''},\n {name: \"DisplacementCC\", availability: vinResponse.specs.displacement_cc || ''},\n {name: \"DisplacementCI\", availability: vinResponse.specs.displacement_ci || ''},\n {name: \"DisplacementL\", availability: vinResponse.specs.displacement_l || ''},\n {name: \"EngineCycles\", availability: vinResponse.specs.engine_stroke_cycles || ''},\n {name: \"EngineModel\", availability: vinResponse.specs.engine_model || ''},\n {name: \"EngineHP\", availability: vinResponse.specs.engine_brake_hp_from || ''},\n {name: \"FuelTypePrimary\", availability: vinResponse.specs.fuel_type_primary || ''},\n {name: \"ValveTrainDesign\", availability: vinResponse.specs.valve_train_design || ''},\n {name: \"EngineConfiguration\", availability: vinResponse.specs.engine_configuration || ''},\n {name: \"FuelTypeSecondary\", availability: vinResponse.specs.fuel_type_secondary || ''},\n {name: \"FuelInjectionType\", availability: vinResponse.specs.fuel_delivery_fuel_injection_type || ''},\n {name: \"EngineHP_to\", availability: vinResponse.specs.engine_brake_hp_to || ''},\n {name: \"CoolingType\", availability: vinResponse.specs.cooling_type || ''},\n {name: \"ElectrificationLevel\", availability: vinResponse.specs.electrification_level || ''},\n {name: \"OtherEngineInfo\", availability: vinResponse.specs.other_engine_info || ''},\n {name: \"Turbo\", availability: vinResponse.specs.turbo || ''},\n {name: \"TopSpeedMPH\", availability: vinResponse.specs.top_speed_mph || ''},\n {name: \"EngineManufacturer\", availability: vinResponse.specs.engine_manufacturer || ''},\n {name: \"EngineType\", availability: trimSelected?.make_model_trim_engine?.engine_type || ''},\n {name: \"FuelType\", availability: trimSelected?.make_model_trim_engine?.fuel_type || ''},\n {name: \"Cylinders\", availability: trimSelected?.make_model_trim_engine?.cylinders || ''},\n {name: \"EngineSize\", availability: trimSelected?.make_model_trim_engine?.size || ''},\n {\n name: \"Horsepower\",\n availability: trimSelected?.make_model_trim_engine?.horsepower_hp?.toString() || ''\n },\n {name: \"Torque\", availability: trimSelected?.make_model_trim_engine?.torque_ft_lbs?.toString() || ''},\n ]\n }, // Motor\n {\n group: \"Tren de Manejo\",\n equipments: [\n {name: \"DriveType\", availability: vinResponse.specs.drive_type || ''},\n {name: \"Axles\", availability: vinResponse.specs.axles || ''},\n {name: \"AxleConfiguration\", availability: vinResponse.specs.axle_configuration || ''}\n ]\n }, // Tren de manejo\n {\n group: \"Frenado\",\n equipments: [\n {name: \"BrakeSystemType\", availability: vinResponse.specs.brake_system_type || ''},\n {name: \"BrakeSystemDescription\", availability: vinResponse.specs.brake_system_description || ''}\n ]\n }, // Frenado\n {\n group: \"Batería\",\n equipments: [\n {name: \"BatteryInfo\", availability: vinResponse.specs.other_battery_info || ''},\n {name: \"BatteryType\", availability: vinResponse.specs.battery_type || ''},\n {name: \"BatteryCells\", availability: vinResponse.specs.number_of_battery_cells_per_module || ''},\n {name: \"BatteryA\", availability: vinResponse.specs.battery_current_amps_from || ''},\n {name: \"BatteryA_to\", availability: vinResponse.specs.battery_current_amps_to || ''},\n {name: \"BatteryV\", availability: vinResponse.specs.battery_voltage_volts_from || ''},\n {name: \"BatteryV_to\", availability: vinResponse.specs.battery_voltage_volts_to || ''},\n {name: \"BatteryKWh\", availability: vinResponse.specs.battery_energy_kwh_from || ''},\n {name: \"BatteryKWh_to\", availability: vinResponse.specs.battery_energy_kwh_to || ''},\n {name: \"BatteryModules\", availability: vinResponse.specs.number_of_battery_modules_per_pack || ''},\n {name: \"BatteryPacks\", availability: vinResponse.specs.number_of_battery_packs_per_vehicle || ''},\n {name: \"EVDriveUnit\", availability: vinResponse.specs.ev_drive_unit || ''}\n ]\n }, // Batería\n {\n group: \"Exterior\",\n equipments: [\n {name: \"BodyClass\", availability: vinResponse.specs.body_class || ''},\n {name: \"Doors\", availability: vinResponse.specs.doors || ''},\n {name: \"Windows\", availability: vinResponse.specs.windows || ''},\n {name: \"WheelBaseType\", availability: vinResponse.specs.wheel_base_type || ''},\n {name: \"TrackWidth\", availability: vinResponse.specs.track_width_inches || ''},\n {name: \"BedType\", availability: vinResponse.specs.bed_type || ''},\n {name: \"BodyCabType\", availability: vinResponse.specs.cab_type || ''},\n {name: \"NumberOfWheels\", availability: vinResponse.specs.number_of_wheels || ''},\n {name: \"WheelSizeFrontInches\", availability: vinResponse.specs.wheel_size_front_inches || ''},\n {name: \"WheelSizeRearInches\", availability: vinResponse.specs.wheel_size_rear_inches || ''}\n ]\n }, // Exterior\n {\n group: \"Interior\",\n equipments: [\n {name: \"NumberOfSeats\", availability: vinResponse.specs.number_of_seats || ''},\n {name: \"NumberOfSeatRows\", availability: vinResponse.specs.number_of_seat_rows || ''},\n {name: \"EntertainmentSystem\", availability: vinResponse.specs.entertainment_system || ''},\n {name: \"SteeringLocation\", availability: vinResponse.specs.steering_location || ''}\n ]\n }, // Interior\n {\n group: \"Dimensiones\",\n equipments: [\n {\n name: \"GrossVehicleWeightRatingFrom\",\n availability: vinResponse.specs.gross_vehicle_weight_rating_from || ''\n },\n {name: \"CurbWeightPounds\", availability: vinResponse.specs.curb_weight_pounds || ''},\n {name: \"WheelBaseInchesFrom\", availability: vinResponse.specs.wheel_base_inches_from || ''},\n {name: \"WheelBaseInchesTo\", availability: vinResponse.specs.wheel_base_inches_to || ''}\n ]\n }, // Dimensiones\n {\n group: \"Sistema de Seguridad Pasiva\",\n equipments: [\n {name: \"CurtainAirBagLocations\", availability: vinResponse.specs.curtain_air_bag_locations || ''},\n {name: \"FrontAirBagLocations\", availability: vinResponse.specs.front_air_bag_locations || ''},\n {name: \"SideAirBagLocations\", availability: vinResponse.specs.side_air_bag_locations || ''},\n {name: \"Pretensioner\", availability: vinResponse.specs.pretensioner || ''},\n {name: \"SeatBeltType\", availability: vinResponse.specs.seat_belt_type || ''},\n {name: \"OtherRestraintSystemInfo\", availability: vinResponse.specs.other_restraint_system_info || ''}\n ]\n }, // Seguridad Pasiva\n {\n group: \"Sistema Activo de Seguridad\",\n equipments: [\n {\n name: \"AutomaticCrashNotification\",\n availability: vinResponse.specs.automatic_crash_notification_acn_advanced_automatic_crash_notification_aacn || ''\n },\n {name: \"DaytimeRunningLight\", availability: vinResponse.specs.daytime_running_light_drl || ''},\n {name: \"HeadlampLightSource\", availability: vinResponse.specs.headlamp_light_source || ''},\n {\n name: \"SemiautomaticHeadlampBeamSwitching\",\n availability: vinResponse.specs.semiautomatic_headlamp_beam_switching || ''\n },\n {name: \"CrashImminentBraking\", availability: vinResponse.specs.crash_imminent_braking_cib || ''},\n {name: \"ForwardCollisionWarning\", availability: vinResponse.specs.forward_collision_warning_fcw || ''},\n {name: \"DynamicBrakeSupport\", availability: vinResponse.specs.dynamic_brake_support_dbs || ''},\n {\n name: \"PedestrianAutomaticEmergencyBraking\",\n availability: vinResponse.specs.pedestrian_automatic_emergency_braking_paeb || ''\n },\n {name: \"BlindSpotWarning\", availability: vinResponse.specs.blind_spot_warning_bsw || ''},\n {name: \"LaneDepartureWarning\", availability: vinResponse.specs.lane_departure_warning_ldw || ''},\n {name: \"LaneKeepingAssistance\", availability: vinResponse.specs.lane_keeping_assistance_lka || ''},\n {name: \"BlindSpotIntervention\", availability: vinResponse.specs.blind_spot_intervention_bsi || ''},\n {name: \"LaneCenteringAssistance\", availability: vinResponse.specs.lane_centering_assistance || ''},\n {name: \"BackupCamera\", availability: vinResponse.specs.backup_camera || ''},\n {name: \"ParkingAssist\", availability: vinResponse.specs.parking_assist || ''},\n {name: \"RearCrossTrafficAlert\", availability: vinResponse.specs.rear_cross_traffic_alert || ''},\n {\n name: \"RearAutomaticEmergencyBraking\",\n availability: vinResponse.specs.rear_automatic_emergency_braking || ''\n }\n ]\n }, // Seguridad Activa\n {\n group: \"Interno\",\n equipments: [\n {name: \"NCSABodyType\", availability: vinResponse.specs.ncsa_body_type || ''},\n {name: \"NCSAMake\", availability: vinResponse.specs.ncsa_make || ''},\n {name: \"NCSAModel\", availability: vinResponse.specs.ncsa_model || ''},\n {name: \"NCSANote\", availability: vinResponse.specs.ncsa_note || ''}\n ]\n } // Interno\n ];\n\n return equipments.map((el: any) => ({\n ...el,\n equipments: [...el.equipments.filter((v: any) => v.availability.replaceAll(' ', '') !== '' && v.availability !== 'Not Applicable')]\n })).filter(el => el.equipments.length > 1)\n\n\n}\n\ninterface VehicleMake {\n make: string;\n models: (string | null)[];\n}\n\nfunction obtenerMarcasUnicas(marcas: any[]): string[] {\n const marcasUnicas: string[] = [];\n const marcasNormalizadas = new Set();\n\n for (const marca of marcas) {\n const nombreMarca = marca.make.trim();\n\n if (!nombreMarca) continue; // Ignorar marcas vacías\n\n // Normalizar el nombre para comparación\n const normalizado = nombreMarca\n .toLowerCase()\n .replace(/[\\s-]/g, ''); // Eliminar espacios y guiones\n\n if (!marcasNormalizadas.has(normalizado)) {\n marcasNormalizadas.add(normalizado);\n marcasUnicas.push(nombreMarca);\n }\n }\n\n return marcasUnicas;\n}\n\nfunction setDataToHead(listing: any) {\n const jsonLdData = generateCarJsonLd(listing)\n if (jsonLdData) {\n useHead({\n script: [\n {\n type: 'application/ld+json',\n // children es el contenido del script\n textContent: JSON.stringify(jsonLdData)\n }\n ]\n })\n }\n\n}\n\nfunction setDataToHeadFromSlug(listing: any) {\n const jsonLdData = generateCarJsonLdFromSlug(listing)\n if (jsonLdData) {\n useHead({\n script: [\n {\n type: 'application/ld+json',\n // children es el contenido del script\n textContent: JSON.stringify(jsonLdData)\n }\n ]\n })\n }\n\n}\n\n\nconst vehicleColors: VehicleColor[] = [\n {\n color: 'Blanco',\n hex: '#FFFFFF',\n value: 'white'\n },\n {\n color: 'Negro',\n hex: '#000000',\n value: 'black'\n },\n {\n color: 'Gris',\n hex: '#808080',\n value: 'gray'\n },\n {\n color: 'Plateado',\n hex: '#C0C0C0',\n value: 'silver'\n },\n {\n color: 'Rojo',\n hex: '#FF0000',\n value: 'red'\n },\n {\n color: 'Azul',\n hex: '#0000FF',\n value: 'blue'\n },\n {\n color: 'Verde',\n hex: '#008000',\n value: 'green'\n },\n {\n color: 'Amarillo',\n hex: '#FFFF00',\n value: 'yellow'\n },\n {\n color: 'Naranja',\n hex: '#FFA500',\n value: 'orange'\n },\n {\n color: 'Púrpura',\n hex: '#800080',\n value: 'purple'\n },\n {\n color: 'Rosa',\n hex: '#FFC0CB',\n value: 'pink'\n },\n {\n color: 'Marrón',\n hex: '#A52A2A',\n value: 'brown'\n },\n {\n color: 'Bronce',\n hex: '#CD7F32',\n value: 'bronze'\n },\n {\n color: 'Beige',\n hex: '#F5F5DC',\n value: 'beige'\n }\n];\nconst interiorColors: VehicleColor[] = [\n {\n color: 'Negro',\n hex: '#000000',\n value: 'black'\n },\n {\n color: 'Gris',\n hex: '#808080',\n value: 'gray'\n },\n {\n color: 'Beige',\n hex: '#F5F5DC',\n value: 'beige'\n },\n {\n color: 'Blanco',\n hex: '#FFFFFF',\n value: 'white'\n },\n {\n color: 'Marrón',\n hex: '#A52A2A',\n value: 'brown'\n },\n {\n color: 'Rojo',\n hex: '#FF0000',\n value: 'red'\n },\n {\n color: 'Azul',\n hex: '#0000FF',\n value: 'blue'\n }\n];\n\nconst getDriveConfiguration = (drive_train: string) => {\n if (drive_train !== '') {\n switch (drive_train) {\n case '4WD':\n return 'https://schema.org/FourWheelDriveConfiguration'\n case 'AWD':\n return 'https://schema.org/AllWheelDriveConfiguration'\n case 'FWD':\n return 'https://schema.org/FrontWheelDriveConfiguration'\n case 'RWD':\n return 'https://schema.org/RearWheelDriveConfiguration'\n }\n }\n return null\n}\n\nfunction generateCarJsonLd(listing: any) {\n // Asegurarnos de que listing exista, tenga title y VIN\n if (!listing || !listing.title || !listing.car?.make || !listing.car?.model || !listing.car?.vin || (listing.car_millage == 0 && listing.sub_category == 'USED')) {\n //console.log(\"[CV] No se puede generar JSON-LD para el vehículo \" + listing.title + \" porque faltan datos esenciales.\");\n return null;\n }\n\n // Iniciamos el objeto con los campos mínimos\n const jsonLd: any = {\n '@context': 'https://schema.org',\n '@type': 'Car',\n name: listing.title,\n vehicleIdentificationNumber: listing.car.vin\n };\n\n // Si hay un arreglo de imágenes, lo añadimos\n if (Array.isArray(listing.pictures)) {\n jsonLd.image = listing.pictures;\n }\n\n // Si existe un link, formamos la URL\n if (listing.link) {\n jsonLd.url = `https://compralovendelo.com/${listing.link}`;\n }\n\n\n // Si existe un precio, creamos el objeto de oferta\n if (typeof listing.price === 'number') {\n jsonLd.offers = {\n '@type': 'Offer',\n availability: listing.car.status == 1 ? 'https://schema.org/InStock' : 'https://schema.org/OutOfStock',\n price: parseInt(listing.price.toFixed(0)), // Ajusta a dos decimales\n priceCurrency: 'USD', // Ajusta a la moneda que corresponda\n };\n }\n\n // Determinamos la condición (si sub_category es \"USED\", se usa \"UsedCondition\")\n jsonLd.itemCondition =\n listing.sub_category === 'USED'\n ? 'https://schema.org/UsedCondition'\n : 'https://schema.org/NewCondition';\n\n // Marca (Brand)\n if (listing.car.make) {\n jsonLd.brand = {\n '@type': 'Brand',\n name: listing.car.make,\n };\n }\n\n // Modelo\n if (listing.car.model) {\n jsonLd.model = listing.car.model;\n }\n\n // Configuración/Body Style\n if (listing.car?.body_style) {\n jsonLd.vehicleConfiguration = listing.car.body_style;\n jsonLd.bodyType = listing.car.body_style;\n }\n\n // Año del modelo\n if (listing.car.year) {\n jsonLd.vehicleModelDate = listing.car.year;\n }\n\n // Millaje (si existe)\n if (typeof listing.car_millage === 'number') {\n jsonLd.mileageFromOdometer = {\n '@type': 'QuantitativeValue',\n value: listing.car.millage,\n unitCode: 'SMI', // Cambia a 'KM' si tu millaje está en km\n };\n }\n\n // Color exterior\n if (listing.car?.color) {\n jsonLd.color = listing.car.color;\n }\n\n // Color interior\n if (listing.car?.interior_color) {\n jsonLd.vehicleInteriorColor = listing.car.interior_color;\n }\n\n // Drive train (4WD, FWD, RWD, AWD), mapeado a Schema.org\n if (listing.car?.drive_train) {\n jsonLd.driveWheelConfiguration = getDriveConfiguration(listing.car.drive_train);\n }\n\n if (listing.car?.number_of_doors) {\n jsonLd.numberOfDoors = listing.car.number_of_doors\n }\n if (listing.car?.number_of_seats) {\n jsonLd.vehicleSeatingCapacity = listing.car.number_of_seats\n }\n if (listing.car?.interior_type) {\n jsonLd.vehicleInteriorType = listing.car.interior_type\n }\n\n // Especificaciones de motor (fuel type)\n if (listing.car?.fuel_type) {\n jsonLd.vehicleEngine = {\n '@type': 'EngineSpecification',\n fuelType: listing.car.fuel_type,\n };\n }\n\n // Transmisión\n if (listing.car?.transmission) {\n jsonLd.vehicleTransmission = listing.car.transmission;\n }\n\n // Devolvemos el objeto JSON-LD completo\n return jsonLd;\n}\n\nfunction generateCarJsonLdFromSlug(listing: any): any {\n // Extraemos VIN y title, que asumes siempre disponibles\n const {vin, title} = listing;\n\n if (!vin || !title || ((listing.current_millage ?? 0) == 0 && listing.type == 'USED')) {\n return null\n }\n\n // Comenzamos con los campos mínimos requeridos\n const jsonLd: any = {\n '@context': 'https://schema.org',\n '@type': 'Car',\n name: title, // obligatorio\n vehicleIdentificationNumber: vin // obligatorio\n };\n\n // Opcionales: se incluyen sólo si existen\n if (Array.isArray(listing.pictures) && listing.pictures.length > 0) {\n jsonLd.image = listing.pictures;\n }\n\n\n // Si tienes una URL base, combínala con listing.link\n if (listing.link) {\n jsonLd.url = `https://compralovendelo.com/${listing.link}`;\n }\n\n // Precio y estado del anuncio (Ofertas)\n if (typeof listing.price === 'number') {\n jsonLd.offers = {\n '@type': 'Offer',\n availability: listing.status == 'STOCK' ? 'https://schema.org/InStock' : 'https://schema.org/OutOfStock',\n price: parseInt(listing.price.toFixed(0)), // Ajusta a dos decimales\n priceCurrency: 'USD' // Ajusta la moneda según tu caso\n };\n }\n\n // Condición del artículo: \"UsedCondition\" si type=USED, de lo contrario \"NewCondition\"\n if (listing.type) {\n jsonLd.itemCondition =\n listing.type === 'USED'\n ? 'https://schema.org/UsedCondition'\n : 'https://schema.org/NewCondition';\n }\n\n // Marca (ej: \"Toyota\", \"Mercedes-Benz\"), si la tienes\n if (listing.make) {\n jsonLd.brand = {\n '@type': 'Brand',\n name: listing.make\n };\n }\n\n // Modelo (ej: \"Corolla\", \"GLC-Class\")\n if (listing.model) {\n jsonLd.model = listing.model;\n }\n\n // Configuración del vehículo\n if (listing.body_style) {\n jsonLd.vehicleConfiguration = listing.body_style;\n jsonLd.bodyType = listing.body_style;\n }\n\n // Año del modelo\n if (listing.year) {\n jsonLd.vehicleModelDate = listing.year;\n }\n\n // Millaje actual (unidad de medida a tu elección: \"KM\" o \"SMI\")\n if (typeof listing.current_millage === 'number') {\n jsonLd.mileageFromOdometer = {\n '@type': 'QuantitativeValue',\n value: listing.current_millage,\n unitCode: 'SMI' // o \"SMI\" si usas millas\n };\n }\n\n // Color exterior\n if (listing.color) {\n jsonLd.color = listing.color;\n }\n\n // Color interior\n if (listing.interior_color) {\n jsonLd.vehicleInteriorColor = listing.interior_color;\n }\n\n // Tren de manejo (4WD, AWD, FWD, RWD)\n if (listing.drive_train) {\n jsonLd.driveWheelConfiguration = getDriveConfiguration(listing.drive_train);\n }\n\n // Especificaciones del motor\n if (listing.fuel_type) {\n jsonLd.vehicleEngine = {\n '@type': 'EngineSpecification',\n fuelType: listing.fuel_type\n };\n }\n\n // Transmisión (Automática / Manual, etc.)\n if (listing.transmission) {\n jsonLd.vehicleTransmission = listing.transmission;\n }\n\n if (listing.number_of_doors) {\n jsonLd.numberOfDoors = listing.number_of_doors\n }\n if (listing.number_of_seats) {\n jsonLd.vehicleSeatingCapacity = listing.number_of_seats\n }\n if (listing.interior_type) {\n jsonLd.vehicleInteriorType = listing.interior_type\n }\n\n // Retornamos el objeto final\n return jsonLd;\n}\n\nconst getCarBodyType = (type: any) => {\n const styleMap: Record = {\n \"Sport Utility Vehicle\": \"SUV\",\n \"Standard Sport Utility Vehicle\": \"SUV\",\n \"Compact Sport Utility Vehicle\": \"SUV\",\n \"Pickup Truck Truck\": \"Pickup\",\n \"Pickup Truck\": \"Pickup\",\n \"Pickup\": \"Pickup\",\n \"Convertible\": \"Convertible\",\n \"Hatchback\": \"Hatchback\",\n \"Sedan\": \"Sedan\",\n \"Coupe\": \"Coupe\",\n \"Minivan\": \"Minivan\",\n \"Van\": \"Van\",\n \"Passenger Van\": \"Van\",\n \"Cargo Van\": \"Van\",\n \"Truck\": \"Truck\",\n \"Heavy Duty Truck\": \"Truck\",\n \"Light Duty Truck\": \"Truck\",\n \"Wagon\": \"Wagon\",\n \"Station Wagon\": \"Wagon\"\n };\n\n return styleMap[type] || type;\n}\n\nfunction groupEquipments(data: any[]): any[] {\n // Reducimos el arreglo a un objeto que tenga como llave el \"group\"\n // y como valor un objeto con el formato deseado.\n const grouped = data.reduce((acc, item) => {\n // Si no existe la clave 'item.group' en 'acc', la creamos.\n if (!acc[item.group]) {\n acc[item.group] = {\n group: item.group,\n equipments: []\n };\n }\n\n // Agregamos el nuevo objeto a la lista de 'equipments'\n acc[item.group].equipments.push({\n name: item.name,\n // Concatenamos `value` y `availability` y luego hacemos trim()\n availability: (item.value + ' ' + item.availability).trim()\n });\n\n return acc;\n }, {} as Record);\n\n // Devolvemos solo los valores del objeto (cada valor es un `GroupedEquipment`)\n return Object.values(grouped);\n}\n\nexport const useCar = () => ({\n carsAttributes,\n vehicleColors,\n interiorColors,\n currentMakes,\n currentModels,\n currentTrims,\n getTrims,\n saveCar,\n destroyCar,\n updateCar,\n getUserCars,\n transformCarToCard,\n transformArrayCarsToCard,\n transformListingCarToCard,\n getAllCars,\n getAllMakes,\n getModelFromMake,\n getMakeAndModel,\n getTrimsFromModel,\n getBodies,\n getVehicleColor,\n saveCarDraft,\n getExteriorColor,\n getInteriorColor,\n mapObjectEquipments,\n getExteriorColorWithMakeModel,\n getInteriorColorWithMakeModel,\n getExteriorColorWithTrim,\n getInteriorColorWithTrim,\n fetchAveragePrice,\n generateCarJsonLd,\n setDataToHead,\n generateCarJsonLdFromSlug,\n setDataToHeadFromSlug,\n getCarBodyType,\n groupEquipments\n})\n\n\nexport type AttributeFieldsArray = {\n key: keyof Attribute;\n label: string;\n value: string;\n readonly?: boolean;\n};\n// Traducción de los campos como un Array\nconst carsAttributes: AttributeFieldsArray[] = [\n {key: \"make\", label: \"Marca\", value: \"\", readonly: true}, // No se puede modificar\n {key: \"model\", label: \"Modelo\", value: \"\", readonly: true}, // No se puede modificar\n {key: \"year\", label: \"Año\", value: \"\", readonly: true}, // No se puede modificar\n {key: \"trim\", label: \"Versión\", value: \"\", readonly: true}, // No se puede modificar\n {key: \"type\", label: \"Tipo\", value: \"\", readonly: true}, // No se puede modificar\n {key: \"category\", label: \"Categoría\", value: \"\", readonly: true}, // No se puede modificar\n {key: \"size\", label: \"Tamaño\", value: \"\", readonly: true}, // No se puede modificar\n {key: \"made_in\", label: \"Fabricado en\", value: \"\", readonly: true}, // No se puede modificar\n {key: \"doors\", label: \"Puertas\", value: \"\", readonly: true}, // No se puede modificar\n {key: \"engine\", label: \"Motor\", value: \"\", readonly: true}, // No se puede modificar\n {key: \"transmission_speeds\", label: \"Velocidad de Transmisión\", value: \"\", readonly: true}, // No se puede modificar*/\n];\n"],"names":["currentMakes","ref","currentModels","currentTrims","saveCar","car","form","useFormData","useNuxtApp","LISTINGS_SERVICE","saveCarDraft","updateCar","i","index","el","getUserCars","destroyCar","getAllCars","params","fetchAveragePrice","make","model","year","getVehicleColor","color","colorFound","vehicleColors","transformCarToCard","useAddress","_a","_b","_c","_d","_e","_f","_g","useNumberFormat","getCarMonthlyPrice","cuotaStr","transformListingCarToCard","transformArrayCarsToCard","getMakeAndModel","getBodies","getAllMakes","makes","e","getModelFromMake","models","getTrimsFromModel","trims","getTrims","make_model_id","token","getExteriorColor","make_model_trim_id","colors","getExteriorColorWithMakeModel","make_id","model_id","getExteriorColorWithTrim","trim","getInteriorColor","getInteriorColorWithMakeModel","getInteriorColorWithTrim","mapObjectEquipments","vinResponse","trimSelected","_i","_h","_k","_j","_m","_l","_n","_o","_p","_q","_r","_t","_s","_v","_u","_w","_x","_y","_z","_A","_B","_D","_C","_F","_E","v","setDataToHead","listing","jsonLdData","generateCarJsonLd","useHead","setDataToHeadFromSlug","generateCarJsonLdFromSlug","interiorColors","getDriveConfiguration","drive_train","jsonLd","vin","title","getCarBodyType","type","groupEquipments","data","grouped","acc","item","useCar","carsAttributes"],"mappings":"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"}