{"version":3,"file":"useZoneInput.BRBY6Xy7.js","sources":["../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/context/useContextState.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/hooks/useSearcherFerryHotelDefaultValues.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/service.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/context/useSideEffects.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/context/index.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/components/accommodation-input/hooks/useAccommodationInput.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/components/button/hooks/useButton.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/utils/utils.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/components/dates-input/hooks/useDatesInput.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/components/destination-input/hooks/useDestinationInput.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/components/different-zone-checkbox/hooks/useDifferentZone.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/components/origin-input/hooks/useOriginInput.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/constants.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/components/redirecting-modal/hooks/useRedirectingModal.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/components/redirecting-modal/index.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/utils/url.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/hooks/useSearcherFerryHotelForm.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/utils/model.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/hooks/useSearcherFerryHotelTransformedProps.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/components/searcher-form/index.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/components/vehicle-input/hooks/useVehicleInput.js","../../../../../../../node_modules/@babylon/ui-kit-searchers/components/searchers/searcher-ferry-hotel/components/zone-input/hooks/useZoneInput.js"],"sourcesContent":["import useValue from '@babylon/ui-kit-forms/hooks/useValue';\nimport useLoading from '../../../../hooks/useLoading.js';\nimport { useState } from 'react';\n\nconst useSearcherFerryHotelContextState = ()=>{\n const [origins, setOrigins] = useState([]);\n const [destinations, setDestinations] = useState([]);\n const [routeData, setRouteData] = useState();\n const { isLoading, doFetchLoading } = useLoading();\n const differentZoneValue = useValue({\n name: 'differentZone'\n });\n return {\n state: {\n origins,\n destinations,\n routeData,\n isLoading,\n differentZoneValue\n },\n actions: {\n setOrigins,\n setDestinations,\n setRouteData,\n doFetchLoading\n }\n };\n};\n\nexport { useSearcherFerryHotelContextState as default };\n","import contextBabylon from '@babylon/ui-kit-context';\nimport { getValidAccommodation } from '@babylon/ui-kit-forms/helpers/accommodation';\nimport { getValidAutocomplete } from '@babylon/ui-kit-forms/helpers/autocomplete';\nimport { getValidDates, addDays } from '@babylon/ui-kit-helpers/date';\nimport { useContext } from 'react';\n\nconst useOriginDefaultValue = (props)=>{\n const { config } = props ?? {};\n const { literals } = config ?? {};\n const { originDefault = '' } = literals ?? {};\n return {\n label: originDefault\n };\n};\nconst useDestinationDefaultValue = (props)=>{\n const { config } = props ?? {};\n const { literals } = config ?? {};\n const { destinationDefault = '' } = literals ?? {};\n return {\n label: destinationDefault\n };\n};\nconst useCalendarDefaultValue = (props)=>getValidDates(new Date(), addDays(new Date(), 3), props?.dates);\nconst useVehicleDefaultValue = (props)=>{\n const { vehicle } = props ?? {};\n const { items: vehicles } = vehicle ?? {};\n const selectedVehicle = vehicles?.find((vehicle)=>vehicle.selected);\n if (!selectedVehicle) return;\n return {\n label: selectedVehicle?.label,\n value: selectedVehicle?.value,\n caravan: selectedVehicle?.caravan,\n caravanLength: selectedVehicle?.caravanLength,\n caravanHeight: selectedVehicle?.caravanHeight,\n height: selectedVehicle?.height,\n length: selectedVehicle?.length,\n selected: true,\n trailer: selectedVehicle?.trailer\n };\n};\nconst useSearcherFerryHotelDefaultValues = (props)=>({\n originPort: useOriginDefaultValue(props),\n destinationPort: useDestinationDefaultValue(props),\n dates: useCalendarDefaultValue(props),\n accommodation: getValidAccommodation(props?.accommodation),\n vehicle: useVehicleDefaultValue(props),\n isDifferentZone: false,\n zone: getValidAutocomplete(useContext(contextBabylon).Market, props?.zone)\n });\n\nexport { useSearcherFerryHotelDefaultValues as default };\n","import { parseFilters } from '@babylon/ui-kit-helpers/url';\n\nconst getLocations = async (url = '/ferriesShowcase/Shima/GetPorts', { originValue }, { BaseUrl, Application } = {})=>{\n if (!url || !BaseUrl || !Application) return;\n let finalUrl = url;\n if (!url.startsWith('http')) finalUrl = `${BaseUrl}${url}`;\n const filters = parseFilters({\n portCode: originValue,\n application: url.indexOf('?') === -1 ? Application : undefined\n });\n if (filters) {\n finalUrl += url.indexOf('?') === -1 ? `?${filters}` : `&${filters}`;\n }\n const response = await fetch(finalUrl);\n if (!response?.ok) {\n return;\n }\n const data = await response.json().catch(()=>{\n throw new Error('Error parsing locations');\n });\n return data;\n};\nconst getRoute = async (url = '/packagesalexswc/transportsoperative/ferryroutedata', { originValue, destinationValue }, { BaseUrl, Application } = {})=>{\n if (!url || !BaseUrl || !Application) return;\n let finalUrl = url;\n if (!url.startsWith('http')) finalUrl = `${BaseUrl}${url}`;\n const filters = parseFilters({\n originPortCode: originValue,\n destinationPortCode: destinationValue,\n application: url.indexOf('?') === -1 ? Application : undefined\n });\n if (filters) {\n finalUrl += url.indexOf('?') === -1 ? `?${filters}` : `&${filters}`;\n }\n const response = await fetch(finalUrl);\n if (!response?.ok) {\n return;\n }\n const data = await response.json().catch(()=>{\n throw new Error('Error parsing locations');\n });\n return data;\n};\n\nexport { getLocations, getRoute };\n","import contextBabylon from '@babylon/ui-kit-context';\nimport { getOptionSelected } from '@babylon/ui-kit-forms/helpers/select';\nimport useValueChanged from '@babylon/ui-kit-forms/hooks/useValueChanged';\nimport { getFirstDayValid } from '@babylon/ui-kit-helpers/date';\nimport isEqual from '@babylon/ui-kit-helpers/is-equal';\nimport { useEffect, useContext, useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport useSearcherFerryHotelDefaultValues from '../hooks/useSearcherFerryHotelDefaultValues.js';\nimport { getRoute, getLocations } from '../service.js';\n\nconst parseDataDiscounts = (items, label = '')=>({\n items: items.map(({ name, type })=>({\n value: type,\n label: name\n })),\n label\n });\n// Update functions\nconst useUpdateDiscounts = ()=>{\n const { getValues, setValue } = useFormContext();\n return useCallback((routeData)=>{\n const discountValue = getValues().discount;\n const residentValue = getValues().resident;\n if (routeData?.discounts) {\n const selectedDiscount = routeData?.discounts?.items?.find((discount)=>String(discount.value) === String(discountValue?.value));\n if (!selectedDiscount) {\n const emptyOption = routeData?.discounts?.items?.find((discount)=>!discount.value || discount.value === '0');\n if (!isEqual(emptyOption, discountValue)) {\n setValue('discount', emptyOption, {\n shouldValidate: true,\n shouldDirty: true,\n shouldTouch: true\n });\n }\n }\n }\n if (routeData?.residents) {\n const selectedResident = routeData?.residents?.items?.find((resident)=>String(resident.value) === String(residentValue?.value));\n if (!selectedResident) {\n const emptyOption = routeData?.residents?.items?.find((resident)=>!resident.value || resident.value === '0');\n if (!isEqual(emptyOption, residentValue)) {\n setValue('resident', emptyOption, {\n shouldValidate: true,\n shouldDirty: true,\n shouldTouch: true\n });\n }\n }\n }\n }, [\n getValues,\n setValue\n ]);\n};\nconst useUpdateDates = ()=>{\n const { setValue } = useFormContext();\n return useCallback((routeData)=>{\n if (!routeData.outbound_dates?.length || !routeData.return_dates?.length) return;\n const outbound_date = getFirstDayValid(routeData.outbound_dates.map((date)=>date.value), new Date(Date.now() - 86400000), 0 // 0 release days because it's the outbound date\n );\n const return_date = getFirstDayValid(routeData.return_dates.map((date)=>date.value), outbound_date);\n if (!outbound_date || !return_date) return;\n setValue('dates', [\n outbound_date,\n return_date\n ], {\n shouldValidate: true,\n shouldDirty: true,\n shouldTouch: true\n });\n }, [\n setValue\n ]);\n};\nconst useUpdateRouteData = (contextValue)=>{\n const { props: { config }, state: { routeData }, actions: { setRouteData } } = contextValue;\n const { endpoints, literals } = config ?? {};\n const { discountsLabel = '', bonusLabel = '' } = literals ?? {};\n const { BaseUrl, Application } = useContext(contextBabylon);\n const { getValues } = useFormContext();\n const updateDiscounts = useUpdateDiscounts();\n const updateDates = useUpdateDates();\n return useCallback(async ()=>{\n const originValue = getValues().originPort?.value;\n const destinationValue = getValues().destinationPort?.value;\n if (!originValue || !destinationValue) return;\n const newRouteData = await getRoute(endpoints?.route, {\n originValue,\n destinationValue\n }, {\n BaseUrl,\n Application\n });\n if (newRouteData?.result !== 'OK' || !newRouteData?.data) return;\n const newRouteDataParsed = {\n ...newRouteData.data,\n discounts: newRouteData.data.discounts && parseDataDiscounts(newRouteData.data.discounts, discountsLabel),\n residents: newRouteData.data.residents && parseDataDiscounts(newRouteData.data.residents, bonusLabel)\n };\n if (isEqual(newRouteDataParsed, routeData)) return;\n setRouteData(newRouteDataParsed);\n updateDiscounts(newRouteDataParsed);\n updateDates(newRouteDataParsed);\n }, [\n Application,\n BaseUrl,\n bonusLabel,\n discountsLabel,\n endpoints?.route,\n getValues,\n routeData,\n setRouteData,\n updateDates,\n updateDiscounts\n ]);\n};\nconst useUpdateDestinations = (contextValue)=>{\n const { props: { config, destinationPort }, state: { destinations }, actions: { setDestinations } } = contextValue;\n const { endpoints } = config ?? {};\n const { BaseUrl, Application } = useContext(contextBabylon);\n const { getValues, setValue } = useFormContext();\n const updateRouteData = useUpdateRouteData(contextValue);\n const defaultValue = useSearcherFerryHotelDefaultValues(contextValue.props).destinationPort;\n return useCallback(async ()=>{\n const originValue = getValues().originPort?.value;\n if (!originValue) return;\n const destinationValue = getValues().destinationPort?.value;\n const newDestinations = await getLocations(endpoints?.ports, {\n originValue\n }, {\n BaseUrl,\n Application\n });\n if (newDestinations?.locations && !isEqual(newDestinations?.locations, destinations)) {\n setDestinations(newDestinations.locations);\n if (!destinationValue && destinationPort) {\n const newDestination = getOptionSelected(newDestinations.locations, destinationPort);\n if (newDestination?.value) {\n setValue('destinationPort', newDestination, {\n shouldValidate: true,\n shouldDirty: true,\n shouldTouch: true\n });\n }\n }\n if (destinationValue && !getOptionSelected(newDestinations.locations, destinationValue)) {\n const newDestination = newDestinations.locations[0] ?? defaultValue;\n setValue('destinationPort', newDestination, {\n shouldValidate: true,\n shouldDirty: true,\n shouldTouch: true\n });\n }\n }\n await updateRouteData();\n }, [\n Application,\n BaseUrl,\n defaultValue,\n destinationPort,\n destinations,\n endpoints?.ports,\n getValues,\n setDestinations,\n setValue,\n updateRouteData\n ]);\n};\nconst useUpdateOrigins = (contextValue)=>{\n const { props: { config, originPort }, actions: { setOrigins } } = contextValue;\n const { endpoints } = config ?? {};\n const { BaseUrl, Application } = useContext(contextBabylon);\n const { getValues, setValue } = useFormContext();\n const updateDestinations = useUpdateDestinations(contextValue);\n return useCallback(async ()=>{\n const originValue = getValues().originPort?.value;\n const newOrigins = await getLocations(endpoints?.ports, {}, {\n BaseUrl,\n Application\n });\n if (newOrigins?.locations?.length) {\n setOrigins(newOrigins.locations);\n if (!originValue && originPort) {\n const newOrigin = getOptionSelected(newOrigins.locations, originPort);\n if (newOrigin?.value) setValue('originPort', newOrigin, {\n shouldValidate: true,\n shouldDirty: true,\n shouldTouch: true\n });\n }\n }\n await updateDestinations();\n }, [\n Application,\n BaseUrl,\n endpoints?.ports,\n getValues,\n originPort,\n setOrigins,\n setValue,\n updateDestinations\n ]);\n};\nconst useSearcherFerryHotelSideEffects = (contextValue)=>{\n const { state: { origins, destinations, routeData }, actions: { doFetchLoading } } = contextValue;\n const originChanged = useValueChanged('originPort.value');\n const destinationChanged = useValueChanged('destinationPort.value');\n const updateOrigins = useUpdateOrigins(contextValue);\n const updateDestinations = useUpdateDestinations(contextValue);\n const updateRouteData = useUpdateRouteData(contextValue);\n useEffect(()=>{\n doFetchLoading(async ()=>{\n if (!origins?.length) return await updateOrigins();\n if (!destinations?.length || originChanged) return await updateDestinations();\n if (!routeData || destinationChanged) await updateRouteData();\n }).catch(console.error);\n }, [\n destinationChanged,\n destinations?.length,\n doFetchLoading,\n originChanged,\n origins?.length,\n routeData,\n updateDestinations,\n updateOrigins,\n updateRouteData\n ]);\n};\n\nexport { useSearcherFerryHotelSideEffects as default };\n","import { createFullProvider } from '@babylon/ui-kit-helpers/context';\nimport useSearcherFerryHotelContextState from './useContextState.js';\nimport useSearcherFerryHotelSideEffects from './useSideEffects.js';\n\nconst { Provider: SearcherFerryHotelProvider, useContextProps: useSearcherFerryHotelProps, useContextState: useSearcherFerryHotelState, useContextActions: useSearcherFerryHotelActions } = createFullProvider({\n useState: useSearcherFerryHotelContextState,\n useSideEffects: useSearcherFerryHotelSideEffects\n});\n\nexport { SearcherFerryHotelProvider, useSearcherFerryHotelActions, useSearcherFerryHotelProps, useSearcherFerryHotelState };\n","import { getValidFormAccommodationProps } from '@babylon/ui-kit-forms/helpers/accommodation';\nimport { useSearcherFerryHotelProps, useSearcherFerryHotelState } from '../../../context/index.js';\nimport useSearcherFerryHotelDefaultValues from '../../../hooks/useSearcherFerryHotelDefaultValues.js';\n\nconst useAccommodationInput = ()=>{\n const props = useSearcherFerryHotelProps();\n const { config } = props;\n const { literals } = config ?? {};\n const { routeData } = useSearcherFerryHotelState();\n return getValidFormAccommodationProps({\n name: 'accommodation',\n label: literals?.accommodationLabel,\n defaultValue: useSearcherFerryHotelDefaultValues(props).accommodation,\n discounts: routeData?.discounts,\n residents: routeData?.residents,\n literals\n });\n};\n\nexport { useAccommodationInput as default };\n","import useHandleSubmit from '../../../../../../hooks/submit/useHandleSubmit.js';\nimport { useSearcherFerryHotelProps, useSearcherFerryHotelState } from '../../../context/index.js';\n\nconst useButton = ()=>{\n const { config } = useSearcherFerryHotelProps();\n const { literals } = config ?? {};\n const { submit = '' } = literals ?? {};\n const { isLoading } = useSearcherFerryHotelState();\n const { hasErrors, handleSubmit } = useHandleSubmit();\n return {\n variant: 'adaptive',\n onClick: handleSubmit,\n disabled: hasErrors || !!isLoading,\n children: submit\n };\n};\n\nexport { useButton as default };\n","// change between outbound and return dates on the calendar\nfunction getEnableDates(calendarDates, outboundDates, returnDates) {\n if (calendarDates?.length == 2 && outboundDates?.length && outboundDates?.length > 0) {\n return outboundDates;\n } else if (returnDates?.length && returnDates?.length > 0) {\n return returnDates;\n }\n return undefined;\n}\n// for outbound date, min date is today\n// for return date, min date is the day selected\nfunction getMinDate(calendarDates) {\n if (calendarDates && calendarDates.length == 2) {\n return new Date(new Date().setDate(new Date().getDate() - 1));\n } else if (calendarDates) {\n return calendarDates[0];\n }\n return new Date();\n}\n\nexport { getEnableDates, getMinDate };\n","import { required } from '@babylon/ui-kit-forms/helpers/validate';\nimport useValue from '@babylon/ui-kit-forms/hooks/useValue';\nimport { useSearcherFerryHotelProps, useSearcherFerryHotelState } from '../../../context/index.js';\nimport useSearcherFerryHotelDefaultValues from '../../../hooks/useSearcherFerryHotelDefaultValues.js';\nimport { getEnableDates } from '../../../utils/utils.js';\n\nconst useDatesInput = ()=>{\n const props = useSearcherFerryHotelProps();\n const { dates } = props;\n const { routeData, isLoading } = useSearcherFerryHotelState();\n const originPortValue = useValue({\n name: 'originPort'\n });\n const destinationPortValue = useValue({\n name: 'destinationPort'\n });\n const datesValue = useValue({\n name: 'dates'\n });\n const datesCheckIn = routeData?.outbound_dates?.map((date)=>date.value);\n const datesCheckOut = routeData?.return_dates?.map((date)=>date.value);\n return {\n name: 'dates',\n disabled: isLoading || !originPortValue?.value || !destinationPortValue?.value,\n defaultValue: useSearcherFerryHotelDefaultValues(props).dates,\n validate: required(),\n minDate: props?.dates?.minDate ?? 'today',\n maxDate: props?.dates?.maxDate,\n enableDates: getEnableDates(datesValue, datesCheckIn, datesCheckOut),\n releaseDays: dates?.releaseDays ?? 1,\n checkIn: datesCheckIn,\n checkOut: datesCheckOut,\n disablePrevDays: true\n };\n};\n\nexport { useDatesInput as default };\n","import { groupByHighlight } from '@babylon/ui-kit-forms/helpers/select';\nimport { required } from '@babylon/ui-kit-forms/helpers/validate';\nimport { useSearcherFerryHotelProps, useSearcherFerryHotelState } from '../../../context/index.js';\nimport useSearcherFerryHotelDefaultValues from '../../../hooks/useSearcherFerryHotelDefaultValues.js';\n\nconst useDestinationInput = ()=>{\n const props = useSearcherFerryHotelProps();\n const { config } = props;\n const { literals } = config ?? {};\n const { isLoading, destinations } = useSearcherFerryHotelState();\n return {\n name: 'destinationPort',\n noResultsText: literals?.noResults,\n searchText: literals?.searchPlaceholderValue,\n placeholder: literals?.destinationLabel,\n options: groupByHighlight({\n values: destinations,\n featuredOptionsText: literals?.frequentPorts ?? '',\n otherOptionsText: literals?.otherPorts ?? ''\n }),\n defaultValue: useSearcherFerryHotelDefaultValues(props).destinationPort,\n enableSearch: true,\n isHiddenRequired: true,\n validate: required(),\n isDisabled: !!isLoading || !destinations?.length\n };\n};\n\nexport { useDestinationInput as default };\n","import { useSearcherFerryHotelProps } from '../../../context/index.js';\nimport useSearcherFerryHotelDefaultValues from '../../../hooks/useSearcherFerryHotelDefaultValues.js';\n\nconst useDifferentZoneCheckbox = ()=>{\n const props = useSearcherFerryHotelProps();\n const { config } = props;\n const { literals } = config ?? {};\n const { differentZoneLabel } = literals ?? {};\n return {\n name: 'differentZone',\n defaultValue: useSearcherFerryHotelDefaultValues(props).isDifferentZone,\n label: differentZoneLabel\n };\n};\n\nexport { useDifferentZoneCheckbox as default };\n","import { groupByHighlight } from '@babylon/ui-kit-forms/helpers/select';\nimport { required } from '@babylon/ui-kit-forms/helpers/validate';\nimport { useSearcherFerryHotelProps, useSearcherFerryHotelState } from '../../../context/index.js';\nimport useSearcherFerryHotelDefaultValues from '../../../hooks/useSearcherFerryHotelDefaultValues.js';\n\nconst useOriginInput = ()=>{\n const props = useSearcherFerryHotelProps();\n const { config } = props;\n const { literals } = config ?? {};\n const { isLoading, origins } = useSearcherFerryHotelState();\n return {\n name: 'originPort',\n noResultsText: literals?.noResults,\n searchText: literals?.searchPlaceholderValue,\n placeholder: literals?.originLabel,\n options: groupByHighlight({\n values: origins,\n featuredOptionsText: literals?.frequentPorts ?? '',\n otherOptionsText: literals?.otherPorts ?? ''\n }),\n defaultValue: useSearcherFerryHotelDefaultValues(props).originPort,\n enableSearch: true,\n isHiddenRequired: true,\n validate: required(),\n isDisabled: isLoading\n };\n};\n\nexport { useOriginInput as default };\n","const DEFAULT_LOADER_IMAGE = '/comun/images/lineas/ferries_800x600.jpg';\n\nexport { DEFAULT_LOADER_IMAGE };\n","import { useFormContext } from 'react-hook-form';\nimport { DEFAULT_LOADER_IMAGE } from '../../../constants.js';\nimport { useSearcherFerryHotelProps } from '../../../context/index.js';\n\nconst useRedirectingModal = ()=>{\n const { config, loadingImage = DEFAULT_LOADER_IMAGE } = useSearcherFerryHotelProps();\n const { literals } = config ?? {};\n const values = useFormContext().getValues();\n return {\n visible: true,\n literals: literals,\n origin: values.originPort,\n destination: values.destinationPort,\n dates: values.dates,\n accommodation: values.accommodation,\n loadingImage: loadingImage\n };\n};\n\nexport { useRedirectingModal as default };\n","import { jsx } from 'react/jsx-runtime';\nimport SearcherRedirectingModal from '../../../../others/searcher/redirecting-modal/index.js';\nimport useRedirectingModal from './hooks/useRedirectingModal.js';\n\nconst SearcherFerryHotelRedirectingModal = ()=>/*#__PURE__*/ jsx(SearcherRedirectingModal, {\n ...useRedirectingModal()\n });\n\nexport { SearcherFerryHotelRedirectingModal as default };\n","import { formatDate } from '@babylon/ui-kit-helpers/date';\nimport { parseFilters } from '@babylon/ui-kit-helpers/url';\nimport { getTypeValue } from '../../../../helpers/index.js';\n\nfunction getVehicleParameters(vehicle) {\n if (!vehicle) return {};\n return {\n tipoVehiculoFER: vehicle.value,\n alturaVehiculoFER: vehicle.height,\n longitudVehiculoFER: vehicle.length,\n tipoRemolqueFER: vehicle.caravan ? 1 : 0,\n alturaRemolqueFER: vehicle.caravanHeight,\n longitudRemolqueFER: vehicle.caravanLength\n };\n}\nfunction buildTotalPeople(accommodation) {\n const { rooms = [] } = accommodation;\n return rooms.map((room)=>(room.adults ?? 0) + (room.children ?? 0)).reduce((a, acc)=>a + acc);\n}\nfunction getRoomAdults(rooms, index) {\n const adultsRooms = rooms.map((room)=>room.adults ?? 0).map((cc)=>[\n ...Array(cc)\n ].fill('30%23').reduce((acc, val)=>acc + val));\n return adultsRooms[index] ?? '';\n}\nfunction getRoomChildren(room, defaultAge = 7) {\n if (!room) return '';\n const { children } = room;\n if (!children || children < 1) return '';\n if (!room.childrenAges?.length) room.childrenAges = [];\n if (room.childrenAges.length > children) {\n room.childrenAges = room.childrenAges.slice(0, children);\n }\n if (room.childrenAges.length < children) {\n room.childrenAges = [\n ...room.childrenAges,\n ...new Array(children - room.childrenAges.length).fill(defaultAge)\n ];\n }\n return room.childrenAges.map((age)=>''.concat(age.toString(), '%23')).join('');\n}\nfunction getEdad(accommodation, index) {\n if (!accommodation.rooms) return '';\n return getRoomAdults(accommodation.rooms, index) + getRoomChildren(accommodation.rooms[index], accommodation.children?.defaultAge);\n}\nfunction getAccommodationParameters(accommodation) {\n if (!accommodation) return {};\n const edad1 = getEdad(accommodation, 0);\n const edad2 = getEdad(accommodation, 1);\n const edad3 = getEdad(accommodation, 2);\n const edad4 = getEdad(accommodation, 3);\n return {\n roomPax: buildTotalPeople(accommodation),\n numPaxFER: buildTotalPeople(accommodation),\n edad1,\n edad2,\n edad3,\n edad4,\n listaPaxEdadesFER: `${edad1}${edad2}${edad3}${edad4}`\n };\n}\n/* Build url */ async function buildUrl(fieldValues, baseUrl, urlSubmit, params) {\n const { accommodation, dates, discount, resident, destinationPort, originPort, vehicle, destinationZone } = fieldValues;\n let finalUrl = urlSubmit;\n if (!finalUrl.startsWith('http')) finalUrl = `${baseUrl}${urlSubmit}`;\n const filters = {\n PuertoOrigenFER: originPort?.value,\n PuertoDestinoFER: destinationPort?.value,\n fechaIdaFER: dates?.[0] ? await formatDate(dates?.[0], 'D/M/YYYY') : '',\n fechaVueltaFER: dates?.[1] ? await formatDate(dates?.[1], 'D/M/YYYY') : '',\n ...getVehicleParameters(vehicle),\n ...getAccommodationParameters(accommodation),\n tipoDescuentoFER: discount?.value ?? 0,\n tipoResidenteFER: resident?.value ?? 0,\n soloIdaFER: 0,\n destinationType: getTypeValue(destinationZone).type,\n destinationCode: getTypeValue(destinationZone).value,\n ...params\n };\n return `${finalUrl}?${parseFilters(filters)}`;\n}\n\nexport { buildUrl };\n","import contextBabylon from '@babylon/ui-kit-context';\nimport addGa4Event from '@babylon/ui-kit-helpers/ga4Event';\nimport useSubmitWithRedirect from '../../../../hooks/submit/useSubmitWithRedirect.js';\nimport { useContext } from 'react';\nimport { buildUrl } from '../utils/url.js';\nimport useSearcherFerryHotelDefaultValues from './useSearcherFerryHotelDefaultValues.js';\n\nconst useSearcherFerryHotelForm = (props)=>{\n const { config } = props ?? {};\n const { params, urlSubmit = '' } = config ?? {};\n const { BaseUrl } = useContext(contextBabylon);\n const { onSubmit, isRedirecting, setRedirecting } = useSubmitWithRedirect(async (values)=>{\n addGa4Event({\n event: 'search',\n event_type: 'availability',\n event_detail: 'packages/dynamic/ferry-hotel'\n });\n const url = await buildUrl(values, BaseUrl, urlSubmit, params);\n window.location.assign(url);\n });\n return {\n onSubmit,\n isRedirecting,\n setRedirecting,\n defaultValues: useSearcherFerryHotelDefaultValues(props)\n };\n};\n\nexport { useSearcherFerryHotelForm as default };\n","import { getAccommodation, getAccommodationLiteralsFromOldData } from '../../../../helpers/index.js';\nimport _get from 'lodash/get.js';\n\nconst oldTypeToNewType = {\n airport: 'AER',\n island: 'ISL',\n city: 'CIU',\n zone: 'ZON',\n hotel: 'HOT'\n};\nconst getConfig = (oldModel)=>{\n const accommodationLiterals = getAccommodationLiteralsFromOldData(oldModel);\n const config = {\n literals: {\n ...accommodationLiterals,\n originLabel: _get(oldModel, 'location.items[0].label.content', ''),\n destinationLabel: _get(oldModel, 'location.items[1].label.content', ''),\n calendarLabel: _get(oldModel, 'calendar.input.label.content', ''),\n loadingTitle: _get(oldModel, 'loading.Body.Loading.title.content', ''),\n loadingMessage: _get(oldModel, 'loading.Body.Loading.message.content', ''),\n submit: _get(oldModel, 'submit.content', ''),\n checkInLabel: _get(oldModel, 'calendar.input.label.content', ''),\n checkIn: _get(oldModel, 'calendar.literals.origin', _get(oldModel, 'calendar.input.label.content', '')),\n checkOut: _get(oldModel, 'calendar.literals.destination', ''),\n vehicleLabel: _get(oldModel, 'vehicle.input.label.content', ''),\n originDefault: _get(oldModel, 'location.items[0].config.data.items[0].label', ''),\n destinationDefault: _get(oldModel, 'location.items[1].config.data.items[0].label', ''),\n frequentPorts: _get(oldModel, 'location.literals.frequentPorts', ''),\n otherPorts: _get(oldModel, 'location.literals.otherPorts', ''),\n searchPlaceholderValue: _get(oldModel, 'location.literals.placeholderSelect', _get(oldModel, 'location.literals.searcherPorts', '')),\n noResults: '',\n vehicleTitle: _get(oldModel, 'vehicle.panel.Body.vehicle.title', ''),\n units: '',\n heightLabel: _get(oldModel, 'vehicle.panel.Body.vehicle.height.label.content', ''),\n lengthLabel: _get(oldModel, 'vehicle.panel.Body.vehicle.length.label.content', ''),\n trailerLabel: _get(oldModel, 'vehicle.panel.Body.vehicle.extra.toggle.label.content', ''),\n trailerInfo: '',\n trailer: '',\n messageInfo: '',\n errorVehicleDimensions: '',\n errorTrailerDimensions: '',\n accept: _get(oldModel, 'calendar.literals.modalFooterSubmit', _get(oldModel, 'location.literals.modalFooterSubmit', _get(oldModel, 'vehicle.panel.Footer.action.items[0].content', accommodationLiterals.accept))),\n noResultsText: '',\n locationLabel: _get(oldModel, 'location.literals.modalHeaderTitle', ''),\n zoneLabel: _get(oldModel, 'zone.config.literals.zoneLabel', ''),\n zoneTitle: _get(oldModel, 'zone.config.literals.zoneTitle', ''),\n differentZoneLabel: _get(oldModel, 'zone.config.literals.differentZoneLabel', '')\n },\n endpoints: {\n route: '/packagesalexswc/transportsoperative/ferryroutedata',\n ports: '/ferriesShowcase/Shima/GetPorts'\n },\n urlSubmit: _get(oldModel, 'submit.url', '/packagesasyncstepssp/AvailabilityMaterial/'),\n onModal: _get(oldModel, 'config.onModal', false),\n hideDestination: _get(oldModel, 'config.hideDestination', false),\n params: {\n ProductType: 'FerryHotel'\n }\n };\n return config;\n};\nconst getDates = (oldModel)=>{\n const defaultDates = _get(oldModel, 'calendar.config.data.defaultDates', []);\n const dates = {\n startDate: defaultDates[0],\n endDate: defaultDates[1],\n minDate: 'today',\n sameDay: true,\n releaseDays: _get(oldModel, 'calendar.config.data.releaseDays', 1)\n };\n return dates;\n};\nconst getVehicle = (oldModel)=>({\n items: _get(oldModel, 'vehicle.panel.Body.vehicle.product.config.data.items', []).map((item)=>{\n const value = item.value ? parseInt(item.value) : item.value ?? 0;\n return {\n value: value,\n label: item.label ?? '',\n length: value ? _get(oldModel, 'vehicle.panel.Body.vehicle.length.config.data.value') : undefined,\n height: value ? _get(oldModel, 'vehicle.panel.Body.vehicle.height.config.data.value') : undefined,\n selected: false,\n trailer: !!value\n };\n })\n });\nconst getOriginPort = (oldModel)=>{\n const items = _get(oldModel, 'location.items[0].config.data.items', []);\n return items[0]?.selected ? items[0].value : items[1]?.choices?.find((item)=>item.selected)?.value ?? items[2]?.choices?.find((item)=>item.selected)?.value ?? -1;\n};\nconst getDestinationPort = (oldModel)=>{\n const items = _get(oldModel, 'location.items[1].config.data.items', []);\n return items[0]?.selected ? items[0].value : items[1]?.choices?.find((item)=>item.selected)?.value ?? items[2]?.choices?.find((item)=>item.selected)?.value ?? -1;\n};\nconst getNewType = (oldType)=>{\n if (oldType in oldTypeToNewType) {\n return oldTypeToNewType[oldType];\n }\n return oldType;\n};\nconst getZonePort = (oldModel)=>{\n const zoneTypes = _get(oldModel, 'zone.value.types', [\n 'island',\n 'city',\n 'zone',\n 'hotel'\n ]);\n const zone = {\n value: _get(oldModel, 'zone.value.value'),\n text: _get(oldModel, 'zone.value.text'),\n type: getNewType(_get(oldModel, 'zone.value.type', zoneTypes[0])),\n icon: _get(oldModel, 'zone.value.icon'),\n types: zoneTypes ? zoneTypes.map((type)=>oldTypeToNewType[type]) : [\n 'ISL',\n 'CIU',\n 'ZON',\n 'HOT'\n ],\n limit: _get(oldModel, 'zone.value.limit', 20)\n };\n return zone;\n};\nconst transformOldModelToNewModel = (oldModel)=>({\n config: getConfig(oldModel),\n originPort: getOriginPort(oldModel),\n destinationPort: getDestinationPort(oldModel),\n zone: getZonePort(oldModel),\n dates: getDates(oldModel),\n accommodation: getAccommodation(oldModel),\n vehicle: getVehicle(oldModel)\n });\nconst transformOldModelToNewModelDesktop = (oldModel)=>transformOldModelToNewModel(oldModel);\nconst transformOldModelToNewModelMobile = (oldModel)=>transformOldModelToNewModel(oldModel);\nconst getTransformedPropsIfNeeded = (props)=>{\n if (props?.config && 'literals' in props.config) return props;\n return transformOldModelToNewModelDesktop(props);\n};\nconst getTransformedPropsIfNeededMobile = (props)=>{\n if (props?.config && 'literals' in props.config) return props;\n return transformOldModelToNewModelMobile(props);\n};\n\nexport { getDestinationPort, getOriginPort, getTransformedPropsIfNeeded, getTransformedPropsIfNeededMobile, getVehicle, getZonePort, transformOldModelToNewModel, transformOldModelToNewModelDesktop, transformOldModelToNewModelMobile };\n","import useIsMobile from '@babylon/ui-kit-hooks/device/useIsMobile';\nimport { getTransformedPropsIfNeededMobile, getTransformedPropsIfNeeded } from '../utils/model.js';\n\nconst useSearcherFerryHotelTransformedProps = (rootProps)=>{\n const props = 'data' in rootProps ? rootProps.data : rootProps.props;\n if (useIsMobile()) return getTransformedPropsIfNeededMobile(props);\n return getTransformedPropsIfNeeded(props);\n};\n\nexport { useSearcherFerryHotelTransformedProps as default };\n","import { jsx, jsxs } from 'react/jsx-runtime';\nimport Form from '@babylon/ui-kit-forms/components/others/form';\nimport { Suspense } from 'react';\nimport SearcherFerryHotelRedirectingModal from '../redirecting-modal/index.js';\nimport { SearcherFerryHotelProvider } from '../../context/index.js';\nimport useSearcherFerryHotelForm from '../../hooks/useSearcherFerryHotelForm.js';\nimport useSearcherFerryHotelTransformedProps from '../../hooks/useSearcherFerryHotelTransformedProps.js';\n\nconst SearcherFerryHotelForm = ({ children, ...rootProps })=>{\n const props = useSearcherFerryHotelTransformedProps(rootProps);\n const { isRedirecting, defaultValues, onSubmit } = useSearcherFerryHotelForm(props);\n return /*#__PURE__*/ jsx(Form, {\n onSubmit: onSubmit,\n defaultValues: defaultValues,\n children: /*#__PURE__*/ jsxs(SearcherFerryHotelProvider, {\n value: props,\n children: [\n children,\n /*#__PURE__*/ jsx(Suspense, {\n fallback: null,\n children: isRedirecting && /*#__PURE__*/ jsx(SearcherFerryHotelRedirectingModal, {})\n })\n ]\n })\n });\n};\n\nexport { SearcherFerryHotelForm as default };\n","import { useVehicleInput as useVehicleInput$1 } from '../../../../../../hooks/inputs/useVehicleInput.js';\nimport { useSearcherFerryHotelProps } from '../../../context/index.js';\nimport useSearcherFerryHotelDefaultValues from '../../../hooks/useSearcherFerryHotelDefaultValues.js';\n\nconst useVehicleInput = ()=>{\n const props = useSearcherFerryHotelProps();\n const { config, vehicle } = props;\n const { literals } = config ?? {};\n return useVehicleInput$1({\n literals,\n items: vehicle?.items,\n defaultValue: useSearcherFerryHotelDefaultValues(props).vehicle\n });\n};\n\nexport { useVehicleInput as default };\n","import { required } from '@babylon/ui-kit-forms/helpers/validate';\nimport { useSearcherFerryHotelProps, useSearcherFerryHotelState } from '../../../context/index.js';\nimport useSearcherFerryHotelDefaultValues from '../../../hooks/useSearcherFerryHotelDefaultValues.js';\n\nconst useZoneInput = ()=>{\n const props = useSearcherFerryHotelProps();\n const { zone, config } = props;\n const { literals } = config ?? {};\n const { isLoading, differentZoneValue } = useSearcherFerryHotelState();\n return {\n ...zone,\n name: 'destinationZone',\n types: zone?.types ?? [\n 'ISL',\n 'CIU',\n 'ZON',\n 'HOT'\n ],\n literals,\n disabled: isLoading,\n label: literals?.zoneLabel ?? '',\n defaultValue: useSearcherFerryHotelDefaultValues(props).zone,\n queryParams: {\n p: zone?.operator?.toLowerCase() ?? 'or',\n o: zone?.codes?.join(',') ?? 'PAK',\n n: zone?.limit ?? 20\n },\n validate: differentZoneValue ? undefined : required()\n };\n};\n\nexport { useZoneInput as default };\n"],"names":["useSearcherFerryHotelContextState","origins","setOrigins","useState","destinations","setDestinations","routeData","setRouteData","isLoading","doFetchLoading","useLoading","differentZoneValue","useValue","useOriginDefaultValue","props","config","literals","originDefault","useDestinationDefaultValue","destinationDefault","useCalendarDefaultValue","getValidDates","addDays","useVehicleDefaultValue","vehicle","vehicles","selectedVehicle","useSearcherFerryHotelDefaultValues","getValidAccommodation","getValidAutocomplete","useContext","contextBabylon","getLocations","url","originValue","BaseUrl","Application","finalUrl","filters","parseFilters","response","getRoute","destinationValue","parseDataDiscounts","items","label","name","type","useUpdateDiscounts","getValues","setValue","useFormContext","useCallback","discountValue","residentValue","_b","_a","discount","emptyOption","_d","_c","isEqual","_f","_e","resident","_h","_g","useUpdateDates","outbound_date","getFirstDayValid","date","return_date","useUpdateRouteData","contextValue","endpoints","discountsLabel","bonusLabel","updateDiscounts","updateDates","newRouteData","newRouteDataParsed","useUpdateDestinations","destinationPort","updateRouteData","defaultValue","newDestinations","newDestination","getOptionSelected","useUpdateOrigins","originPort","updateDestinations","newOrigins","newOrigin","useSearcherFerryHotelSideEffects","originChanged","useValueChanged","destinationChanged","updateOrigins","useEffect","SearcherFerryHotelProvider","useSearcherFerryHotelProps","useSearcherFerryHotelState","useSearcherFerryHotelActions","createFullProvider","useAccommodationInput","getValidFormAccommodationProps","useButton","submit","hasErrors","handleSubmit","useHandleSubmit","getEnableDates","calendarDates","outboundDates","returnDates","useDatesInput","dates","originPortValue","destinationPortValue","datesValue","datesCheckIn","datesCheckOut","required","useDestinationInput","groupByHighlight","useDifferentZoneCheckbox","differentZoneLabel","useOriginInput","DEFAULT_LOADER_IMAGE","useRedirectingModal","loadingImage","values","SearcherFerryHotelRedirectingModal","jsx","SearcherRedirectingModal","getVehicleParameters","buildTotalPeople","accommodation","rooms","room","a","acc","getRoomAdults","index","cc","val","getRoomChildren","defaultAge","children","age","getEdad","getAccommodationParameters","edad1","edad2","edad3","edad4","buildUrl","fieldValues","baseUrl","urlSubmit","params","destinationZone","formatDate","getTypeValue","useSearcherFerryHotelForm","onSubmit","isRedirecting","setRedirecting","useSubmitWithRedirect","addGa4Event","oldTypeToNewType","getConfig","oldModel","accommodationLiterals","getAccommodationLiteralsFromOldData","_get","getDates","defaultDates","getVehicle","item","value","getOriginPort","getDestinationPort","getNewType","oldType","getZonePort","zoneTypes","transformOldModelToNewModel","getAccommodation","transformOldModelToNewModelDesktop","transformOldModelToNewModelMobile","getTransformedPropsIfNeeded","getTransformedPropsIfNeededMobile","useSearcherFerryHotelTransformedProps","rootProps","useIsMobile","SearcherFerryHotelForm","defaultValues","Form","jsxs","Suspense","useVehicleInput","useVehicleInput$1","useZoneInput","zone"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]}