{"version":3,"sources":["webpack:///./src/app/search-results/qsm/location-picker.tsx","webpack:///./src/app/search-results/qsm/room-accommodation-item.tsx","webpack:///./src/app/search-results/qsm/room-accommodation-group.tsx","webpack:///./src/app/search-results/qsm/room-picker.tsx","webpack:///./src/app/search-results/qsm/index.tsx"],"names":["LocationPicker","_ref","panelActive","lookupData","value","onPanelToggle","onFocus","onSelect","onClear","t","useI18next","referenceElement","setReferenceElement","useState","popperElement","setPopperElement","styles","attributes","usePopper","placement","modifiers","name","options","offset","handleDocumentClick","event","contains","target","useEffect","document","addEventListener","removeEventListener","searchTerm","setSearchTerm","results","filter","hasResults","length","React","createElement","className","ref","Icon","type","placeholder","onChange","e","required","Object","assign","buildClassName","style","popper","width","TypeaheadOptions","handleSelect","id","flexSearch","_lookupData$find","find","x","RoomAccommodationItem","_accommodation$image$","_accommodation$image","accommodation","selectedPrice","onOptionChange","regimeCode","setRegimeCode","price","setPrice","regime","regimes","isSelected","code","Fragment","key","src","setImageParameters","image","url","height","mode","alt","title","description","facilities","map","facility","i","disabled","_regime$code","_regime$price","_regime$code2","onClick","handleSelectAccommodationClick","twoDigits","Math","round","getPriceDelta","RoomAccommodationGroup","_accommodations$map","room","roomIndex","product","packageRoom","accommodations","setAccommodations","setSelectedPrice","accommodationItems","getChildAccomodations","accommodationGroups","_groupBy","accommodationCode","defaultOption","group","_accommodationItem$co","_accommodationItem$co2","_accommodationItem$co3","_accommodationItem$co4","_accommodationItem$co5","_accommodationItem$co6","_accommodationItem$co7","_accommodationItem$co8","_accommodationItem$co9","_accommodationItem$co10","_accommodationItem$co11","_accommodationItem$co12","_accommodationItem$co13","_accommodationItem$co14","_accommodationItem$co15","_accommodationItem$co16","accommodationItem","_x$content","_x$content$general","content","general","productcode","first","result","accommodationName","split","picture","undefined","regimeName","sort","a","b","push","handleOptionChange","Loader","RoomPicker","rooms","packageRooms","showHint","onRoomsChange","mql","window","matchMedia","panelRooms","setPanelRooms","isTouched","setIsTouched","arrowElement","setArrowElement","hintActive","setHintActive","padding","element","activateRoomPanel","newRooms","sizeChanged","reduce","y","adults","children","handleInputFocus","readOnly","_compact","numberOfAdults","numberOfChildren","age","childAges","join","formatRooms","backgroundImage","backgroundRepeat","backgroundAttachment","backgroundSize","backgroundPosition","cursor","matches","AmountInput","label","_range","isVisible","roomNumber","min","childIndex","_room$childAges$child","selectedOption","getSummaryLabel","AgeSelect","selectorRoomIndex","handleCloseClick","arrow","QSM","props","_qsmState$dateRange5","_qsmState$dateRange5$","_qsmState$dateRange6","_qsmState$dateRange6$","_qsmState$rooms","navigate","language","qsmState","qsmDispatch","useQSMStore","productState","productDispatch","useProductStore","memberState","useMemberStore","setLookupData","locationPanelActive","setLocationPanelActive","roomPanelActive","setRoomPanelActive","datePanelActive","setDatePanelActive","previousRequest","setPreviousRequest","isBookable","setBookable","isLoading","setIsLoading","offer","setOffer","printActions","setPrintActions","bookingPackage","setBookingPackage","printButtonState","setPrintButtonState","selectedItem","_qsmState$product","productId","async","_qsmState$dateRange","_qsmState$dateRange2","dateRange","fromDate","toDate","_qsmState$dateRange3","_qsmState$dateRange4","_qsmState$product2","_qsmState$product2$co","_qsmState$product2$co2","_qsmState$product2$co3","currentRequest","compileRequest","loaded","setIsUnavailable","setEstimatedPrice","response","getPackageDetails","formatISO","representation","errorCode","payload","_bookingPackage$optio","activeOption","defaultPrice","includedServiceTypes","some","setHasFlight","setHasTransfer","setBookingRooms","updateRoomsInPackage","_qsmState$product$con","_qsmState$product3","_qsmState$product3$co","_qsmState$product3$co2","_qsmState$product$con2","_qsmState$product4","_qsmState$product4$co","_qsmState$product4$co2","estimatedPrice","promoPrice","estimatedPromoPrice","_qsmState$product$con3","_qsmState$product5","_qsmState$product5$co","_qsmState$product5$co2","_qsmState$product$con4","_qsmState$product6","_qsmState$product6$co","_qsmState$product6$co2","fetchPackage","valueOf","JSON","stringify","sortProps","data","fetchLookupData","asyncFetchLookupData","member","config","buildTideClientConfig","validPrintActions","getPrintActions","validEntryStatuses","fetchPrintActions","setFlexibleRange","handleLocationSelect","setProductId","setFlexSearch","onDestinationChange","selectedLookupItem","templateName","itemId","printOffer","_offer","Error","printActionId","tideLanguageId","getTideLanguageId","request","dossierNumber","number","languageId","print","catch","arrayBuffer","blob","Blob","URL","createObjectURL","open","updateHistory","_dateRange$fromDate","_dateRange$toDate","params","newFromDate","newToDate","serialized","JsonURL","_omit","AQF","format","path","location","pathname","paramString","keys","history","replaceState","updatePrice","_price$defaultPrice","bookingRooms","currentPrice","calculateRoomPrice","updatedPackageRooms","index","option","newPrice","updatedPrice","forEach","_selected$price","selected","locationValue","countryId","regionId","productSpecific","isActive","setRooms","DatePicker","duration","flexsearch","setDateRange","scrollTo","handleSearchClick","_qsmState$dateRange7","_qsmState$dateRange8","searchPagePath","reload","state","Trans","handleBookClick","_qsmState$dateRange9","_qsmState$dateRange10","href","endsWith","handleAnchorClick","_bookingPackage$optio2","pax","requestRooms","flatMap","newOffer","officeId","agentId","package","status","nonTravelPax","notifications","customerRequests","book","createOffer"],"mappings":"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","file":"e73f2c8dc60388371deb8b6351e72e3178c10abb-c34f6ed84bf3cdce11ca.js","sourcesContent":["import React, { useState } from \"react\";\nimport { useEffect } from \"react\";\nimport Icon from \"../../../components/icon\";\nimport TypeaheadOptions from \"../../../components/qsm/typeahead-options\";\nimport { LookupData } from \"../../../components/lookup-context/types\";\nimport { filter } from \"../../../components/lookup-context/utils\";\nimport { usePopper } from \"react-popper\";\nimport { buildClassName } from \"../../../utils\";\nimport { useI18next } from \"gatsby-plugin-react-i18next\";\nimport { graphql, useStaticQuery } from \"gatsby\";\n\ninterface LocationPickerProps {\n panelActive?: boolean;\n value?: string;\n lookupData?: LookupData[];\n onPanelToggle?: (state: boolean) => void;\n onFocus?: () => void;\n onSelect?: (id: string, flexsearch: boolean) => void;\n onClear?: () => void;\n}\n\nconst LocationPicker: React.FC = ({\n panelActive,\n lookupData = [],\n value,\n onPanelToggle,\n onFocus,\n onSelect,\n onClear,\n}) => {\n const { t } = useI18next();\n const [referenceElement, setReferenceElement] = useState(null);\n const [popperElement, setPopperElement] = useState(null);\n\n const { styles, attributes } = usePopper(referenceElement, popperElement, {\n placement: \"top\",\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 5],\n },\n },\n ],\n });\n\n const handleDocumentClick: EventListener = (event) => {\n if (referenceElement && !referenceElement.contains(event.target as Node)) {\n if (onPanelToggle) onPanelToggle(false);\n }\n };\n\n useEffect(() => {\n document.addEventListener(\"mousedown\", handleDocumentClick);\n return () => document.removeEventListener(\"mousedown\", handleDocumentClick);\n });\n\n const [searchTerm, setSearchTerm] = useState(\"\");\n\n useEffect(() => {\n if (value) {\n setSearchTerm(value);\n }\n }, [value]);\n\n const handleSearchTermChange: React.ChangeEventHandler = (e) => {\n setSearchTerm(e.target.value);\n\n if (onPanelToggle) {\n onPanelToggle(e.target.value.length > 2);\n }\n\n if (e.target.value.length === 0 && onClear) {\n onClear();\n }\n };\n\n const handleSelect = (id: string, flexSearch: boolean) => {\n const name = lookupData.find((x) => x.id === id)?.name;\n\n if (name) {\n setSearchTerm(name);\n }\n\n if (onSelect) {\n onSelect(id, flexSearch);\n }\n };\n\n const results = filter(searchTerm, lookupData);\n const hasResults = searchTerm.length > 2 && results.length > 0;\n\n return (\n
\n
\n
\n \n
\n \n \n
\n \n \n
\n
\n
\n \n );\n};\n\nexport default LocationPicker;\n","import { RoomAccommodation } from \"./room-accommodation-group\";\nimport React, { useEffect, useState } from \"react\";\nimport { buildClassName, setImageParameters } from \"../../../utils\";\nimport { useI18next } from \"gatsby-plugin-react-i18next\";\n\ninterface RoomAccommodationItemProps {\n accommodation: RoomAccommodation;\n selectedPrice: number;\n onOptionChange: (accommodationCode: string, regimeCode: string) => void;\n}\n\nconst RoomAccommodationItem: React.FC = ({\n accommodation,\n selectedPrice,\n onOptionChange,\n}) => {\n const { t } = useI18next();\n const [regimeCode, setRegimeCode] = useState(\"\");\n const [price, setPrice] = useState(0);\n const placeholderImage =\n \"https://tide-media.azurewebsites.net/media/10/Products/Placeholders/placeholder_accommodation-card-v2-1.webp\";\n\n useEffect(() => {\n const regime = accommodation.regimes.find((x) => x.isSelected);\n if (regime) {\n setRegimeCode(regime.code);\n setPrice(regime.price);\n } else {\n setRegimeCode(accommodation.regimes[0].code);\n setPrice(accommodation.regimes[0].price);\n }\n }, [accommodation.regimes]);\n\n const getPriceDelta = () => {\n var twoDigits = Math.round((price - selectedPrice) * 100) / 100;\n return twoDigits > 0 ? `+ € ${twoDigits}` : `- € ${twoDigits}`;\n };\n\n const handleSelectAccommodationClick = () => {\n if (onOptionChange) onOptionChange(accommodation.code, regimeCode);\n };\n\n const handleRegimeChange: React.ChangeEventHandler = (event) => {\n var regime = accommodation.regimes.find((x) => x.code == event.target.value);\n setRegimeCode(regime?.code ?? \"\");\n setPrice(regime?.price ?? 0);\n\n if (accommodation.isSelected) {\n if (onOptionChange) onOptionChange(accommodation.code, regime?.code ?? \"\");\n }\n };\n\n return (\n <>\n \n
\n
\n \n
\n
\n
\n

