{"version":3,"file":"tour-search.2c9a553a10cf3d6e4885.js","mappings":"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","sources":["webpack://App/webpack/runtime/chunk loaded","webpack://App/./Client/include/react-components/Carousel/components/Carousel.js","webpack://App/./Client/src/TourSearch/store/TourSearchStore.ts","webpack://App/./Client/src/TourSearch/store/TourSearchStoreContainer.tsx","webpack://App/./Client/src/TourSearch/store/TourDescriptionStoreContainer.tsx","webpack://App/./Client/src/TourSearch/components/NoSearchResults/NoSearchResults.tsx","webpack://App/./Client/src/TourSearch/components/AccomodationTab/AccomodationTab.tsx","webpack://App/./Client/src/TourSearch/components/AccomodationTabs/AccomodationTabs.tsx","webpack://App/./Client/src/TourSearch/components/AccomodationVariantList/AccomodationVariantList.tsx","webpack://App/./Client/include/react-components/IconText/IconText.tsx","webpack://App/./Client/src/TourSearch/components/TourVariantPrice/TourVariantPrice.tsx","webpack://App/./Client/src/TourSearch/components/TourVariantSelector/TourVariantSelector.tsx","webpack://App/./Client/src/TourSearch/components/TourSearchResultCard/styles.ts","webpack://App/./Client/src/TourSearch/components/TourSearchResultCard/TourSummary.tsx","webpack://App/./Client/src/TourSearch/components/TourSearchResultCard/TourSearchResultCard.tsx","webpack://App/./Client/src/TourSearch/components/TourSearchResultCard/TourSearchResultCardSkeleton.tsx","webpack://App/./Client/src/TourSearch/components/TourSearchResults/TourSearchResults.tsx","webpack://App/./Client/src/TourSearch/components/TourSearchResults/TourSearchResultsContainer.tsx","webpack://App/./Client/src/TourSearch/components/TourSearchRoot/TourSearchRoot.tsx","webpack://App/./Client/src/TourSearch/tour-search.js","webpack://App/./Client/include/api-ito/ExcursionsApi.ts","webpack://App/./Client/include/api-ito/ToursApi.ts","webpack://App/./Client/include/react-components/TouristPicker/TouristPicker.tsx","webpack://App/./Client/include/react-components/TouristPicker/TouristPickerDialog.tsx","webpack://App/./Client/include/react-components/TouristPicker/TouristPickerTextField.tsx","webpack://App/./Client/include/utils.ts","webpack://App/./Client/src/NewTourSearch/compoments/tp/TpSelect.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/AsyncSpinner.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/ImageGrid.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/Lightbox.tsx","webpack://App/./Client/src/TourSearch/store/utils.ts","webpack://App/webpack/bootstrap","webpack://App/webpack/runtime/amd options","webpack://App/webpack/runtime/compat get default export","webpack://App/webpack/runtime/define property getters","webpack://App/webpack/runtime/global","webpack://App/webpack/runtime/harmony module decorator","webpack://App/webpack/runtime/hasOwnProperty shorthand","webpack://App/webpack/runtime/make namespace object","webpack://App/webpack/runtime/node module decorator","webpack://App/webpack/runtime/publicPath","webpack://App/webpack/runtime/jsonp chunk loading","webpack://App/webpack/runtime/nonce","webpack://App/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import React, { Component } from 'react';\nimport Slide from '@material-ui/core/Slide';\nimport IconButton from '@material-ui/core/IconButton';\nimport { withStyles } from '@material-ui/core/styles';\nimport autoBind from 'auto-bind';\nimport NavigateBeforeIcon from '@material-ui/icons/NavigateBefore';\nimport NavigateNextIcon from '@material-ui/icons/NavigateNext';\nimport { useSwipeable } from 'react-swipeable';\n\nconst styles = {\n root: {\n position: \"relative\",\n overflow: \"hidden\"\n },\n active: {\n color: \"#494949\"\n },\n buttonWrapper: {\n position: \"absolute\",\n height: \"100px\",\n backgroundColor: \"transparent\",\n top: \"calc(50% - 70px)\",\n '&:hover': {\n '& $button': {\n opacity: 1,\n backgroundColor: \"rgba(0 0 0 / 80%)\",\n }\n }\n },\n fullHeightHoverWrapper: {\n height: \"100% !important\",\n top: \"0 !important\"\n },\n button: {\n margin: \"0 10px\",\n position: \"relative\",\n backgroundColor: \"rgb(20 24 27 / 0%)\",\n top: \"30px\",\n color: \"#efefef\",\n fontSize: \"30px\",\n transition: \"200ms\",\n cursor: \"pointer\",\n },\n fullHeightHoverButton: {\n top: \"calc(50% - 20px) !important\"\n },\n buttonVisible: {\n opacity: \"1\"\n },\n buttonHidden: {\n opacity: \"0\",\n },\n next: {\n right: 0\n },\n prev: {\n left: 0\n }\n}\n\nconst sanitizeProps = (props) => {\n const timeout = props.timeout !== undefined ? props.timeout : 200;\n\n return {\n children: props.children ? props.children : [],\n index: props.index !== undefined ? props.index : 0,\n strictIndexing: props.strictIndexing !== undefined ? props.strictIndexing : true,\n autoPlay: props.autoPlay !== undefined ? props.autoPlay : true,\n interval: props.interval !== undefined ? props.interval : 4000,\n navButtonsAlwaysInvisible: props.navButtonsAlwaysInvisible !== undefined ? props.navButtonsAlwaysInvisible : false,\n navButtonsAlwaysVisible: props.navButtonsAlwaysVisible !== undefined ? props.navButtonsAlwaysVisible : false,\n timeout: timeout,\n fullHeightHover: props.fullHeightHover !== undefined ? props.fullHeightHover : true,\n onChange: props.onChange !== undefined ? props.onChange : () => { },\n changeOnFirstRender: props.changeOnFirstRender !== undefined ? props.changeOnFirstRender : false,\n next: props.next !== undefined ? props.next : () => { },\n prev: props.prev !== undefined ? props.prev : () => { },\n className: props.className !== undefined ? props.className : \"\"\n }\n}\n\nclass Carousel extends Component {\n constructor(props) {\n super(props);\n autoBind(this);\n\n this.state = {\n active: 0,\n prevActive: 0,\n displayed: 0,\n }\n\n this.timer = null;\n }\n\n componentDidMount() {\n const { index, changeOnFirstRender } = sanitizeProps(this.props)\n this.setActive(index, undefined, changeOnFirstRender);\n\n this.start();\n }\n\n componentWillUnmount() {\n this.stop();\n }\n\n componentDidUpdate(prevProps, prevState) {\n prevProps = sanitizeProps(prevProps);\n const { autoPlay, interval, children, index } = sanitizeProps(this.props);\n\n if (autoPlay !== prevProps.autoPlay || interval !== prevProps.interval) {\n this.reset();\n }\n\n if (children.length !== prevProps.children.length) {\n this.setActive(index);\n }\n\n if (prevProps.index !== index) {\n this.setActive(index)\n }\n }\n\n stop() {\n if (this.timer) {\n clearInterval(this.timer)\n this.timer = null;\n }\n }\n\n start() {\n const { autoPlay, interval } = sanitizeProps(this.props);\n\n if (autoPlay) {\n this.timer = setInterval(this.next, interval);\n }\n }\n\n reset() {\n\n const { autoPlay } = sanitizeProps(this.props);\n this.stop();\n\n if (autoPlay) {\n this.start();\n }\n }\n\n setActive(index, callback = () => { }, runCallbacks = true) {\n const { onChange, timeout, children, strictIndexing } = sanitizeProps(this.props);\n\n // if index is bigger than the children length, set it to be the last child (if strictIndexing)\n if (Array.isArray(children)) {\n if (strictIndexing && index > children.length - 1) index = children.length - 1;\n if (strictIndexing && index < 0) index = 0;\n }\n else {\n index = 0;\n }\n\n const prevActive = this.state.active;\n\n this.setState({\n active: index,\n prevActive: prevActive,\n displayed: prevActive\n }, this.reset);\n\n setTimeout(() => {\n this.setState({\n displayed: index\n }, () => {\n if (runCallbacks) {\n // Call user defined callbacks\n callback(index, prevActive);\n onChange(index, prevActive);\n }\n\n\n })\n }, timeout);\n }\n\n next(event) {\n const { children, next } = sanitizeProps(this.props);\n\n const nextActive = this.state.active + 1 > children.length - 1 ? 0 : this.state.active + 1;\n\n this.setActive(nextActive, next)\n\n if (event)\n event.stopPropagation();\n }\n\n prev(event) {\n const { children, prev } = sanitizeProps(this.props);\n\n const nextActive = this.state.active - 1 < 0 ? children.length - 1 : this.state.active - 1;\n\n this.setActive(nextActive, prev)\n\n if (event)\n event.stopPropagation();\n }\n\n render() {\n const {\n children,\n navButtonsAlwaysInvisible,\n navButtonsAlwaysVisible,\n timeout,\n fullHeightHover,\n className,\n } = sanitizeProps(this.props);\n\n const classes = this.props.classes;\n\n const buttonCssClassValue = `${classes.button} ${navButtonsAlwaysVisible ? classes.buttonVisible : classes.buttonHidden} ${fullHeightHover ? classes.fullHeightHoverButton : \"\"}`;\n const buttonWrapperCssClassValue = `${classes.buttonWrapper} ${fullHeightHover ? classes.fullHeightHoverWrapper : \"\"}`;\n\n const compareActiveDisplayed = () => {\n if (this.state.active === 0 && this.state.prevActive === children.length - 1) {\n return true;\n }\n\n if (this.state.active === children.length - 1 && this.state.prevActive === 0) {\n return false;\n }\n\n if (this.state.active > this.state.prevActive) {\n return true;\n }\n\n return false;\n }\n\n return (\n
\n {\n Array.isArray(children) ?\n children.map((child, index) => {\n return (\n \n )\n })\n :\n \n }\n\n {!navButtonsAlwaysInvisible &&\n
\n \n \n \n
\n }\n\n {!navButtonsAlwaysInvisible &&\n
\n \n \n \n
\n }\n
\n )\n }\n}\n\nfunction CarouselItem(props) {\n const swipeHandlers = useSwipeable({\n onSwipedLeft: () => props.next(),\n onSwipedRight: () => props.prev()\n })\n\n return (\n props.display ? (\n
\n \n
\n {props.child}\n
\n
\n
\n ) : null\n )\n}\n\nexport default withStyles(styles)(Carousel);\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { createStore, createHook } from 'react-sweet-state';\r\nimport { addTourToCart, searchTours } from 'api-ito/ToursApi';\r\nimport { appUrl } from 'utils';\r\nimport { makeSearchId, makeSearchQueryFromURLParams } from './utils';\r\nimport { tourDetailsUrlRR } from '../tour-urlgen';\r\nexport const TourSearchStoreActions = {\r\n /**\r\n * Выполняет поиск туров с указанными параметрами.\r\n */\r\n search: (page) => ({ setState, getState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n const prevState = getState();\r\n if (prevState.loading)\r\n return;\r\n const searchId = makeSearchId(prevState.searchQuery || {}, page);\r\n if (searchId === prevState.searchId)\r\n return;\r\n setState({ loading: true, errors: [], page });\r\n const result = yield searchTours(Object.assign(Object.assign({}, prevState.searchQuery), { page }));\r\n const newState = { loading: false, searchId };\r\n if (!('errors' in result)) {\r\n const searchResult = result;\r\n setState(Object.assign(Object.assign({}, newState), { searchResult, pageCount: searchResult.pageCount, errors: [] }));\r\n }\r\n else {\r\n setState(Object.assign(Object.assign({}, newState), { errors: result.errors }));\r\n }\r\n }),\r\n searchURLParams: (query) => ({ getState, setState, dispatch }) => {\r\n const prevState = getState();\r\n if (prevState.loading)\r\n return;\r\n const [searchQuery, page] = makeSearchQueryFromURLParams(query);\r\n setState({ searchQuery });\r\n dispatch(TourSearchStoreActions.search(page));\r\n },\r\n /**\r\n * Генерирует ссылку на описание тура.\r\n */\r\n genTourDetailsUrl: (variantId, accmmdId, tourName, hash, search) => {\r\n return ({ getState }) => {\r\n var _a, _b, _c;\r\n const { searchResult, searchQuery } = getState();\r\n const state = {\r\n searchQuery: searchQuery || {},\r\n searchResult: {\r\n totalCount: (_a = searchResult === null || searchResult === void 0 ? void 0 : searchResult.totalCount) !== null && _a !== void 0 ? _a : 0,\r\n searchCountry: (_b = searchResult === null || searchResult === void 0 ? void 0 : searchResult.searchCountry) !== null && _b !== void 0 ? _b : '',\r\n searchLocation: (_c = searchResult === null || searchResult === void 0 ? void 0 : searchResult.searchLocation) !== null && _c !== void 0 ? _c : '',\r\n }\r\n };\r\n const tourId = parseInt(variantId.split('.', 2)[0]);\r\n if (!tourId)\r\n return { hash: '#bad-params' };\r\n return tourDetailsUrlRR(tourId, { tourName, accmmdId, variantId, state, hash: hash !== null && hash !== void 0 ? hash : '', search: search });\r\n };\r\n },\r\n /**\r\n * Бронирует тур и при успешном завершении операции переходит в корзину.\r\n * @param tourVariantId Бронируемый тур\r\n * @param accmdVariants Выбранный вариант размещения на каждый период проживания (все периоды\r\n * в туре должны быть заполнены иначе это ошибка).\r\n */\r\n book: (tourVariantId, accmdVariantIds, hash, replaceExistingTour, options) => {\r\n return ({ getState, setState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n const { booking } = getState();\r\n if (booking)\r\n return;\r\n /*\r\n const { adC: adultCount, chC: childCount, chA: childAges } = searchQuery as\r\n { adC: number, chC: number, chA: number[] };\r\n const ages = childAges && childAges.slice(0, Math.max(0, childCount)) || [];\r\n */\r\n setState({ booking: true, bookingErrors: [] });\r\n const errors = yield addTourToCart({ tourVariantId, accmdVariantIds, hash, externalFlight: undefined, extras: undefined, replaceExistingTour });\r\n if (!errors) {\r\n if (options === null || options === void 0 ? void 0 : options.onSuccess)\r\n options.onSuccess();\r\n setState({ booking: false, bookingErrors: [] });\r\n window.location.href = appUrl(\"/Cart\");\r\n }\r\n else {\r\n if (options === null || options === void 0 ? void 0 : options.onError)\r\n options.onError(errors);\r\n setState({ booking: false, bookingErrors: errors });\r\n }\r\n });\r\n },\r\n};\r\nexport const TourSearchStore = createStore({\r\n name: 'TourSearchStore',\r\n initialState: {\r\n booking: false,\r\n bookingErrors: [],\r\n errors: [],\r\n loading: false,\r\n loadingTourDetails: false,\r\n page: 0,\r\n pageCount: 0,\r\n searchQuery: {},\r\n searchResult: undefined,\r\n searchId: undefined,\r\n },\r\n actions: TourSearchStoreActions,\r\n});\r\nexport const useTourSearchStore = createHook(TourSearchStore);\r\n","import { createContainer } from 'react-sweet-state';\r\nimport { parseSearchResult } from 'api-ito/ToursApi';\r\nimport { TourSearchStore } from \"./TourSearchStore\";\r\nimport { makeSearchId, makeSearchQueryFromURLParams } from './utils';\r\nlet g_search_store_hydrated = false;\r\n/**\r\n * Контейнер выполняющий функцию регидратации хранилища.\r\n */\r\nconst Container = createContainer(TourSearchStore, {\r\n onInit: () => ({ setState }, { initialState: init }) => {\r\n if ((init === null || init === void 0 ? void 0 : init.type) == 'search-state' && !g_search_store_hydrated) {\r\n g_search_store_hydrated = true;\r\n if (init.searchResult) {\r\n const searchResult = parseSearchResult(init.searchResult);\r\n const [searchQuery, page] = makeSearchQueryFromURLParams(new URL(document.documentURI).search);\r\n const searchId = makeSearchId(searchQuery, page);\r\n setState({ searchResult, searchQuery, searchId, page, pageCount: searchResult.pageCount });\r\n }\r\n }\r\n },\r\n});\r\nexport { Container as TourSearchStoreContainer };\r\n","import { createContainer } from 'react-sweet-state';\r\nimport { TourDescriptionStoreDefault, TourDescriptionStoreFrame } from './TourDescriptionStore';\r\nlet g_desription_store_hydrated = false;\r\nconst CreateTourDescriptionContainer = (store) => createContainer(store, {\r\n onInit: () => ({ getState, setState, dispatch }, { initialState: init }) => {\r\n var _a, _b, _c, _d, _e, _f;\r\n if (init)\r\n setState({ flightConfiguration: init.flightConfiguration });\r\n if (init && init.type == 'description-state' && init.description && !g_desription_store_hydrated) {\r\n g_desription_store_hydrated = true;\r\n // FIXME: duplicating loadDescription.\r\n const hotelServices = init.description.tourServices.filter((x) => x.type == 'hotel');\r\n if (hotelServices.length == 0) {\r\n setState({ currentAccommodationVariants: [], hasAccommodation: false, });\r\n }\r\n else {\r\n setState({\r\n currentAccommodationVariants: hotelServices.map(hotel => ({\r\n accommodation: hotel.accommodation,\r\n hotelDescription: hotel.hotelDescription,\r\n externalHotelPrice: hotel.externalHotelPrice\r\n })),\r\n hasAccommodation: true,\r\n });\r\n }\r\n //if (hotelServices.length == 1) {\r\n // const hotel = hotelServices[0];\r\n // const accommodation = hotel.accommodation || undefined;\r\n // setState({\r\n // currentAccommodationVariant: {\r\n // accommodation,\r\n // hotelDescription: hotel.hotelDescription,\r\n // },\r\n // hasAccommodation: true\r\n // });\r\n //} else if (hotelServices.length == 0) {\r\n // setState({ currentAccommodationVariant: undefined, hasAccommodation: false });\r\n //} else if (hotelServices.length > 1) {\r\n // setState({ currentAccommodationVariant: undefined, hasAccommodation: true });\r\n // //throw new Error('Unexpected number of hotel services');\r\n //}\r\n const { viewConfig } = getState();\r\n setState({\r\n loaded: true,\r\n loading: false,\r\n tourDescription: init.description.tourDescription,\r\n price: init.description.priceItem,\r\n hash: (_a = init.description.priceItem) === null || _a === void 0 ? void 0 : _a.servicesHash,\r\n externalFlightId: ((_c = (_b = init.description.priceItem) === null || _b === void 0 ? void 0 : _b.aviacenterServices) === null || _c === void 0 ? void 0 : _c.length) ? init.description.priceItem.aviacenterServices[0].externalId : undefined,\r\n externalFlightProviderId: ((_e = (_d = init.description.priceItem) === null || _d === void 0 ? void 0 : _d.aviacenterServices) === null || _e === void 0 ? void 0 : _e.length) ? init.description.priceItem.aviacenterServices[0].externalProviderId : undefined,\r\n tourEvents: init.description.tourEvents,\r\n tourServices: init.description.tourServices,\r\n tourVariant: init.description.tourVariant || undefined,\r\n viewConfig: Object.assign(Object.assign({}, viewConfig), { hidePrices: init.hidePrices || false }),\r\n extras: (_f = init.description.extras) !== null && _f !== void 0 ? _f : {},\r\n search: init.description.search,\r\n });\r\n const { tourServices, tourVariant, tourDescription, currentAccommodationVariants } = getState();\r\n if (tourVariant && tourVariant.checkInDate && tourDescription)\r\n //setState({ loading: true });\r\n for (const excursion of tourServices.filter(s => s.type == \"excursion\").map(s => s)) {\r\n setState({\r\n tourServices: [...tourServices].map(service => {\r\n var _a, _b, _c, _d, _e, _f, _g;\r\n if (service.type == \"excursion\" && service.id == excursion.id) {\r\n const exc = service;\r\n if (exc) {\r\n exc.prices = excursion.prices;\r\n const vehicleTypeId = (_b = (_a = excursion.prices) === null || _a === void 0 ? void 0 : _a.find((x) => x)) === null || _b === void 0 ? void 0 : _b.vehicleTypeId;\r\n if ((_c = exc.prices) === null || _c === void 0 ? void 0 : _c.length) {\r\n if (!((_d = exc.prices) === null || _d === void 0 ? void 0 : _d.find((e) => exc.currentVehicleTypeId == e.vehicleTypeId)) || exc.currentVehicleTypeId == undefined) {\r\n exc.currentVehicleTypeId = (_f = (_e = exc.prices[0]) === null || _e === void 0 ? void 0 : _e.vehicleTypeId) !== null && _f !== void 0 ? _f : vehicleTypeId;\r\n exc.excursionPrice = exc.prices ? exc.prices[0] : undefined;\r\n }\r\n else\r\n exc.excursionPrice = (_g = exc.prices) === null || _g === void 0 ? void 0 : _g.find((x) => x.vehicleTypeId == exc.currentVehicleTypeId);\r\n }\r\n }\r\n }\r\n return service;\r\n })\r\n });\r\n }\r\n }\r\n },\r\n});\r\n/**\r\n * Контейнер выполняющий функцию регидратации хранилища с описанием тура.\r\n */\r\nconst Container = CreateTourDescriptionContainer(TourDescriptionStoreDefault);\r\nconst FrameContainer = CreateTourDescriptionContainer(TourDescriptionStoreFrame);\r\nexport { Container as TourDescriptionStoreContainer, FrameContainer as TourDescriptionStoreFrameContainer };\r\n","import React from 'react';\r\nimport Box from '@material-ui/core/Box';\r\nimport Link from '@material-ui/core/Link';\r\nimport makeStyles from '@material-ui/core/styles/makeStyles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SearchOutlinedIcon from '@material-ui/icons/SearchOutlined';\r\nimport { _T } from 'appI18n';\r\nimport { appUrl } from 'utils';\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n textAlign: \"center\",\r\n marginBottom: 60\r\n },\r\n img: {\r\n fontSize: 200,\r\n // FIXME: hardcoded color.\r\n color: \"#d7dee5\",\r\n }\r\n}), { name: \"NoSearchResults\" });\r\nexport default function NoSearchResults() {\r\n const classes = useStyles();\r\n return (React.createElement(\"div\", { className: classes.root },\r\n React.createElement(Box, { textAlign: \"center\" },\r\n React.createElement(SearchOutlinedIcon, { fontSize: \"inherit\", className: classes.img })),\r\n React.createElement(Typography, { variant: \"body1\", component: \"span\" },\r\n _T.TOUR_NO_RESULTS,\r\n React.createElement(\"br\", null),\r\n React.createElement(Link, { href: appUrl(\"/Tour\") }, _T.TOUR_NO_RESULTS_SUBTEXT))));\r\n}\r\n","import React from 'react';\r\nimport Tab from '@material-ui/core/Tab';\r\nfunction TabTitle({ title, subtitle }) {\r\n return (React.createElement(\"div\", null,\r\n React.createElement(\"div\", null, title),\r\n React.createElement(\"div\", null, subtitle)));\r\n}\r\nconst AccomodationTab = (props) => React.createElement(Tab, Object.assign({}, props, { label: React.createElement(TabTitle, { title: props.title, subtitle: props.subtitle }), value: props.value, disableRipple: true }));\r\nexport default AccomodationTab;\r\n","import React from 'react';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nconst useStyles = makeStyles({\r\n scrollButtons: {\r\n \"&.Mui-disabled\": { opacity: 0.3, }\r\n }\r\n});\r\nfunction AccomodationTabs(props) {\r\n const classes = useStyles();\r\n return (React.createElement(Tabs, { classes: classes, value: props.value, variant: \"scrollable\", scrollButtons: \"on\", onChange: props.onChange }, props.children));\r\n}\r\nexport default AccomodationTabs;\r\n","import React from 'react';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport makeStyles from '@material-ui/styles/makeStyles';\r\nimport { _T } from 'appI18n';\r\nconst useStyles = makeStyles({\r\n root: {},\r\n hotelscol: {},\r\n availcol: {},\r\n accmdcol: {},\r\n pricecol: {},\r\n mealcol: {},\r\n actionscol: {},\r\n}, { name: \"AccomodationVariantList\" });\r\nexport default function AccomodationVariantList(props) {\r\n var _a, _b, _c, _d, _e, _f;\r\n const classes = useStyles();\r\n return (React.createElement(Table, null,\r\n React.createElement(TableHead, null,\r\n React.createElement(TableRow, null,\r\n React.createElement(TableCell, { className: `${classes.hotelscol} ${(_a = props.classes) === null || _a === void 0 ? void 0 : _a.hotelscol}` }, _T.COMMON_HOTEL),\r\n React.createElement(TableCell, { className: `${classes.availcol} ${(_b = props.classes) === null || _b === void 0 ? void 0 : _b.availcol}` }, _T.COMMON_AVAILABILITY),\r\n React.createElement(TableCell, { className: `${classes.accmdcol} ${(_c = props.classes) === null || _c === void 0 ? void 0 : _c.accmdcol}` }, _T.COMMON_ACCOMMODATION),\r\n React.createElement(TableCell, { className: `${classes.mealcol} ${(_d = props.classes) === null || _d === void 0 ? void 0 : _d.mealcol}` }, _T.COMMON_MEAL),\r\n React.createElement(TableCell, { className: `${classes.pricecol} ${(_e = props.classes) === null || _e === void 0 ? void 0 : _e.pricecol}` }, _T.COMMON_PRICE),\r\n React.createElement(TableCell, { className: `${classes.actionscol} ${(_f = props.classes) === null || _f === void 0 ? void 0 : _f.actionscol}` }))),\r\n React.createElement(TableBody, null, props.children)));\r\n}\r\n","import React from 'react';\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n },\r\n text: { marginLeft: theme.spacing(1) },\r\n}), { name: \"IconText\" });\r\n/**\r\n * Иконка рядом с текстом.\r\n */\r\nconst IconText = React.forwardRef(function (props, ref) {\r\n const classes = useStyles();\r\n return (React.createElement(\"div\", Object.assign({}, props, { className: `${classes.root} ${props.className}`, ref: ref }),\r\n props.icon,\r\n typeof props.text == 'string' ? (React.createElement(\"span\", { className: classes.text }, props.text)) : props.text));\r\n});\r\nexport default IconText;\r\n","import { Button, TableCell, TableRow, Typography, useTheme } from '@material-ui/core';\r\nimport React, { useCallback, useMemo } from 'react';\r\nimport { pluralizeDays, _T } from '../../../../include/appI18n';\r\nimport IconText from '../../../../include/react-components/IconText';\r\nimport CheckCircleOutlinedIcon from '@material-ui/icons/CheckCircleOutlined';\r\nimport ContactSupportOutlinedIcon from '@material-ui/icons/ContactSupportOutlined';\r\nimport ShoppingCartOutlinedIcon from '@material-ui/icons/ShoppingCartOutlined';\r\nimport VisibilityOutlinedIcon from '@material-ui/icons/VisibilityOutlined';\r\nimport { formatMoney } from '../../../../include/utils';\r\nimport { Link } from 'react-router-dom';\r\nexport default function TourVariantPrice(props) {\r\n const theme = useTheme();\r\n const price = useMemo(() => props.priceItem.price, [props.priceItem.price]);\r\n const url = useMemo(() => props.genUrl(props.tourVariant.id, props.priceItem.accomodationVariants.map(v => v.id), props.hash), [props.genUrl, props.tourVariant.id, props.priceItem.accomodationVariants, props.hash]);\r\n const handleAddToCart = useCallback(() => props.book(props.tourVariant, props.priceItem.accomodationVariants, props.hash), [props.tourVariant, props.priceItem.accomodationVariants, props.book, props.hash]);\r\n const daysPlural = (variant) => pluralizeDays(variant.duration);\r\n return (React.createElement(React.Fragment, null, props.priceItem.accomodationVariants.map((v, i) => (React.createElement(TableRow, { key: i },\r\n React.createElement(TableCell, null,\r\n React.createElement(Typography, { variant: \"subtitle1\" }, v.hotelName),\r\n React.createElement(Typography, { variant: \"subtitle2\" },\r\n v.checkInDate.toDateString(),\r\n \", \",\r\n v.duration,\r\n \" \",\r\n daysPlural(v))),\r\n React.createElement(TableCell, null, v.orderAvailability === \"available\"\r\n ? (React.createElement(IconText, { icon: React.createElement(CheckCircleOutlinedIcon, { style: { color: theme.palette.success.main }, fontSize: \"small\" }), text: _T.TOUR_AVAILABLE }))\r\n : (React.createElement(IconText, { icon: React.createElement(ContactSupportOutlinedIcon, { style: { color: theme.palette.warning.main }, fontSize: \"small\" }), text: _T.TOUR_ONREQUEST }))),\r\n React.createElement(TableCell, null,\r\n v.roomCategoryName,\r\n \", \",\r\n v.roomTypeName),\r\n React.createElement(TableCell, null, v.mealTypeName),\r\n i == 0 ? React.createElement(React.Fragment, null,\r\n React.createElement(TableCell, { rowSpan: props.priceItem.accomodationVariants.length },\r\n formatMoney(price, { currency: props.tour.currency.name }),\r\n \" \",\r\n props.tour.currency.name),\r\n React.createElement(TableCell, { rowSpan: props.priceItem.accomodationVariants.length, align: \"right\" },\r\n React.createElement(Button, { color: \"primary\", startIcon: React.createElement(ShoppingCartOutlinedIcon, null), onClick: handleAddToCart }, _T.COMMON_BUY),\r\n React.createElement(Link, { to: url },\r\n React.createElement(Button, { color: \"secondary\", startIcon: React.createElement(VisibilityOutlinedIcon, null) }, _T.COMMON_VIEW)))) : null)))));\r\n}\r\n","import moment from 'moment';\r\nimport React, { useMemo, useState } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport Button from '@material-ui/core/Button';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport ShoppingCartOutlinedIcon from '@material-ui/icons/ShoppingCartOutlined';\r\nimport VisibilityOutlinedIcon from '@material-ui/icons/VisibilityOutlined';\r\nimport makeStyles from '@material-ui/styles/makeStyles';\r\nimport { pluralizeDays, _T } from 'appI18n';\r\nimport { formatMoney } from 'utils.ts';\r\nimport AccomodationTab from '../AccomodationTab';\r\nimport AccomodationTabs from '../AccomodationTabs';\r\nimport AccomodationVariantList from '../AccomodationVariantList';\r\nimport TourVariantPrice from '../TourVariantPrice';\r\nconst useAccomodationTableStyles = makeStyles({\r\n hotelscol: { width: \"20%\" },\r\n availcol: { width: \"15%\" },\r\n accmdcol: { width: \"20%\" },\r\n pricecol: { width: \"10%\" },\r\n mealcol: { width: \"10%\" },\r\n actionscol: { width: \"40%\" },\r\n});\r\nfunction formatUtcDDMM(isoDate) {\r\n const date = new Date(isoDate);\r\n const day = date.getUTCDate();\r\n const month = date.getUTCMonth() + 1;\r\n const dd = day.toString().padStart(2, \"0\");\r\n const mm = month.toString().padStart(2, \"0\");\r\n return (window.language == 'en') ? `${mm}/${dd}` : `${dd}.${mm}`;\r\n}\r\nfunction mapToSimpleTourVariants(variants) {\r\n return variants\r\n .sort(({ checkInDate: a, duration: ad }, { checkInDate: b, duration: bd }) => a < b ? -1 : a == b ? (ad < bd ? -1 : ad == bd ? 0 : 1) : 1)\r\n .map(variant => [\r\n variant,\r\n variant.priceVariants.sort((a, b) => a.price - b.price)[0]\r\n ]);\r\n}\r\nfunction AccommodationSelector(props) {\r\n const [currentVariantId, setCurrentVariantId] = useState(() => {\r\n const cheapest = props.item.findCheapestTourVariant();\r\n return cheapest ? cheapest[0].id : undefined;\r\n });\r\n const variants = useMemo(() => mapToSimpleTourVariants(props.item.variants), [props.item]);\r\n const currentVariant = useMemo(() => variants.find(([{ id }]) => id === currentVariantId), [currentVariantId]);\r\n const accmdClasses = useAccomodationTableStyles();\r\n const handleChange = (_event, variantId) => {\r\n setCurrentVariantId(variantId);\r\n };\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(AccomodationTabs, { value: currentVariantId, onChange: handleChange }, variants.map(([variant, { accomodationVariants, priceItem, price }]) => {\r\n const title = `${formatUtcDDMM(variant.checkInDate)}, ${variant.duration} ${pluralizeDays(variant.duration)}`;\r\n const minPrice = price;\r\n //const minPrice = accomodationVariants.length > 0\r\n // ? variant.calcTourPrice(accomodationVariants[0])\r\n // : NaN;\r\n return React.createElement(AccomodationTab, { title: title, subtitle: `${_T.COMMON_FROM} ${formatMoney(minPrice, { currency: props.item.currency.name })} ${props.item.currency.name}`, key: variant.id, value: variant.id });\r\n })),\r\n (() => {\r\n if (!currentVariant)\r\n return null;\r\n const [tourVariant, accmdVariants] = currentVariant;\r\n return (React.createElement(AccomodationVariantList, { classes: accmdClasses }, tourVariant.priceVariants.map((x, i) => (React.createElement(TourVariantPrice, { key: i, tour: props.item, tourVariant: tourVariant, priceItem: x, genUrl: props.genUrl, book: props.book, hash: x.priceItem.servicesHash })))));\r\n })()));\r\n}\r\nfunction DateSelector(props) {\r\n return (React.createElement(Table, null,\r\n React.createElement(TableBody, null, props.item.variants.map(x => React.createElement(TableRow, { key: x.id },\r\n React.createElement(TableCell, null,\r\n moment(x.checkInDate).format('L'),\r\n \", \",\r\n x.duration,\r\n \" \",\r\n pluralizeDays(x.duration)),\r\n React.createElement(TableCell, { align: \"right\" },\r\n React.createElement(Button, { color: \"primary\", startIcon: React.createElement(ShoppingCartOutlinedIcon, null), onClick: () => props.book(x, undefined, x.priceVariants[0].priceItem.servicesHash) }, _T.COMMON_BUY),\r\n React.createElement(Link, { to: props.genUrl(x.id, undefined, x.priceVariants[0].priceItem.servicesHash) },\r\n React.createElement(Button, { color: \"secondary\", startIcon: React.createElement(VisibilityOutlinedIcon, null) }, _T.COMMON_VIEW))))))));\r\n}\r\n/**\r\n * Табы с вариантами даты заезда и списком вариантов проживания для выбранной даты.\r\n */\r\nfunction TourVariantSelector(props) {\r\n return React.createElement(\"div\", null, props.item.variants[0].priceVariants[0].accomodationVariants.length\r\n ? React.createElement(AccommodationSelector, Object.assign({}, props))\r\n : React.createElement(DateSelector, Object.assign({}, props)));\r\n}\r\nexport default TourVariantSelector;\r\n","import { makeStyles } from \"@material-ui/core/styles\";\r\nexport const cardImageWidth = 300;\r\nexport const cardImageHeight = 190;\r\nexport const useStyles = makeStyles(theme => ({\r\n root: {\r\n marginBottom: theme.spacing(2),\r\n overflow: 'hidden',\r\n },\r\n card: {\r\n display: 'flex',\r\n },\r\n cardMain: {\r\n padding: theme.spacing(1),\r\n flex: '1 0',\r\n },\r\n cardActions: {\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n },\r\n cardCollapse: {\r\n padding: theme.spacing(1),\r\n },\r\n img: {\r\n margin: theme.spacing(1),\r\n backgroundColor: '#ccc',\r\n borderRadius: theme.shape.borderRadius,\r\n overflow: \"hidden\",\r\n height: cardImageHeight,\r\n width: cardImageWidth,\r\n '& a': {\r\n display: 'block',\r\n width: '100%',\r\n height: '100%',\r\n }\r\n }\r\n}));\r\n","import React from 'react';\r\nimport moment from 'moment';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport CalendarTodayOutlinedIcon from '@material-ui/icons/CalendarTodayOutlined';\r\nimport CheckCircleOutlinedIcon from '@material-ui/icons/CheckCircleOutlined';\r\nimport ContactSupportOutlinedIcon from '@material-ui/icons/ContactSupportOutlined';\r\nimport HotelOutlinedIcon from '@material-ui/icons/HotelOutlined';\r\nimport RestaurantRoundedIcon from '@material-ui/icons/RestaurantRounded';\r\nimport { _T, _F, pluralizeDays } from 'appI18n';\r\nimport IconText from 'react-components/IconText';\r\nconst useStyles = makeStyles(theme => ({\r\n root: {},\r\n feature: {\r\n borderBottom: `1px dashed ${theme.palette.secondary.light}`,\r\n paddingBottom: 2,\r\n cursor: \"pointer\",\r\n marginBottom: theme.spacing(1),\r\n },\r\n featureWarn: {\r\n \"$feature&\": { borderColor: theme.palette.warning.main }\r\n },\r\n featureGood: {\r\n \"$feature&\": { borderColor: theme.palette.success.main }\r\n },\r\n icon: {\r\n color: theme.palette.secondary.main,\r\n \"$featureWarn &\": { color: theme.palette.warning.main },\r\n \"$featureGood &\": { color: theme.palette.success.main },\r\n },\r\n group: { width: 'auto' }\r\n}));\r\nexport default function TourSummary(props) {\r\n const classes = useStyles();\r\n const dateStart = moment.utc(props.tourStart);\r\n const dateEnd = dateStart.clone().add(Math.max(0, props.tourDuration - 1), \"days\");\r\n const tourDurationText = `${props.tourDuration} ${pluralizeDays(props.tourDuration)}`;\r\n return (React.createElement(Grid, { container: true, spacing: 5, wrap: \"wrap\" },\r\n React.createElement(Grid, { item: true, container: true, className: classes.group },\r\n React.createElement(Grid, { item: true, xs: 12 },\r\n React.createElement(\"div\", null,\r\n React.createElement(Tooltip, { title: _F('TOUR_DURATION_FROM_TO', dateStart.format('L'), dateEnd.format('L')), arrow: true },\r\n React.createElement(IconText, { className: classes.feature, text: _F('TOUR_DATE_AND_DURATION_SHORT', dateStart.format('L'), tourDurationText), icon: React.createElement(CalendarTodayOutlinedIcon, { className: classes.icon }) }))),\r\n props.accmmd &&\r\n React.createElement(\"div\", null,\r\n React.createElement(Tooltip, { title: props.accmmd.immediateConfirm ? _T.TOUR_AVAILABILITY_AVAILABLE_LONG : _T.TOUR_AVAILABILITY_ONREQUEST_LONG, arrow: true }, props.accmmd.immediateConfirm\r\n ? (React.createElement(IconText, { icon: React.createElement(CheckCircleOutlinedIcon, { className: classes.icon }), text: _T.TOUR_AVAILABLE, className: `${classes.feature} ${classes.featureGood}` }))\r\n : (React.createElement(IconText, { icon: React.createElement(ContactSupportOutlinedIcon, { className: classes.icon }), text: _T.TOUR_ONREQUEST, className: `${classes.feature} ${classes.featureWarn}` })))))),\r\n React.createElement(Grid, { item: true, container: true, className: classes.group },\r\n React.createElement(Grid, { item: true, xs: 12 },\r\n props.accmmd &&\r\n React.createElement(\"div\", null,\r\n React.createElement(Tooltip, { title: _T.COMMON_ACCOMMODATION, arrow: true },\r\n React.createElement(IconText, { className: classes.feature, text: `${props.accmmd.roomTypeName}, ${props.accmmd.roomCategoryName}`, icon: React.createElement(HotelOutlinedIcon, { className: classes.icon }) }))),\r\n props.accmmd &&\r\n React.createElement(\"div\", null,\r\n React.createElement(Tooltip, { title: _T.COMMON_MEAL, arrow: true },\r\n React.createElement(IconText, { className: classes.feature, text: `${props.accmmd.mealTypeName}`, icon: React.createElement(RestaurantRoundedIcon, { className: classes.icon }) })))))));\r\n}\r\n","import Box from '@material-ui/core/Box';\r\nimport Button from '@material-ui/core/Button';\r\nimport Collapse from '@material-ui/core/Collapse';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Link from '@material-ui/core/Link';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ExpandLess from '@material-ui/icons/ExpandLess';\r\nimport ExpandMore from '@material-ui/icons/ExpandMore';\r\nimport ShoppingCartOutlinedIcon from '@material-ui/icons/ShoppingCartOutlined';\r\nimport VisibilityOutlinedIcon from '@material-ui/icons/VisibilityOutlined';\r\nimport { _T } from 'appI18n';\r\nimport moment from 'moment';\r\nimport React, { useMemo, useState } from 'react';\r\nimport Carousel from 'react-components/Carousel';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport { formatMoney } from 'utils.ts';\r\nimport TourVariantSelector from '../TourVariantSelector';\r\nimport { cardImageHeight, cardImageWidth, useStyles } from './styles';\r\nimport TourSummary from './TourSummary';\r\nfunction TourTitle({ title, type, url }) {\r\n return (React.createElement(React.Fragment, null,\r\n type && React.createElement(Typography, { variant: \"overline\" }, type),\r\n React.createElement(Typography, { variant: \"h5\", gutterBottom: true },\r\n React.createElement(Link, { component: RouterLink, to: url }, title))));\r\n}\r\nfunction TourLocation(props) {\r\n return (React.createElement(React.Fragment, null,\r\n props.direction && React.createElement(Typography, { variant: \"subtitle1\" }, props.direction),\r\n props.accmmd &&\r\n React.createElement(Typography, { variant: \"subtitle1\", gutterBottom: true },\r\n props.accmmd.countryName,\r\n \", \",\r\n props.accmmd.cityName,\r\n \", \",\r\n props.accmmd.hotelName)));\r\n}\r\nfunction TourDescription({ description }) {\r\n return (React.createElement(\"p\", null, description));\r\n}\r\nfunction TourActions({ tourUrl, tourVariant, priceItem, book }) {\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(Typography, { variant: \"overline\", gutterBottom: true }, _T.COMMON_PRICE_FROM),\r\n React.createElement(Typography, { variant: \"h4\", color: \"primary\", gutterBottom: true },\r\n formatMoney(priceItem.price, { currency: tourVariant.currency.name }),\r\n \" \",\r\n tourVariant.currency.name),\r\n React.createElement(Box, { mb: 1 },\r\n React.createElement(Button, { variant: \"contained\", color: \"primary\", startIcon: React.createElement(ShoppingCartOutlinedIcon, null), onClick: book, fullWidth: true }, _T.COMMON_BUY)),\r\n React.createElement(RouterLink, { to: tourUrl },\r\n React.createElement(Button, { variant: \"contained\", color: \"secondary\", startIcon: React.createElement(VisibilityOutlinedIcon, null), fullWidth: true }, _T.COMMON_VIEW))));\r\n}\r\n/**\r\n * Карточка с туром.\r\n */\r\nfunction TourSearchResultCard(props) {\r\n var _a, _b, _c, _d, _e, _f;\r\n const [isOpen, setIsOpen] = useState(false);\r\n const classes = useStyles();\r\n //const [cheapestVariant, _, cheapestAccmd] = useMemo(() => {\r\n // const result = props.item.findCheapestTourVariant();\r\n // if (!result)\r\n // return result;\r\n // // FIXME: сложные туры пока не обрабатываем, поэтому берем данные только для первого\r\n // // периода проживания.\r\n // try {\r\n // return [\r\n // result[0],\r\n // result[1] ? result[1][0][0] : undefined,\r\n // result[1] ? result[1][0][1] : undefined\r\n // ] as const;\r\n // } catch (e) {\r\n // console.error(e);\r\n // debugger;\r\n // }\r\n //}, [props.item])!;\r\n const [cheapestVariant, cheapestPriceItem] = useMemo(() => {\r\n const result = props.item.findCheapestTourVariant();\r\n if (!result)\r\n return result;\r\n // FIXME: сложные туры пока не обрабатываем, поэтому берем данные только для первого\r\n // периода проживания.\r\n try {\r\n if (!result[1])\r\n throw new Error('price not found');\r\n return result;\r\n //return [\r\n // result[0],\r\n // result[1].priceItem,\r\n // result[1].accomodationVariants\r\n //] as const;\r\n }\r\n catch (e) {\r\n console.error(e);\r\n debugger;\r\n }\r\n }, [props.item]);\r\n const cheapestAccmdIds = useMemo(() => { var _a; return (_a = cheapestPriceItem.accomodationVariants) === null || _a === void 0 ? void 0 : _a.map((x) => x.id); }, [cheapestPriceItem]);\r\n const tourUrl = useMemo(\r\n // TODO\r\n () => props.genUrl(cheapestVariant.id, cheapestAccmdIds, cheapestPriceItem.priceItem.servicesHash), \r\n //() => props.genUrl(cheapestVariant.id, cheapestVariant.accomodationPeriods.length > 1 ? cheapestVariant.accomodationPeriods.map(a => a.accomodationVariants[0].id) : cheapestAccmd?.id),\r\n [props.genUrl, cheapestVariant.id, cheapestAccmdIds, cheapestPriceItem.priceItem.servicesHash]);\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(Paper, { className: classes.root, classes: undefined, elevation: 2 },\r\n React.createElement(\"div\", { className: classes.card },\r\n React.createElement(\"div\", { className: classes.img }, ((_a = props.item.images) === null || _a === void 0 ? void 0 : _a.length) > 1\r\n ? (React.createElement(Carousel, { autoPlay: false, animation: \"slide\", fullHeightHover: true, navButtonsAlwaysVisible: true }, (_c = (_b = props.item) === null || _b === void 0 ? void 0 : _b.images) === null || _c === void 0 ? void 0 : _c.map((x, i) => (React.createElement(RouterLink, { to: tourUrl, key: i },\r\n React.createElement(\"img\", { src: x.urls.thumbnail, loading: \"lazy\", width: cardImageWidth, height: cardImageHeight, alt: x.description, title: x.description, key: i })))))) : (React.createElement(RouterLink, { to: tourUrl }, ((_d = props.item.images) === null || _d === void 0 ? void 0 : _d.length) == 1 ? (React.createElement(\"img\", { src: props.item.images[0].urls.thumbnail, width: cardImageWidth, height: cardImageHeight, alt: props.item.images[0].description })) : React.createElement(Box, { width: \"100%\", height: \"100%\" })))),\r\n React.createElement(Grid, { container: true, className: classes.cardMain, spacing: 3 },\r\n React.createElement(Grid, { item: true, md: 9 },\r\n React.createElement(TourTitle, { title: props.item.name, type: props.item.typeName, url: tourUrl }), (_f = (_e = cheapestPriceItem.accomodationVariants) === null || _e === void 0 ? void 0 : _e.sort((p1, p2) => p1.checkInDate > p2.checkInDate ? 1 : p1.checkInDate < p2.checkInDate ? -1 : 0)) === null || _f === void 0 ? void 0 :\r\n _f.map((cheapestAccmd, i) => (React.createElement(React.Fragment, null,\r\n React.createElement(TourLocation, { direction: props.item.directionName, accmmd: cheapestAccmd }),\r\n React.createElement(TourDescription, { description: props.item.description }),\r\n React.createElement(Box, { mb: 2, mt: 2 },\r\n React.createElement(Divider, null)),\r\n React.createElement(TourSummary, { tourDuration: cheapestAccmd.duration, tourStart: moment(cheapestAccmd.checkInDate).format('YYYY-MM-DD'), accmmd: cheapestAccmd }),\r\n i < (cheapestPriceItem.accomodationVariants.length - 1) ?\r\n React.createElement(Box, { mb: 2, mt: 2 },\r\n React.createElement(Divider, { variant: \"inset\" })) : null)))),\r\n React.createElement(Grid, { item: true, md: 3, className: classes.cardActions },\r\n React.createElement(Box, { flex: \"1\" },\r\n React.createElement(TourActions, { tourUrl: tourUrl, tourVariant: cheapestVariant, priceItem: cheapestPriceItem, book: () => props.book(cheapestVariant, cheapestPriceItem.accomodationVariants, cheapestPriceItem.priceItem.servicesHash) })),\r\n React.createElement(Button, { size: \"small\", fullWidth: true, endIcon: !isOpen ? React.createElement(ExpandMore, { fontSize: \"small\" }) : React.createElement(ExpandLess, { fontSize: \"small\" }), onClick: () => setIsOpen((prev) => !prev) }, _T.TOUR_SHOW_MORE_DATES)))),\r\n React.createElement(Collapse, { in: isOpen, mountOnEnter: true, unmountOnExit: true },\r\n React.createElement(Box, { className: classes.cardCollapse },\r\n React.createElement(Typography, { variant: \"h6\", gutterBottom: true }, _T.TOUR_AVAILABLE_DATES),\r\n React.createElement(TourVariantSelector, { item: props.item, book: props.book, genUrl: props.genUrl }))))));\r\n}\r\nexport { TourSearchResultCard };\r\n","import React from 'react';\r\nimport Skeleton from '@material-ui/lab/Skeleton';\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport Box from '@material-ui/core/Box';\r\nimport { cardImageWidth, cardImageHeight, useStyles } from \"./styles\";\r\nexport function TourSearchResultCardSkeleton() {\r\n const classes = useStyles();\r\n return (React.createElement(Paper, { className: classes.root, classes: undefined, elevation: 2 },\r\n React.createElement(\"div\", { className: classes.card },\r\n React.createElement(\"div\", { className: classes.img },\r\n React.createElement(Skeleton, { variant: \"rect\", width: cardImageWidth, height: cardImageHeight })),\r\n React.createElement(Grid, { container: true, className: classes.cardMain, spacing: 3 },\r\n React.createElement(Grid, { item: true, xs: 12, md: 9 },\r\n React.createElement(Box, { mb: 2 },\r\n React.createElement(Skeleton, { animation: \"wave\", width: 200 }),\r\n React.createElement(Skeleton, { animation: \"wave\", width: 400, height: 30 })),\r\n React.createElement(Skeleton, { animation: \"wave\" }),\r\n React.createElement(Skeleton, { animation: \"wave\" })),\r\n React.createElement(Grid, { item: true, xs: 12, md: 3 },\r\n React.createElement(Skeleton, { animation: \"wave\", width: 150, height: 50 }))))));\r\n}\r\n","import React, { useCallback, useContext, useLayoutEffect, useState } from 'react';\r\nimport { Link, useLocation } from 'react-router-dom';\r\nimport Box from '@material-ui/core/Box';\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport AlertTitle from '@material-ui/lab/AlertTitle';\r\nimport Pagination from '@material-ui/lab/Pagination';\r\nimport PaginationItem from '@material-ui/lab/PaginationItem';\r\nimport { _T } from 'appI18n';\r\nimport { BackdropContext } from 'react-components/BackdropProvider';\r\nimport { GlobalSpinnerContext } from 'react-components/GlobalSpinnerProvider';\r\nimport { appUrl } from 'utils';\r\nimport { useTourSearchStore } from '../../store/TourSearchStore';\r\nimport NoSearchResults from '../NoSearchResults';\r\nimport { TourSearchResultCard, TourSearchResultCardSkeleton } from '../TourSearchResultCard';\r\nimport TourSearchResultsHeader from './TourSearchResultsHeader';\r\nimport { ReplaceCartTourDialog } from '../../../NewTourSearch/compoments/TourSearch';\r\nfunction TourSearchResultItem({ item, actions }) {\r\n const { pathname, search: searchStr, state: historyState } = useLocation();\r\n const backdrop = useContext(BackdropContext);\r\n //const handlePurchase = useCallback((tourVariant: TourVariantWithAccommodations, accmdVariant: TourAccomodationVariant[] | undefined, hash: string, replaceExistingTour: boolean, onError: (errors: string[]) => void) => {\r\n const handlePurchase = useCallback((tourVariant, accmdVariant, hash) => {\r\n backdrop.show();\r\n //actions.book(tourVariant.id, accmdVariant ? accmdVariant.map((x) => x.id) : [], hash, replaceExistingTour, {\r\n actions.book(tourVariant.id, accmdVariant ? accmdVariant.map((x) => x.id) : [], hash, false, {\r\n onError: (errors) => {\r\n if (errors.length && errors[0] == \"CART_ALREADY_CONTAINS_OTHER_TOUR\")\r\n setReplaceCartTourDialogPrice({ tourVariant, accmdVariant, hash });\r\n //onError(errors);\r\n backdrop.hide();\r\n }\r\n });\r\n }, [actions, backdrop, item]);\r\n const genUrl = useCallback((variantId, accmmdId, hash) => {\r\n return actions.genTourDetailsUrl(variantId, accmmdId, item.name, hash, encodeURIComponent(pathname + searchStr));\r\n }, [actions.genTourDetailsUrl, item.name, pathname, searchStr]);\r\n const [replaceCartTourDialogPrice, setReplaceCartTourDialogPrice] = useState();\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(TourSearchResultCard, { key: item.id, item: item, book: handlePurchase, genUrl: genUrl }),\r\n replaceCartTourDialogPrice\r\n ? React.createElement(ReplaceCartTourDialog, { price: replaceCartTourDialogPrice, open: !!replaceCartTourDialogPrice, onClose: () => setReplaceCartTourDialogPrice(undefined), onCancel: () => setReplaceCartTourDialogPrice(undefined), onApprove: p => {\r\n actions.book(p.tourVariant.id, p.accmdVariant ? p.accmdVariant.map((x) => x.id) : [], p.hash, true, {\r\n onError: (errors) => {\r\n //onError(errors);\r\n backdrop.hide();\r\n },\r\n onSuccess: () => setTimeout(() => setReplaceCartTourDialogPrice(undefined), 200),\r\n });\r\n } }) : null));\r\n}\r\nfunction TourSearchResultList(props) {\r\n return React.createElement(React.Fragment, null, props.items && props.items.length > 0\r\n ? props.items.map(item => React.createElement(TourSearchResultItem, { key: item.id, item: item, actions: props.actions }))\r\n : React.createElement(NoSearchResults, null));\r\n}\r\n/**\r\n * Список поисковых результатов.\r\n */\r\nfunction TourSearchResults() {\r\n const [{ loading, searchQuery, searchResult, page, pageCount, errors }, actions] = useTourSearchStore();\r\n const scrollAnchorRef = React.createRef();\r\n const spinner = useContext(GlobalSpinnerContext);\r\n // DISPLAY BOOKING ERRORS BRUH\r\n //const [isBookingErrorVisible, setBookingErrorVisible] = useState(false);\r\n const renderPaginationItem = (item) => {\r\n const url = appUrl('/Tour/SearchResult', Object.assign(Object.assign({}, searchQuery), { page: item.page - 1 }));\r\n return React.createElement(PaginationItem, Object.assign({ component: Link, to: url }, item));\r\n };\r\n const havePagination = pageCount > 1;\r\n const pagination = (onChange) => !havePagination ? React.createElement(\"div\", null) : (React.createElement(Pagination, { renderItem: renderPaginationItem, count: pageCount, page: page + 1, color: \"secondary\", disabled: loading, onChange: onChange }));\r\n // Отображение спиннера при первой загрузке если результаты поиска еще не доступны.\r\n useLayoutEffect(() => {\r\n if (!searchResult)\r\n spinner.show();\r\n else\r\n spinner.hide();\r\n }, [!searchResult]);\r\n if (!searchResult)\r\n return React.createElement(\"div\", null);\r\n return (React.createElement(\"div\", { ref: scrollAnchorRef },\r\n searchResult && searchQuery\r\n ? React.createElement(TourSearchResultsHeader, { searchQuery: searchQuery, searchResult: searchResult })\r\n : null,\r\n (errors === null || errors === void 0 ? void 0 : errors.length) ?\r\n (React.createElement(Box, { mb: 2 },\r\n React.createElement(Alert, { severity: \"error\" },\r\n React.createElement(AlertTitle, null, _T.COMMON_ERROR),\r\n errors.length > 1 ? React.createElement(\"ul\", null, errors.map(x => React.createElement(\"li\", null, x))) : errors[0]))) : null,\r\n (searchResult === null || searchResult === void 0 ? void 0 : searchResult.tours.length) && React.createElement(Box, { mb: 2, display: \"flex\", justifyContent: \"flex-start\" }, pagination()) || null,\r\n !loading && searchResult\r\n ? React.createElement(TourSearchResultList, { items: searchResult.tours, actions: actions })\r\n : loading ? Array(10).fill(0).map((_, i) => React.createElement(TourSearchResultCardSkeleton, { key: i }))\r\n : null,\r\n havePagination &&\r\n React.createElement(Box, { my: 2, display: \"flex\", justifyContent: \"flex-end\" }, pagination(withScrollTop(scrollAnchorRef))) || null));\r\n}\r\nconst withScrollTop = (ref) => (next) => (e, page) => {\r\n var _a;\r\n next && next(e, page);\r\n // Скролл в начало страницы.\r\n try {\r\n const rect = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();\r\n // XXX: \"на глазок\" определил нужный оффсет скролла (чтоб заголовки было видно).\r\n window.scrollTo({ top: rect.y + window.scrollY - 200, behavior: \"smooth\" });\r\n }\r\n catch (_b) {\r\n console.warn(\"Couldn't smooth-scroll to top. Using fallback.\");\r\n window.scrollTo(0, 0);\r\n }\r\n};\r\nexport default TourSearchResults;\r\n","import React, { useEffect } from 'react';\r\nimport { useTourSearchStore } from '../../store/TourSearchStore';\r\nimport TourSearchResults from './TourSearchResults';\r\nimport { useLocation } from 'react-router-dom';\r\nexport default function TourSearchResultsContainer() {\r\n const [_, actions] = useTourSearchStore();\r\n const { search } = useLocation();\r\n useEffect(() => {\r\n actions.searchURLParams(search);\r\n }, [search]);\r\n return React.createElement(TourSearchResults, null);\r\n}\r\n","import React from 'react';\r\nimport { BrowserRouter as Router, Switch, Route } from \"react-router-dom\";\r\nimport { defaults } from 'react-sweet-state';\r\nimport ThemeProvider from \"@material-ui/styles/ThemeProvider\";\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport MomentUtils from '@date-io/moment';\r\nimport ErrorBoundary from \"react-components/ErrorBoundary\";\r\nimport { BackdropProvider } from \"react-components/BackdropProvider\";\r\nimport { GlobalSpinnerProvider } from \"react-components/GlobalSpinnerProvider\";\r\nimport Theme from 'react-common/theme';\r\nimport { appUrl } from 'utils';\r\nimport { TourSearchStoreContainer } from '../../store/TourSearchStoreContainer';\r\nimport { TourDescriptionStoreContainer } from '../../store/TourDescriptionStoreContainer';\r\nimport { TourDescriptionContainer } from '../TourDescription';\r\nimport TourSearchResultsContainer from '../TourSearchResults/TourSearchResultsContainer';\r\nimport { SnackbarProvider } from 'notistack';\r\ndefaults.devtools = true;\r\n/**\r\n * Корневой элемент поиска туров.\r\n * @param initialState Поисковые результаты\r\n */\r\nfunction TourSearchRoot(initialState) {\r\n const searchState = initialState.type == 'search-state' ? initialState : undefined;\r\n const descState = initialState.type == 'description-state' ? initialState : initialState.flightConfiguration ? { flightConfiguration: initialState.flightConfiguration } : undefined;\r\n return (React.createElement(BackdropProvider, null,\r\n React.createElement(GlobalSpinnerProvider, null,\r\n React.createElement(ErrorBoundary, null,\r\n React.createElement(ThemeProvider, { theme: Theme },\r\n React.createElement(SnackbarProvider, { maxSnack: 3, anchorOrigin: { vertical: 'top', horizontal: 'right' }, domRoot: document.body, classes: { containerRoot: 'snackbar-root' } },\r\n React.createElement(MuiPickersUtilsProvider, { utils: MomentUtils },\r\n React.createElement(Router, null,\r\n React.createElement(Switch, null,\r\n React.createElement(Route, { path: appUrl(\"/Tour/SearchResult\") },\r\n React.createElement(TourSearchStoreContainer, { initialState: searchState, isGlobal: true },\r\n React.createElement(TourSearchResultsContainer, null))),\r\n React.createElement(Route, { path: appUrl(\"/Tour/:id/view/:hash/:slug?\") },\r\n React.createElement(TourDescriptionStoreContainer, { initialState: descState },\r\n React.createElement(TourDescriptionContainer, { isFrame: false, hash: undefined }))),\r\n React.createElement(Route, { path: appUrl(\"/Tour/:id/:slug?\") },\r\n React.createElement(TourDescriptionStoreContainer, { initialState: descState },\r\n React.createElement(TourDescriptionContainer, { isFrame: false, hash: undefined }))))))))))));\r\n}\r\nexport default TourSearchRoot;\r\n","import 'jquery.js';\nimport { setupLayout } from 'common.js';\nimport 'jquery-components/bootstrap-dropdown';\nimport { render } from 'react-dom';\nimport TourSearchRoot from './components/TourSearchRoot';\n\nexport function setupTourSearch(initialState) {\n const root = TourSearchRoot(initialState);\n render(root, document.getElementById('tour-search-results'));\n}\n\nexport function setupTourDescription(initialState) {\n const root = TourSearchRoot(initialState);\n render(root, document.getElementById('tour-description'));\n}\n\nexport { setupLayout }","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { api } from 'network/network.ts';\r\n/**\r\n * Возвращает приблизительные даты доступности экскурсии на указанный месяц.\r\n */\r\nexport function fetchExcursionAvailabilityApprox(id, monthIso) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const q = { month: monthIso };\r\n const result = yield api('get', '/Excursion/' + id + '/Availability', q);\r\n return !result.errors ? result.response : { errors: result.errors };\r\n });\r\n}\r\n/**\r\n * Подбирает стоимость экскурсии.\r\n */\r\nexport function fetchExcursionPrice(id, dateIso, adultCount, childAges, tourId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const q = { date: dateIso, adultCount, childAges, tourId };\r\n const result = yield api('get', '/Excursion/' + id + '/Price', q);\r\n return !result.errors ? result.response : { errors: result.errors };\r\n });\r\n}\r\n/**\r\n * Добавляет экскурсию в корзину.\r\n */\r\nexport function addExcursionToCart(id, dateIso, adultCount, childAges, serializedPrice) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const body = { date: dateIso, adultCount, childAges, excursionSerialized: serializedPrice };\r\n const result = yield api('post', '/Excursion/' + id + '/AddToCart', body);\r\n return !result.errors ? [] : result.errors;\r\n });\r\n}\r\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { api } from 'network/network.ts';\r\nfunction fromTourItemDto(rawItem) {\r\n return Object.assign(Object.assign({}, rawItem), { findCheapestTourVariant, variants: rawItem.variants.map(variant => (Object.assign(Object.assign({}, variant), { currency: rawItem.currency, \r\n //calcTourPrice,\r\n priceVariants: variant.prices.map(price => (Object.assign(Object.assign({}, price), { accomodationVariants: price.accomodations.map(accmdVariant => (Object.assign(Object.assign({}, accmdVariant), { orderAvailability: accmdVariant.immediateConfirm ? \"available\" : \"onRequest\", checkInDate: new Date(accmdVariant.checkInDate), \r\n //duration: accmdVariant.duration,\r\n currency: rawItem.currency }))) }))) }))) });\r\n}\r\n/**\r\n * Парсит json объект полученный в ответе из SearchTours и возвращает модели.\r\n */\r\nexport function parseSearchResult(response) {\r\n const resp = response;\r\n const tours = Array.from(resp.tours.map(x => fromTourItemDto(x)));\r\n return Object.assign(Object.assign({}, resp), { tours });\r\n}\r\n/**\r\n * Выполняет поиск туров и возвращает обработанную модель данных (пропущенную через\r\n * {@link parseSearchResult}).\r\n */\r\nexport function searchTours(query) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const { response, errors } = yield api('get', '/Tour/SearchResult', query);\r\n return !errors ? parseSearchResult(response) : { errors };\r\n });\r\n}\r\n/**\r\n * Получает детальную информацию о туре.\r\n * @param tourVariantId Идентификатор варианта тура\r\n * @param accmmdVariantId Идентификатор варианта размещения\r\n */\r\nexport function fetchTourDetails(params) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let q = 'tourVariantId' in params\r\n ? { variant: params.tourVariantId, accmmd: params.accmmdVariantId }\r\n : 'tourId' in params\r\n ? { tourId: params.tourId, hotelId: params.hotelId }\r\n : {};\r\n if (params.excursions)\r\n q['exc'] = params.excursions;\r\n if (params.externalFlight) {\r\n q['fId'] = params.externalFlight.flightId;\r\n q['fpId'] = params.externalFlight.providerId;\r\n }\r\n const { response, errors } = yield api('get', 'hash' in params ? `/Tour/HotelTourDescription/${params.hash}` : '/Tour/HotelTourDescription', q);\r\n return !errors ? response : { errors };\r\n });\r\n}\r\n/**\r\n * Получает детальную информацию о туре в корзине.\r\n * @param tourVariantId Идентификатор варианта тура\r\n * @param accmmdVariantId Идентификатор варианта размещения\r\n */\r\nexport function fetchTourDetailsFromCart() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const { response, errors } = yield api('get', `/Cart/TourDescription/`, {});\r\n return !errors ? response : { errors };\r\n });\r\n}\r\nexport function fetchExternalFlight(hash, externalFlight) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const { response, errors } = yield api('get', `/Tour/flight/${hash}`, { aviacenterProviderId: externalFlight.providerId, aviacenterFlightId: externalFlight.flightId });\r\n return !errors ? response : { errors };\r\n });\r\n}\r\nexport function fetchAdditionalFlights(hash, externalFlight) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const { response, errors } = yield api('post', `/Tour/flights/additional/${hash}`, { aviacenterProviderId: externalFlight.providerId, aviacenterFlightId: externalFlight.flightId });\r\n return !errors ? response : { errors };\r\n });\r\n}\r\n/**\r\n * Возвращает описание варианта тура.\r\n */\r\nexport function fetchTourVariant(tourId, date, duration, adultCount, childAges, currentHash) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const q = { tourId, date, duration, adultCount, childAges, currentHash };\r\n const { response, errors } = yield api('get', '/Tour/Variant', q);\r\n return !errors ? response : { errors };\r\n });\r\n}\r\n///**\r\n// * Получает даты доступности тура.\r\n// * @param tourVariantId Идентификатор варианта тура\r\n// * @param month Месяц для которого запрашивать доступность. Может содержать любую дату/время месяца.\r\n// * @param hotelId Идентификатор отеля для которого запрашивать доступность\r\n// */\r\n//export async function fetchTourAvailability(\r\n// tourId: number,\r\n// adultCount: number,\r\n// childAges: number[],\r\n// monthIso: string,\r\n// hotelId?: number): Promise\r\n//{\r\n// const q = { adultCount, childAges, month: monthIso, hotelId: hotelId };\r\n// const result = await api('get', '/Tour/' + tourId + '/Availability', q);\r\n// return !result.errors ? result.response : { errors: result.errors };\r\n//}\r\n/**\r\n * Получает приблизительные даты доступности тура. В результирующем списке могут присутствовать ложные даты.\r\n * @param tourId Идентификатор тура.\r\n * @param month Месяц для которого запрашивать доступность. Может содержать любую дату/время месяца.\r\n */\r\nexport function fetchTourAvailabilityApprox(tourId, monthIso) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const q = { month: monthIso, tourId };\r\n const result = yield api('get', '/Tour/' + tourId + '/Availability', q);\r\n return !result.errors ? result.response : { errors: result.errors };\r\n });\r\n}\r\n/**\r\n * Получает доступные варианты размещения для для тура на указанную дату.\r\n */\r\nexport function fetchAccommodations(tourId, adultCount, childAges, dateIso, immediateConfirm, hotelIndex, hash) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const q = { date: dateIso, tourId, adultCount, childAges, hotelIndex, immediateConfirm, hash };\r\n const result = yield api('get', '/Tour/Accommodations', q);\r\n return !result.errors ? result.response : { errors: result.errors };\r\n });\r\n}\r\n///**\r\n// * Получает рекомендованые отели для тура.\r\n// */\r\n//export async function fetchHotelRecommendations(tourVariantId: string): Promise {\r\n// const q = { variant: tourVariantId };\r\n// const result = await api('get', '/Tour/HotelRecommendations', q);\r\n// return !result.errors ? result.response : { errors: result.errors };\r\n//}\r\n/**\r\n * Получает рекомендованые отели для тура.\r\n */\r\nexport function fetchHotelRecommendationsNew(tourVariantId, hash) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const q = { variant: tourVariantId, hash };\r\n const result = yield api('get', '/Tour/HotelRecommendationsNew', q);\r\n return !result.errors ? result.response : { errors: result.errors };\r\n });\r\n}\r\n/**\r\n * Добавляет тур в корзину.\r\n * @returns Список ошибок или null, если операция прошла успешно.\r\n */\r\nexport function addTourToCart({ tourVariantId, accmdVariantIds, excursions, hash, externalFlight, extras, replaceExistingTour }) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const { response: _, errors } = yield api('post', '/Tour/AddToCart', {\r\n tourVariantId,\r\n accomodationIds: accmdVariantIds,\r\n excursions,\r\n hash,\r\n flightId: externalFlight === null || externalFlight === void 0 ? void 0 : externalFlight.flightId,\r\n flightProviderId: externalFlight === null || externalFlight === void 0 ? void 0 : externalFlight.providerId,\r\n extras,\r\n replaceExistingTour\r\n });\r\n return errors;\r\n });\r\n}\r\nexport function checkTourPrice(hash) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const { response, errors } = yield api('post', '/Tour/CheckPrice', { hash });\r\n return !(response === null || response === void 0 ? void 0 : response.expired);\r\n });\r\n}\r\nfunction findCheapestTourVariant() {\r\n let cheapestVariant = null;\r\n let cheapestPriceItem = null;\r\n let minPrice = 0;\r\n // FIXME: в данный момент не учитываем существование сложных туров,\r\n // поэтому (корректная) реализация этого кейса закомментирована, для того\r\n // чтобы соотнести логику расчета цен на тур с текущей реализацией на бэке\r\n // где этот кейс не поддерживается.\r\n //\r\n // for (const tourVariant of this.variants) {\r\n // const cheapestPerPeriod = tourVariant.accomodationPeriods\r\n // .map(x => [x, x.findCheapestAccomodationVariant()] as const);\r\n // const price = cheapestPerPeriod\r\n // .reduce((acc, [_, variant]) => acc + (variant?.price ?? 0), 0);\r\n // if (cheapestVariant == null || minPrice > price) {\r\n // cheapestVariant = tourVariant;\r\n // cheapestPeriods = cheapestPerPeriod;\r\n // minPrice = price;\r\n // }\r\n // }\r\n for (const tourVariant of this.variants) {\r\n const best = tourVariant.priceVariants.sort((a, b) => a.price - b.price)[0];\r\n const price = best.price;\r\n //const periods = tourVariant.priceVariants.length ? tourVariant.priceVariants : [];\r\n //const cheapestPerPeriod = periods\r\n // .map(x => [x, x.findCheapestAccomodationVariantPrice()] as const);\r\n //const price = cheapestPerPeriod\r\n // .reduce((acc, [_, variant]) => acc + (variant?.price ?? 0), 0);\r\n if (cheapestVariant == null || cheapestPriceItem == null || minPrice > price) {\r\n cheapestVariant = tourVariant;\r\n cheapestPriceItem = best;\r\n //cheapestPeriods = cheapestPerPeriod.length > 0 ? cheapestPerPeriod : null;\r\n minPrice = price;\r\n }\r\n }\r\n return cheapestVariant != null ? [cheapestVariant, cheapestPriceItem] : null;\r\n}\r\n","import { Checkbox, FormControl, InputLabel } from '@material-ui/core';\r\nimport Box from '@material-ui/core/Box';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport RemoveIcon from '@material-ui/icons/Remove';\r\nimport { _T } from 'appI18n';\r\nimport range from 'lodash/range';\r\nimport React from 'react';\r\nimport Select from '../Select';\r\nimport useStyles from './styles';\r\nfunction TouristPickerCategory({ label, count, onAdd, onRemove }) {\r\n const classes = useStyles();\r\n return (React.createElement(Grid, { container: true, alignItems: \"center\" },\r\n React.createElement(Grid, { item: true, xs: 6 },\r\n React.createElement(Typography, { variant: \"h5\", component: \"span\" }, label)),\r\n React.createElement(Grid, { item: true, xs: 6 },\r\n React.createElement(Box, { display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" },\r\n React.createElement(IconButton, { className: classes.countBtn, onClick: onRemove },\r\n React.createElement(RemoveIcon, null)),\r\n React.createElement(Typography, { variant: \"h4\", component: \"span\" }, count),\r\n React.createElement(IconButton, { className: classes.countBtn, onClick: onAdd },\r\n React.createElement(AddIcon, null))))));\r\n}\r\nexport function TouristPicker({ adultCount, childAges, onChange }) {\r\n const classes = useStyles();\r\n const handleAddAdult = () => adultCount < 10 && onChange(adultCount + 1, childAges);\r\n const handleRemoveAdult = () => adultCount > 1 && onChange(adultCount - 1, childAges);\r\n const handleAddChild = () => childAges.length < 4 && onChange(adultCount, [...childAges, 0]);\r\n const handleRemoveChild = () => childAges.length > 0 && onChange(Math.max(adultCount, 0), childAges.slice(0, childAges.length - 1));\r\n const handleChildAgeChange = (childIndex, e) => {\r\n const ages = [...childAges];\r\n ages[childIndex] = parseInt(e.target.value);\r\n onChange(adultCount, ages);\r\n };\r\n return React.createElement(\"div\", { className: classes.root },\r\n React.createElement(\"div\", { className: classes.categories },\r\n React.createElement(TouristPickerCategory, { label: _T.COMMON_ADULTS, count: adultCount, onAdd: handleAddAdult, onRemove: handleRemoveAdult }),\r\n React.createElement(TouristPickerCategory, { label: _T.COMMON_CHILDREN, count: childAges.length, onAdd: handleAddChild, onRemove: handleRemoveChild })),\r\n React.createElement(\"div\", { className: classes.childAges }, childAges.map((x, i) => React.createElement(Select, { label: `${_T.COMMON_CHILD_AGE} ${i + 1}`, value: x, key: i, fullWidth: true, onChange: handleChildAgeChange.bind(null, i) }, range(0, Number.parseInt(_T.CHILD_MAX_AGE) + 1).map(age => React.createElement(\"option\", { value: age, key: age }, age))))));\r\n}\r\nexport function TouristPickerWithPlace({ adultCount, childAges, onChange }) {\r\n const classes = useStyles();\r\n const handleAddAdult = () => adultCount < 10 && onChange(adultCount + 1, childAges);\r\n const handleRemoveAdult = () => adultCount > 1 && onChange(adultCount - 1, childAges);\r\n const handleAddChild = () => childAges.length < 4 && onChange(adultCount, [...childAges, { age: 0, withPlace: false }]);\r\n const handleRemoveChild = () => childAges.length > 0 && onChange(Math.max(adultCount, 0), childAges.slice(0, childAges.length - 1));\r\n const handleChildAgeChange = (childIndex, e) => {\r\n const ages = [...childAges];\r\n ages[childIndex].age = parseInt(e.target.value);\r\n onChange(adultCount, ages);\r\n };\r\n const handleChildPlaceChange = (childIndex, e) => {\r\n const ages = [...childAges];\r\n ages[childIndex].withPlace = e.target.checked;\r\n onChange(adultCount, ages);\r\n };\r\n return React.createElement(\"div\", { className: classes.root },\r\n React.createElement(\"div\", { className: classes.categories },\r\n React.createElement(TouristPickerCategory, { label: _T.COMMON_ADULTS, count: adultCount, onAdd: handleAddAdult, onRemove: handleRemoveAdult }),\r\n React.createElement(TouristPickerCategory, { label: _T.COMMON_CHILDREN, count: childAges.length, onAdd: handleAddChild, onRemove: handleRemoveChild })),\r\n React.createElement(\"div\", { className: classes.childAges }, childAges.map((x, i) => React.createElement(\"div\", { className: \"input-group w-100\" },\r\n React.createElement(\"div\", { className: \"p-0\" },\r\n React.createElement(Select, { label: `${_T.COMMON_CHILD_AGE} ${i + 1}`, value: x.age, key: i, fullWidth: true, onChange: handleChildAgeChange.bind(null, i) }, range(0, Number.parseInt(_T.CHILD_MAX_AGE) + 1).map(age => React.createElement(\"option\", { value: age, key: age }, age)))),\r\n React.createElement(\"span\", { className: \"input-group-addon\" },\r\n React.createElement(FormControl, { variant: \"filled\", fullWidth: true },\r\n React.createElement(InputLabel, { variant: \"standard\", shrink: true }, _T.COMMON_CHILD_PLACE),\r\n React.createElement(Checkbox, { value: x.withPlace, checked: x.withPlace, key: i, onChange: handleChildPlaceChange.bind(null, i) })))))));\r\n}\r\n","import React, { useState } from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport { _T } from 'appI18n';\r\nimport useStyles from './styles';\r\nimport { TouristPicker, TouristPickerWithPlace } from './TouristPicker';\r\nexport function TouristPickerDialog(props) {\r\n const [adultCount, setAdultCount] = useState(props.adultCount);\r\n const [childAges, setChildAges] = useState(props.childAges);\r\n const classes = useStyles();\r\n const handleApply = () => {\r\n if (props.adultCount != adultCount || childAges.join(' ') != props.childAges.join(' '))\r\n props.onChange(adultCount, childAges);\r\n props.onClose();\r\n };\r\n const handleClose = () => props.onClose();\r\n const handleChange = (adultCount, childAges) => {\r\n setAdultCount(adultCount);\r\n setChildAges(childAges);\r\n };\r\n return (React.createElement(Dialog, { open: props.open, onClose: handleClose, \"aria-labelledby\": \"change-tourists-dialog\", style: props.isFrame ? {\r\n height: 'fit-content'\r\n } : undefined },\r\n React.createElement(DialogTitle, { id: \"change-tourists-dialog\" }, _T.COMMON_CHANGE_TOURISTS),\r\n React.createElement(DialogContent, { className: classes.dialog },\r\n React.createElement(TouristPicker, { adultCount: adultCount, childAges: childAges, onChange: handleChange })),\r\n React.createElement(DialogActions, null,\r\n React.createElement(Button, { onClick: handleClose, color: \"primary\" }, _T.COMMON_ACTION_CANCEL),\r\n React.createElement(Button, { onClick: handleApply, color: \"primary\" }, _T.COMMON_ACTION_APPLY))));\r\n}\r\nexport function TouristPickerWithPlaceDialog(props) {\r\n const [adultCount, setAdultCount] = useState(props.adultCount);\r\n const [childAges, setChildAges] = useState(props.childAges.map(c => (Object.assign({}, c))));\r\n const classes = useStyles();\r\n const handleApply = () => {\r\n if (props.adultCount != adultCount || childAges.map(c => c.withPlace ? `${c.age}+` : c.age).join(' ') != props.childAges.map(c => c.withPlace ? `${c.age}+` : c.age).join(' '))\r\n props.onChange(adultCount, childAges);\r\n props.onClose();\r\n };\r\n const handleClose = () => props.onClose();\r\n const handleChange = (adultCount, childAges) => {\r\n setAdultCount(adultCount);\r\n setChildAges(childAges);\r\n };\r\n return (React.createElement(Dialog, { open: props.open, onClose: handleClose, \"aria-labelledby\": \"change-tourists-dialog\" },\r\n React.createElement(DialogTitle, { id: \"change-tourists-dialog\" }, _T.COMMON_CHANGE_TOURISTS),\r\n React.createElement(DialogContent, { className: classes.dialog },\r\n React.createElement(TouristPickerWithPlace, { adultCount: adultCount, childAges: childAges, onChange: handleChange })),\r\n React.createElement(DialogActions, null,\r\n React.createElement(Button, { onClick: handleClose, color: \"primary\" }, _T.COMMON_ACTION_CANCEL),\r\n React.createElement(Button, { onClick: handleApply, color: \"primary\" }, _T.COMMON_ACTION_APPLY))));\r\n}\r\n","import React from 'react';\r\nimport TouristIcon from '@material-ui/icons/PersonOutline';\r\nimport TextField from '../TextField';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport InputAdornment from '@material-ui/core/InputAdornment';\r\nimport { pluralizeI18n, _T } from 'appI18n';\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n cursor: 'pointer',\r\n display: 'inline-block',\r\n },\r\n value: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n '& svg': {\r\n display: 'inline-block',\r\n marginRight: 8,\r\n }\r\n },\r\n fullWidth: {\r\n width: '100%'\r\n },\r\n borderless: {\r\n border: 0,\r\n borderRadius: 0\r\n },\r\n}));\r\nexport function TouristPickerTextField(props) {\r\n return TouristPickerTextFieldBase(props);\r\n}\r\nexport function TouristPickerWithPlaceTextField(props) {\r\n return TouristPickerTextFieldBase(props);\r\n}\r\nfunction TouristPickerTextFieldBase(props) {\r\n const classes = useStyles();\r\n const adultsPlural = pluralizeI18n('adults', props.adultCount);\r\n const childrenPlural = pluralizeI18n('children', props.childAges.length);\r\n const rootClasses = `${classes.root} ${props.fullWidth ? classes.fullWidth : ''}` +\r\n ` ${props.borderless ? classes.borderless : ''}` +\r\n ` ${props.className || ''}`;\r\n const value = `${props.adultCount} ${adultsPlural} · ${props.childAges.length} ${childrenPlural}`;\r\n return (React.createElement(\"div\", { className: rootClasses, onClick: props.onClick },\r\n React.createElement(TextField, { label: _T.COMMON_TOURISTS, value: value, fullWidth: true, borderless: props.borderless, InputLabelProps: props.labelProps, InputProps: {\r\n startAdornment: React.createElement(InputAdornment, { position: \"start\" },\r\n React.createElement(TouristIcon, null)),\r\n readOnly: true\r\n }, masqueradeAsSelect: true, required: props.required, error: props.error, helperText: props.error && props.errorText ? props.errorText : undefined })));\r\n}\r\n","import { readCsrfToken } from \"./network/network\";\r\nconst pluralizeAutoSplit = (count, pattern) => pluralize(count, ...pattern.split(',', 3));\r\nfunction pluralize(count, word, two, five) {\r\n const forms = [five, word, two, two, two, five, five, five, five, five];\r\n const mod100 = count % 100;\r\n if (mod100 <= 10 || mod100 >= 20)\r\n return forms[count % 10];\r\n else if (mod100 && mod100 < 20)\r\n return five;\r\n}\r\nfunction formatMoney(value, options) {\r\n var _a, _b, _c;\r\n if (isNaN(value))\r\n return \"?\";\r\n var sign = RoundSignForCurrency(options === null || options === void 0 ? void 0 : options.currency);\r\n if (options === null || options === void 0 ? void 0 : options.localeAware) {\r\n return new Intl.NumberFormat(window.language || undefined, {\r\n minimumFractionDigits: (_a = options === null || options === void 0 ? void 0 : options.precision) !== null && _a !== void 0 ? _a : sign,\r\n maximumFractionDigits: (_b = options === null || options === void 0 ? void 0 : options.precision) !== null && _b !== void 0 ? _b : sign,\r\n }).format(value);\r\n }\r\n else {\r\n return value.toFixed((_c = options === null || options === void 0 ? void 0 : options.precision) !== null && _c !== void 0 ? _c : sign);\r\n }\r\n}\r\nfunction RoundSignForCurrency(currency) {\r\n if ((currency === null || currency === void 0 ? void 0 : currency.toUpperCase()) == 'RUB')\r\n return 0;\r\n return 2;\r\n}\r\nfunction appUrl(url, searchParams) {\r\n let result = baseUrl(url);\r\n if (!searchParams || Object.keys(searchParams).length == 0)\r\n return result;\r\n const urlSearchParams = toURLSearchParams(searchParams);\r\n return result + (result.indexOf('?') == -1 ? \"?\" : \"&\") + urlSearchParams.toString();\r\n}\r\nfunction baseUrl(url) {\r\n if (url.startsWith('/')) {\r\n const baseUrl = window.appBase;\r\n if (!baseUrl)\r\n return url;\r\n if (baseUrl.endsWith('/'))\r\n return baseUrl.replace(/\\/+$/, '') + url;\r\n else\r\n return baseUrl + url;\r\n }\r\n else {\r\n return url;\r\n }\r\n}\r\nfunction toURLSearchParams(obj) {\r\n const searchParams = new URLSearchParams();\r\n toURLSearchParamsInner(searchParams, obj);\r\n return searchParams;\r\n}\r\nfunction toURLSearchParamsInner(searchParams, obj, prefix = undefined) {\r\n for (const [k, v] of Object.entries(obj).filter(([_, v]) => v !== null && v !== undefined)) {\r\n if (Array.isArray(v)) {\r\n for (let i = 0; i < v.length; i++) {\r\n const arrayVal = v[i];\r\n if (typeof arrayVal == \"object\")\r\n toURLSearchParamsInner(searchParams, arrayVal, `${prefix || ''}${k}[${i}].`);\r\n else\r\n searchParams.append(`${prefix || ''}${k}[${i}]`, arrayVal);\r\n }\r\n }\r\n else if (typeof v == \"object\") {\r\n toURLSearchParamsInner(searchParams, v, `${prefix || ''}${k}.`);\r\n }\r\n else {\r\n searchParams.append(`${prefix || ''}${k}`, v);\r\n }\r\n }\r\n return searchParams;\r\n}\r\nfunction isValidEmail(email) {\r\n return !!email.match(/^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?$/gi);\r\n}\r\nconst getWeekDays = () => window.weekDays;\r\nconst getCurrency = () => window.currency;\r\nconst getCurrencies = () => window.currencies;\r\nconst openPaymentUrl = (function () {\r\n function redirect(targetUrl) {\r\n window.location.href = targetUrl;\r\n }\r\n function redirectBlank(targetUrl) {\r\n window.open(targetUrl, '_blank');\r\n }\r\n function submitForm(targetUrl, params, isBlank) {\r\n var _a, _b;\r\n let form = document.createElement('form');\r\n form.setAttribute('action', targetUrl);\r\n form.setAttribute('method', 'POST');\r\n if (isBlank)\r\n form.setAttribute('target', '_blank');\r\n if (params) {\r\n if (!params[\"csrfToken\"])\r\n params[\"csrfToken\"] = readCsrfToken();\r\n let paramEntries = Object.entries(params);\r\n for (var i = 0; i < paramEntries.length; i++) {\r\n let name = paramEntries[i][0];\r\n let val = (_a = paramEntries[i][1]) !== null && _a !== void 0 ? _a : ((_b = paramEntries[i][1]) !== null && _b !== void 0 ? _b : '').toString();\r\n let el = document.createElement('input');\r\n el.setAttribute('type', 'hidden');\r\n el.setAttribute('name', name);\r\n el.setAttribute('value', val);\r\n form.appendChild(el);\r\n }\r\n }\r\n document.body.appendChild(form);\r\n form.submit();\r\n }\r\n return function (paymentUrl) {\r\n if (paymentUrl.httpVerb == 'post' && paymentUrl.contentType == 'form') {\r\n submitForm(paymentUrl.targetUrl, paymentUrl.params, paymentUrl.isBlank);\r\n }\r\n else if (paymentUrl.httpVerb == 'get' && !paymentUrl.isBlank) {\r\n redirect(paymentUrl.targetUrl);\r\n }\r\n else if (paymentUrl.httpVerb == 'get' && paymentUrl.isBlank) {\r\n redirectBlank(paymentUrl.targetUrl);\r\n }\r\n else {\r\n console.error('Don\\'t know how to handle payment URL', paymentUrl);\r\n throw new Error('Unsupported payment URL');\r\n }\r\n };\r\n})();\r\nfunction removeEmptyFields(value, removableValues = [null, undefined, NaN]) {\r\n //function removeEmptyFields>(value: T, removableValues: any[] = [null, undefined, NaN]): Partial {\r\n return Object.fromEntries(Object.keys(value).filter(key => !removableValues.find(r => r === value[key])).map(key => [key, value[key]]));\r\n}\r\nexport { appUrl, pluralize, pluralizeAutoSplit, formatMoney, toURLSearchParams, toURLSearchParamsInner, isValidEmail, getWeekDays, getCurrency, getCurrencies, openPaymentUrl, removeEmptyFields, };\r\n","import { Box, Checkbox, ClickAwayListener, createStyles, FormControl, FormLabel, Grid, Grow, IconButton, InputAdornment, InputBase, ListItemIcon, ListItemText, MenuItem, MenuList, Paper, Popper, useControlled, useTheme, withStyles } from '@material-ui/core';\r\nimport { Close, Search } from '@material-ui/icons';\r\nimport _ from 'lodash';\r\nimport moment from 'moment';\r\nimport { useSnackbar } from 'notistack';\r\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { DateObject } from 'react-multi-date-picker';\r\nimport { language, _T } from '../../../../include/appI18n';\r\nimport '../../../../include/jquery-components/date-range-picker';\r\nimport '../../../../include/jquery-components/date-range-picker/date-range-picker.css';\r\nimport $ from '../../../../include/jquery.js';\r\nimport { russian, StyledCalendar } from '../../../../include/react-components/StyledCalendar';\r\nexport const TpLabel = (props) => React.createElement(FormLabel, Object.assign({ classes: { root: 'tp-filter-label', focused: 'tp-filter-label-focused' } }, props));\r\nexport const TpFormControl = withStyles((theme) => createStyles({\r\n root: {\r\n verticalAlign: 'baseline',\r\n },\r\n}))(FormControl);\r\nexport const TpInput = React.forwardRef((props, ref) => React.createElement(InputBase, Object.assign({}, props, { classes: Object.assign({ root: 'tp-input-root', input: 'tp-input', disabled: 'tp-input-disabled', error: 'tp-input-error' }, props.classes), ref: ref })));\r\nexport const TpMenuItem = (props) => React.createElement(MenuItem, Object.assign({ className: props.selected ? 'tp-list-item-selected' : undefined, classes: { root: 'tp-list-item', gutters: 'tp-list-item-gutters' } }, props));\r\nexport const TpArrowIcon = (props) => React.createElement(\"svg\", { className: props.className, width: \"8\", height: \"6\", viewBox: \"0 0 8 6\" },\r\n React.createElement(\"path\", { xmlns: \"http://www.w3.org/2000/svg\", d: \"M3.88281 6L0.393326 -6.52532e-07L7.37229 -4.68497e-08L3.88281 6Z\" }));\r\nexport const TpArrowIcon2 = (props) => React.createElement(\"svg\", { className: props.className, viewBox: \"0 0 24 24\" },\r\n React.createElement(\"path\", { xmlns: \"http://www.w3.org/2000/svg\", d: \"M7 10l5 5 5-5z\" }));\r\nfunction TpSelectInner(props, ref) {\r\n var _a, _b, _c, _d, _e, _f;\r\n const snackbar = useSnackbar();\r\n const [open, setOpen] = React.useState(false);\r\n const [showDropdownContent, setShowDropdownContent] = React.useState(!props.dropdownDelay);\r\n const anchorRef = React.useRef(null);\r\n const menuRef = React.useRef(null);\r\n const getOptionValue = (o) => typeof props.valueSelector == 'function' ? props.valueSelector(o) : o[props.valueSelector];\r\n const getOptionText = (o) => typeof props.textSelector == 'function' ? props.textSelector(o) : o[props.textSelector];\r\n const getDisabledState = (o) => typeof props.disabledSelector == 'function' ? props.disabledSelector(o) : false;\r\n const handleToggle = () => {\r\n if (!props.disabled)\r\n setOpen((prevOpen) => !prevOpen);\r\n else\r\n setOpen(false);\r\n };\r\n const handleClose = (event) => {\r\n if (anchorRef.current && menuRef.current && menuRef.current.contains(event.target)) {\r\n return;\r\n }\r\n setOpen(false);\r\n };\r\n useEffect(() => {\r\n setTimeout(() => setShowDropdownContent(open), 200);\r\n }, [open]);\r\n const handleListKeyDown = (event) => {\r\n if (event.key === 'Tab') {\r\n event.preventDefault();\r\n setOpen(false);\r\n }\r\n };\r\n const [selected, setSelected] = useState(props.multiselect ? props.selected : props.value !== undefined ? [props.value] : []);\r\n const [searchText, setSearchText] = useState();\r\n const [searchOpen, setSearchOpen] = useState(false);\r\n const options = useMemo(() => searchText && searchOpen ? props.options.filter(o => getOptionText(o).toLowerCase().includes(searchText.toLowerCase())) : props.options, [props.options, searchOpen, searchText]);\r\n useEffect(() => {\r\n if (!props.multiselect) {\r\n return;\r\n }\r\n if (!_.isEqual(_.orderBy(selected), _.orderBy(props.selected)))\r\n props.onChange(selected.filter(s => props.options.findIndex(o => getOptionValue(o) == s) >= 0));\r\n }, [selected]);\r\n useEffect(() => {\r\n if (props.multiselect && props.onChange && !open && !_.isEqual(_.orderBy(selected), _.orderBy(props.selected)))\r\n props.onChange(selected.filter(s => props.options.findIndex(o => getOptionValue(o) == s) >= 0));\r\n }, [open]);\r\n useEffect(() => {\r\n const newSelected = selected.filter(s => props.options.findIndex(o => getOptionValue(o) == s) >= 0);\r\n setSelected(newSelected);\r\n if (props.multiselect && props.onChange && !open && !_.isEqual(_.orderBy(newSelected), _.orderBy(props.selected)))\r\n props.onChange(newSelected);\r\n }, [props.options, props.valueSelector]);\r\n const valueLabel = useMemo(() => {\r\n if (!props.multiselect) {\r\n if (props.valueLabelFormat)\r\n return props.valueLabelFormat(props.value);\r\n let q = props.value === undefined ? undefined : options.find(p => getOptionValue(p) === props.value);\r\n if (q !== undefined && q !== null)\r\n return getOptionText(q);\r\n return '';\r\n }\r\n if (props.valueLabelFormat)\r\n return props.valueLabelFormat(selected);\r\n if (selected.length == 0 || selected.length == options.length)\r\n return (props.anyLabel || _T.COMMON_ANY_MALE);\r\n return _.orderBy(selected.filter(o => !!o).map(o => {\r\n let f = options.find(p => getOptionValue(p) == o);\r\n return f ? getOptionText(f) : '';\r\n }), v => v).filter(o => o).join(', ');\r\n }, [selected, options, props.textSelector, props.valueSelector, props.multiselect, (props.multiselect ? props.selected : props.value)]);\r\n const searchRef = useRef(null);\r\n const prevOpen = useRef(open);\r\n useEffect(() => {\r\n if (prevOpen.current === true && open === false) {\r\n anchorRef.current.focus();\r\n }\r\n prevOpen.current = open;\r\n }, [open]);\r\n const MultiSelectMenu = //useMemo(() => () => (\r\n React.createElement(MenuList, { ref: menuRef, autoFocusItem: open, id: \"menu-list-grow\", onKeyDown: handleListKeyDown, style: { maxHeight: (_a = props.heightPx) !== null && _a !== void 0 ? _a : 300, overflowY: 'auto' } }, options.map((o, i) => {\r\n let value = getOptionValue(o);\r\n let text = props.optionSelector && typeof props.optionSelector == 'function' ? props.optionSelector(o) : getOptionText(o);\r\n return (React.createElement(TpMenuItem, { selected: props.multiselect ? selected.indexOf(value) > -1 : value == props.value, disabled: props.disabled || getDisabledState(o), dense: true, button: true, key: i, onClick: (e) => {\r\n if (!props.multiselect) {\r\n //setSelected([value]);\r\n props.onChange(value);\r\n setOpen(false);\r\n return;\r\n }\r\n let newSelected = [];\r\n if (selected.indexOf(value) > -1) {\r\n newSelected = [...selected.filter(x => x != value && !!props.options.find(p => getOptionValue(p) == x))];\r\n }\r\n else {\r\n newSelected = [...selected.filter(x => !!props.options.find(p => getOptionValue(p) == x)), value];\r\n }\r\n if (props.maxSelected && newSelected.length > props.maxSelected && props.maxSelectedAlertText) {\r\n snackbar.enqueueSnackbar(props.maxSelectedAlertText, { variant: 'warning', autoHideDuration: 5000 });\r\n }\r\n else\r\n setSelected(newSelected);\r\n e.stopPropagation();\r\n } },\r\n props.multiselect ? React.createElement(ListItemIcon, null,\r\n React.createElement(Checkbox, { classes: { root: 'tp-list-item-checkbox', checked: 'tp-list-item-checkbox-selected' }, edge: \"start\", checked: selected.indexOf(value) > -1, tabIndex: -1, disableRipple: true, disabled: props.disabled })) : null,\r\n React.createElement(ListItemText, { primary: text })));\r\n }));\r\n return (React.createElement(React.Fragment, null, props.multiline ?\r\n React.createElement(Box, Object.assign({}, ((_b = props.boxProps) !== null && _b !== void 0 ? _b : {})),\r\n props.label ? React.createElement(TpLabel, { error: props.error }, props.label) : null,\r\n React.createElement(Box, Object.assign({}, ((_c = props.boxProps) !== null && _c !== void 0 ? _c : {}), { className: props.error ? 'tp-multi-select-error' : '' }),\r\n !props.searchable || !searchOpen ? React.createElement(TpInput, { onClick: props.onClick, classes: props.inputClasses, disabled: props.disabled, readOnly: true, fullWidth: true, value: valueLabel, placeholder: props.placeholder, startAdornment: props.startAdornment, endAdornment: props.searchable ?\r\n React.createElement(InputAdornment, { position: \"end\" },\r\n React.createElement(IconButton, { onClick: e => {\r\n setSearchOpen(true);\r\n setTimeout(() => { var _a; return (_a = searchRef.current) === null || _a === void 0 ? void 0 : _a.focus(); }, 400);\r\n } },\r\n React.createElement(Search, { color: \"inherit\" }))) : undefined, error: props.error }) : React.createElement(TpFormControl, { classes: props.formControlClasses, fullWidth: true },\r\n React.createElement(TpInput, { onClick: props.onClick, classes: props.inputClasses, disabled: props.disabled, fullWidth: true, inputRef: searchRef, value: searchText, onChange: (e) => setSearchText(e.target.value), placeholder: props.placeholder, startAdornment: (searchText === null || searchText === void 0 ? void 0 : searchText.length) && searchOpen ?\r\n React.createElement(InputAdornment, { position: \"start\" },\r\n React.createElement(IconButton, { onClick: () => setSearchText('') },\r\n React.createElement(Close, { color: \"inherit\" }))) : props.startAdornment, endAdornment: props.searchable ?\r\n React.createElement(InputAdornment, { position: \"end\" },\r\n React.createElement(IconButton, { onClick: e => {\r\n setSearchText('');\r\n setSearchOpen(false);\r\n } },\r\n React.createElement(Search, { color: \"inherit\" }))) : undefined, error: props.error })),\r\n React.createElement(Box, { height: props.heightPx },\r\n React.createElement(Paper, { elevation: 2, style: { height: '100%' }, className: \"tp-multiline-select-list-paper\" }, MultiSelectMenu)))) : React.createElement(Box, Object.assign({}, ((_d = props.boxProps) !== null && _d !== void 0 ? _d : {}), { style: { height: '100%' } }),\r\n React.createElement(\"div\", { style: { display: 'flex', height: '100%' }, ref: anchorRef },\r\n React.createElement(TpFormControl, { classes: props.formControlClasses, variant: \"filled\", fullWidth: true, disabled: props.disabled },\r\n props.label ? React.createElement(TpLabel, { error: props.error }, props.label) : null,\r\n React.createElement(TpInput, { classes: props.inputClasses, disabled: props.disabled, value: valueLabel, onInput: (e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }, readOnly: true, placeholder: props.placeholder, style: { caretColor: 'transparent', height: '100%' }, \"aria-controls\": open ? 'menu-list-grow' : undefined, \"aria-haspopup\": \"true\", onClick: () => {\r\n let res = true;\r\n if (props.onClick)\r\n res = props.onClick();\r\n if (res)\r\n handleToggle();\r\n }, startAdornment: props.startAdornment, endAdornment: (_e = props.endAdornment) !== null && _e !== void 0 ? _e : React.createElement(TpArrowIcon, { className: \"MuiNativeSelect-icon MuiNativeSelect-iconFilled\" }), error: props.error })),\r\n React.createElement(Popper, { open: open, anchorEl: anchorRef.current, role: undefined, transition: true, style: { zIndex: 9999, width: (_f = anchorRef.current) === null || _f === void 0 ? void 0 : _f.clientWidth, maxHeight: '300px' } }, ({ TransitionProps, placement }) => (React.createElement(Grow, Object.assign({}, TransitionProps, { style: { transformOrigin: placement === 'bottom' ? 'left top' : 'left bottom', marginTop: placement === 'bottom' ? '2px' : 0, marginBottom: placement !== 'bottom' ? '2px' : 0 } }),\r\n React.createElement(Paper, { elevation: 4 },\r\n React.createElement(ClickAwayListener, { onClickAway: handleClose },\r\n React.createElement(Box, { width: \"100%\", height: \"100%\" }, showDropdownContent || !props.dropdownDelay ? MultiSelectMenu : null))))))))));\r\n}\r\nexport const TpSelect = React.forwardRef(TpSelectInner);\r\nexport const TpDateRangePickerField2 = React.forwardRef((props, ref) => {\r\n var _a, _b;\r\n const snackbar = useSnackbar();\r\n const [[startDate, endDate], setDates] = useState([props.dates[0] ? moment(props.dates[0]).toDate() : undefined, props.dates[1] ? moment(props.dates[1]).toDate() : undefined]);\r\n const [errors, setErrors] = useState([]);\r\n const inputRef = useRef(null);\r\n const [open, setOpen] = React.useState(false);\r\n const [showDropdownContent, setShowDropdownContent] = React.useState(false);\r\n const anchorRef = React.useRef(null);\r\n const menuRef = React.useRef(null);\r\n const valueLabel = useMemo(() => startDate && endDate ? (moment(startDate).isSame(endDate) ? moment(startDate).format('DD.MM.YY') : `${moment(startDate).format('DD.MM.YY')} - ${moment(endDate).format('DD.MM.YY')}`) : props.hideLabelWhenNotSelected ? '' : _T.COMMON_SELECT_DATES, [startDate, endDate, props.hideLabelWhenNotSelected]);\r\n const handleToggle = () => {\r\n if (!props.disabled)\r\n setOpen((prevOpen) => !prevOpen);\r\n else\r\n setOpen(false);\r\n };\r\n const handleClose = (event) => {\r\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\r\n return;\r\n }\r\n setOpen(false);\r\n };\r\n const prevOpen = useRef(open);\r\n // return focus to the button when we transitioned from !open -> open\r\n useEffect(() => {\r\n if (prevOpen.current === true && open === false) {\r\n anchorRef.current.focus();\r\n }\r\n prevOpen.current = open;\r\n }, [open]);\r\n useEffect(() => {\r\n setTimeout(() => setShowDropdownContent(open), 200);\r\n }, [open]);\r\n useEffect(() => {\r\n if (!props.validationCallback)\r\n return;\r\n const validationResult = props.validationCallback([startDate ? moment(startDate) : undefined, endDate ? moment(endDate) : undefined]);\r\n if (!validationResult)\r\n return;\r\n if (Array.isArray(validationResult))\r\n setErrors([...validationResult]);\r\n else\r\n setErrors([validationResult]);\r\n }, [startDate, endDate, props.validationCallback]);\r\n return (React.createElement(\"div\", { style: { display: 'flex', height: '100%' }, ref: ref },\r\n React.createElement(\"div\", { style: { display: 'flex', width: '100%', height: '100%' }, ref: anchorRef },\r\n React.createElement(FormControl, { fullWidth: true, variant: props.variant, classes: props.formControlClasses, error: props.error, disabled: props.disabled, className: props.className },\r\n props.label ? React.createElement(TpLabel, null, props.label) : null,\r\n React.createElement(TpInput, { classes: props.inputClasses, disabled: props.disabled, placeholder: props.placeholder, id: props.id, ref: inputRef, value: valueLabel, onInput: (e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }, readOnly: true, style: { caretColor: 'transparent', color: 'rgba(0, 0, 0, 0.3)' }, \"aria-controls\": open ? 'menu-list-grow' : undefined, \"aria-haspopup\": \"true\", onClick: e => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n let res = true;\r\n if (props.onClick)\r\n res = props.onClick();\r\n if (res)\r\n handleToggle();\r\n }, startAdornment: props.startAdornment, endAdornment: (_a = props.endAdornment) !== null && _a !== void 0 ? _a : React.createElement(TpArrowIcon, { className: \"MuiNativeSelect-icon MuiNativeSelect-iconFilled\" }), error: props.error })),\r\n React.createElement(Popper, { open: open, anchorEl: anchorRef.current, role: undefined, transition: true, style: {\r\n zIndex: 9999,\r\n width: (_b = anchorRef.current) === null || _b === void 0 ? void 0 : _b.clientWidth\r\n } }, ({ TransitionProps, placement }) => (React.createElement(Grow, Object.assign({}, TransitionProps, { style: {\r\n transformOrigin: placement === 'bottom' ? 'left top' : 'left bottom',\r\n marginTop: placement === 'bottom' ? '2px' : 0,\r\n marginBottom: placement !== 'bottom' ? '2px' : 0\r\n } }),\r\n React.createElement(Paper, { elevation: 4 },\r\n React.createElement(ClickAwayListener, { onClickAway: handleClose },\r\n React.createElement(Box, { width: \"100%\", height: \"100%\" }, showDropdownContent || !props.dropdownDelay ? React.createElement(StyledCalendar, { ref: menuRef, range: true, showOtherDays: true, weekStartDayIndex: language.includes('ru') ? 1 : undefined, locale: language.includes('ru') ? russian : undefined, mapDays: ({ date }) => {\r\n var s = date.format('YYYY-MM-DD');\r\n if (props.validDates === undefined) {\r\n console.error('CheckIn date set is undefined');\r\n return { disabled: false };\r\n }\r\n return {\r\n disabled: props.validDates.indexOf(s) < 0,\r\n };\r\n }, minDate: moment().add(1, 'd').toDate(), highlightToday: false, numberOfMonths: props.numberOfMonths, value: [startDate, endDate].filter(x => !!x).map(x => x), onChange: value => {\r\n let s = value instanceof Date || typeof value == 'string' || typeof value == 'number'\r\n ? [moment(value), undefined]\r\n : value instanceof DateObject\r\n ? [moment(value.format('YYYY-MM-DD')), undefined]\r\n : Array.isArray(value)\r\n ? (value[0] instanceof Date || typeof value[0] == 'string' || typeof value[0] == 'number') && (value[value.length - 1] instanceof Date || typeof value[value.length - 1] == 'string' || typeof value[value.length - 1] == 'number')\r\n ? [moment(value[0]), value.length > 1 ? moment(value[value.length - 1]) : undefined]\r\n : value[0] instanceof DateObject && value[value.length - 1] instanceof DateObject\r\n ? [moment(value[0].format('YYYY-MM-DD')), value.length > 1 ? moment(value[value.length - 1].format('YYYY-MM-DD')) : undefined]\r\n : [undefined, undefined]\r\n : [undefined, undefined];\r\n if (s[0] == undefined || s[1] == undefined)\r\n return;\r\n if (props.dateLimit && s[0].diff(s[1], \"days\") >= props.dateLimit) {\r\n snackbar.enqueueSnackbar(props.dateLimitAlertText, { variant: 'warning', autoHideDuration: 5000 });\r\n }\r\n setDates([s[0].toDate(), s[1].toDate()]);\r\n if (props.onChange)\r\n props.onChange(s);\r\n setOpen(false);\r\n } }) : null)))))))));\r\n});\r\nexport function TpDateRangePickerField(props) {\r\n const snackbar = useSnackbar();\r\n const [[startDate, endDate], setDates] = useState([props.dates[0] ? moment(props.dates[0]) : undefined, props.dates[1] ? moment(props.dates[1]) : undefined]);\r\n const [errors, setErrors] = useState([]);\r\n const inputRef = useRef(null);\r\n const daterangepickerApply = useCallback((e, picker) => {\r\n if (props.dateLimit && picker.endDate.diff(picker.startDate, \"days\") >= props.dateLimit) {\r\n snackbar.enqueueSnackbar(props.dateLimitAlertText, { variant: 'warning', autoHideDuration: 5000 });\r\n }\r\n setDates([picker.startDate, picker.endDate]);\r\n if (props.onChange)\r\n props.onChange([picker.startDate, picker.endDate]);\r\n }, [props.onChange]);\r\n useEffect(() => {\r\n if (!inputRef.current)\r\n return;\r\n $(inputRef.current).daterangepicker({\r\n startDate: moment(props.dates[0]),\r\n endDate: moment(props.dates[1]),\r\n dateLimit: props.dateLimit,\r\n //startDate: moment($('#checkInDateStart').val()),\r\n //endDate: moment($('#checkInDateEnd').val()),\r\n minDate: moment(),\r\n autoApply: true,\r\n isInvalidDate: function (date) {\r\n // ����������� ���� ������� �� �������� � ������ ����������� ��� ������.\r\n var s = date.format('YYYY-MM-DD');\r\n if (props.validDates === undefined) {\r\n console.error('CheckIn date set is undefined');\r\n return false;\r\n }\r\n return props.validDates.indexOf(s) < 0;\r\n },\r\n //template: props.maxViewMode && props.maxViewMode < 2 ? \r\n // '
' +\r\n // '
' +\r\n // '
' +\r\n // '' +\r\n // '' +\r\n // '' +\r\n // '
' +\r\n // '
' +\r\n // '' +\r\n // '
' +\r\n // '
' +\r\n // '
' +\r\n // '
' +\r\n // '
' +\r\n // '
' +\r\n // ' ' +\r\n // '' +\r\n // '
' +\r\n // '
' +\r\n // '
':undefined,\r\n });\r\n $(inputRef.current).off('apply.daterangepicker', daterangepickerApply);\r\n $(inputRef.current).on('apply.daterangepicker', daterangepickerApply);\r\n return () => {\r\n };\r\n }, [inputRef.current, ...props.dates, props.validDates, props.numberOfMonths, daterangepickerApply]);\r\n useEffect(() => {\r\n if (!props.validationCallback)\r\n return;\r\n const validationResult = props.validationCallback([startDate, endDate]);\r\n if (!validationResult)\r\n return;\r\n if (Array.isArray(validationResult))\r\n setErrors([...validationResult]);\r\n else\r\n setErrors([validationResult]);\r\n }, [startDate, endDate, props.validationCallback]);\r\n const valueLabel = useMemo(() => startDate && endDate ? (startDate.isSame(endDate) ? startDate.format('DD.MM.YY') : `${startDate.format('DD.MM.YY')} - ${endDate.format('DD.MM.YY')}`) : _T.COMMON_SELECT_DATES, [startDate, endDate]);\r\n const theme = useTheme();\r\n return (React.createElement(FormControl, { fullWidth: true, variant: props.variant, error: props.error, disabled: props.disabled, className: props.className },\r\n React.createElement(TpLabel, null, props.label),\r\n React.createElement(TpInput, { disabled: props.disabled, id: props.id, ref: inputRef, value: valueLabel, style: { caretColor: 'transparent', color: 'rgba(0, 0, 0, 0.3)' }, endAdornment: React.createElement(TpArrowIcon, { className: \"MuiNativeSelect-icon\" }) })));\r\n //return \r\n}\r\nexport function TpDurationSelector(props) {\r\n const snackbar = useSnackbar();\r\n const [value] = useControlled({ name: 'value', controlled: props.value, default: props.value });\r\n const currentMinSelected = useMemo(() => value === undefined || value.length == 0 ? (props.options.length ? props.options[0] : 0) : value[0], [value, props.options]);\r\n const currentMaxSelected = useMemo(() => value === undefined || value.length == 0 ? (props.options.length ? props.options[props.options.length - 1] : 100) : value[1], [value, props.options]);\r\n return (React.createElement(Grid, { container: true, spacing: 1 },\r\n React.createElement(Grid, { item: true, xs: 'auto' },\r\n React.createElement(Box, { paddingRight: '8px', display: \"inline-flex\", className: \"tp-filter-label\" }, _T.COMMON_FROM.toLowerCase()),\r\n React.createElement(TpSelect, { value: currentMinSelected, onChange: (v) => {\r\n let start = v;\r\n let end = (() => {\r\n var _a;\r\n if (!value || value.length == 0 || (props.tourSearchMaxNightCount && props.options.indexOf(value[1]) - props.options.indexOf(v) >= props.tourSearchMaxNightCount)) {\r\n if ((value === null || value === void 0 ? void 0 : value.length) == 2)\r\n snackbar.enqueueSnackbar(_T.NEW_TOUR_SEARCH_DURATIONS_WARNING_MAX_SET_MAX);\r\n return (_a = (props.tourSearchMaxNightCount ? props.options[props.options.indexOf(v) + props.tourSearchMaxNightCount - 1] : undefined)) !== null && _a !== void 0 ? _a : props.options[props.options.length - 1];\r\n }\r\n if (v > value[1]) {\r\n snackbar.enqueueSnackbar(_T.NEW_TOUR_SEARCH_DURATIONS_WARNING_MAX_SET_MIN);\r\n return v;\r\n }\r\n return value[1];\r\n })();\r\n //let end = Math.min(Math.max(v, value ? value[1] : props.options.length ? getMaxValue(start) : 100), getMaxValue(start));\r\n props.onChange([start, end]);\r\n }, options: props.options, valueSelector: o => o, textSelector: o => `${o}`, required: true, error: props.error, boxProps: {\r\n display: 'inline-flex',\r\n width: '82px',\r\n } })),\r\n React.createElement(Grid, { item: true, xs: 'auto' },\r\n React.createElement(Box, { paddingRight: '8px', display: \"inline-flex\", className: \"tp-filter-label\" }, _T.COMMON_TO.toLowerCase()),\r\n React.createElement(TpSelect, { value: currentMaxSelected, onChange: (v) => {\r\n //let start = Math.min(v, value ? value[0] : props.options.length ? props.options[0] : 0);\r\n let start = (() => {\r\n var _a;\r\n if (!value || value.length == 0 || (props.tourSearchMaxNightCount && props.options.indexOf(v) - props.options.indexOf(value[0]) >= props.tourSearchMaxNightCount)) {\r\n if ((value === null || value === void 0 ? void 0 : value.length) == 2)\r\n snackbar.enqueueSnackbar(_T.NEW_TOUR_SEARCH_DURATIONS_WARNING_MIN_SET_MIN);\r\n return (_a = (props.tourSearchMaxNightCount ? props.options[props.options.indexOf(v) - props.tourSearchMaxNightCount + 1] : undefined)) !== null && _a !== void 0 ? _a : props.options[0];\r\n }\r\n if (v < value[0]) {\r\n snackbar.enqueueSnackbar(_T.NEW_TOUR_SEARCH_DURATIONS_WARNING_MIN_SET_MAX);\r\n return v;\r\n }\r\n return value[0];\r\n })();\r\n let end = v;\r\n props.onChange([start, end]);\r\n }, options: props.options, valueSelector: (o) => o, textSelector: (o) => `${o}`, required: true, error: props.error, boxProps: {\r\n display: 'inline-flex',\r\n width: '82px',\r\n } }))));\r\n}\r\n","import React from 'react';\r\nimport Box from '@material-ui/core/Box';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nexport default function AsyncSpinner() {\r\n return React.createElement(Box, { display: \"flex\", justifyContent: \"center\" },\r\n React.createElement(CircularProgress, { variant: \"indeterminate\", size: 64 }));\r\n}\r\n","var __rest = (this && this.__rest) || function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n};\r\nimport React, { useCallback } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport GridList from '@material-ui/core/GridList';\r\nimport GridListTile from '@material-ui/core/GridListTile';\r\nconst useStyles = makeStyles({\r\n img: {\r\n objectFit: 'cover',\r\n cursor: 'pointer',\r\n },\r\n grid: {\r\n borderRadius: 12\r\n },\r\n tile: {\r\n overflow: 'hidden',\r\n },\r\n imgTile: {\r\n '&:after': {\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n pointerEvents: 'none',\r\n background: 'rgba(0,0,0,0)',\r\n transition: '.15s',\r\n content: '\" \"',\r\n position: 'absolute',\r\n display: 'block',\r\n },\r\n '&:hover:after': {\r\n background: 'rgba(0,0,0,30%)',\r\n },\r\n },\r\n}, { name: 'ImageGrid' });\r\nfunction Tile(props) {\r\n const { url, index, onClick } = props, tileProps = __rest(props, [\"url\", \"index\", \"onClick\"]);\r\n const classes = useStyles();\r\n const handleClick = useCallback(() => {\r\n if (props.onClick)\r\n props.onClick(index);\r\n }, [props.url, props.index, props.onClick]);\r\n return React.createElement(GridListTile, Object.assign({}, tileProps, { classes: { tile: `${classes.tile} ${classes.imgTile}` } }),\r\n React.createElement(\"img\", { src: url, className: classes.img, onClick: handleClick }));\r\n}\r\nfunction SmallGrid(props) {\r\n const colWidth = 6;\r\n const { images: unboundImages, onClick } = props, gridProps = __rest(props, [\"images\", \"onClick\"]);\r\n const images = unboundImages.slice(0, 3);\r\n const classes = useStyles();\r\n return React.createElement(GridList, Object.assign({}, gridProps, { cols: colWidth, classes: { root: classes.grid } }), images.length > 0\r\n ? React.createElement(Tile, { url: images[0].urls.large, cols: colWidth, rows: 3, index: 0, onClick: onClick })\r\n : null);\r\n}\r\nfunction MediumGrid(props) {\r\n const colWidth = 4;\r\n const { images, onClick } = props, gridProps = __rest(props, [\"images\", \"onClick\"]);\r\n const classes = useStyles();\r\n return React.createElement(GridList, Object.assign({}, gridProps, { cols: colWidth, classes: { root: classes.grid } }),\r\n images.length > 0\r\n ? React.createElement(Tile, { cols: colWidth - 1, rows: 3, url: images[0].urls.large, index: 0, onClick: onClick })\r\n : null,\r\n React.createElement(GridListTile, { rows: 3, classes: { tile: classes.tile } },\r\n React.createElement(GridList, { cols: 1, cellHeight: gridProps.cellHeight, spacing: gridProps.spacing }, images.slice(1, 4).map((x, i) => React.createElement(Tile, { url: x.urls.thumbnail, index: i + 1, onClick: onClick, key: i })))));\r\n}\r\nexport default function ImageGrid(props) {\r\n return (React.createElement(\"div\", null,\r\n props.images.length <= 3\r\n ? React.createElement(SmallGrid, { images: props.images, cellHeight: props.cellHeight, spacing: props.spacing, onClick: props.onClick })\r\n : null,\r\n props.images.length > 3\r\n ? React.createElement(MediumGrid, { images: props.images, cellHeight: props.cellHeight, spacing: props.spacing, onClick: props.onClick })\r\n : null));\r\n}\r\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Backdrop from '@material-ui/core/Backdrop';\r\nimport Close from '@material-ui/icons/Close';\r\nimport ForwardIcon from '@material-ui/icons/ArrowForwardIos';\r\nimport BackIcon from '@material-ui/icons/ArrowBackIos';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Button from '@material-ui/core/Button';\r\nimport { Portal } from '@material-ui/core';\r\nconst useStyles = makeStyles(theme => ({\r\n backdrop: {\r\n zIndex: 10001,\r\n opacity: 1,\r\n background: '#000',\r\n color: '#f0f0f0',\r\n height: 'fit-content',\r\n minHeight: '100vh'\r\n },\r\n closeButton: {\r\n position: 'absolute',\r\n right: theme.spacing(2),\r\n top: theme.spacing(2),\r\n color: '#cfcfcf',\r\n '& button:hover': {\r\n background: \"#333\",\r\n color: '#fff'\r\n }\r\n },\r\n movementButton: {\r\n position: 'absolute',\r\n height: '100%',\r\n width: '10%',\r\n color: '#cfcfcf',\r\n '& button': {\r\n display: 'flex',\r\n width: '100%',\r\n height: '100%',\r\n alignItems: 'center',\r\n borderRadius: 0,\r\n },\r\n '& button:hover': {\r\n color: '#fff'\r\n },\r\n },\r\n forwardButton: {\r\n right: 0,\r\n top: 0\r\n },\r\n backButton: {\r\n left: 0,\r\n top: 0,\r\n '& button': {\r\n textAlign: 'right'\r\n }\r\n },\r\n root: {\r\n height: 'calc(100% - 160px)',\r\n width: '100%',\r\n position: 'relative',\r\n },\r\n viewport: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n //marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2),\r\n },\r\n image: {\r\n objectFit: 'cover',\r\n overflow: 'hidden',\r\n borderRadius: 6,\r\n cursor: 'pointer',\r\n maxHeight: '100%',\r\n },\r\n imageContainer: {\r\n position: 'relative',\r\n display: 'inline',\r\n },\r\n thumbs: {\r\n display: 'flex',\r\n overflow: 'hidden',\r\n '& > :first-child': { marginLeft: 'auto' },\r\n '& > :last-child': { marginRight: 'auto' },\r\n '& > :not(:last-child)': {\r\n marginRight: theme.spacing(1),\r\n }\r\n },\r\n thumb: {\r\n '& img': {\r\n borderRadius: theme.shape.borderRadius,\r\n overflow: 'hidden',\r\n objectFit: 'cover',\r\n width: 72,\r\n height: 72,\r\n filter: 'brightness(.4)',\r\n transition: '.3s filter linear, .3s -webkit-filter linear',\r\n cursor: 'pointer',\r\n },\r\n },\r\n thumbActive: {\r\n '& img': {\r\n filter: 'brightness(1)'\r\n },\r\n },\r\n description: {\r\n position: 'absolute',\r\n top: theme.spacing(3),\r\n left: 0,\r\n width: '100%',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n '& > *': {\r\n overflow: 'hidden',\r\n maxWidth: '50%',\r\n },\r\n },\r\n}), { name: \"Lightbox\" });\r\nfunction Thumbnails({ urls, index, onChange }) {\r\n const classes = useStyles();\r\n const scrollRef = useRef();\r\n useEffect(() => {\r\n if (!scrollRef.current)\r\n return;\r\n scrollRef.current.scrollIntoView({ behavior: 'smooth', inline: 'center' });\r\n }, [urls, index]);\r\n return React.createElement(\"div\", { className: classes.thumbs }, urls.map((x, i) => React.createElement(\"div\", { key: i, className: `${classes.thumb} ${i == index ? classes.thumbActive : ''}`, ref: ref => index == i ? scrollRef.current = ref : 0 },\r\n React.createElement(\"img\", { src: x, onClick: () => index != i ? onChange(i) : 0 }))));\r\n}\r\nexport default function Lightbox(props) {\r\n var _a;\r\n const classes = useStyles();\r\n const [imageIndex, setImageIndex] = useState((_a = props.initialIndex) !== null && _a !== void 0 ? _a : 0);\r\n const handleBackButtonClick = useCallback(() => {\r\n setImageIndex((x) => x - 1 >= 0 ? x - 1 : props.images.length - 1);\r\n }, []);\r\n const handleForwardButtonClick = useCallback(() => {\r\n setImageIndex((x) => x + 1 < props.images.length ? x + 1 : 0);\r\n }, [props.images]);\r\n return React.createElement(Portal, { container: document.body },\r\n React.createElement(Backdrop, { open: props.open, className: classes.backdrop },\r\n React.createElement(\"div\", { className: classes.root },\r\n React.createElement(\"div\", { className: classes.viewport }, imageIndex < props.images.length\r\n ? React.createElement(\"img\", { src: props.images[imageIndex].urls.original, className: classes.image, onClick: handleForwardButtonClick })\r\n : null),\r\n React.createElement(\"div\", { className: `${classes.movementButton} ${classes.backButton}` },\r\n React.createElement(Button, { color: \"inherit\", onClick: handleBackButtonClick },\r\n React.createElement(BackIcon, { fontSize: \"large\" }))),\r\n React.createElement(\"div\", { className: `${classes.movementButton} ${classes.forwardButton}` },\r\n React.createElement(Button, { color: \"inherit\", onClick: handleForwardButtonClick },\r\n React.createElement(ForwardIcon, { fontSize: \"large\" }))),\r\n React.createElement(Thumbnails, { urls: props.images.map(x => x.urls.thumbnail), index: imageIndex, onChange: i => setImageIndex(i) })),\r\n React.createElement(\"div\", { className: classes.closeButton },\r\n React.createElement(IconButton, { color: \"inherit\", onClick: props.onClose },\r\n React.createElement(Close, { fontSize: \"large\" }))),\r\n React.createElement(\"div\", { className: classes.description },\r\n React.createElement(\"span\", null, props.images[imageIndex].description))));\r\n}\r\n","var __rest = (this && this.__rest) || function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n};\r\nimport { toURLSearchParams } from \"utils\";\r\nexport function makeSearchQueryFromURLParams(query) {\r\n const searchParams = new URLSearchParams(query);\r\n const queryObj = [...searchParams.keys()].reduce((acc, x) => {\r\n const values = searchParams.getAll(x);\r\n acc[x.toLowerCase()] = values.length > 1 ? values : values[0];\r\n return acc;\r\n }, {});\r\n const page = parseInt(queryObj['page']) || 0;\r\n delete queryObj['page'];\r\n return [queryObj, page];\r\n}\r\nexport function makeSearchId(query, page) {\r\n const { page: _ } = query, queryBlob = __rest(query, [\"page\"]);\r\n const searchParams = toURLSearchParams(queryBlob);\r\n searchParams.set('page', page + '');\r\n return searchParams.toString();\r\n}\r\nexport function mapExtrasToJsonCompatibility(extras) {\r\n return Object.keys(extras).filter(key => { var _a; return !!((_a = extras[key]) === null || _a === void 0 ? void 0 : _a.length); }).map(key => ({ key, value: extras[key] }));\r\n}\r\nexport function getExtraKey(e) {\r\n return e.groupByPackage ? `${e.packageId}-${e.day}` : e.compositeId;\r\n}\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t107: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkApp\"] = self[\"webpackChunkApp\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7855,874,5291,6773,9803,8042,4448,5993,279,2697,9356,1276,7980,2481,5498,1249,3268,5246,5156,2320,8648,2617,4164], function() { return __webpack_require__(69131); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","sanitizeProps","props","timeout","undefined","children","index","strictIndexing","autoPlay","interval","navButtonsAlwaysInvisible","navButtonsAlwaysVisible","fullHeightHover","onChange","changeOnFirstRender","next","prev","className","Carousel","Component","constructor","super","autoBind","this","state","active","prevActive","displayed","timer","componentDidMount","setActive","start","componentWillUnmount","stop","componentDidUpdate","prevProps","prevState","reset","length","clearInterval","setInterval","callback","arguments","runCallbacks","Array","isArray","setState","setTimeout","event","nextActive","stopPropagation","render","classes","buttonCssClassValue","button","buttonVisible","buttonHidden","fullHeightHoverButton","buttonWrapperCssClassValue","buttonWrapper","fullHeightHoverWrapper","compareActiveDisplayed","React","root","onMouseEnter","onMouseOut","map","child","CarouselItem","key","display","isNext","IconButton","onClick","size","NavigateNextIcon","fontSize","NavigateBeforeIcon","swipeHandlers","useSwipeable","onSwipedLeft","onSwipedRight","_extends","Slide","direction","in","withStyles","position","overflow","color","height","backgroundColor","top","opacity","margin","transition","cursor","right","left","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","e","rejected","result","done","then","apply","TourSearchStoreActions","search","page","getState","loading","searchId","searchQuery","errors","Object","assign","newState","searchResult","pageCount","searchURLParams","query","dispatch","genTourDetailsUrl","variantId","accmmdId","tourName","hash","_a","_b","_c","totalCount","searchCountry","searchLocation","tourId","parseInt","split","book","tourVariantId","accmdVariantIds","replaceExistingTour","options","booking","bookingErrors","externalFlight","extras","onError","onSuccess","window","location","href","TourSearchStore","create","name","initialState","loadingTourDetails","actions","useTourSearchStore","g_search_store_hydrated","Container","onInit","init","type","URL","document","documentURI","g_desription_store_hydrated","CreateTourDescriptionContainer","store","_d","_e","_f","flightConfiguration","description","hotelServices","tourServices","filter","x","currentAccommodationVariants","hasAccommodation","hotel","accommodation","hotelDescription","externalHotelPrice","viewConfig","loaded","tourDescription","price","priceItem","servicesHash","externalFlightId","aviacenterServices","externalId","externalFlightProviderId","externalProviderId","tourEvents","tourVariant","hidePrices","checkInDate","excursion","s","service","_g","id","exc","prices","vehicleTypeId","find","currentVehicleTypeId","excursionPrice","TourDescriptionStore","useStyles","makeStyles","theme","textAlign","marginBottom","img","NoSearchResults","Box","SearchOutlined","Typography","variant","component","_T","TOUR_NO_RESULTS","Link","TOUR_NO_RESULTS_SUBTEXT","TabTitle","title","subtitle","Tab","label","disableRipple","scrollButtons","Tabs","hotelscol","availcol","accmdcol","pricecol","mealcol","actionscol","AccomodationVariantList","Table","TableHead","TableRow","TableCell","COMMON_HOTEL","COMMON_AVAILABILITY","COMMON_ACCOMMODATION","COMMON_MEAL","COMMON_PRICE","TableBody","alignItems","text","marginLeft","spacing","ref","icon","TourVariantPrice","useTheme","useMemo","url","genUrl","accomodationVariants","v","handleAddToCart","useCallback","i","hotelName","toDateString","duration","orderAvailability","CheckCircleOutlined","style","palette","success","main","TOUR_AVAILABLE","ContactSupportOutlined","warning","TOUR_ONREQUEST","roomCategoryName","roomTypeName","mealTypeName","rowSpan","currency","tour","align","Button","startIcon","ShoppingCartOutlined","COMMON_BUY","to","VisibilityOutlined","COMMON_VIEW","useAccomodationTableStyles","width","AccommodationSelector","currentVariantId","setCurrentVariantId","useState","cheapest","item","findCheapestTourVariant","variants","sort","a","ad","b","bd","priceVariants","mapToSimpleTourVariants","currentVariant","accmdClasses","_event","isoDate","date","Date","day","getUTCDate","month","getUTCMonth","dd","toString","padStart","mm","language","formatUtcDDMM","minPrice","COMMON_FROM","accmdVariants","DateSelector","format","cardImageWidth","cardImageHeight","card","cardMain","padding","flex","cardActions","flexFlow","cardCollapse","borderRadius","shape","feature","borderBottom","secondary","light","paddingBottom","featureWarn","borderColor","featureGood","group","TourSummary","dateStart","tourStart","dateEnd","clone","add","Math","max","tourDuration","tourDurationText","Grid","container","wrap","xs","Tooltip","_F","arrow","CalendarTodayOutlined","accmmd","immediateConfirm","TOUR_AVAILABILITY_AVAILABLE_LONG","TOUR_AVAILABILITY_ONREQUEST_LONG","HotelOutlined","RestaurantRounded","TourTitle","gutterBottom","TourLocation","countryName","cityName","TourActions","tourUrl","COMMON_PRICE_FROM","mb","fullWidth","TourSearchResultCard","isOpen","setIsOpen","cheapestVariant","cheapestPriceItem","Error","console","error","cheapestAccmdIds","Paper","elevation","images","animation","src","urls","thumbnail","alt","md","typeName","p1","p2","cheapestAccmd","directionName","mt","Divider","endIcon","ExpandLess","ExpandMore","TOUR_SHOW_MORE_DATES","Collapse","mountOnEnter","unmountOnExit","TOUR_AVAILABLE_DATES","TourSearchResultCardSkeleton","Skeleton","TourSearchResultItem","pathname","searchStr","historyState","backdrop","useContext","handlePurchase","accmdVariant","show","setReplaceCartTourDialogPrice","hide","encodeURIComponent","replaceCartTourDialogPrice","open","onClose","onCancel","onApprove","p","TourSearchResultList","items","scrollAnchorRef","spinner","renderPaginationItem","PaginationItem","havePagination","pagination","Pagination","renderItem","count","disabled","useLayoutEffect","TourSearchResultsHeader","Alert","severity","AlertTitle","COMMON_ERROR","tours","justifyContent","fill","_","my","rect","current","getBoundingClientRect","scrollTo","y","scrollY","behavior","warn","TourSearchResultsContainer","useEffect","defaults","devtools","searchState","descState","BackdropProvider","GlobalSpinnerProvider","ErrorBoundary","ThemeProvider","maxSnack","anchorOrigin","vertical","horizontal","domRoot","body","containerRoot","M","utils","path","isGlobal","TourDescription","T","isFrame","setupTourSearch","TourSearchRoot","getElementById","setupTourDescription","fetchExcursionPrice","dateIso","adultCount","childAges","q","response","parseSearchResult","resp","from","fromTourItemDto","rawItem","accomodations","searchTours","fetchTourDetails","params","accmmdVariantId","hotelId","excursions","flightId","providerId","fetchTourDetailsFromCart","fetchExternalFlight","aviacenterProviderId","aviacenterFlightId","fetchAdditionalFlights","fetchTourVariant","currentHash","fetchTourAvailabilityApprox","monthIso","fetchAccommodations","hotelIndex","fetchHotelRecommendationsNew","addTourToCart","accomodationIds","flightProviderId","best","TouristPickerCategory","onAdd","onRemove","countBtn","TouristPicker","handleChildAgeChange","childIndex","ages","target","categories","COMMON_ADULTS","COMMON_CHILDREN","slice","COMMON_CHILD_AGE","bind","Number","CHILD_MAX_AGE","age","TouristPickerDialog","setAdultCount","setChildAges","handleClose","COMMON_CHANGE_TOURISTS","dialog","COMMON_ACTION_CANCEL","join","COMMON_ACTION_APPLY","marginRight","borderless","border","TouristPickerTextField","adultsPlural","childrenPlural","rootClasses","COMMON_TOURISTS","InputLabelProps","labelProps","InputProps","startAdornment","readOnly","masqueradeAsSelect","required","helperText","errorText","TouristPickerTextFieldBase","pluralizeAutoSplit","pattern","word","two","five","mod100","pluralize","formatMoney","isNaN","sign","toUpperCase","localeAware","Intl","NumberFormat","minimumFractionDigits","precision","maximumFractionDigits","toFixed","appUrl","searchParams","startsWith","baseUrl","appBase","endsWith","replace","keys","urlSearchParams","toURLSearchParams","indexOf","obj","URLSearchParams","toURLSearchParamsInner","prefix","k","entries","arrayVal","append","removeEmptyFields","removableValues","NaN","fromEntries","r","TpLabel","focused","TpFormControl","verticalAlign","TpInput","input","TpMenuItem","selected","gutters","TpArrowIcon","viewBox","xmlns","d","snackbar","setOpen","showDropdownContent","setShowDropdownContent","dropdownDelay","anchorRef","menuRef","getOptionValue","o","valueSelector","getOptionText","textSelector","getDisabledState","disabledSelector","contains","setSelected","multiselect","searchText","setSearchText","searchOpen","setSearchOpen","toLowerCase","includes","findIndex","newSelected","valueLabel","valueLabelFormat","anyLabel","COMMON_ANY_MALE","f","searchRef","useRef","prevOpen","focus","MultiSelectMenu","autoFocusItem","onKeyDown","preventDefault","maxHeight","heightPx","overflowY","optionSelector","dense","maxSelected","maxSelectedAlertText","enqueueSnackbar","autoHideDuration","checked","edge","tabIndex","primary","multiline","boxProps","searchable","formControlClasses","inputClasses","inputRef","placeholder","endAdornment","onInput","caretColor","res","anchorEl","role","zIndex","clientWidth","TransitionProps","placement","transformOrigin","marginTop","onClickAway","startDate","endDate","setDates","dates","toDate","setErrors","isSame","hideLabelWhenNotSelected","COMMON_SELECT_DATES","validationCallback","validationResult","S","range","showOtherDays","weekStartDayIndex","locale","mapDays","validDates","minDate","highlightToday","numberOfMonths","dateLimit","diff","dateLimitAlertText","AsyncSpinner","__rest","t","prototype","hasOwnProperty","call","getOwnPropertySymbols","propertyIsEnumerable","objectFit","grid","tile","imgTile","bottom","pointerEvents","background","content","Tile","tileProps","handleClick","SmallGrid","unboundImages","gridProps","cols","large","rows","MediumGrid","colWidth","cellHeight","ImageGrid","minHeight","closeButton","movementButton","forwardButton","backButton","viewport","image","imageContainer","thumbs","thumb","thumbActive","maxWidth","Thumbnails","scrollRef","scrollIntoView","inline","Lightbox","imageIndex","setImageIndex","initialIndex","handleBackButtonClick","handleForwardButtonClick","original","makeSearchQueryFromURLParams","queryObj","reduce","acc","values","getAll","makeSearchId","queryBlob","set","mapExtrasToJsonCompatibility","getExtraKey","groupByPackage","packageId","compositeId","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","m","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","j","every","splice","n","getter","__esModule","definition","defineProperty","enumerable","get","g","globalThis","Function","hmd","prop","Symbol","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","scripts","getElementsByTagName","baseURI","self","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","push","nc","__webpack_exports__"],"sourceRoot":""}