{accommodation.title}

\n

{accommodation.description}

\n
    \n {accommodation.facilities.map((facility, i) => (\n
  • \n {facility}\n
  • \n ))}\n
\n
\n
\n
\n
\n \n {accommodation.regimes.map((regime) => (\n \n ))}\n \n
\n
\n
\n
\n \n {accommodation.isSelected ? t(\"SELECTED\") : t(\"SELECT\")}\n \n
\n
\n {selectedPrice != price && (\n
\n
\n
{getPriceDelta()}
\n
\n
\n )}\n
\n \n \n );\n};\n\nexport default RoomAccommodationItem;\n","import { BookingPackageRoom } from \"@qite/tide-client/build/types\";\nimport { groupBy } from \"lodash\";\nimport React, { useState } from \"react\";\nimport { useEffect } from \"react\";\nimport Loader from \"../../../components/loader\";\nimport { Maybe, TideItemForHotel, Image, TideItemForRoundtrip } from \"../../../types\";\nimport { getChildAccomodations } from \"../../../utils\";\nimport RoomAccommodationItem from \"./room-accommodation-item\";\nimport { Room } from \"./room-picker\";\n\ninterface RoomAccommodationGroupProps {\n room: Room;\n roomIndex: number;\n product: TideItemForHotel | TideItemForRoundtrip;\n packageRoom: BookingPackageRoom;\n onOptionChange: (roomIndex: number, accommodationCode: string, regimeCode: string) => void;\n}\n\nexport interface RoomAccommodation {\n code: string;\n image?: Maybe;\n title: string;\n description: string;\n facilities: string[];\n isSelected?: boolean;\n regimes: RoomRegime[];\n}\n\nexport interface RoomRegime {\n code: string;\n title: string;\n price: number;\n isSelected?: boolean;\n}\n\nconst RoomAccommodationGroup: React.FC = ({\n room,\n roomIndex,\n product,\n packageRoom,\n onOptionChange,\n}) => {\n const [accommodations, setAccommodations] = useState([]);\n const [selectedPrice, setSelectedPrice] = useState(0);\n\n useEffect(() => {\n const results: RoomAccommodation[] = [];\n const accommodationItems = getChildAccomodations(product);\n const accommodationGroups = groupBy(packageRoom.options, (x) => x.accommodationCode);\n const defaultOption = packageRoom.options.find((x) => x.isSelected);\n\n for (var group in accommodationGroups) {\n const accommodationItem = accommodationItems.find(\n (x) => x.content?.general?.productcode === group\n );\n const first = accommodationGroups[group][0];\n\n const result = {\n code: accommodationItem?.content?.general?.productcode ?? group,\n title: accommodationItem?.content?.general?.title ?? first.accommodationName,\n description: accommodationItem?.content?.general?.description ?? \"\",\n facilities: accommodationItem?.content?.description?.facilities?.split(/[;\\r\\n]+/) ?? [],\n image: accommodationItem?.content?.description?.picture ?? undefined,\n regimes: accommodationGroups[group]\n .map((x) => ({\n code: x.regimeCode,\n title: x.regimeName,\n price: x.price,\n }))\n .sort((a, b) => a.price - b.price),\n } as RoomAccommodation;\n\n if (\n (room.accommodationCode && group === room.accommodationCode) ||\n (!room.accommodationCode && group === defaultOption?.accommodationCode)\n ) {\n result.isSelected = true;\n\n const regime = result.regimes.find(\n (x) =>\n (room.regimeCode && x.code === room.regimeCode) ||\n (!room.regimeCode && x.code === defaultOption?.regimeCode)\n );\n\n if (regime) {\n regime.isSelected = true;\n setSelectedPrice(regime.price);\n }\n }\n\n results.push(result);\n }\n\n setAccommodations(results);\n }, [product, room, packageRoom]);\n\n const handleOptionChange = (accommodationCode: string, regimeCode: string) => {\n if (onOptionChange) onOptionChange(roomIndex, accommodationCode, regimeCode);\n };\n\n return (\n
\n {accommodations.map((accommodation) => (\n \n )) ?? }\n
\n );\n};\n\nexport default RoomAccommodationGroup;\n","import { BookingPackageRoom } from \"@qite/tide-client/build/types\";\nimport { compact, range } from \"lodash\";\nimport React, { useState } from \"react\";\nimport { useEffect } from \"react\";\nimport { usePopper } from \"react-popper\";\nimport Icon from \"../../../components/icon\";\nimport { TideItemForHotel, TideItemForRoundtrip } from \"../../../types\";\nimport { buildClassName } from \"../../../utils\";\nimport AgeSelect from \"./age-select\";\nimport AmountInput from \"./amount-input\";\nimport RoomAccommodationGroup from \"./room-accommodation-group\";\nimport { useI18next } from \"gatsby-plugin-react-i18next\";\n\ninterface RoomPickerProps {\n panelActive?: boolean;\n rooms: Room[];\n packageRooms?: BookingPackageRoom[];\n product?: TideItemForHotel | TideItemForRoundtrip;\n showHint?: boolean;\n\n onPanelToggle?: (state: boolean) => void;\n onRoomsChange?: (value: Room[]) => void;\n}\n\nexport interface Room {\n adults: number;\n children: number;\n childAges: number[];\n accommodationCode?: string;\n regimeCode?: string;\n isVisible: boolean;\n}\n\nconst RoomPicker: React.FC = ({\n panelActive,\n rooms,\n packageRooms,\n product,\n showHint,\n onPanelToggle,\n onRoomsChange,\n}) => {\n const { t } = useI18next();\n const mql = typeof window !== \"undefined\" ? window.matchMedia(\"(min-width: 1200px)\") : undefined;\n\n const [panelRooms, setPanelRooms] = useState(rooms);\n const [isTouched, setIsTouched] = useState(false);\n\n const [referenceElement, setReferenceElement] = useState(null);\n const [popperElement, setPopperElement] = useState(null);\n const [arrowElement, setArrowElement] = useState(null);\n const [hintActive, setHintActive] = useState(showHint ?? false);\n\n const { styles, attributes } = usePopper(referenceElement, popperElement, {\n placement: \"top\",\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 20],\n },\n },\n {\n name: \"preventOverflow\",\n options: {\n padding: 40,\n },\n },\n { name: \"arrow\", options: { element: arrowElement } },\n ],\n });\n\n const handleDocumentClick: EventListener = (event) => {\n if (referenceElement && !referenceElement.contains(event.target as Node)) {\n if (onPanelToggle) onPanelToggle(false);\n\n setIsTouched(false);\n setPanelRooms(rooms);\n }\n };\n\n useEffect(() => {\n document.addEventListener(\"mousedown\", handleDocumentClick);\n return () => {\n document.removeEventListener(\"mousedown\", handleDocumentClick);\n };\n });\n\n const handleInputFocus: React.FocusEventHandler = () => {\n activateRoomPanel();\n };\n\n const activateRoomPanel = () => {\n if (onPanelToggle) {\n onPanelToggle(true);\n }\n setHintActive(false);\n };\n\n const handleSelectAccommodationClick = (\n roomIndex: number,\n accommodationCode: string,\n regimeCode: string\n ) => {\n const newRooms = panelRooms.map((room, i) =>\n i === roomIndex ? { ...room, accommodationCode, regimeCode } : room\n );\n\n setPanelRooms(newRooms);\n setIsTouched(true);\n };\n\n const handleCloseClick: React.MouseEventHandler = () => {\n if (onRoomsChange) onRoomsChange(panelRooms);\n if (onPanelToggle) onPanelToggle(false);\n\n setIsTouched(false);\n };\n\n const formatRooms = (rooms: Room[] = []) => {\n if (rooms.length === 0) {\n return undefined;\n }\n\n return rooms\n .map((room) =>\n compact([\n room.adults > 0 && room.adults === 1\n ? t(\"1_ADULT\")\n : t(\"X_ADULTS\", { numberOfAdults: room.adults }),\n room.children > 0 &&\n `${\n room.children === 1\n ? t(\"1_CHILD\")\n : t(\"X_CHILDREN\", { numberOfChildren: room.children })\n } (${t(\"X_YEAR\", { age: room.childAges.join(\", \") })})`,\n ]).join(\", \")\n )\n .join(\" + \");\n };\n\n const getSummaryLabel = (room: BookingPackageRoom) => {\n if (!room?.options) return \"\";\n const selectedOption = room.options.find((x) => x.isSelected);\n return `${selectedOption?.accommodationName}${\n selectedOption?.regimeName ? \", \" + selectedOption.regimeName : \"\"\n }`;\n };\n\n const sizeChanged =\n rooms.length !== panelRooms.length ||\n rooms.reduce((x, y) => x + y.adults, 0) !== panelRooms.reduce((x, y) => x + y.adults, 0) ||\n rooms.reduce((x, y) => x + y.children, 0) !== panelRooms.reduce((x, y) => x + y.children, 0);\n\n return (\n
\n
\n setHintActive(!hintActive)}\n >\n \n

{t(\"CONFIGURE_ROOMS\")}

\n

{t(\"CONFIGURE_ROOMING_COMPANY\")}

\n \n
\n\n
\n \n \n \n
\n \n
\n
\n
{t(\"ROOMS\")}
\n
\n {\n setPanelRooms(\n range(0, value).map((roomIndex) =>\n panelRooms[roomIndex]\n ? { ...panelRooms[roomIndex], isVisible: false }\n : { adults: 2, children: 0, childAges: [], isVisible: false }\n )\n );\n\n setIsTouched(true);\n }}\n />\n
\n
\n\n
\n \n {panelRooms.map((room, roomIndex) => (\n \n
\n

\n {t(\"ROOM_X\", { roomNumber: roomIndex + 1 })}\n

\n
\n {\n setPanelRooms(\n panelRooms.map((room, i) =>\n i === roomIndex ? { ...room, adults: value } : room\n )\n );\n\n setIsTouched(true);\n }}\n />\n {\n setPanelRooms(\n panelRooms.map((room, i) =>\n i === roomIndex\n ? {\n ...room,\n children: value,\n childAges: range(0, value).map(\n (childIndex) => room.childAges[childIndex] ?? 0\n ),\n }\n : room\n )\n );\n\n setIsTouched(true);\n }}\n />\n
\n {packageRooms && (\n <>\n {sizeChanged && (\n
\n \n {t(\"OCCUPANCY_CHANGED_PLEASE_APPLY\")}\n \n
\n )}\n {!sizeChanged && (\n
\n {!sizeChanged && (\n \n {getSummaryLabel(packageRooms[roomIndex])}\n \n )}\n {!room.isVisible && packageRooms[roomIndex] && (\n {\n const newRooms = panelRooms.map((room, i) =>\n i === roomIndex ? { ...room, isVisible: true } : room\n );\n setPanelRooms(newRooms);\n }}\n className=\"configure-rooms__collapse-anchor\"\n title={t(\"CHANGE_ROOM_REGIME\")}\n >\n {t(\"CHANGE_ROOM_REGIME\")}\n \n \n )}\n {room.isVisible && (\n {\n const newRooms = panelRooms.map((room, i) =>\n i === roomIndex ? { ...room, isVisible: false } : room\n );\n setPanelRooms(newRooms);\n }}\n className=\"configure-rooms__collapse-anchor configure-rooms__collapse-anchor--close\"\n title={t(\"SAVE_CHOICE\")}\n >\n {t(\"SAVE_CHOICE\")}\n \n \n )}\n
\n )}\n \n )}\n
\n {panelRooms[roomIndex].children > 0 && (\n
\n \n
\n {range(0, panelRooms[roomIndex].children).map((childIndex) => (\n {\n setPanelRooms(\n panelRooms.map((room, selectorRoomIndex) =>\n roomIndex === selectorRoomIndex\n ? {\n ...room,\n childAges: room.childAges\n .map((age, i) => (childIndex === i ? value : age))\n .sort((a, b) => b - a),\n }\n : room\n )\n );\n\n setIsTouched(true);\n }}\n />\n ))}\n
\n
\n )}\n {product && !sizeChanged && packageRooms && packageRooms[roomIndex] && (\n \n )}\n
\n ))}\n
\n
\n\n
\n \n \n \n {t(\"APPLY\")}\n \n \n
\n \n {mql?.matches && (\n
\n )}\n
\n \n );\n};\n\nexport default RoomPicker;\n","import { omit } from \"lodash\";\nimport React, { useEffect, useState } from \"react\";\nimport {\n setBookingRooms,\n setDateRange,\n setProductId,\n setRooms,\n setFlexSearch,\n setFlexibleRange,\n} from \"../qsm-store/reducer\";\nimport { sortProps } from \"./utils\";\n\nimport JsonURL from \"@jsonurl/jsonurl\";\nimport { buildTideClientConfig } from \"@qite/tide-booking-component/src/shared/utils/tide-api-utils\";\nimport { book, getPrintActions, print, update } from \"@qite/tide-client\";\nimport {\n AgentPrintAction,\n AgentPrintActionRequest,\n BookingPackage,\n BookingPackageBookRequest,\n BookingPackageDossier,\n BookingPackageRequest,\n BookingPackageRoom,\n BookingPackageUpdateRequest,\n PackageRoomOption,\n} from \"@qite/tide-client/build/types\";\nimport { format, formatISO } from \"date-fns\";\nimport { graphql } from \"gatsby\";\nimport Icon from \"../../../components/icon\";\nimport Loader from \"../../../components/loader\";\nimport { fetchLookupData } from \"../../../components/lookup-context/mapping\";\nimport { LookupData } from \"../../../components/lookup-context/types\";\nimport { officeId } from \"../../../tide-api\";\nimport { compileRequest, handleAnchorClick } from \"../../../utils\";\nimport { useMemberStore } from \"../../member-store/context\";\nimport { useProductStore } from \"../product-store/context\";\nimport {\n setEstimatedPrice,\n setHasFlight,\n setHasTransfer,\n setIsUnavailable,\n setPrice,\n} from \"../product-store/reducer\";\nimport { useQSMStore } from \"../qsm-store/context\";\nimport { getPackageDetails } from \"../utils/search-util\";\nimport DatePicker, { DateRange } from \"./date-picker\";\nimport LocationPicker from \"./location-picker\";\nimport RoomPicker, { Room } from \"./room-picker\";\nimport { Trans, useI18next } from \"gatsby-plugin-react-i18next\";\nimport { getTideLanguageId } from \"../../../i18n/languages\";\n\ninterface QSMProps {\n productSpecific?: boolean;\n searchPagePath?: string;\n onRoomOptionsReceived?: (roomOptioms: PackageRoomOption[]) => void;\n onDestinationChange?: (id: number | undefined, destinationType?: \"country\" | \"region\") => void;\n reload?: () => void;\n}\n\ninterface PrintButtonState {\n isLoading: boolean;\n label: string;\n}\n\nconst QSM: React.FC = (props) => {\n const { t, navigate, language } = useI18next();\n\n const [qsmState, qsmDispatch] = useQSMStore();\n const [productState, productDispatch] = useProductStore();\n const [memberState] = useMemberStore();\n\n const [lookupData, setLookupData] = useState([]);\n const [locationPanelActive, setLocationPanelActive] = useState(false);\n const [roomPanelActive, setRoomPanelActive] = useState(false);\n const [datePanelActive, setDatePanelActive] = useState(false);\n const [previousRequest, setPreviousRequest] = useState(\"\");\n\n const [isBookable, setBookable] = useState();\n const [isLoading, setIsLoading] = useState();\n const [offer, setOffer] = useState();\n const [printActions, setPrintActions] = useState();\n const [bookingPackage, setBookingPackage] = useState();\n const [printButtonState, setPrintButtonState] = useState({\n isLoading: false,\n label: t(\"PRINT_OFFER\"),\n });\n\n const selectedItem = lookupData.find(\n (x) => x.id === qsmState?.product?.id || x.id === qsmState?.productId\n );\n\n const fetchPackage = async () => {\n if (\n qsmState?.product &&\n qsmState?.dateRange?.fromDate &&\n qsmState?.dateRange?.toDate &&\n qsmState?.rooms\n ) {\n try {\n var currentRequest = compileRequest(\n qsmState.product,\n qsmState.dateRange.fromDate,\n qsmState.dateRange.toDate,\n qsmState.rooms\n );\n\n if (!qsmState?.loaded) return;\n if (currentRequest == previousRequest) return;\n setPreviousRequest(currentRequest);\n\n // Fetch package\n setIsLoading(true);\n if (productDispatch) {\n productDispatch(setIsUnavailable(false));\n productDispatch(setPrice(undefined));\n productDispatch(setEstimatedPrice(undefined));\n }\n const response = await getPackageDetails(\n qsmState?.rooms,\n formatISO(qsmState?.dateRange?.fromDate, { representation: \"date\" }) + \"T00:00:00Z\",\n formatISO(qsmState?.dateRange?.toDate, { representation: \"date\" }) + \"T00:00:00Z\",\n qsmState?.product?.content?.general?.product?.code,\n undefined,\n language\n );\n setIsLoading(false);\n\n if (!response.errorCode && response.payload) {\n const bookingPackage = response.payload;\n const activeOption =\n bookingPackage.options.find((x) => x.isSelected) ?? bookingPackage.options[0];\n\n if (activeOption) {\n if (productDispatch) {\n productDispatch(setPrice({ defaultPrice: activeOption.price }));\n productDispatch(setEstimatedPrice(undefined));\n\n if (activeOption.includedServiceTypes.some((x) => x === 7)) {\n productDispatch(setHasFlight(true));\n }\n\n if (activeOption.includedServiceTypes.some((x) => x === 13)) {\n productDispatch(setHasTransfer(true));\n }\n }\n\n if (qsmDispatch) {\n qsmDispatch(setBookingRooms(activeOption.rooms));\n }\n\n updateRoomsInPackage(qsmState.rooms);\n\n // Product is bookable\n setBookable(true);\n setBookingPackage(bookingPackage);\n } else {\n if (productDispatch) {\n productDispatch(setIsUnavailable(true));\n productDispatch(setPrice(undefined));\n\n productDispatch(\n setEstimatedPrice({\n defaultPrice: qsmState.product?.content?.general?.estimatedPrice ?? undefined,\n promoPrice: qsmState.product?.content?.general?.estimatedPromoPrice ?? undefined,\n })\n );\n }\n\n if (qsmDispatch) {\n qsmDispatch(setBookingRooms([]));\n }\n\n setBookable(false);\n }\n } else {\n if (productDispatch) {\n productDispatch(setIsUnavailable(true));\n productDispatch(setPrice(undefined));\n\n productDispatch(\n setEstimatedPrice({\n defaultPrice: qsmState.product?.content?.general?.estimatedPrice ?? undefined,\n promoPrice: qsmState.product?.content?.general?.estimatedPromoPrice ?? undefined,\n })\n );\n }\n\n if (qsmDispatch) {\n qsmDispatch(setBookingRooms([]));\n }\n\n setBookable(false);\n }\n } catch {\n if (productDispatch) {\n }\n\n // Something went wrong\n setBookable(false);\n }\n }\n };\n\n const asyncFetchLookupData = async () => {\n const data = await fetchLookupData(language);\n setLookupData(data);\n };\n\n const fetchPrintActions = async () => {\n if (!memberState?.member) return;\n const config = buildTideClientConfig();\n const printActions = await getPrintActions(config, 0);\n const validPrintActions = printActions.filter(\n (x) => !x.validEntryStatuses.length || x.validEntryStatuses.some((y) => y == 0)\n );\n setPrintActions(validPrintActions);\n };\n\n useEffect(() => {\n fetchPackage();\n }, [\n qsmState?.product,\n qsmState?.dateRange?.fromDate?.valueOf(),\n qsmState?.dateRange?.toDate?.valueOf(),\n qsmState?.loaded,\n previousRequest,\n JSON.stringify(qsmState?.rooms?.map(sortProps)),\n ]);\n\n useEffect(() => {\n asyncFetchLookupData();\n }, []);\n\n useEffect(() => {\n fetchPrintActions();\n }, []);\n\n useEffect(() => {\n if (qsmDispatch && !qsmState?.flexSearch) {\n qsmDispatch(setFlexibleRange(0));\n }\n }, [qsmState?.flexSearch]);\n\n const handleLocationSelect = (id: string, flexSearch: boolean) => {\n setLocationPanelActive(false);\n if (qsmDispatch) {\n qsmDispatch(setProductId(id));\n qsmDispatch(setFlexSearch(flexSearch));\n }\n\n if (props.onDestinationChange) {\n const selectedLookupItem = lookupData.find((x) => x.id === id);\n if (selectedLookupItem?.templateName === \"Country\") {\n props.onDestinationChange(selectedLookupItem.itemId, \"country\");\n } else if (selectedLookupItem?.templateName === \"Region\") {\n props.onDestinationChange(selectedLookupItem.itemId, \"region\");\n }\n }\n };\n\n const handleSearchClick: React.MouseEventHandler = () => {\n const params: Record = {};\n\n if (selectedItem?.templateName === \"Country\") {\n params[\"country\"] = `${selectedItem.itemId}`;\n } else if (selectedItem?.templateName === \"Region\") {\n params[\"region\"] = `${selectedItem.itemId}`;\n } else if (qsmState?.countryId) {\n params[\"country\"] = `${qsmState.countryId}`;\n } else if (qsmState?.regionId) {\n params[\"region\"] = `${qsmState.regionId}`;\n }\n\n if (qsmState?.rooms) {\n const serialized = JsonURL.stringify(\n qsmState.rooms.map((room) => omit(room, [\"children\"])),\n { AQF: true }\n );\n\n if (serialized) {\n params[\"rooms\"] = serialized;\n }\n }\n\n if (qsmState?.dateRange?.fromDate) {\n params[\"from\"] = format(qsmState.dateRange.fromDate, \"yyyyMMdd\");\n }\n\n if (qsmState?.dateRange?.toDate) {\n params[\"to\"] = format(qsmState.dateRange.toDate, \"yyyyMMdd\");\n }\n\n const path =\n selectedItem?.templateName === \"Hotel\" || selectedItem?.templateName === \"Roundtrip\"\n ? selectedItem.url\n : `/${props.searchPagePath}`;\n\n const paramString = Object.keys(params)\n .map((key) => `${key}=${params[key]}`)\n .join(\"&\");\n\n // window.location.href = `${path}?${paramString}`;\n if (props.reload) {\n window.history.replaceState(\"\", \"\", `${path}?${paramString}`);\n props.reload(); // Force to reload search results, because navigate will only change the url, but not trigger a page reload.\n } else {\n navigate(`${path}?${paramString}`, { state: qsmState });\n }\n };\n\n const handleBookClick: React.MouseEventHandler = () => {\n const params: Record = {};\n\n if (qsmState?.rooms) {\n const serialized = JsonURL.stringify(\n qsmState.rooms.map((room) => omit(room, [\"children\"])),\n { AQF: true }\n );\n\n if (serialized) {\n params[\"rooms\"] = serialized;\n }\n }\n\n if (qsmState?.dateRange?.fromDate) {\n params[\"startDate\"] = format(qsmState.dateRange.fromDate, \"yyyy-MM-dd\");\n }\n\n if (qsmState?.dateRange?.toDate) {\n params[\"endDate\"] = format(qsmState.dateRange.toDate, \"yyyy-MM-dd\");\n }\n\n params[\"catalog\"] = \"1\";\n\n const path = window.location.pathname;\n\n const paramString = Object.keys(params)\n .map((key) => `${key}=${params[key]}`)\n .join(\"&\");\n\n window.location.href = `${path}${path.endsWith(\"/\") ? \"\" : \"/\"}boeken?${paramString}`;\n };\n\n const createOffer = async (): Promise => {\n if (!bookingPackage || !qsmState || !memberState?.member || !printActions) {\n throw new Error(\"Invalid input\");\n }\n\n const { member } = memberState;\n const config = buildTideClientConfig();\n const selectedOption =\n bookingPackage.options.find((x) => x.isSelected) ?? bookingPackage.options[0];\n const pax = selectedOption.requestRooms.flatMap((room) => room.pax);\n\n let newOffer: BookingPackageDossier;\n // if (offer) {\n // const request: BookingPackageRequest = {\n // officeId,\n // agentId: member.agentId,\n // payload: {\n // dossierNumber: offer.number,\n // package: bookingPackage,\n // status: 0,\n // pax,\n // nonTravelPax: [],\n // notifications: [],\n // customerRequests: [],\n // // tagIds: [9]\n // },\n // };\n\n // newOffer = await update(config, request);\n // } else {\n const request: BookingPackageRequest = {\n officeId,\n agentId: member.agentId,\n payload: {\n package: bookingPackage,\n status: 0,\n pax,\n nonTravelPax: [],\n notifications: [],\n customerRequests: [],\n // tagIds: [9]\n },\n };\n\n newOffer = await book(config, request);\n // }\n\n setOffer(newOffer);\n return newOffer;\n };\n\n const handlePrintOfferClick = async () => {\n // Build offer\n setPrintButtonState({ isLoading: true, label: t(\"GENERATE_OFFER\") });\n const _offer = await createOffer();\n\n // Print offer\n if (!_offer) throw new Error(\"An offer is required\");\n setPrintButtonState({ isLoading: true, label: t(\"GENERATE_PRINT\") });\n await printOffer(_offer);\n\n // Done\n setPrintButtonState({ isLoading: false, label: t(\"PRINT_OFFER\") });\n };\n\n const printOffer = async (_offer: BookingPackageDossier) => {\n if (!_offer) throw new Error(\"An offer is required\");\n if (!printActions?.length) throw new Error(\"A print action is required.\");\n\n const config = buildTideClientConfig();\n const printActionId = printActions[0].id;\n const tideLanguageId = getTideLanguageId(language);\n const request: AgentPrintActionRequest = {\n id: printActionId,\n dossierNumber: _offer.number,\n languageId: tideLanguageId,\n };\n\n const response = await print(config, request).catch();\n const arrayBuffer = await response.arrayBuffer();\n const blob = new Blob([arrayBuffer], { type: \"application/pdf\" });\n const url = window.URL.createObjectURL(blob);\n window.open(url);\n };\n\n const updateHistory = (rooms?: Room[], dateRange?: DateRange) => {\n const params: Record = {};\n const newRooms = rooms ?? qsmState?.rooms;\n const newFromDate = dateRange?.fromDate ?? qsmState?.dateRange.fromDate;\n const newToDate = dateRange?.toDate ?? qsmState?.dateRange.toDate;\n\n if (newRooms) {\n const serialized = JsonURL.stringify(\n newRooms.map((room) => omit(room, [\"children\"])),\n { AQF: true }\n );\n\n if (serialized) {\n params[\"rooms\"] = serialized;\n }\n }\n\n if (newFromDate) {\n params[\"from\"] = format(newFromDate, \"yyyyMMdd\");\n }\n\n if (newToDate) {\n params[\"to\"] = format(newToDate, \"yyyyMMdd\");\n }\n\n const path = window.location.pathname;\n\n const paramString = Object.keys(params)\n .map((key) => `${key}=${params[key]}`)\n .join(\"&\");\n\n window.history.replaceState(\"\", \"\", `${path}?${paramString}`);\n };\n\n const updateRoomsInPackage = (rooms: Room[], updatePrice?: boolean) => {\n var packageRooms = qsmState?.bookingRooms;\n var price = productState?.price;\n\n if (!packageRooms || rooms.length !== packageRooms.length) return;\n\n var currentPrice = calculateRoomPrice(packageRooms);\n var updatedPackageRooms = packageRooms.map((room, index) => ({\n ...room,\n options: room.options.map((option) => ({\n ...option,\n isSelected: rooms[index].accommodationCode\n ? option.accommodationCode === rooms[index].accommodationCode &&\n option.regimeCode === rooms[index].regimeCode\n : option.isSelected,\n })),\n }));\n var newPrice = calculateRoomPrice(updatedPackageRooms);\n\n const updatedPrice = {\n ...price,\n defaultPrice: (price?.defaultPrice ?? 0) - currentPrice + newPrice,\n };\n\n if (productDispatch && updatePrice) productDispatch(setPrice(updatedPrice));\n if (qsmDispatch) qsmDispatch(setBookingRooms(updatedPackageRooms));\n };\n\n const calculateRoomPrice = (rooms?: BookingPackageRoom[]) => {\n let price = 0;\n if (rooms) {\n rooms.forEach((x) => {\n var selected = x.options.find((y) => y.isSelected);\n price += selected?.price ?? 0;\n });\n }\n return price;\n };\n\n const locationValue = lookupData.find((x) =>\n qsmState?.productId\n ? x.id === qsmState?.productId &&\n (x.templateName === \"Roundtrip\" || x.templateName === \"Hotel\")\n : qsmState?.countryId\n ? x.itemId && x.itemId === qsmState?.countryId && x.templateName === \"Country\"\n : x.itemId && x.itemId === qsmState?.regionId && x.templateName === \"Region\"\n );\n\n return qsmState && qsmState.loaded ? (\n
\n
\n
\n {!props.productSpecific && (\n setLocationPanelActive(true)}\n value={locationValue?.name}\n onPanelToggle={(isActive) => {\n if (isActive) {\n setRoomPanelActive(false);\n setDatePanelActive(false);\n }\n setLocationPanelActive(isActive);\n }}\n onSelect={handleLocationSelect}\n onClear={() => {\n handleLocationSelect(\"\", false);\n }}\n />\n )}\n {\n if (!isLoading) {\n if (isActive) {\n setLocationPanelActive(false);\n setDatePanelActive(false);\n }\n setRoomPanelActive(isActive);\n }\n }}\n rooms={qsmState.rooms}\n onRoomsChange={(value) => {\n updateRoomsInPackage(value, true);\n updateHistory(value, undefined);\n\n if (qsmDispatch) qsmDispatch(setRooms(value));\n }}\n product={qsmState.product}\n packageRooms={qsmState.bookingRooms}\n />\n {\n if (!isLoading) {\n if (isActive) {\n setLocationPanelActive(false);\n setRoomPanelActive(false);\n }\n setDatePanelActive(isActive);\n }\n }}\n onChange={(value) => {\n setDateRange(value);\n updateHistory(undefined, value);\n\n if (qsmDispatch) qsmDispatch(setDateRange(value));\n window.scrollTo(0, 0);\n }}\n />\n
\n {!props.productSpecific && (\n \n )}\n {props.productSpecific &&\n !isLoading &&\n (isBookable ? (\n \n ) : (\n \n REQUEST_OFFER\n \n ))}\n
\n {props.productSpecific &&\n !isLoading &&\n isBookable &&\n printActions &&\n memberState?.member &&\n printActions &&\n printActions.length > 0 && (\n
\n \n (printButtonState.isLoading ? : '') (printButtonState.label)\n \n
\n )}\n
\n
\n
\n ) : null;\n};\n\nexport default QSM;\n\nexport const query = graphql`\n fragment QSMFragment on Query {\n allTideItem(\n filter: { templateName: { in: [\"Hotel\", \"Roundtrip\"] }, language: { eq: $language } }\n ) {\n nodes {\n ...QSMProductFragment\n }\n }\n }\n\n fragment QSMProductFragment on TideItem {\n id\n name\n templateName\n ... on TideItemForHotel {\n content {\n general {\n title\n slug\n }\n }\n }\n ... on TideItemForRoundtrip {\n content {\n general {\n title\n slug\n combinationTrip\n }\n }\n }\n parentItem {\n id\n name\n templateName\n ... on TideItemForCountry {\n content {\n general {\n title\n }\n }\n }\n ... on TideItemForRegion {\n content {\n general {\n title\n }\n }\n }\n parentItem {\n id\n name\n templateName\n ... on TideItemForGeographicalRegion {\n content {\n general {\n title\n }\n }\n }\n }\n }\n }\n`;\n"],"sourceRoot":""}