{"version":3,"file":"4164.59f0cad5fa6e0e3f7794.js","mappings":"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","sources":["webpack://App/./Client/include/network/utils.js","webpack://App/./Client/include/react-components/Carousel/index.js","webpack://App/./Client/include/appI18n.ts","webpack://App/./Client/include/appSettings.ts","webpack://App/./Client/include/react-components/AvailabilityDatePicker.tsx","webpack://App/./Client/include/react-components/BootstrapInput.tsx","webpack://App/./Client/include/react-components/Cost.tsx","webpack://App/./Client/include/react-components/HorizontalScrollableBox.tsx","webpack://App/./Client/include/react-components/Select/Select.tsx","webpack://App/./Client/include/react-components/TextField/TextField.tsx","webpack://App/./Client/include/react-components/TouristPicker/styles.ts","webpack://App/./Client/src/Frame/types/Frame.ts","webpack://App/./Client/src/NewTourSearch/compoments/MultiSelectList.tsx","webpack://App/./Client/src/NewTourSearch/compoments/TourSearch.tsx","webpack://App/./Client/src/NewTourSearch/compoments/tp/TpButton.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/AsyncLoadError.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/FlightVariants/FlightAltVariant.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/FlightVariants/FlightInfoCompact.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/FlightVariants/FlightResultCard.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/HotelLocation.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/LightboxImageGrid.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/LightboxThumbnail.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/DescriptionMenu.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/ExcursionDescription.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/OtherServices/styles.ts","webpack://App/./Client/src/TourSearch/components/TourDescription/OtherServices/ExtraServiceDescription.tsx","webpack://App/./Client/include/react-components/Rating/Rating.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/HotelDescription.tsx","webpack://App/./Client/include/react-components/HorizontalList.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/HotelRecommendations/HotelRecommendations.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/HotelRecommendations/HotelRecommendationsContainer.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/HotelRoomVariants/HotelRoomFilters.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/FlightVariants/FlightVariants.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/Extras/ExtrasDialog.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/Extras/ExtrasContainer.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/HotelRoomVariants/HotelRoomVariants.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/HotelRoomVariants/HotelRoomVariantsContainer.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/Section.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/TourProgram.tsx","webpack://App/./Client/include/inlineLogin.js","webpack://App/./Client/include/network/network-old.js","webpack://App/./Client/include/react-components/LoginToSeePricesButton.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/TourSidebar.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/OtherServices/TransferDescription.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/TourGeneralInfo.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/TourDescription.tsx","webpack://App/./Client/src/TourSearch/components/TourDescription/TourDescriptionContainer.tsx","webpack://App/./Client/src/TourSearch/components/TourSearchResults/TourSearchResultsHeader.tsx","webpack://App/./Client/src/TourSearch/store/TourDescriptionStore.tsx","webpack://App/./Client/src/TourSearch/tour-urlgen.ts"],"sourcesContent":["// Проверка того, что сервер вернул страницу входа. \"Грязный хак\", зато просто.\nfunction checkSessionEnd(p) {\n if (p && typeof p == \"string\") {\n if (p.match(/ {\r\n let result = _T[resource];\r\n if (!result || !args || args.length == 0)\r\n return result || '';\r\n return args.reduce((acc, x, i) => acc.replace(`{${i}}`, `${x}`), result);\r\n};\r\n/**\r\n * Склоняет количество дней и возвращает полученную строку (без количества дней).\r\n */\r\nexport function pluralizeDays(n) {\r\n return pluralizeAutoSplit(n, _T.COMMON_DAYS);\r\n}\r\nexport function pluralizeHours(n) {\r\n return pluralizeAutoSplit(n, _T.COMMON_HOURS);\r\n}\r\nexport function pluralizePersons(n) {\r\n return pluralizeAutoSplit(n, _T.COMMON_PERSONS);\r\n}\r\n/**\r\n * Склоняет локализованную строку и возвращает результат. Результат не содержит количество.\r\n */\r\nexport function pluralizeI18n(type, n) {\r\n let resource = null;\r\n switch (type) {\r\n case 'days':\r\n resource = _T.COMMON_DAYS;\r\n break;\r\n case 'adults':\r\n resource = _T.COMMON_PLURAL_ADULTS;\r\n break;\r\n case 'children':\r\n resource = _T.COMMON_PLURAL_CHILDREN;\r\n break;\r\n }\r\n if (!resource)\r\n return '';\r\n return pluralizeAutoSplit(n, resource);\r\n}\r\nexport function formatString(format, args) {\r\n if (!args)\r\n return format;\r\n let str = format;\r\n for (let i = 0; i < args.length; i++) {\r\n str = str.replaceAll(`{${i}}`, args[i]);\r\n }\r\n return str;\r\n}\r\n","export default function appSettings() {\r\n return window._APP_SETTINGS;\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 React, { useCallback, useRef, useState } from 'react';\r\nimport moment from 'moment';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport CalendarIcon from '@material-ui/icons/CalendarToday';\r\nimport InputAdornment from '@material-ui/core/InputAdornment';\r\nimport { DatePicker } from '@material-ui/pickers';\r\nimport TextField from './TextField';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { _ParentFrame } from '../../src/Frame/types/Frame';\r\nimport Select from './Select';\r\nimport { _T } from '../appI18n';\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n position: 'relative',\r\n display: 'inline-block',\r\n },\r\n adornment: {\r\n position: 'absolute',\r\n right: 0,\r\n top: 0,\r\n bottom: 0,\r\n left: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n paddingRight: theme.spacing(1),\r\n pointerEvents: 'none',\r\n },\r\n inputBorderless: {\r\n '& .MuiInputBase-root': {\r\n border: 0,\r\n borderRadius: 0,\r\n },\r\n },\r\n fullWidth: { width: '100%' },\r\n toolbar: {\r\n background: theme.palette.primary.main,\r\n // FIXME: hardcoded color.\r\n color: '#ffe5dd',\r\n padding: `${theme.spacing(3)}px ${theme.spacing(2)}px`,\r\n },\r\n toolbarTitle: {\r\n // FIXME: hardcoded color.\r\n color: '#ffc8b5',\r\n fontSize: '1.1rem',\r\n },\r\n durationSelector: {\r\n marginTop: theme.spacing(2),\r\n },\r\n}));\r\nfunction convertTourAvailabilitiesToAvailabilityMap(availabilities) {\r\n return availabilities.reduce((acc, x) => {\r\n const date = moment(x.checkInDate).format('YYYY-MM-DD');\r\n const month = date.substr(0, 7);\r\n const target = !(month in acc) ? (acc[month] = {}) : acc[month];\r\n target[date] = x;\r\n return acc;\r\n }, {});\r\n}\r\nexport function TourAvailabilityDatePicker(props) {\r\n return AvailabilityDatePicker(props);\r\n}\r\nconst AvailabilityDatePicker = React.forwardRef((props, ref) => {\r\n var _a;\r\n const [status, setStatus] = useState('none');\r\n const [availabilityDates, setAvailabilityDates] = useState({});\r\n const [availabilityDurations, setAvailabilityDurations] = useState([]);\r\n const [open, setOpen] = useState(false);\r\n const [tempDuration, setTempDuration] = useState(props.duration);\r\n const classes = useStyles();\r\n const renderInput = useCallback((params) => {\r\n var _a, _b, _c;\r\n return React.createElement(TextField, { label: props.fieldLabel, masqueradeAsSelect: true, className: `${((_a = props.inputProps) === null || _a === void 0 ? void 0 : _a.borderless) ? classes.inputBorderless : ''} ${((_b = props.classes) === null || _b === void 0 ? void 0 : _b.input) || ''}`, value: params.value, disabled: params.disabled, onClick: params.onClick, ref: params.inputRef, fullWidth: true, inputProps: { readOnly: true }, InputLabelProps: { className: `${((_c = props.labelProps) === null || _c === void 0 ? void 0 : _c.className) || ''}` }, InputProps: {\r\n startAdornment: React.createElement(InputAdornment, { position: \"start\" },\r\n React.createElement(CalendarIcon, null)),\r\n } });\r\n }, [props.fieldLabel]);\r\n const dialogRef = useRef(null);\r\n const durationRef = useRef(null);\r\n const renderToolbar = ({ date }) => {\r\n var _a, _b;\r\n return React.createElement(\"div\", { className: classes.toolbar },\r\n React.createElement(\"div\", { className: classes.toolbarTitle }, props.calendarLabel),\r\n React.createElement(Typography, { variant: \"h4\", component: \"div\" }, date === null || date === void 0 ? void 0 : date.format('LL')),\r\n props.withDuration ?\r\n React.createElement(Select, { label: _T.COMMON_NIGHTS, value: tempDuration, fullWidth: true, onChange: (e) => setTempDuration(Number.parseInt(e.target.value)), color: \"primary\", ref: durationRef, formControlClassName: classes.durationSelector }, (_b = ((_a = availabilityDurations.find(d => d.checkInDate == props.date)) !== null && _a !== void 0 ? _a : availabilityDurations[0])) === null || _b === void 0 ? void 0 : _b.durations.map(d => React.createElement(\"option\", { value: d, key: d }, d))) : null);\r\n };\r\n const loadAvailability = (monthIso) => __awaiter(void 0, void 0, void 0, function* () {\r\n setStatus('loading');\r\n try {\r\n const availabilities = yield props.onAvailabilityRequested(monthIso);\r\n if (availabilities.length) {\r\n setAvailabilityDates(Object.assign(Object.assign({}, availabilityDates), convertTourAvailabilitiesToAvailabilityMap(availabilities)));\r\n if (props.withDuration && availabilities.length && 'durations' in availabilities[0]) {\r\n setAvailabilityDurations(availabilities.map(d => ({ checkInDate: moment(d.checkInDate).format('YYYY-MM-DD'), durations: d.durations })));\r\n }\r\n }\r\n else {\r\n setAvailabilityDates(Object.assign(Object.assign({}, availabilityDates), { [monthIso]: {} }));\r\n }\r\n }\r\n finally {\r\n setStatus('ready');\r\n }\r\n });\r\n const handleOpen = () => {\r\n if (status == 'ready') {\r\n const parentFrame = _ParentFrame();\r\n if (props.isFrame && parentFrame) {\r\n parentFrame.sendMessage({ message: 'open-modal', });\r\n }\r\n setOpen(true);\r\n return;\r\n }\r\n if (status == 'loading')\r\n return;\r\n const month = (props.date || moment().format('YYYY-MM')).substr(0, 7);\r\n loadAvailability(month).then(() => {\r\n const parentFrame = _ParentFrame();\r\n if (props.isFrame && parentFrame) {\r\n parentFrame.sendMessage({ message: 'open-modal', });\r\n }\r\n setOpen(true);\r\n });\r\n };\r\n const handleClose = () => {\r\n setOpen(false);\r\n const parentFrame = _ParentFrame();\r\n if (props.isFrame && parentFrame) {\r\n parentFrame.sendMessage({ message: 'close-modal', });\r\n }\r\n };\r\n const handleDateChange = (date) => {\r\n if (!date)\r\n throw new Error('Unexpected null date');\r\n props.onChange(date.format('YYYY-MM-DD'), props.withDuration ? (tempDuration !== null && tempDuration !== void 0 ? tempDuration : availabilityDurations[0].durations[0]) : undefined);\r\n };\r\n const handleMonthChange = (date) => __awaiter(void 0, void 0, void 0, function* () {\r\n if (!date)\r\n throw new Error('Unexpected null date');\r\n const monthIso = date.format('YYYY-MM');\r\n if (monthIso in availabilityDates)\r\n return;\r\n yield loadAvailability(monthIso);\r\n });\r\n const shouldDisableDate = (date) => {\r\n if (!date)\r\n return true;\r\n const dateIso = date === null || date === void 0 ? void 0 : date.format('YYYY-MM-DD');\r\n const month = availabilityDates[dateIso.substr(0, 7)];\r\n const isAvail = (month && !!month[dateIso]) || (props.date && dateIso == props.date);\r\n return !isAvail;\r\n };\r\n return (React.createElement(\"div\", { className: `${props.className || ''} ${classes.root} ${props.fullWidth ? classes.fullWidth : ''}`, ref: ref },\r\n React.createElement(DatePicker, { autoOk: !props.withDuration, inputVariant: \"outlined\", disabled: !!props.disabled, format: \"LL\", maxDate: props.maxDate, shouldDisableDate: shouldDisableDate, disablePast: true, value: props.date, labelFunc: props.labelFunc, onChange: handleDateChange, onMonthChange: handleMonthChange, open: open, onOpen: handleOpen, onClose: handleClose, ToolbarComponent: (_a = props.ToolbarComponent) !== null && _a !== void 0 ? _a : renderToolbar, TextFieldComponent: renderInput, PopoverProps: {\r\n anchorOrigin: { horizontal: \"left\", vertical: \"bottom\" },\r\n transformOrigin: { horizontal: \"left\", vertical: \"top\" },\r\n }, DialogProps: {\r\n style: props.isFrame ? {\r\n height: 'fit-content'\r\n } : undefined, ref: dialogRef\r\n } }),\r\n React.createElement(\"div\", { className: classes.adornment }, status == 'loading'\r\n ? React.createElement(CircularProgress, { size: 16 })\r\n : props.adornment)));\r\n});\r\nexport default AvailabilityDatePicker;\r\n","import { createStyles, InputBase, withStyles } from '@material-ui/core';\r\nexport const BootstrapInput = withStyles((theme) => createStyles({\r\n input: {\r\n borderRadius: 4,\r\n position: 'relative',\r\n backgroundColor: theme.palette.background.paper,\r\n border: '1px solid #ced4da',\r\n padding: '27px 12px 10px',\r\n paddingRight: '48px !important',\r\n transition: theme.transitions.create(['border-color', 'box-shadow']),\r\n cursor: 'pointer',\r\n '&:focus, &:hover, &.MuiInputBase-inputAdornedEnd:focus ~ *, &.MuiInputBase-inputAdornedEnd:hover ~ *, &.MuiInputBase-inputAdornedEnd ~ *:focus, &.MuiInputBase-inputAdornedEnd ~ *:hover, * ~ &.MuiInputBase-inputAdornedEnd:focus, * ~ &.MuiInputBase-inputAdornedEnd:hover': {\r\n backgroundColor: theme.palette.background.paper,\r\n borderColor: theme.palette.primary.main,\r\n transition: 0,\r\n },\r\n '&.Mui-error, &.MuiInputBase-inputAdornedEnd.Mui-error ~ *': {\r\n borderColor: theme.palette.error.main,\r\n },\r\n '.Mui-error &, .Mui-error &.MuiInputBase-inputAdornedEnd ~ *': {\r\n borderColor: theme.palette.error.main,\r\n },\r\n '&.MuiInputBase-inputAdornedEnd': {\r\n backgroundColor: theme.palette.background.paper,\r\n borderRight: 'none',\r\n borderTopRightRadius: 0,\r\n borderBottomRightRadius: 0,\r\n },\r\n '&.MuiInputBase-inputAdornedEnd ~ *': {\r\n backgroundColor: theme.palette.background.paper,\r\n border: '1px solid #ced4da',\r\n borderLeft: 'none',\r\n borderTopLeftRadius: 0,\r\n borderBottomLeftRadius: 0,\r\n borderTopRightRadius: 4,\r\n borderBottomRightRadius: 4,\r\n height: '100%',\r\n },\r\n '&:disabled, &:disabled ~ *': {\r\n backgroundColor: `${theme.palette.grey[\"300\"]} !important`,\r\n },\r\n '#flight-search-filters &:disabled, #flight-search-filters &:disabled ~ *': {\r\n backgroundColor: `${theme.palette.common.white} !important`,\r\n color: theme.palette.common.black,\r\n }\r\n },\r\n}))(InputBase);\r\n","import React from 'react';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { formatMoney } from '../utils';\r\n/**\r\n * Компонент отображающий стоимость и ее валюту.\r\n */\r\nexport default function Cost(props) {\r\n return React.createElement(Typography, { variant: props.amountVariant || \"inherit\", component: props.component || \"div\" },\r\n formatMoney(props.amount, { localeAware: true, currency: props.currency }),\r\n \" \",\r\n React.createElement(Typography, { variant: props.currencyVariant || \"inherit\", component: \"span\" }, props.currency)) || null;\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 * as React from 'react';\r\nexport const HorizontalScrollableBox = React.forwardRef((_a, ref) => {\r\n var _b, _c;\r\n var { children } = _a, props = __rest(_a, [\"children\"]);\r\n const containerRef = React.createRef();\r\n const topRef = React.createRef();\r\n //const viewRef = React.createRef();\r\n const viewRef = React.useMemo(() => ref, [ref]);\r\n const bottomRef = React.createRef();\r\n const scroll = (e) => {\r\n var _a;\r\n let target = e.currentTarget;\r\n if (!target)\r\n return;\r\n if (viewRef === null || viewRef === void 0 ? void 0 : viewRef.current)\r\n viewRef.current.scrollLeft = target.scrollLeft;\r\n if (topRef === null || topRef === void 0 ? void 0 : topRef.current)\r\n topRef.current.scrollLeft = target.scrollLeft;\r\n if (bottomRef === null || bottomRef === void 0 ? void 0 : bottomRef.current)\r\n bottomRef.current.scrollLeft = target.scrollLeft;\r\n let sticky = (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.getElementsByClassName('stickyTable')[0];\r\n if (sticky)\r\n sticky.scrollLeft = target.scrollLeft;\r\n };\r\n //React.useEffect(() => {\r\n // if (!containerRef?.current)\r\n // return;\r\n // for (let i = 0; i < containerRef.current.children.length; i++) {\r\n // let e = containerRef.current.children[i] as HTMLElement\r\n // if (e === topRef?.current || e === viewRef?.current || e === bottomRef?.current)\r\n // continue;\r\n // e.removeEventListener('scroll', scroll)\r\n // e.addEventListener('scroll', scroll)\r\n // }\r\n //}, [containerRef?.current?.children?.length, topRef?.current, viewRef?.current, bottomRef?.current])\r\n //React.useEffect(() => {\r\n // if (!containerRef.current)\r\n // return;\r\n // //containerRef.current.addEventListener('scroll', scroll)\r\n // //window.addEventListener('scroll', scroll)\r\n //}, [containerRef.current])\r\n React.useEffect(() => {\r\n if (props.onLoad)\r\n props.onLoad(scroll);\r\n }, []);\r\n return (React.createElement(\"div\", { ref: containerRef, onLoad: () => {\r\n if (props.onLoad)\r\n props.onLoad(scroll);\r\n } },\r\n props.topVisible === false ? null : React.createElement(\"div\", { className: \"wmd-view-topscroll\", ref: topRef, onScroll: scroll },\r\n React.createElement(\"div\", { className: \"scroll-div\", style: { width: (_b = viewRef === null || viewRef === void 0 ? void 0 : viewRef.current) === null || _b === void 0 ? void 0 : _b.scrollWidth } }, \"\\u00A0\")),\r\n React.createElement(\"div\", { className: \"wmd-view\", ref: viewRef, onScroll: scroll },\r\n React.createElement(\"div\", { className: \"dynamic-div\" }, children({ scroll }))),\r\n props.bottomVisible === false ? null : React.createElement(\"div\", { className: \"wmd-view-bottomscroll\", ref: bottomRef, onScroll: scroll },\r\n React.createElement(\"div\", { className: \"scroll-div\", style: { width: (_c = viewRef === null || viewRef === void 0 ? void 0 : viewRef.current) === null || _c === void 0 ? void 0 : _c.scrollWidth } }, \"\\u00A0\"))));\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 { FormHelperText } from '@material-ui/core';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport NativeSelect from '@material-ui/core/NativeSelect';\r\nimport makeStyles from '@material-ui/core/styles/makeStyles';\r\nimport ExpandMore from '@material-ui/icons/ExpandMore';\r\nimport React from 'react';\r\nimport { BootstrapInput } from 'react-components/BootstrapInput';\r\nconst useIconStyles = makeStyles((theme) => ({\r\n root: {\r\n marginTop: 2,\r\n marginRight: 5,\r\n color: theme.palette.primary.main\r\n }\r\n}));\r\nconst iconComponent = (props) => {\r\n const classes = useIconStyles();\r\n return React.createElement(ExpandMore, Object.assign({}, Object.assign(Object.assign({}, props), { className: `${props.className} ${classes.root}` })));\r\n};\r\nexport default React.forwardRef((props, ref) => {\r\n var _a, _b, _c;\r\n const { label, fullWidth, error, labelClassName } = props, selectProps = __rest(props, [\"label\", \"fullWidth\", \"error\", \"labelClassName\"]);\r\n return (React.createElement(FormControl, { ref: ref, variant: (_a = props.variant) !== null && _a !== void 0 ? _a : 'filled', size: props.size, fullWidth: fullWidth, error: error, className: props.formControlClassName },\r\n React.createElement(InputLabel, { variant: (_b = props.variant) !== null && _b !== void 0 ? _b : 'filled', className: labelClassName }, label),\r\n React.createElement(NativeSelect, Object.assign({ input: React.createElement(BootstrapInput, null), variant: (_c = props.variant) !== null && _c !== void 0 ? _c : 'filled' }, selectProps)),\r\n React.createElement(FormHelperText, { error: error, style: { display: error ? 'unset' : 'none' } }, props.errorText)));\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 from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport TextField from '@material-ui/core/TextField';\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n '& .MuiInputBase-root': {\r\n background: theme.palette.background.paper,\r\n borderRadius: theme.shape.borderRadius,\r\n border: '1px solid #ced4da',\r\n transition: theme.transitions.create(['border-color']),\r\n '&:focus, &:hover': {\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: 4,\r\n borderColor: theme.palette.primary.main,\r\n transition: 0,\r\n },\r\n },\r\n },\r\n selectMasq: {\r\n '& .MuiInputBase-root, & .MuiInputBase-input': {\r\n cursor: 'pointer'\r\n },\r\n },\r\n borderless: {\r\n '& .MuiInputBase-root': {\r\n border: 0,\r\n borderRadius: 0,\r\n },\r\n },\r\n}));\r\nexport default React.forwardRef((props, ref) => {\r\n const classes = useStyles();\r\n const { masqueradeAsSelect, InputProps } = props, textFieldProps = __rest(props, [\"masqueradeAsSelect\", \"InputProps\"]);\r\n const inputProps = Object.assign({ disableUnderline: true }, InputProps || {});\r\n const css = `${props.className || ''} ${classes.root} ` +\r\n ` ${props.masqueradeAsSelect ? classes.selectMasq : ''}` +\r\n ` ${props.borderless ? classes.borderless : ''}`;\r\n return React.createElement(TextField, Object.assign({}, textFieldProps, { ref: ref, variant: \"filled\", className: css, InputProps: inputProps }));\r\n});\r\n","import { makeStyles } from \"@material-ui/core/styles\";\r\nexport default makeStyles(theme => ({\r\n root: {},\r\n dialog: {\r\n width: 350,\r\n },\r\n childAges: {\r\n display: 'grid',\r\n gridTemplateColumns: '1fr',\r\n gap: theme.spacing(0.5),\r\n },\r\n categories: {\r\n marginBottom: theme.spacing(2),\r\n '& > :not(:last-child)': {\r\n marginBottom: theme.spacing(1),\r\n }\r\n },\r\n countBtn: {\r\n border: `1px solid ${theme.palette.grey[200]}`\r\n }\r\n}));\r\n","import { formatString, _T } from '../../../include/appI18n';\r\nexport const _ParentFrame = () => window.parentIFrame;\r\nexport const autocompleteLocalizationProps = {\r\n clearText: _T.AUTOCOMPLETE_CLEAR,\r\n closeText: _T.AUTOCOMPLETE_CLOSE,\r\n getLimitTagsText: (num) => formatString(_T.AUTOCOMPLETE_LIMIT_TAGS, [num]),\r\n loadingText: _T.AUTOCOMPLETE_LOADING,\r\n noOptionsText: _T.AUTOCOMPLETE_NO_OPTIONS,\r\n openText: _T.AUTOCOMPLETE_OPEN,\r\n};\r\nexport const iconClasses = { root: 'MuiSvgIcon-root-widget' };\r\n","import { Checkbox, ClickAwayListener, FormControl, Grow, IconButton, InputLabel, List, ListItem, ListItemIcon, ListItemSecondaryAction, ListItemText, ListSubheader, makeStyles, MenuItem, MenuList, Paper, Popper, TextField } from '@material-ui/core';\r\nimport { ArrowDropDown, Close, Search } from '@material-ui/icons';\r\nimport _ from 'lodash';\r\nimport { useSnackbar } from 'notistack';\r\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\r\nimport { BootstrapInput } from 'react-components/BootstrapInput';\r\nimport { _T } from '../../../include/appI18n';\r\nconst useStyles = makeStyles((theme) => ({\r\n selectList: {\r\n overflow: 'auto',\r\n borderRadius: 4,\r\n background: theme.palette.background.paper,\r\n border: '1px solid #ced4da',\r\n transition: theme.transitions.create(['border-color', 'box-shadow']),\r\n cursor: 'pointer',\r\n '&:focus, &:hover': {\r\n backgroundColor: theme.palette.background.paper,\r\n borderColor: theme.palette.primary.main,\r\n transition: 0,\r\n },\r\n '& .MuiListSubheader-root': {\r\n background: theme.palette.secondary.main,\r\n color: theme.palette.common.white,\r\n marginTop: '-4px',\r\n padding: '4px 16px',\r\n },\r\n },\r\n selectListError: {\r\n borderColor: theme.palette.error.main,\r\n },\r\n selectListDisabled: {\r\n backgroundColor: theme.palette.grey[300],\r\n },\r\n multilineSubheader: {\r\n '& .MuiInput-underline:before, & .MuiInput-underline:hover:not(.Mui-disabled):before': {\r\n borderColor: '#fff',\r\n },\r\n '& .MuiInputBase-input': {\r\n color: '#fff',\r\n },\r\n },\r\n}));\r\nfunction MultiLineSelectList(props) {\r\n var _a;\r\n const classes = useStyles();\r\n const snackbar = useSnackbar();\r\n const [selected, setSelected] = useState(props.selected);\r\n const [searchText, setSearchText] = useState();\r\n const [searchOpen, setSearchOpen] = useState(false);\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 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 setSelected(selected.filter(s => props.options.findIndex(o => getOptionValue(o) == s) >= 0));\r\n }, [props.options, props.valueSelector]);\r\n useEffect(() => {\r\n if (props.onChange && !_.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 const listClass = useMemo(() => `${classes.selectList}${props.error ? ` ${classes.selectListError}` : ''}${props.disabled ? ` ${classes.selectListDisabled}` : ''}`, [props.error, props.disabled]);\r\n return (React.createElement(FormControl, { fullWidth: true, variant: props.variant, className: \"multiselect-wrapper\", error: props.error, disabled: props.disabled },\r\n React.createElement(List, { className: listClass, style: { height: `${(_a = props.heightPx) !== null && _a !== void 0 ? _a : 300}px` }, subheader: !props.title ? undefined : React.createElement(React.Fragment, null, props.title || props.searchable ?\r\n React.createElement(ListSubheader, { className: classes.multilineSubheader }, !props.searchable || !searchOpen ? React.createElement(React.Fragment, null,\r\n React.createElement(ListItemText, { primary: typeof props.title == \"function\" ? props.title(selected) : props.title }),\r\n props.searchable || selected.length ?\r\n React.createElement(ListItemSecondaryAction, null,\r\n props.searchable ? React.createElement(IconButton, { disabled: props.disabled, onClick: () => setSearchOpen(true) },\r\n React.createElement(Search, { htmlColor: \"#fff\" })) : null,\r\n selected.length ? React.createElement(IconButton, { disabled: props.disabled, onClick: () => setSelected([]) },\r\n React.createElement(Close, { htmlColor: \"#fff\" })) : null) : null) : React.createElement(React.Fragment, null,\r\n React.createElement(ListItemText, { primary: React.createElement(TextField, { disabled: props.disabled, value: searchText, onChange: (e) => setSearchText(e.target.value), style: { color: '#fff', width: searchText ? 'calc(100% - 96px)' : 'calc(100% - 48px)' } }) }),\r\n React.createElement(ListItemSecondaryAction, null,\r\n React.createElement(IconButton, { disabled: props.disabled, onClick: () => setSearchOpen(false) },\r\n React.createElement(Search, { htmlColor: \"#fff\" }))))) : null) }, options.map((o, i) => {\r\n let value = getOptionValue(o);\r\n let text = getOptionText(o);\r\n return (React.createElement(\"div\", { key: i, onClick: () => {\r\n if (props.disabled || (props.disableOption && props.disableOption(o)))\r\n return;\r\n const old = [...selected];\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 } },\r\n React.createElement(ListItem, { dense: true, button: true, disabled: props.disabled || (props.disableOption && props.disableOption(o)) },\r\n React.createElement(ListItemIcon, null,\r\n React.createElement(Checkbox, { edge: \"start\", checked: selected.indexOf(value) > -1, tabIndex: -1, disableRipple: true })),\r\n React.createElement(ListItemText, { primary: text }),\r\n props.endAdornment ? React.createElement(ListItemSecondaryAction, null, props.endAdornment(o)) : null)));\r\n }))));\r\n}\r\n;\r\nfunction DropdownSelectList(props) {\r\n var _a;\r\n const snackbar = useSnackbar();\r\n const [open, setOpen] = React.useState(false);\r\n const anchorRef = React.useRef(null);\r\n //const anchorRef = 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 handleToggle = () => {\r\n setOpen((prevOpen) => !prevOpen);\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 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.selected);\r\n const options = useMemo(() => props.options, [props.options]);\r\n useEffect(() => {\r\n if (props.onChange && !open && !_.isEqual(_.orderBy(selected), _.orderBy(props.selected)))\r\n props.onChange(_.orderBy(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.onChange && !open && !_.isEqual(_.orderBy(newSelected), _.orderBy(props.selected)))\r\n props.onChange(_.orderBy(newSelected));\r\n }, [props.options, props.valueSelector]);\r\n const onAllChange = (e) => {\r\n if (e.target.checked && selected.length != options.filter(o => !props.disableOption || !props.disableOption(o)).length)\r\n setSelected(options.filter(o => !props.disableOption || !props.disableOption(o)).map(getOptionValue));\r\n else\r\n setSelected([]);\r\n };\r\n const onAllClick = (e) => {\r\n if (selected.length < options.filter(o => !props.disableOption || !props.disableOption(o)).length)\r\n setSelected(options.filter(o => !props.disableOption || !props.disableOption(o)).map(getOptionValue));\r\n else\r\n setSelected([]);\r\n };\r\n const valueLabel = useMemo(() => selected.length == 0 || selected.length == options.length ? '' : _.orderBy(selected.filter(o => !!o), undefined).map(o => {\r\n let f = options.find(p => getOptionValue(p) == o);\r\n return props.textSelector && f ? typeof props.textSelector == 'function' ? props.textSelector(f) : f[props.textSelector] : f;\r\n }).filter(o => o).join(', '), [selected, options, props.textSelector, props.valueSelector]);\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 return (React.createElement(\"div\", { style: { display: 'flex' }, ref: anchorRef },\r\n React.createElement(FormControl, { fullWidth: true, variant: props.variant, error: props.error, disabled: props.disabled },\r\n React.createElement(InputLabel, { variant: props.variant, classes: {\r\n shrink: props.noShrinkLabel ? 'no-shrink' : undefined,\r\n }, error: props.error }, typeof props.title == \"function\" ? props.title(selected) : props.title),\r\n React.createElement(BootstrapInput, { value: props.valueLabel ? props.valueLabel(selected) : valueLabel, onInput: (e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }, style: { caretColor: 'transparent' }, \"aria-controls\": open ? 'menu-list-grow' : undefined, \"aria-haspopup\": \"true\", onClick: handleToggle, endAdornment: React.createElement(ArrowDropDown, null), error: props.error })),\r\n React.createElement(Popper, { open: open, anchorEl: anchorRef.current, role: undefined, transition: true, disablePortal: true, style: { zIndex: 9999, width: 'fit-content', minWidth: (_a = anchorRef.current) === null || _a === void 0 ? void 0 : _a.clientWidth } }, ({ TransitionProps, placement }) => {\r\n var _a;\r\n return (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(MenuList, { autoFocusItem: open, id: \"menu-list-grow\", onKeyDown: handleListKeyDown, style: { maxHeight: (_a = props.heightPx) !== null && _a !== void 0 ? _a : 300, overflowY: 'auto' } },\r\n !props.maxSelected ?\r\n React.createElement(MenuItem, { dense: true, button: true, onClick: onAllClick },\r\n React.createElement(ListItemIcon, null,\r\n React.createElement(Checkbox, { edge: \"start\", checked: selected.length == options.filter(o => !props.disableOption || !props.disableOption(o)).length, tabIndex: -1, onChange: onAllChange, disableRipple: true })),\r\n React.createElement(ListItemText, { primary: _T.COMMON_ALL })) : null,\r\n options.map((o, i) => {\r\n let value = getOptionValue(o);\r\n let text = getOptionText(o);\r\n return (React.createElement(MenuItem, { dense: true, button: true, key: i, disabled: props.disabled || (props.disableOption && props.disableOption(o)), onClick: (e) => {\r\n if (props.disabled || (props.disableOption && props.disableOption(o)))\r\n return;\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 React.createElement(ListItemIcon, null,\r\n React.createElement(Checkbox, { edge: \"start\", checked: selected.indexOf(value) > -1, tabIndex: -1, disableRipple: true })),\r\n React.createElement(ListItemText, { primary: text }),\r\n props.endAdornment ? React.createElement(ListItemSecondaryAction, null, props.endAdornment(o)) : null));\r\n }))))));\r\n })));\r\n}\r\nexport default function MultiSelectList(props) {\r\n return React.createElement(React.Fragment, null, 'multiline' in props ? React.createElement(MultiLineSelectList, Object.assign({}, props)) : React.createElement(DropdownSelectList, Object.assign({}, props)));\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\nvar __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 { Box, Button, Container, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, FormControlLabel, Grid, Grow, makeStyles, Paper, SvgIcon, Switch, Table, TableBody, TableCell, TableHead, TableRow, Tooltip, Typography, useMediaQuery, useTheme } from '@material-ui/core';\r\nimport { FlightTakeoffOutlined, KingBed, LocalOffer } from '@material-ui/icons';\r\nimport '@wojtekmaj/react-daterange-picker/dist/DateRangePicker.css';\r\nimport _, { range } from 'lodash';\r\nimport moment from 'moment';\r\nimport { SnackbarProvider, useSnackbar } from 'notistack';\r\nimport React, { Fragment, useContext, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { DateRangePickerField } from 'react-components/DateRangePickerField';\r\nimport { useHistory, useLocation } from 'react-router-dom';\r\nimport { addTourToCart, checkTourPrice } from '../../../include/api-ito/ToursApi';\r\nimport { formatString, pluralizeDays, _T } from '../../../include/appI18n';\r\nimport $ from '../../../include/jquery.js';\r\nimport { api } from '../../../include/network/network';\r\nimport { BackdropContext } from '../../../include/react-components/BackdropProvider';\r\nimport { GlobalSpinnerContext } from '../../../include/react-components/GlobalSpinnerProvider';\r\nimport { HorizontalScrollableBox } from '../../../include/react-components/HorizontalScrollableBox';\r\nimport Select from '../../../include/react-components/Select';\r\nimport '../../../include/sticky.table.js';\r\nimport { appUrl, formatMoney, toURLSearchParams } from '../../../include/utils';\r\nimport { tourDetailsUrl } from '../../TourSearch/tour-urlgen';\r\nimport MultiSelectList from './MultiSelectList';\r\nimport './TourSearch.css';\r\nimport { TpDateRangePickerField2, TpDurationSelector, TpLabel, TpRadioButton, TpSelect } from './tp';\r\nconst useStyles = makeStyles(theme => ({\r\n container: {\r\n marginBottom: '136px',\r\n [theme.breakpoints.up(\"lg\")]: {\r\n marginTop: theme.spacing(3),\r\n },\r\n [theme.breakpoints.down(\"lg\")]: {\r\n marginBottom: '224px',\r\n },\r\n '&.tp': {\r\n marginBottom: '0'\r\n }\r\n },\r\n paper: {},\r\n gridFilterFirstSecond: {\r\n width: `calc(100% + ${theme.spacing(2)}px)`,\r\n margin: -theme.spacing(1),\r\n '& > .MuiGrid-item': {\r\n padding: theme.spacing(1),\r\n },\r\n [theme.breakpoints.between(\"xs\", \"sm\")]: {\r\n width: `calc(100% + ${theme.spacing(1)}px)`,\r\n marginLeft: -theme.spacing(0.5),\r\n marginRight: -theme.spacing(0.5),\r\n '& > .MuiGrid-item': {\r\n paddingLeft: theme.spacing(0.5),\r\n paddingRight: theme.spacing(0.5),\r\n },\r\n },\r\n },\r\n rowSM: {\r\n [theme.breakpoints.up('sm')]: {\r\n display: 'none',\r\n },\r\n },\r\n row: {\r\n [theme.breakpoints.down('xs')]: {\r\n display: 'none',\r\n },\r\n },\r\n columnMD: {\r\n [theme.breakpoints.up('md')]: {\r\n display: 'none',\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n display: 'none',\r\n },\r\n },\r\n columnSM: {\r\n [theme.breakpoints.up('sm')]: {\r\n display: 'none',\r\n },\r\n },\r\n column: {\r\n [theme.breakpoints.down('sm')]: {\r\n display: 'none',\r\n },\r\n },\r\n notopborderSM: {\r\n [theme.breakpoints.down('sm')]: {\r\n borderTopStyle: 'none !important',\r\n borderTopWidth: '0 !important',\r\n },\r\n },\r\n priceContainer: {\r\n marginTop: '24px',\r\n [theme.breakpoints.down('sm')]: {\r\n paddingRight: '16px',\r\n },\r\n },\r\n resetButton: {\r\n '& .MuiButton-label': {\r\n borderBottomWidth: '1px',\r\n borderBottomStyle: 'dashed',\r\n borderBottomColor: theme.palette.grey[\"900\"],\r\n },\r\n },\r\n}));\r\nexport default function TourSearch(props) {\r\n var _a, _b, _c;\r\n const snackbar = useSnackbar();\r\n const backdrop = useContext(BackdropContext);\r\n const spinner = useContext(GlobalSpinnerContext);\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const xs = useMediaQuery(theme.breakpoints.down(\"sm\"));\r\n const md = useMediaQuery(theme.breakpoints.down(\"lg\"));\r\n const tpFiltersMainContainer = useRef(null);\r\n const fetchErrorMessage = _T.NEW_TOUR_SEARCH_FETCH_ERROR;\r\n const onFetchErrorMessageClick = () => location.reload();\r\n const history = useHistory();\r\n const { pathname, search: searchStr, state: historyState } = useLocation();\r\n const searchParams = useMemo(() => new URLSearchParams(searchStr), [searchStr]);\r\n const [variant, setVariant] = useState('filled');\r\n const [priceOpt, setPriceOpt] = useState([]);\r\n const [totalPages, setTotalPages] = useState(0);\r\n const [validationCounter, setValidationCounter] = useState(0);\r\n const restoreDates = () => {\r\n let from = moment(searchParams.get('dateFrom'));\r\n let to = moment(searchParams.get('dateTo'));\r\n return from.isValid() && to.isValid() ? [from.format('YYYY-MM-DD'), to.format('YYYY-MM-DD')] : [undefined, undefined];\r\n };\r\n const restoreAges = () => {\r\n let ages = paramIntArray('childAge');\r\n return range(0, props.tourSearchMaxChildCount).map(x => ages.length > x ? ages[x] : props.tourSearchChildAgeDefault);\r\n };\r\n const [{ flightTo, withHotel, promoProgram, cityFrom, countryTo, directionTo, tourTypeTo, cityTo, tourTo, starTo, hotel, dates, night, pansion, adultCount, childCount, childAge, autoReplace }, setFilters_] = useState({\r\n flightTo: !searchParams.get('flightTo') ? props.tourSearchFlightToDefault : searchParams.get('flightTo') == 'true' || searchParams.get('flightTo') == '1',\r\n withHotel: props.tourSearchSplitByIncludingHotel ? undefined : !searchParams.get('withHotel') ? props.tourSearchWithHotelDefault : searchParams.get('withHotel') == 'true' || searchParams.get('withHotel') == '1',\r\n promoProgram: !searchParams.get('promoProgram') ? true : searchParams.get('promoProgram') == 'true' || searchParams.get('promoProgram') == '1',\r\n cityFrom: paramIntOrDefault('cityFrom'),\r\n countryTo: paramIntOrDefault('countryTo'),\r\n directionTo: paramIntArray('directionTo'),\r\n tourTypeTo: paramIntOrDefault('tourTypeTo') || null,\r\n cityTo: paramIntArray('cityTo'),\r\n tourTo: paramIntArray('tourTo'),\r\n starTo: paramIntArray('starTo'),\r\n hotel: paramIntArray('hotelTo'),\r\n dates: restoreDates(),\r\n night: paramIntArray('nightTo'),\r\n pansion: paramIntArray('pansionTo'),\r\n adultCount: (_a = paramIntOrDefault('adultCount', 2)) !== null && _a !== void 0 ? _a : 2,\r\n childCount: (_b = paramIntOrDefault('childCount', 0)) !== null && _b !== void 0 ? _b : 0,\r\n autoReplace: ((_c = paramIntOrDefault('autoReplace', 0)) !== null && _c !== void 0 ? _c : 0) == 1,\r\n childAge: restoreAges(),\r\n });\r\n const setFilters = (p) => {\r\n setFilters_(prev => (Object.assign(Object.assign({}, prev), p)));\r\n };\r\n const [pageIndex, setPageIndex] = useState(0);\r\n const setFlightTo = (value) => setFilters({ flightTo: value });\r\n const setWithHotel = (value) => setFilters({ withHotel: value });\r\n const setPromoProgram = (value) => setFilters({ promoProgram: value });\r\n function paramIntOrDefault(paramName, defaultValue) {\r\n let param = searchParams.get(paramName);\r\n if (!param)\r\n return defaultValue;\r\n let paramInt = Number.parseInt(param);\r\n if (!Number.isInteger(paramInt))\r\n return defaultValue;\r\n return paramInt;\r\n }\r\n function paramIntArray(paramName) {\r\n //let params = searchParams.getAll(paramName) || searchParams.getAll(`${paramName}[]`);\r\n let params = _.filter([...searchParams], x => _.startsWith(x[0], paramName)).map(x => x[1]);\r\n if (!params)\r\n return [];\r\n return params.map(param => Number.parseInt(param)).filter(param => Number.isInteger(param));\r\n }\r\n const setCityFrom = (value) => setFilters({ cityFrom: value });\r\n const [cityFromOpt, setCityFromOpt] = useState([]);\r\n const cityFromReal = useMemo(() => cityFromOpt.find(x => x.id == cityFrom) ? cityFrom : undefined, [cityFromOpt, cityFrom]);\r\n const setCountryTo = (value) => setFilters({ countryTo: value });\r\n const [countryToOpt, setCountryToOpt] = useState([]);\r\n const countryToReal = useMemo(() => countryToOpt.find(x => x.id == countryTo) ? countryTo : undefined, [countryToOpt, countryTo]);\r\n const countryToError = useMemo(() => !countryToReal, [countryToReal && validationCounter > 0, validationCounter]);\r\n const setDirectionTo = (value) => setFilters({ directionTo: value });\r\n const [directionToOpt, setDirectionToOpt] = useState([]);\r\n const directionToReal = useMemo(() => directionTo.filter(c => !!directionToOpt.find(x => x.id == c)), [directionToOpt, directionTo]);\r\n const setTourTypeTo = (value) => setFilters({ tourTypeTo: value });\r\n const [tourTypeToOpt, setTourTypeToOpt] = useState([]);\r\n const tourTypeToReal = useMemo(() => tourTypeToOpt.find(x => x.id == tourTypeTo) ? tourTypeTo : null, [tourTypeToOpt, tourTypeTo]);\r\n const setCityTo = (value) => setFilters({ cityTo: value });\r\n const [cityToOpt, setCityToOpt] = useState([]);\r\n const cityToReal = useMemo(() => cityTo.filter(c => !!cityToOpt.find(x => x.id == c)), [cityToOpt, cityTo]);\r\n const cityToError = useMemo(() => !!props.tourSearchMaxRegionCount && (cityToReal.length > props.tourSearchMaxRegionCount || (cityToOpt.length > props.tourSearchMaxRegionCount && cityToReal.length == 0)) && validationCounter > 0, [props.tourSearchMaxRegionCount, cityToReal, cityToOpt, validationCounter]);\r\n const setTourTo = (value) => setFilters({ tourTo: value });\r\n const [tourToOpt, setTourToOpt] = useState([]);\r\n const tourToReal = useMemo(() => tourTo.filter(c => !!tourToOpt.find(x => x.id == c)), [tourToOpt, tourTo]);\r\n const setStarTo = (value) => setFilters({ starTo: value });\r\n const [starToOpt, setStarToOpt] = useState([]);\r\n const setHotel = (value) => setFilters({ hotel: value });\r\n const [hotelOpt, setHotelOpt] = useState([]);\r\n const setDates = (value) => setFilters({ dates: value });\r\n const [datesOpt, setDatesOpt] = useState([]);\r\n const datesError = useMemo(() => (!dates[0] || !moment(dates[0]).isValid() || !dates[1] || !moment(dates[1]).isValid() || (!!props.tourSearchMaxDateCount && moment(dates[1]).diff(moment(dates[0]), \"days\") >= props.tourSearchMaxDateCount)) && validationCounter > 0, [...dates, validationCounter]);\r\n const setNight = (value) => setFilters({ night: value });\r\n const [nightOpt, setNightOpt] = useState([]);\r\n const nightReal = useMemo(() => night.filter(c => !!nightOpt.find(x => x == c)), [nightOpt, night]);\r\n const nightError = useMemo(() => !!props.tourSearchMaxNightCount && (nightReal.length > props.tourSearchMaxNightCount || (nightOpt.length > props.tourSearchMaxNightCount && nightReal.length == 0 && props.controlsType != 'tp')) && validationCounter > 0, [props.tourSearchMaxNightCount, nightReal, nightOpt, validationCounter]);\r\n const nightMin = useMemo(() => {\r\n var _a;\r\n if (!props.tourSearchMaxNightCount || props.tourSearchDefaultNightsFrom < nightOpt[0])\r\n return nightOpt[0];\r\n if (props.tourSearchDefaultNightsFrom > nightOpt[nightOpt.length - 1])\r\n return (_a = nightOpt[nightOpt.length - props.tourSearchMaxNightCount]) !== null && _a !== void 0 ? _a : nightOpt[0];\r\n //if (nightOpt.includes(props.tourSearchDefaultNightsFrom))\r\n // return props.tourSearchDefaultNightsFrom;\r\n var firstBiggerIndex = nightOpt.findIndex(x => x >= props.tourSearchDefaultNightsFrom);\r\n if (nightOpt.length - firstBiggerIndex >= props.tourSearchMaxNightCount)\r\n return nightOpt[firstBiggerIndex];\r\n var firstSmallerIndex = nightOpt.length - props.tourSearchMaxNightCount;\r\n if (firstSmallerIndex < 0)\r\n firstSmallerIndex = 0;\r\n return nightOpt[firstSmallerIndex];\r\n }, [nightOpt, props.tourSearchMaxNightCount, props.tourSearchDefaultNightsFrom, night]);\r\n const nightMax = useMemo(() => { var _a; return !props.tourSearchMaxNightCount ? nightOpt[nightOpt.length - 1] : (_a = nightOpt[props.tourSearchMaxNightCount - 1 + (nightOpt.indexOf((night === null || night === void 0 ? void 0 : night.length) ? night[0] : nightMin))]) !== null && _a !== void 0 ? _a : nightOpt[nightOpt.length - 1]; }, [nightOpt, props.tourSearchMaxNightCount, night, nightMin]);\r\n const currentNightsValue = useMemo(() => (night === null || night === void 0 ? void 0 : night.length) ? [night[0], night[night.length - 1]] : nightMin ? [nightMin, nightMax] : [], [night, nightMin, nightMax]);\r\n const setPansion = (value) => setFilters({ pansion: value });\r\n const [pansionOpt, setPansionOpt] = useState([]);\r\n const setAdultCount = (value) => setFilters({ adultCount: value });\r\n const setChildCount = (value) => setFilters({ childCount: value });\r\n const setChildAge = (value) => setFilters({ childAge: value });\r\n const [initialized, setInitialized] = useState(false);\r\n const [updating, setUpdating] = useState(false);\r\n const resultsRef = useRef(null);\r\n const loadFilters = () => __awaiter(this, void 0, void 0, function* () {\r\n setUpdating(true);\r\n yield apiBackdrop(() => __awaiter(this, void 0, void 0, function* () {\r\n const params = {\r\n flightTo,\r\n withHotel,\r\n cityFrom: !initialized || cityFromOpt.find(x => x.id == cityFrom) ? cityFrom : undefined,\r\n directionTo: directionTo.filter(c => !initialized || !!directionToOpt.find(x => x.id == c)),\r\n countryTo: !initialized || countryToOpt.find(x => x.id == countryTo) ? countryTo : undefined,\r\n tourTypeTo: !initialized || tourTypeToOpt.find(x => x.id == tourTypeTo) ? tourTypeTo : null,\r\n cityTo: cityTo.filter(c => !initialized || !!cityToOpt.find(x => x.id == c)),\r\n tourTo: tourTo.filter(c => !initialized || !!tourToOpt.find(x => x.id == c)),\r\n starTo,\r\n hotelTo: hotel.filter(c => !initialized || !!hotelOpt.find(x => x.id == c)),\r\n nightTo: night.filter(c => !initialized || !!nightOpt.find(x => x == c)),\r\n };\r\n const r = yield api('post', '/NewTour/Filters', params);\r\n if (r.response) {\r\n setCityFromOpt(r.response.cityFrom);\r\n setCountryToOpt(r.response.countryTo);\r\n setDirectionToOpt(r.response.directionTo);\r\n setTourTypeToOpt(r.response.tourTypeTo);\r\n setCityToOpt(r.response.cityTo);\r\n setTourToOpt(r.response.tourTo);\r\n setStarToOpt(r.response.starTo);\r\n setHotelOpt(r.response.hotelTo);\r\n setNightOpt(r.response.nightTo);\r\n let datesOptTemp = r.response.dateTo.map(x => moment(x).format('YYYY-MM-DD'));\r\n setDatesOpt(datesOptTemp);\r\n setPansionOpt(r.response.pansionTo);\r\n if (r.response.currentCityFrom)\r\n setCityFrom(r.response.currentCityFrom);\r\n if (r.response.currentCountryTo)\r\n setCountryTo(r.response.currentCountryTo);\r\n setDirectionTo(directionTo.filter(v => r.response.directionTo.find(x => x.id == v)));\r\n setCityTo(cityTo.filter(v => r.response.cityTo.find(x => x.id == v)));\r\n setTourTo(tourTo.filter(v => r.response.tourTo.find(x => x.id == v)));\r\n setStarTo(starTo.filter(v => r.response.starTo.find(x => x.id == v)));\r\n setHotel(hotel.filter(v => r.response.hotelTo.find(x => x.id == v)));\r\n setNight(night.filter(v => r.response.nightTo.find(x => x == v)));\r\n setPansion(pansion.filter(v => r.response.pansionTo.find(x => x.id == v)));\r\n //if (!datesOptTemp.find(x => x == dates[0]) || !datesOptTemp.find(x => x == dates[1]))\r\n // setDates([undefined, undefined]);\r\n }\r\n else {\r\n snackbar.enqueueSnackbar(fetchErrorMessage, { variant: 'error', autoHideDuration: 10000, onClick: onFetchErrorMessageClick });\r\n }\r\n return r;\r\n })).finally(() => setTimeout(() => setUpdating(false), 200));\r\n });\r\n useEffect(() => {\r\n if (updating)\r\n return;\r\n loadFilters().finally(() => {\r\n if (!initialized)\r\n setTimeout(() => setInitialized(true), 500);\r\n });\r\n }, [flightTo, withHotel, cityFrom, countryTo, directionTo, tourTypeTo, cityTo, tourTo, starTo, hotel, night]);\r\n useEffect(() => {\r\n if (!initialized || priceOpt.length)\r\n return;\r\n if (searchStr)\r\n search();\r\n }, [initialized]);\r\n useEffect(() => {\r\n setPriceOpt([]);\r\n setTotalPages(0);\r\n }, [flightTo, withHotel, promoProgram, cityFrom, countryTo, directionTo, tourTypeTo, cityTo, tourTo, starTo, hotel, dates, night, pansion, adultCount, childCount, childAge]);\r\n function apiBackdrop(promise, useSpinner, timeout) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (useSpinner)\r\n spinner.show();\r\n else\r\n backdrop.show();\r\n let result = yield promise();\r\n setTimeout(() => {\r\n if (useSpinner)\r\n spinner.hide();\r\n else\r\n backdrop.hide();\r\n }, timeout !== null && timeout !== void 0 ? timeout : 200);\r\n return result;\r\n });\r\n }\r\n const validate = () => {\r\n setValidationCounter(v => v + 1);\r\n let flag = !countryToError && adultCount;\r\n if (!dates[0] || !moment(dates[0]).isValid() || !dates[1] || !moment(dates[1]).isValid()) {\r\n snackbar.enqueueSnackbar(_T.NEW_TOUR_SEARCH_SELECT_DATES_WARNING, { variant: 'warning', autoHideDuration: 5000 });\r\n flag = false;\r\n }\r\n if (props.tourSearchMaxDateCount && moment(dates[1]).diff(moment(dates[0]), \"days\") >= props.tourSearchMaxDateCount) {\r\n snackbar.enqueueSnackbar(formatString(_T.NEW_TOUR_SEARCH_MAX_DATES_WARNING, [props.tourSearchMaxDateCount]), { variant: 'warning', autoHideDuration: 5000 });\r\n flag = false;\r\n }\r\n if (props.tourSearchMaxNightCount && night.length > props.tourSearchMaxNightCount) {\r\n snackbar.enqueueSnackbar(formatString(_T.NEW_TOUR_SEARCH_MAX_NIGHTS_WARNING, [props.tourSearchMaxNightCount]), { variant: 'warning', autoHideDuration: 5000 });\r\n flag = false;\r\n }\r\n if (props.tourSearchMaxNightCount && nightOpt.length > props.tourSearchMaxNightCount && night.length == 0 && props.controlsType != 'tp') {\r\n snackbar.enqueueSnackbar(_T.NEW_TOUR_SEARCH_MIN_NIGHTS_WARNING, { variant: 'warning', autoHideDuration: 5000 });\r\n flag = false;\r\n }\r\n if (props.tourSearchMaxRegionCount && cityTo.length > props.tourSearchMaxRegionCount) {\r\n snackbar.enqueueSnackbar(formatString(_T.NEW_TOUR_SEARCH_MAX_CITIES_WARNING, [props.tourSearchMaxRegionCount]), { variant: 'warning', autoHideDuration: 5000 });\r\n flag = false;\r\n }\r\n if (props.tourSearchMaxRegionCount && cityToOpt.length > props.tourSearchMaxRegionCount && cityTo.length == 0) {\r\n snackbar.enqueueSnackbar(_T.NEW_TOUR_SEARCH_MIN_CITIES_WARNING, { variant: 'warning', autoHideDuration: 5000 });\r\n flag = false;\r\n }\r\n return flag;\r\n };\r\n const reset = () => {\r\n history.replace({ pathname: pathname, search: '', state: historyState });\r\n location.reload();\r\n };\r\n const search = () => __awaiter(this, void 0, void 0, function* () {\r\n if (!validate())\r\n return;\r\n //if (night.length == 0 && props.controlsType == 'tp')\r\n // setNight(nightOpt.filter(c => c <= nightMax));\r\n setPageIndex(0);\r\n let params = {\r\n flightTo,\r\n withHotel,\r\n cityFrom: cityFromOpt.find(x => x.id == cityFrom) ? cityFrom : undefined,\r\n directionTo: directionTo.filter(c => !!directionToOpt.find(x => x.id == c)),\r\n countryTo: countryToOpt.find(x => x.id == countryTo) ? countryTo : undefined,\r\n tourTypeTo: tourTypeToOpt.find(x => x.id == tourTypeTo) ? tourTypeTo : null,\r\n cityTo: cityTo.filter(c => !!cityToOpt.find(x => x.id == c)),\r\n tourTo: tourTo.filter(c => !!tourToOpt.find(x => x.id == c)),\r\n starTo,\r\n hotelTo: hotel.filter(c => !!hotelOpt.find(x => x.id == c)),\r\n nightTo: night.length > 0 || props.controlsType != 'tp' ? night.filter(c => !!nightOpt.find(x => x == c)) : nightOpt.filter(c => c <= nightMax),\r\n pansionTo: pansion,\r\n promoProgram,\r\n dateFrom: dates[0],\r\n dateTo: dates[1],\r\n adultCount,\r\n childCount,\r\n childAge,\r\n pageIndex: 0\r\n };\r\n history.replace({ pathname: pathname, search: new URLSearchParams(toURLSearchParams(params)).toString(), state: historyState });\r\n const r = yield apiBackdrop(() => api('post', '/NewTour/Search', params), false, 900);\r\n if (r.response) {\r\n if (!r.response.prices.length)\r\n snackbar.enqueueSnackbar(_T.NEW_TOUR_SEARCH_NO_PRICES, { variant: 'warning', autoHideDuration: 5000 });\r\n setPriceOpt([...r.response.prices]);\r\n setTotalPages(r.response.totalPages);\r\n setTimeout(() => {\r\n var _a, _b;\r\n if (resultsRef.current) {\r\n $(document).scrollTop((_b = (_a = $(resultsRef.current).offset()) === null || _a === void 0 ? void 0 : _a.top) !== null && _b !== void 0 ? _b : 0);\r\n /*$(resultsRef.current).stickyTable();*/\r\n //$(document).scrollTop(resultsRef.current.offsetTop);\r\n //window.scrollTo({ top: resultsRef.current.offsetTop, behavior: \"smooth\" });\r\n }\r\n }, 500);\r\n }\r\n else {\r\n snackbar.enqueueSnackbar(fetchErrorMessage, { variant: 'error', autoHideDuration: 10000, onClick: onFetchErrorMessageClick });\r\n }\r\n });\r\n const nextPage = () => __awaiter(this, void 0, void 0, function* () {\r\n if (!validate())\r\n return;\r\n if (pageIndex >= (totalPages - 1))\r\n return;\r\n let page = pageIndex + 1;\r\n setPageIndex(page);\r\n const r = yield apiBackdrop(() => api('post', '/NewTour/Search', { flightTo, withHotel, cityFrom: cityFromReal, directionTo: directionToReal, countryTo: countryToReal, tourTypeTo: tourTypeToReal, cityTo: cityToReal, tourTo: tourToReal, starTo, hotelTo: hotel, nightTo: nightReal, pansionTo: pansion, promoProgram, dateFrom: dates[0], dateTo: dates[1], adultCount, childCount, childAge, pageIndex: page }));\r\n if (r.response) {\r\n setPriceOpt([...priceOpt, ...r.response.prices]);\r\n }\r\n else {\r\n snackbar.enqueueSnackbar(fetchErrorMessage, { variant: 'error', autoHideDuration: 10000, onClick: onFetchErrorMessageClick });\r\n }\r\n });\r\n const cityFromRef = useRef(null);\r\n const tpMultiline = useMediaQuery(theme.breakpoints.up(\"md\"));\r\n /*region controls*/\r\n const flightButtomColumn = useMediaQuery(`(max-width: ${(window.language == 'en' ? 440.9 : 389.9)}px)`);\r\n const controls = props.controlsType == \"tp\"\r\n ? {\r\n flightPromo: (React.createElement(Grid, { container: true, spacing: tpMultiline ? 3 : 2 },\r\n React.createElement(Grid, { item: true, xs: 'auto', sm: 'auto', style: { minWidth: `min(100%, ${(window.language == 'en' ? 415 : 370)}px)` } },\r\n React.createElement(TpRadioButton, { xs: flightButtomColumn ? 12 : 6, sm: 'auto', direction: flightButtomColumn ? 'column' : 'row', spacing: tpMultiline ? 3 : 1, value: flightTo, options: [\r\n {\r\n name: _T.NEW_TOUR_SEARCH_WITH_FLIGHT_LABEL, value: true, icon: React.createElement(SvgIcon, { viewBox: \"\" },\r\n React.createElement(\"path\", { xmlns: \"http://www.w3.org/2000/svg\", d: \"M14.4104 14.2171C14.4104 14.3912 14.3413 14.5581 14.2182 14.6811C14.0952 14.8042 13.9282 14.8733 13.7542 14.8733H1.9419C1.76785 14.8733 1.60093 14.8042 1.47786 14.6811C1.3548 14.5581 1.28566 14.3912 1.28566 14.2171C1.28566 14.0431 1.3548 13.8761 1.47786 13.7531C1.60093 13.63 1.76785 13.5609 1.9419 13.5609H13.7542C13.9282 13.5609 14.0952 13.63 14.2182 13.7531C14.3413 13.8761 14.4104 14.0431 14.4104 14.2171ZM20.6365 4.16025C20.6182 4.25383 20.5802 4.34245 20.5251 4.42023C20.4699 4.49801 20.3988 4.56318 20.3166 4.61141L7.89726 11.83C7.28909 12.1888 6.58056 12.3397 5.87896 12.2598C5.17737 12.1799 4.52093 11.8735 4.00905 11.3871L0.916522 8.49142C0.756158 8.3438 0.635349 8.15834 0.565133 7.95199C0.494918 7.74564 0.477536 7.52499 0.514576 7.31019C0.553283 7.0946 0.644682 6.89192 0.78064 6.72018C0.916599 6.54845 1.0929 6.41298 1.29386 6.32584L2.66376 5.73522C2.83255 5.66933 3.01995 5.66933 3.18875 5.73522L5.18207 6.59653L6.40432 5.89108L4.55865 4.23408C4.39686 4.08565 4.27464 3.89922 4.20303 3.69167C4.13141 3.48413 4.11268 3.262 4.14851 3.04538C4.18434 2.82877 4.27361 2.62451 4.40824 2.45107C4.54287 2.27764 4.71862 2.14051 4.91958 2.05208L6.27307 1.46967C6.42252 1.41117 6.58746 1.40539 6.74064 1.45326L11.3835 3.00363L14.7632 1.0103C15.4381 0.609016 16.235 0.464425 17.0079 0.603033C17.7808 0.74164 18.4779 1.15416 18.9713 1.76498L20.497 3.62705C20.5576 3.7005 20.6014 3.78623 20.6255 3.8783C20.6495 3.97037 20.6533 4.06658 20.6365 4.16025ZM18.9959 3.86494L17.9541 2.59348C17.6565 2.22856 17.238 1.98239 16.7745 1.89961C16.3109 1.81684 15.8331 1.90295 15.4276 2.14231L11.7937 4.28329C11.7128 4.33105 11.6226 4.36089 11.5292 4.3708C11.4358 4.3807 11.3414 4.37044 11.2523 4.34071L6.56838 2.78215L5.44457 3.25792L7.96289 5.53015C8.03899 5.60042 8.09783 5.68733 8.13482 5.78408C8.17182 5.88084 8.18596 5.98483 8.17616 6.08795C8.16382 6.18995 8.12769 6.28762 8.0707 6.37311C8.01371 6.45859 7.93745 6.5295 7.84804 6.58013L5.55121 7.8926C5.4622 7.94346 5.36286 7.97357 5.26059 7.98067C5.15833 7.98777 5.05578 7.97169 4.96059 7.93362L2.92625 7.0559L1.81065 7.53167L4.90317 10.4355C5.21133 10.7275 5.60626 10.9111 6.02812 10.9585C6.44998 11.0058 6.87579 10.9144 7.24102 10.698L18.9959 3.86494Z\" }))\r\n }, {\r\n name: _T.NEW_TOUR_SEARCH_WITHOUT_FLIGHT_LABEL, value: false, icon: React.createElement(SvgIcon, { viewBox: \"\" },\r\n React.createElement(\"path\", { xmlns: \"http://www.w3.org/2000/svg\", d: \"M15.0527 16.8755H11.1153C10.7672 16.8755 10.4334 16.7372 10.1872 16.491C9.9411 16.2449 9.80282 15.9111 9.80282 15.563V11.6255H7.17787V15.563C7.17787 15.9111 7.03959 16.2449 6.79345 16.491C6.54731 16.7372 6.21348 16.8755 5.86539 16.8755H1.92796C1.57987 16.8755 1.24603 16.7372 0.999894 16.491C0.753757 16.2449 0.615479 15.9111 0.615479 15.563V7.97521C0.615536 7.79311 0.65349 7.61301 0.726926 7.44636C0.800362 7.27972 0.907673 7.13018 1.04203 7.00726L7.60442 1.04369C7.84637 0.822343 8.16242 0.699585 8.49034 0.699585C8.81827 0.699585 9.13432 0.822343 9.37627 1.04369L15.9387 7.00726C16.073 7.13018 16.1803 7.27972 16.2538 7.44636C16.3272 7.61301 16.3651 7.79311 16.3652 7.97521V15.563C16.3652 15.9111 16.2269 16.2449 15.9808 16.491C15.7347 16.7372 15.4008 16.8755 15.0527 16.8755ZM7.17787 10.3131H9.80282C10.1509 10.3131 10.4847 10.4513 10.7309 10.6975C10.977 10.9436 11.1153 11.2775 11.1153 11.6255V15.563H15.0527V7.97521L8.49034 2.01165L1.92796 7.97521V15.563H5.86539V11.6255C5.86539 11.2775 6.00367 10.9436 6.2498 10.6975C6.49594 10.4513 6.82977 10.3131 7.17787 10.3131Z\" }))\r\n }\r\n ], onChange: (v) => setFlightTo(v) })),\r\n props.tourSearchSplitByIncludingHotel ?\r\n React.createElement(Grid, { item: true, xs: 'auto', sm: 'auto' },\r\n React.createElement(TpRadioButton, { xs: flightButtomColumn ? 12 : 6, sm: 'auto', direction: flightButtomColumn ? 'column' : 'row', spacing: tpMultiline ? 3 : 1, value: withHotel, options: [\r\n {\r\n name: _T.NEW_TOUR_SEARCH_WITH_HOTEL_LABEL, value: true\r\n }, {\r\n name: _T.NEW_TOUR_SEARCH_WITHOUT_HOTEL_LABEL, value: false\r\n }\r\n ], onChange: (v) => setWithHotel(v) })) : null,\r\n props.promoEnabled ?\r\n React.createElement(Grid, { item: true, xs: 12, sm: 'auto', className: 'mb-3' },\r\n React.createElement(TpRadioButton, { spacing: tpMultiline ? 3 : 1, value: promoProgram, options: [\r\n { name: _T.NEW_TOUR_SEARCH_ENABLE_PROMO_LABEL, value: true, icon: React.createElement(LocalOffer, { fontSize: \"small\" }) }\r\n ], onChange: (v) => setPromoProgram(!promoProgram) })) : null)),\r\n cityFrom: (React.createElement(TpSelect, { label: _T.COMMON_FROM_WHERE, value: cityFromReal, onChange: (v) => setCityFrom(v), options: cityFromOpt, valueSelector: \"id\", textSelector: \"name\", required: flightTo, disabled: !flightTo })),\r\n country: (React.createElement(TpSelect, { label: _T.COMMON_COUNTRY, value: countryToReal, onChange: (v) => setCountryTo(v), options: countryToOpt, valueSelector: \"id\", textSelector: \"name\", required: true, error: countryToError })),\r\n direction: (React.createElement(TpSelect, { label: _T.COMMON_DIRECTION, selected: directionToReal, onChange: (v) => setDirectionTo(v), options: directionToOpt, valueSelector: \"id\", textSelector: \"name\", multiline: tpMultiline, multiselect: true, heightPx: 322 })),\r\n tourType: React.createElement(React.Fragment, null),\r\n city: (React.createElement(TpSelect, { label: _T.COMMON_CITY, selected: cityTo, onChange: (v) => {\r\n setCityTo(v);\r\n if (props.tourSearchMaxRegionCount && v.length > props.tourSearchMaxRegionCount) {\r\n snackbar.enqueueSnackbar(formatString(_T.NEW_TOUR_SEARCH_MAX_CITIES_WARNING, [props.tourSearchMaxRegionCount]), { variant: 'warning', autoHideDuration: 5000 });\r\n }\r\n if (props.tourSearchMaxRegionCount && cityToOpt.length > props.tourSearchMaxRegionCount && v.length == 0) {\r\n snackbar.enqueueSnackbar(_T.NEW_TOUR_SEARCH_MIN_CITIES_WARNING, { variant: 'warning', autoHideDuration: 5000 });\r\n }\r\n }, options: cityToOpt, valueSelector: \"id\", textSelector: \"name\", multiline: tpMultiline, multiselect: true, maxSelected: props.tourSearchMaxRegionCount, maxSelectedAlertText: formatString(_T.NEW_TOUR_SEARCH_MAX_RESORTS_WARNING, [props.tourSearchMaxRegionCount]), heightPx: 322, error: cityToError })),\r\n tour: (React.createElement(TpSelect, { label: _T.COMMON_TOUR, selected: tourToReal, onChange: (v) => setTourTo(v), options: tourToOpt, valueSelector: \"id\", textSelector: \"name\", multiline: tpMultiline, multiselect: true, heightPx: 234 })),\r\n star: (React.createElement(TpSelect, { label: _T.COMMON_CATEGORY, selected: starTo, onChange: (v) => setStarTo(v), options: starToOpt, valueSelector: \"id\", textSelector: \"name\", multiline: tpMultiline, multiselect: true, heightPx: 234, anyLabel: _T.COMMON_ANY_FEMALE, disabled: props.tourSearchSplitByIncludingHotel && !withHotel })),\r\n hotel: (React.createElement(TpSelect, { label: _T.COMMON_HOTEL, selected: hotel, onChange: (v) => setHotel(v), options: hotelOpt, valueSelector: \"id\", textSelector: \"name\", optionSelector: o => o.url && props.tourSearchHotelUrlVisible ? React.createElement(\"a\", { target: \"_blank\", href: o.url, onClick: e => {\r\n //e.preventDefault();\r\n e.stopPropagation();\r\n } }, o.name) : o.name, multiline: tpMultiline, multiselect: true, heightPx: 234, searchable: true, disabled: props.tourSearchSplitByIncludingHotel && !withHotel })),\r\n datesDuration: (React.createElement(Box, { mt: '22px' },\r\n React.createElement(Box, { width: 177, mr: '20px', display: 'inline-flex', flexDirection: 'column' },\r\n React.createElement(TpDateRangePickerField2, { label: _T.COMMON_CHECKIN_PERIOD, dates: dates, variant: variant, onChange: (d) => {\r\n var _a, _b;\r\n setDates([(_a = d[0]) === null || _a === void 0 ? void 0 : _a.format('YYYY-MM-DD'), (_b = d[1]) === null || _b === void 0 ? void 0 : _b.format('YYYY-MM-DD')]);\r\n if (d[0] && d[1] && props.tourSearchMaxDateCount && moment(d[1]).diff(moment(d[0]), \"days\") >= props.tourSearchMaxDateCount) {\r\n snackbar.enqueueSnackbar(formatString(_T.NEW_TOUR_SEARCH_MAX_DATES_WARNING, [props.tourSearchMaxDateCount]), { variant: 'warning', autoHideDuration: 5000 });\r\n }\r\n }, validDates: datesOpt, dateLimit: props.tourSearchMaxDateCount, dateLimitAlertText: formatString(_T.NEW_TOUR_SEARCH_MAX_DATES_WARNING, [props.tourSearchMaxDateCount]), error: datesError, numberOfMonths: tpMultiline ? 2 : 1 })),\r\n React.createElement(SnackbarProvider, { autoHideDuration: 5000, maxSnack: 1, variant: 'warning', domRoot: tpFiltersMainContainer.current || undefined, anchorOrigin: { vertical: 'top', horizontal: 'right' }, classes: { containerRoot: 'tp-durations-snackbar-root', root: 'tp-durations-snackbar-root-item' }, TransitionComponent: Grow, iconVariant: { warning: React.createElement(React.Fragment, null) } },\r\n React.createElement(Box, { minWidth: 224, mt: !tpMultiline ? '16px' : undefined, display: 'inline-flex', flexDirection: 'column' },\r\n React.createElement(TpLabel, { error: nightError }, _T.COMMON_NIGHTS),\r\n React.createElement(TpDurationSelector, { options: nightOpt, value: currentNightsValue, maxSelected: props.tourSearchMaxNightCount, error: nightError, onChange: (v) => {\r\n const newNight = v ? range(v[0], v[1] + 1).filter(x => nightOpt.includes(x)) : [];\r\n setNight(newNight);\r\n if (props.tourSearchMaxNightCount && newNight.length > props.tourSearchMaxNightCount) {\r\n snackbar.enqueueSnackbar(formatString(_T.NEW_TOUR_SEARCH_MAX_NIGHTS_WARNING, [props.tourSearchMaxNightCount]), { variant: 'warning', autoHideDuration: 5000 });\r\n }\r\n if (props.tourSearchMaxNightCount && nightOpt.length > props.tourSearchMaxNightCount && newNight.length == 0) {\r\n snackbar.enqueueSnackbar(_T.NEW_TOUR_SEARCH_MIN_NIGHTS_WARNING, { variant: 'warning', autoHideDuration: 5000 });\r\n }\r\n }, tourSearchMaxNightCount: props.tourSearchMaxNightCount, tourSearchDefaultNightsFrom: props.tourSearchDefaultNightsFrom }))))),\r\n pansion: (React.createElement(TpSelect, { label: _T.COMMON_MEAL, selected: pansion, onChange: (v) => setPansion(v), options: pansionOpt, valueSelector: \"id\", textSelector: \"name\", multiline: tpMultiline, multiselect: true, heightPx: 234, disabled: props.tourSearchSplitByIncludingHotel && !withHotel })),\r\n tourists: (React.createElement(Box, null,\r\n React.createElement(Box, { width: xs ? '100%' : 285, display: 'inline-flex', flexDirection: 'column' },\r\n React.createElement(Grid, { container: true, spacing: 2 },\r\n React.createElement(Grid, { item: true, xs: 6 },\r\n React.createElement(TpSelect, { label: _T.COMMON_ADULTS, value: adultCount, onChange: (v) => setAdultCount(v), options: range(1, props.tourSearchMaxAdultCount + 1), valueSelector: (o) => o, textSelector: (o) => `${o}`, required: true })),\r\n React.createElement(Grid, { item: true, xs: 6 },\r\n React.createElement(TpSelect, { label: _T.COMMON_CHILDREN, value: childCount, onChange: (v) => setChildCount(v), options: range(0, props.tourSearchMaxChildCount + 1), valueSelector: (o) => o, textSelector: (o) => `${o}`, required: true })))),\r\n !xs ? React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"20\", height: \"2\", viewBox: \"0 0 21 2\", fill: \"none\", style: { marginRight: '8px', marginLeft: '10px', top: '28px', position: 'relative' } },\r\n React.createElement(\"line\", { x1: \"0.53418\", y1: \"1\", x2: \"20.5342\", y2: \"1\", stroke: \"white\", \"stroke-width\": \"2\" })) : null,\r\n React.createElement(Box, { width: xs ? '100%' : 242, mt: !tpMultiline ? '16px' : undefined, display: 'inline-flex', flexDirection: 'column' },\r\n React.createElement(TpLabel, null, _T.COMMON_CHILD_AGES),\r\n React.createElement(Grid, { container: true, spacing: 1 }, childAge.map((age, i) => (React.createElement(Grid, { item: true, xs: 4 },\r\n React.createElement(TpSelect, { value: childAge[i], onChange: (v) => setChildAge([...childAge.slice(0, i), v, ...childAge.slice(i + 1)]), options: range(0, props.tourSearchMaxChildAge + 1), valueSelector: (o) => o, textSelector: (o) => `${o}`, required: true, disabled: i >= childCount })))))))),\r\n buttons: (React.createElement(Box, { height: 45, alignItems: \"center\", justifyContent: \"space-between\" },\r\n React.createElement(Box, null,\r\n React.createElement(Box, { display: 'inline-flex', flexDirection: 'column' },\r\n React.createElement(Button, { onClick: reset, color: \"default\", variant: \"text\", className: \"tp-filter-reset-button\" }, _T.COMMON_RESET_NOUN)),\r\n React.createElement(Box, { width: 240, display: 'inline-flex', flexDirection: 'column' },\r\n React.createElement(Button, { onClick: search, fullWidth: true, color: \"primary\", variant: \"contained\", className: \"tp-filter-search-button\" }, _T.COMMON_SEARCH_VERB))))),\r\n }\r\n : {\r\n flightPromo: (React.createElement(Grid, { item: true, xs: 12 },\r\n React.createElement(FormControlLabel, { label: React.createElement(Typography, null,\r\n _T.NEW_TOUR_SEARCH_ENABLE_FLIGHT_LABEL,\r\n \" \",\r\n React.createElement(FlightTakeoffOutlined, { fontSize: \"small\" })), control: React.createElement(Switch, { checked: flightTo, onChange: (e) => setFlightTo(e.target.checked) }) }),\r\n props.tourSearchSplitByIncludingHotel ?\r\n React.createElement(FormControlLabel, { label: React.createElement(Typography, null,\r\n _T.NEW_TOUR_SEARCH_ENABLE_HOTEL_LABEL,\r\n \" \",\r\n React.createElement(KingBed, { fontSize: \"small\" })), control: React.createElement(Switch, { checked: withHotel, onChange: (e) => setWithHotel(e.target.checked) }) }) : null,\r\n props.promoEnabled ?\r\n React.createElement(FormControlLabel, { label: React.createElement(Typography, null,\r\n _T.NEW_TOUR_SEARCH_ENABLE_PROMO_LABEL,\r\n \" \",\r\n React.createElement(LocalOffer, { fontSize: \"small\" })), control: React.createElement(Switch, { checked: promoProgram, onChange: (e) => setPromoProgram(e.target.checked) }) }) : null)),\r\n cityFrom: (React.createElement(Select, { labelClassName: cityFromReal ? 'MuiInputLabel-shrink' : '', variant: variant, ref: cityFromRef, label: _T.COMMON_DEPARTURE_CITY, value: cityFromReal, onChange: (e) => setCityFrom(Number.parseInt(e.target.value || '0')), inputProps: {\r\n name: 'cityFrom',\r\n id: 'cityFrom'\r\n }, fullWidth: true, disabled: !flightTo }, cityFromOpt.map((o, i) => (React.createElement(\"option\", { key: i, value: o.id }, o.name))))),\r\n country: (React.createElement(Select, { variant: variant, label: _T.COMMON_COUNTRY, value: countryToReal, onChange: (e) => setCountryTo(Number.parseInt(e.target.value)), inputProps: {\r\n name: 'countryTo',\r\n id: 'countryTo'\r\n }, fullWidth: true, error: countryToError }, countryToOpt.map((o, i) => (React.createElement(\"option\", { key: i, value: o.id }, o.name))))),\r\n direction: (React.createElement(Select, { variant: variant, label: _T.COMMON_DIRECTION, value: directionToReal.length ? directionToReal[0] : \"null\", onChange: (e) => setDirectionTo(e.target.value == null ? [] : [Number.parseInt(e.target.value || '0')]), inputProps: {\r\n name: 'directionTo',\r\n id: 'directionTo'\r\n }, fullWidth: true },\r\n React.createElement(\"option\", { value: \"null\" }, _T.COMMON_ALL),\r\n directionToOpt.map((o, i) => (React.createElement(\"option\", { key: i, value: o.id }, o.name))))),\r\n tourType: (React.createElement(Select, { variant: variant, label: _T.COMMON_TOUR_TYPE, value: tourTypeToReal !== null && tourTypeToReal !== void 0 ? tourTypeToReal : \"null\", onChange: (e) => setTourTypeTo(e.target.value == null ? null : Number.parseInt(e.target.value || '0')), inputProps: {\r\n name: 'tourTypeTo',\r\n id: 'tourTypeTo'\r\n }, fullWidth: true },\r\n React.createElement(\"option\", { value: \"null\" }, _T.COMMON_ALL),\r\n tourTypeToOpt.map((o, i) => (React.createElement(\"option\", { key: i, value: o.id }, o.name))))),\r\n city: (React.createElement(MultiSelectList, { multiline: true, heightPx: 289, title: (s) => !!props.tourSearchMaxRegionCount\r\n ? (s.length == 0 ? `${_T.COMMON_CITY} (${_T.COMMON_MAX} ${props.tourSearchMaxRegionCount})` : `${_T.COMMON_CITY} — ${s.length}/${props.tourSearchMaxRegionCount}`)\r\n : (s.length == 0 || s.length == cityToOpt.length ? `${_T.COMMON_CITY} — ${_T.COMMON_ALL}` : `${_T.COMMON_CITY} — ${s.length}`), options: cityToOpt, valueSelector: \"id\", textSelector: \"name\", onChange: (selected) => setCityTo(selected), selected: cityTo, maxSelected: props.tourSearchMaxRegionCount, maxSelectedAlertText: formatString(_T.NEW_TOUR_SEARCH_MAX_CITIES_WARNING, [props.tourSearchMaxRegionCount]), error: cityToError })),\r\n tour: (React.createElement(Select, { variant: variant, label: _T.COMMON_TOUR, value: tourToReal.length ? tourToReal[0] : \"null\", onChange: (e) => setTourTo(e.target.value == null ? [] : [Number.parseInt(e.target.value || '0')]), inputProps: {\r\n name: 'tourTo',\r\n id: 'tourTo'\r\n }, fullWidth: true },\r\n React.createElement(\"option\", { value: \"null\" }, _T.COMMON_ALL),\r\n tourToOpt.map((o, i) => (React.createElement(\"option\", { key: i, value: o.id }, o.name))))),\r\n star: (React.createElement(MultiSelectList, { title: (s) => (s.length == 0 || s.length == starToOpt.length ? `${_T.COMMON_HOTELCATEGORY} — ${_T.COMMON_ALL}` : _T.COMMON_HOTELCATEGORY), options: starToOpt, valueSelector: \"id\", textSelector: \"name\", onChange: (selected) => setStarTo(selected), selected: starTo, disabled: props.tourSearchSplitByIncludingHotel && !withHotel, variant: variant })),\r\n hotel: (React.createElement(MultiSelectList, { multiline: true, searchable: true, heightPx: 430, title: (s) => s.length == 0 || s.length == hotelOpt.length ? `${_T.COMMON_HOTEL} — ${_T.COMMON_ALL}` : `${_T.COMMON_HOTEL} — ${s.length}`, options: hotelOpt, valueSelector: \"id\", textSelector: \"name\", onChange: (selected) => setHotel(selected), selected: hotel, disabled: props.tourSearchSplitByIncludingHotel && !withHotel })),\r\n datesDuration: (React.createElement(React.Fragment, null,\r\n React.createElement(Grid, { item: true, xs: 12 },\r\n React.createElement(DateRangePickerField, { label: _T.TOUR_DATES, dates: dates, variant: variant, onChange: (d) => { var _a, _b; return setDates([(_a = d[0]) === null || _a === void 0 ? void 0 : _a.format('YYYY-MM-DD'), (_b = d[1]) === null || _b === void 0 ? void 0 : _b.format('YYYY-MM-DD')]); }, validDates: datesOpt, dateLimit: props.tourSearchMaxDateCount, dateLimitAlertText: formatString(_T.NEW_TOUR_SEARCH_MAX_DATES_WARNING, [props.tourSearchMaxDateCount]), error: datesError })),\r\n React.createElement(Grid, { item: true, xs: 12 },\r\n React.createElement(MultiSelectList, { title: (s) => !!props.tourSearchMaxNightCount ? (s.length == 0 ? `${_T.COMMON_DURATION} (${_T.COMMON_NIGHTS} - ${_T.COMMON_MAX} ${props.tourSearchMaxRegionCount})` : _T.COMMON_DURATION) : (s.length == 0 || s.length == nightOpt.length ? `${_T.COMMON_DURATION} (${_T.COMMON_NIGHTS}) — ${_T.COMMON_ALL}` : `${_T.COMMON_DURATION} (${_T.COMMON_NIGHTS})`), options: nightOpt, onChange: (selected) => setNight(selected), selected: night, valueSelector: (o) => o, textSelector: (o) => `${o}`, variant: variant, maxSelected: props.tourSearchMaxNightCount, maxSelectedAlertText: formatString(_T.NEW_TOUR_SEARCH_MAX_NIGHTS_WARNING, [props.tourSearchMaxNightCount]), error: nightError })))),\r\n pansion: (React.createElement(MultiSelectList, { title: (s) => (s.length == 0 || s.length == pansionOpt.length ? `${_T.COMMON_MEAL} — ${_T.COMMON_ALL}` : _T.COMMON_MEAL), options: pansionOpt, valueSelector: \"id\", textSelector: \"name\", onChange: (selected) => setPansion(selected), selected: pansion, variant: variant, disabled: props.tourSearchSplitByIncludingHotel && !withHotel })),\r\n tourists: (React.createElement(React.Fragment, null,\r\n React.createElement(Grid, { item: true, xs: 6, sm: 6, md: 6, lg: 6, xl: 6 },\r\n React.createElement(Select, { variant: variant, label: _T.COMMON_ADULT_COUNT, value: adultCount, onChange: (e) => setAdultCount(Number.parseInt(e.target.value || '0')), inputProps: {\r\n name: 'adultCount',\r\n id: 'adultCount'\r\n }, fullWidth: true }, range(1, props.tourSearchMaxAdultCount + 1).map(o => (React.createElement(\"option\", { key: o, value: o }, o))))),\r\n React.createElement(Grid, { item: true, xs: 6, sm: 6, md: 6, lg: 6, xl: 6 },\r\n React.createElement(Select, { variant: variant, label: _T.COMMON_CHILD_COUNT, value: childCount, onChange: (e) => setChildCount(Number.parseInt(e.target.value || '0')), inputProps: {\r\n name: 'childCount',\r\n id: 'childCount'\r\n }, fullWidth: true }, range(0, props.tourSearchMaxChildCount + 1).map(o => (React.createElement(\"option\", { key: o, value: o }, o))))),\r\n React.createElement(Grid, { item: true, xs: 12 },\r\n React.createElement(\"div\", null,\r\n React.createElement(Grid, { container: true, spacing: 2 }, childAge.map((age, i) => (React.createElement(Grid, { item: true, xs: 4, sm: 4, md: 4, lg: 4, xl: 4, key: i },\r\n React.createElement(Select, { variant: variant, label: `${_T.COMMON_CHILD_AGE_SHORT}${i + 1}`, value: childAge[i], onChange: (e) => setChildAge([...childAge.slice(0, i), Number.parseInt(e.target.value || '0'), ...childAge.slice(i + 1)]), inputProps: {\r\n name: `childAge[${i}]`,\r\n id: `childAge[${i}]`\r\n }, disabled: i >= childCount, fullWidth: true }, range(0, props.tourSearchMaxChildAge + 1).map(o => (React.createElement(\"option\", { key: o, value: o }, o)))))))))))),\r\n buttons: (React.createElement(Grid, { item: true, xs: 12, container: true, justify: \"space-between\" },\r\n React.createElement(Grid, { item: true, xs: 6 },\r\n React.createElement(Button, { onClick: search, fullWidth: true, color: \"primary\", variant: \"contained\" }, _T.COMMON_SEARCH)),\r\n React.createElement(Grid, { item: true, xs: 'auto' },\r\n React.createElement(Button, { onClick: reset, color: \"default\", variant: \"text\", className: classes.resetButton }, _T.COMMON_RESET_NOUN))))\r\n };\r\n /*endregion*/\r\n const [replaceCartTourDialogPrice, setReplaceCartTourDialogPrice] = useState();\r\n const addToCart = (price) => __awaiter(this, void 0, void 0, function* () {\r\n backdrop.show();\r\n const errors = yield addTourToCart({ tourVariantId: price.tourVariantId, hash: price.servicesHash, accmdVariantIds: [], externalFlight: undefined, extras: undefined, replaceExistingTour: autoReplace || false });\r\n if (!errors)\r\n window.open(appUrl(\"/Cart\"), autoReplace ? \"_self\" : \"_blank\");\r\n else if (errors.length && errors[0] == \"CART_ALREADY_CONTAINS_OTHER_TOUR\") {\r\n setReplaceCartTourDialogPrice(price);\r\n setTimeout(() => backdrop.hide(), 200);\r\n return;\r\n }\r\n setTimeout(() => backdrop.hide(), 2000);\r\n });\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(Container, { ref: tpFiltersMainContainer, id: 'tp-filters-main-container', className: `${classes.container}${props.controlsType == \"tp\" && priceOpt.length ? ' tp' : ''}${props.controlsType == \"tp\" ? ' tp-filter-container' : ''}`, disableGutters: true }, initialized ?\r\n React.createElement(React.Fragment, null, props.controlsType == \"tp\"\r\n ? React.createElement(React.Fragment, null,\r\n React.createElement(Paper, { classes: { root: 'tp-filter-paper' } },\r\n React.createElement(React.Fragment, null,\r\n React.createElement(Box, { padding: tpMultiline ? '60px' : '24px' },\r\n controls.flightPromo,\r\n React.createElement(Box, { marginBottom: '16px' },\r\n React.createElement(Grid, { container: true, spacing: tpMultiline ? 3 : 2 },\r\n React.createElement(Grid, { item: true, xs: 12, sm: 6, md: 3 }, controls.cityFrom),\r\n React.createElement(Grid, { item: true, xs: 12, sm: 6, md: 3 }, controls.country),\r\n React.createElement(Grid, { item: true, xs: 12, sm: 12, md: 6 }, controls.tourists))),\r\n React.createElement(Box, { marginBottom: '16px' },\r\n React.createElement(Grid, { container: true, spacing: 3 },\r\n React.createElement(Grid, { item: true, xs: 12, sm: 6, md: 3 }, controls.direction),\r\n React.createElement(Grid, { item: true, xs: 12, sm: 6, md: 3 }, controls.city),\r\n React.createElement(Grid, { item: true, xs: 12, sm: 12, md: 6, container: true },\r\n React.createElement(Grid, { item: true, xs: 12 }, controls.tour),\r\n React.createElement(Grid, { item: true, xs: 12 }, controls.datesDuration)))),\r\n React.createElement(Grid, { container: true, spacing: 3 },\r\n React.createElement(Grid, { item: true, xs: 12, sm: 6, md: 3 }, controls.pansion),\r\n React.createElement(Grid, { item: true, xs: 12, sm: 6, md: 3 }, controls.star),\r\n React.createElement(Grid, { item: true, xs: 12, sm: 12, md: 6 }, controls.hotel)),\r\n React.createElement(Grid, { container: true, spacing: 3, justify: \"space-between\", className: \"mt-3\" },\r\n React.createElement(Grid, { item: true, xs: 'auto' }),\r\n React.createElement(Grid, { item: true, xs: 'auto' }, controls.buttons))))))\r\n : React.createElement(React.Fragment, null,\r\n React.createElement(Paper, null,\r\n React.createElement(Box, { display: \"flex\", padding: \"32px\", margin: \"auto\", justifyContent: \"center\" },\r\n React.createElement(Box, { className: classes.paper, flexGrow: 1, flexDirection: \"column\" },\r\n React.createElement(Grid, { container: true, justify: xs ? `space-evenly` : `space-between`, spacing: 2 },\r\n controls.flightPromo,\r\n React.createElement(Grid, { item: true, sm: 6, md: 4, lg: 4, container: true, className: classes.gridFilterFirstSecond, alignContent: \"flex-start\" },\r\n React.createElement(Grid, { item: true, xs: 12 }, controls.cityFrom),\r\n React.createElement(Grid, { item: true, xs: 12 }, controls.country),\r\n React.createElement(Grid, { item: true, xs: 12 }, controls.direction),\r\n React.createElement(Grid, { item: true, xs: 12 }, controls.tourType),\r\n React.createElement(Grid, { item: true, xs: 12 }, controls.city)),\r\n React.createElement(Grid, { item: true, sm: 6, md: 4, lg: 4, container: true, className: classes.gridFilterFirstSecond, alignContent: \"flex-start\" },\r\n React.createElement(Grid, { item: true, xs: 12 }, controls.tour),\r\n React.createElement(Grid, { item: true, xs: 12 }, controls.star),\r\n React.createElement(Grid, { item: true, xs: 12 }, controls.hotel)),\r\n React.createElement(Grid, { item: true, sm: 12, md: 4, lg: 4, container: true, spacing: 2, alignContent: \"flex-start\" },\r\n controls.datesDuration,\r\n controls.tourists,\r\n React.createElement(Grid, { item: true, xs: 12 }, controls.pansion),\r\n controls.buttons))))),\r\n React.createElement(Paper, null, priceOpt.length ? React.createElement(Grid, { container: true, className: classes.priceContainer },\r\n React.createElement(Grid, { item: true, xs: 12, className: \"resultsGridWrap\", ref: resultsRef },\r\n React.createElement(Table, { className: \"table table-condensed resultsGrid no-margin\", stickyHeader: true },\r\n React.createElement(TableHead, null,\r\n React.createElement(TableRow, null,\r\n React.createElement(TableCell, { className: \"result-price-promo-col\" }),\r\n !props.tourSearchSplitByIncludingHotel || withHotel ? React.createElement(React.Fragment, null,\r\n React.createElement(TableCell, { className: `${classes.column} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_PRICE)),\r\n React.createElement(TableCell, { className: `${classes.column} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_DATES)),\r\n React.createElement(TableCell, { className: `${classes.columnMD} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_TOUR)),\r\n React.createElement(TableCell, { className: `${classes.column} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_HOTEL)),\r\n React.createElement(TableCell, { className: `${classes.columnMD} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_HOTEL)),\r\n React.createElement(TableCell, { className: `${classes.column} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_ROOM_CATEGORY)),\r\n React.createElement(TableCell, { className: `${classes.columnMD} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_ROOM_CATEGORY)),\r\n React.createElement(TableCell, { className: `${classes.column} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_ACCOMMODATION)),\r\n React.createElement(TableCell, { className: `${classes.column} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_MEAL)),\r\n React.createElement(TableCell, { className: `${classes.column} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_NIGHTS)),\r\n React.createElement(TableCell, { className: `${classes.columnMD} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_ACCOMMODATION)),\r\n React.createElement(TableCell, { className: `${classes.columnSM} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_HOTEL)),\r\n React.createElement(TableCell, { className: `${classes.column} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_TOUR)),\r\n React.createElement(TableCell, { className: `text-center`, title: _T.COMMON_AVAILABILITY_ROOM_HOTEL },\r\n React.createElement(\"span\", { className: \"fa fa-home fa-lg opacity-80\" }))) : React.createElement(React.Fragment, null,\r\n React.createElement(TableCell, { className: `${classes.column} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_PRICE)),\r\n React.createElement(TableCell, { className: `${classes.column} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_DATES)),\r\n React.createElement(TableCell, { className: `${classes.columnMD} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_PRICE)),\r\n React.createElement(TableCell, { className: `${classes.columnMD} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_DATES)),\r\n React.createElement(TableCell, { className: `${classes.columnSM} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_TOUR)),\r\n React.createElement(TableCell, { className: `${classes.column} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_DURATION)),\r\n React.createElement(TableCell, { className: `${classes.column} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_TOUR)),\r\n React.createElement(TableCell, { className: `${classes.columnMD} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_DURATION)),\r\n React.createElement(TableCell, { className: `${classes.columnMD} text-center` },\r\n React.createElement(\"div\", null, _T.COMMON_TOUR))),\r\n flightTo ? React.createElement(React.Fragment, null,\r\n React.createElement(TableCell, { className: `${classes.column} text-center`, colSpan: 2 },\r\n React.createElement(Grid, { container: true, spacing: 1 },\r\n React.createElement(Grid, { item: true, xs: 12 }, _T.COMMON_ECONOMY),\r\n React.createElement(Grid, { item: true, xs: 6 },\r\n React.createElement(SvgIcon, { viewBox: \"0 0 18 18\" },\r\n React.createElement(\"path\", { xmlns: \"http://www.w3.org/2000/svg\", d: \"M11.0483 11.4501C11.0483 11.596 10.9934 11.7358 10.8957 11.839C10.798 11.9421 10.6655 12 10.5273 12H1.14835C1.01016 12 0.877627 11.9421 0.779911 11.839C0.682195 11.7358 0.627298 11.596 0.627298 11.4501C0.627298 11.3043 0.682195 11.1644 0.779911 11.0613C0.877627 10.9582 1.01016 10.9003 1.14835 10.9003H10.5273C10.6655 10.9003 10.798 10.9582 10.8957 11.0613C10.9934 11.1644 11.0483 11.3043 11.0483 11.4501ZM15.9918 3.02354C15.9773 3.10195 15.9471 3.1762 15.9033 3.24138C15.8595 3.30655 15.8031 3.36116 15.7378 3.40157L5.87689 9.45002C5.394 9.75067 4.83143 9.87708 4.27437 9.8101C3.71731 9.74313 3.1961 9.48643 2.78966 9.07887L0.334207 6.65261C0.206878 6.52892 0.110956 6.37352 0.0552048 6.20063C-0.000546038 6.02773 -0.0143472 5.84284 0.0150624 5.66287C0.0457958 5.48222 0.118366 5.3124 0.226317 5.1685C0.334268 5.0246 0.474251 4.91109 0.633811 4.83808L1.72151 4.3432C1.85553 4.28799 2.00433 4.28799 2.13835 4.3432L3.72104 5.06489L4.6915 4.47379L3.22604 3.0854C3.09759 2.96103 3.00054 2.80483 2.94368 2.63092C2.88682 2.45702 2.87194 2.2709 2.90039 2.0894C2.92884 1.9079 2.99972 1.73675 3.10662 1.59143C3.21352 1.44611 3.35306 1.33121 3.51262 1.25711L4.58729 0.769114C4.70596 0.720101 4.83691 0.715252 4.95854 0.755368L8.64498 2.05441L11.3284 0.384212C11.8643 0.0479765 12.4971 -0.0731757 13.1107 0.042963C13.7244 0.159102 14.2779 0.50475 14.6696 1.01655L15.8811 2.57678C15.9291 2.63832 15.9639 2.71015 15.983 2.7873C16.0022 2.86444 16.0052 2.94505 15.9918 3.02354ZM14.6892 2.7761L13.862 1.71075C13.6257 1.40499 13.2934 1.19872 12.9254 1.12936C12.5573 1.06001 12.1779 1.13216 11.856 1.33272L8.97064 3.12664C8.90642 3.16665 8.83482 3.19166 8.76066 3.19996C8.6865 3.20826 8.61151 3.19966 8.54077 3.17475L4.82176 1.86883L3.92946 2.26748L5.929 4.17137C5.98942 4.23026 6.03614 4.30307 6.06552 4.38414C6.09489 4.46521 6.10612 4.55235 6.09834 4.63875C6.08854 4.72422 6.05986 4.80606 6.01461 4.87768C5.96936 4.94931 5.9088 5.00873 5.83782 5.05115L4.01413 6.15087C3.94346 6.19348 3.86459 6.2187 3.78339 6.22465C3.70219 6.23061 3.62076 6.21713 3.54519 6.18523L1.92993 5.4498L1.04414 5.84844L3.4996 8.28157C3.74427 8.52622 4.05784 8.68004 4.3928 8.71973C4.72776 8.75942 5.06585 8.68281 5.35584 8.50152L14.6892 2.7761Z\" }))),\r\n React.createElement(Grid, { item: true, xs: 6 },\r\n React.createElement(SvgIcon, { viewBox: \"0 0 18 18\" },\r\n React.createElement(\"path\", { xmlns: \"http://www.w3.org/2000/svg\", d: \"M4.95167 11.4501C4.95167 11.596 5.00656 11.7358 5.10428 11.839C5.202 11.9421 5.33453 12 5.47272 12H14.8517C14.9898 12 15.1224 11.9421 15.2201 11.839C15.3178 11.7358 15.3727 11.596 15.3727 11.4501C15.3727 11.3043 15.3178 11.1644 15.2201 11.0613C15.1224 10.9582 14.9898 10.9003 14.8517 10.9003H5.47272C5.33453 10.9003 5.202 10.9582 5.10428 11.0613C5.00656 11.1644 4.95167 11.3043 4.95167 11.4501ZM0.00819016 3.02354C0.0227203 3.10195 0.0528822 3.1762 0.0966749 3.24138C0.140468 3.30655 0.196892 3.36116 0.262203 3.40157L10.1231 9.45002C10.606 9.75067 11.1686 9.87708 11.7256 9.8101C12.2827 9.74313 12.8039 9.48643 13.2103 9.07887L15.6658 6.65261C15.7931 6.52892 15.889 6.37352 15.9448 6.20063C16.0005 6.02773 16.0143 5.84284 15.9849 5.66287C15.9542 5.48222 15.8816 5.3124 15.7737 5.1685C15.6657 5.0246 15.5257 4.91109 15.3662 4.83808L14.2785 4.3432C14.1445 4.28799 13.9957 4.28799 13.8617 4.3432L12.279 5.06489L11.3085 4.47379L12.774 3.0854C12.9024 2.96103 12.9995 2.80483 13.0563 2.63092C13.1132 2.45702 13.1281 2.2709 13.0996 2.0894C13.0712 1.9079 13.0003 1.73675 12.8934 1.59143C12.7865 1.44611 12.6469 1.33121 12.4874 1.25711L11.4127 0.769114C11.294 0.720101 11.1631 0.715252 11.0415 0.755368L7.35502 2.05441L4.6716 0.384212C4.13571 0.0479765 3.50293 -0.0731757 2.88926 0.042963C2.27559 0.159102 1.72214 0.50475 1.33036 1.01655L0.118914 2.57678C0.0708647 2.63832 0.0360746 2.71015 0.0169554 2.7873C-0.00216484 2.86444 -0.00515556 2.94505 0.00819016 3.02354ZM1.31082 2.7761L2.13799 1.71075C2.37427 1.40499 2.70657 1.19872 3.07462 1.12936C3.44267 1.06001 3.82208 1.13216 4.14404 1.33272L7.02936 3.12664C7.09358 3.16665 7.16518 3.19166 7.23934 3.19996C7.3135 3.20826 7.38849 3.19966 7.45923 3.17475L11.1782 1.86883L12.0705 2.26748L10.071 4.17137C10.0106 4.23026 9.96386 4.30307 9.93448 4.38414C9.90511 4.46521 9.89388 4.55235 9.90166 4.63875C9.91146 4.72422 9.94014 4.80606 9.98539 4.87768C10.0306 4.94931 10.0912 5.00873 10.1622 5.05115L11.9859 6.15087C12.0565 6.19348 12.1354 6.2187 12.2166 6.22465C12.2978 6.23061 12.3792 6.21713 12.4548 6.18523L14.0701 5.4498L14.9559 5.84844L12.5004 8.28157C12.2557 8.52622 11.9422 8.68004 11.6072 8.71973C11.2722 8.75942 10.9342 8.68281 10.6442 8.50152L1.31082 2.7761Z\" }))))),\r\n React.createElement(TableCell, { className: `${classes.column} text-center`, colSpan: 2 },\r\n React.createElement(Grid, { container: true, spacing: 1 },\r\n React.createElement(Grid, { item: true, xs: 12 }, _T.COMMON_BUSINESS),\r\n React.createElement(Grid, { item: true, xs: 6 },\r\n React.createElement(SvgIcon, { viewBox: \"0 0 18 18\" },\r\n React.createElement(\"path\", { xmlns: \"http://www.w3.org/2000/svg\", d: \"M11.0483 11.4501C11.0483 11.596 10.9934 11.7358 10.8957 11.839C10.798 11.9421 10.6655 12 10.5273 12H1.14835C1.01016 12 0.877627 11.9421 0.779911 11.839C0.682195 11.7358 0.627298 11.596 0.627298 11.4501C0.627298 11.3043 0.682195 11.1644 0.779911 11.0613C0.877627 10.9582 1.01016 10.9003 1.14835 10.9003H10.5273C10.6655 10.9003 10.798 10.9582 10.8957 11.0613C10.9934 11.1644 11.0483 11.3043 11.0483 11.4501ZM15.9918 3.02354C15.9773 3.10195 15.9471 3.1762 15.9033 3.24138C15.8595 3.30655 15.8031 3.36116 15.7378 3.40157L5.87689 9.45002C5.394 9.75067 4.83143 9.87708 4.27437 9.8101C3.71731 9.74313 3.1961 9.48643 2.78966 9.07887L0.334207 6.65261C0.206878 6.52892 0.110956 6.37352 0.0552048 6.20063C-0.000546038 6.02773 -0.0143472 5.84284 0.0150624 5.66287C0.0457958 5.48222 0.118366 5.3124 0.226317 5.1685C0.334268 5.0246 0.474251 4.91109 0.633811 4.83808L1.72151 4.3432C1.85553 4.28799 2.00433 4.28799 2.13835 4.3432L3.72104 5.06489L4.6915 4.47379L3.22604 3.0854C3.09759 2.96103 3.00054 2.80483 2.94368 2.63092C2.88682 2.45702 2.87194 2.2709 2.90039 2.0894C2.92884 1.9079 2.99972 1.73675 3.10662 1.59143C3.21352 1.44611 3.35306 1.33121 3.51262 1.25711L4.58729 0.769114C4.70596 0.720101 4.83691 0.715252 4.95854 0.755368L8.64498 2.05441L11.3284 0.384212C11.8643 0.0479765 12.4971 -0.0731757 13.1107 0.042963C13.7244 0.159102 14.2779 0.50475 14.6696 1.01655L15.8811 2.57678C15.9291 2.63832 15.9639 2.71015 15.983 2.7873C16.0022 2.86444 16.0052 2.94505 15.9918 3.02354ZM14.6892 2.7761L13.862 1.71075C13.6257 1.40499 13.2934 1.19872 12.9254 1.12936C12.5573 1.06001 12.1779 1.13216 11.856 1.33272L8.97064 3.12664C8.90642 3.16665 8.83482 3.19166 8.76066 3.19996C8.6865 3.20826 8.61151 3.19966 8.54077 3.17475L4.82176 1.86883L3.92946 2.26748L5.929 4.17137C5.98942 4.23026 6.03614 4.30307 6.06552 4.38414C6.09489 4.46521 6.10612 4.55235 6.09834 4.63875C6.08854 4.72422 6.05986 4.80606 6.01461 4.87768C5.96936 4.94931 5.9088 5.00873 5.83782 5.05115L4.01413 6.15087C3.94346 6.19348 3.86459 6.2187 3.78339 6.22465C3.70219 6.23061 3.62076 6.21713 3.54519 6.18523L1.92993 5.4498L1.04414 5.84844L3.4996 8.28157C3.74427 8.52622 4.05784 8.68004 4.3928 8.71973C4.72776 8.75942 5.06585 8.68281 5.35584 8.50152L14.6892 2.7761Z\" }))),\r\n React.createElement(Grid, { item: true, xs: 6 },\r\n React.createElement(SvgIcon, { viewBox: \"0 0 18 18\" },\r\n React.createElement(\"path\", { xmlns: \"http://www.w3.org/2000/svg\", d: \"M4.95167 11.4501C4.95167 11.596 5.00656 11.7358 5.10428 11.839C5.202 11.9421 5.33453 12 5.47272 12H14.8517C14.9898 12 15.1224 11.9421 15.2201 11.839C15.3178 11.7358 15.3727 11.596 15.3727 11.4501C15.3727 11.3043 15.3178 11.1644 15.2201 11.0613C15.1224 10.9582 14.9898 10.9003 14.8517 10.9003H5.47272C5.33453 10.9003 5.202 10.9582 5.10428 11.0613C5.00656 11.1644 4.95167 11.3043 4.95167 11.4501ZM0.00819016 3.02354C0.0227203 3.10195 0.0528822 3.1762 0.0966749 3.24138C0.140468 3.30655 0.196892 3.36116 0.262203 3.40157L10.1231 9.45002C10.606 9.75067 11.1686 9.87708 11.7256 9.8101C12.2827 9.74313 12.8039 9.48643 13.2103 9.07887L15.6658 6.65261C15.7931 6.52892 15.889 6.37352 15.9448 6.20063C16.0005 6.02773 16.0143 5.84284 15.9849 5.66287C15.9542 5.48222 15.8816 5.3124 15.7737 5.1685C15.6657 5.0246 15.5257 4.91109 15.3662 4.83808L14.2785 4.3432C14.1445 4.28799 13.9957 4.28799 13.8617 4.3432L12.279 5.06489L11.3085 4.47379L12.774 3.0854C12.9024 2.96103 12.9995 2.80483 13.0563 2.63092C13.1132 2.45702 13.1281 2.2709 13.0996 2.0894C13.0712 1.9079 13.0003 1.73675 12.8934 1.59143C12.7865 1.44611 12.6469 1.33121 12.4874 1.25711L11.4127 0.769114C11.294 0.720101 11.1631 0.715252 11.0415 0.755368L7.35502 2.05441L4.6716 0.384212C4.13571 0.0479765 3.50293 -0.0731757 2.88926 0.042963C2.27559 0.159102 1.72214 0.50475 1.33036 1.01655L0.118914 2.57678C0.0708647 2.63832 0.0360746 2.71015 0.0169554 2.7873C-0.00216484 2.86444 -0.00515556 2.94505 0.00819016 3.02354ZM1.31082 2.7761L2.13799 1.71075C2.37427 1.40499 2.70657 1.19872 3.07462 1.12936C3.44267 1.06001 3.82208 1.13216 4.14404 1.33272L7.02936 3.12664C7.09358 3.16665 7.16518 3.19166 7.23934 3.19996C7.3135 3.20826 7.38849 3.19966 7.45923 3.17475L11.1782 1.86883L12.0705 2.26748L10.071 4.17137C10.0106 4.23026 9.96386 4.30307 9.93448 4.38414C9.90511 4.46521 9.89388 4.55235 9.90166 4.63875C9.91146 4.72422 9.94014 4.80606 9.98539 4.87768C10.0306 4.94931 10.0912 5.00873 10.1622 5.05115L11.9859 6.15087C12.0565 6.19348 12.1354 6.2187 12.2166 6.22465C12.2978 6.23061 12.3792 6.21713 12.4548 6.18523L14.0701 5.4498L14.9559 5.84844L12.5004 8.28157C12.2557 8.52622 11.9422 8.68004 11.6072 8.71973C11.2722 8.75942 10.9342 8.68281 10.6442 8.50152L1.31082 2.7761Z\" })))))) : null,\r\n React.createElement(TableCell, { className: `${classes.column} resultsRightBorder` },\r\n React.createElement(\"div\", null, \"\\u00A0\")))),\r\n React.createElement(TableBody, null, priceOpt.map(price => PriceItem(Object.assign({ price, url: tourDetailsUrl(price.packageId, { hash: price.servicesHash, search: encodeURIComponent(pathname + searchStr) }), classes, flightTo, withHotel, backdrop, snackbar, addToCart }, props)))))),\r\n React.createElement(Grid, { item: true, xs: 12 }, pageIndex < (totalPages - 1) ? React.createElement(Button, { variant: \"text\", color: \"primary\", centerRipple: true, fullWidth: true, onClick: nextPage }, _T.COMMON_MORE) : null)) : null))) : React.createElement(\"div\", null)),\r\n props.controlsType == \"tp\" && priceOpt.length ?\r\n React.createElement(Box, { mt: '24px', mb: md ? '224px' : '136px', mx: \"auto\", className: \"tp-search-result-container\" },\r\n React.createElement(Paper, { classes: { root: 'tp-search-result-paper' } },\r\n React.createElement(HorizontalScrollableBox, { topVisible: true, bottomVisible: false, ref: resultsRef, onLoad: (s) => {\r\n setTimeout(() => {\r\n if (resultsRef.current) {\r\n let f = $(resultsRef.current).stickyTable();\r\n f[0].addEventListener('scroll', s);\r\n }\r\n }, 200);\r\n } }, ({ scroll }) => (\r\n /*
*/\r\n React.createElement(Table, { className: \"tp-search-table\" },\r\n React.createElement(TableHead, null,\r\n React.createElement(TableRow, null,\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-header-cell tp-search-result-cell-promo\" }),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-header-cell tp-search-result-cell-date\" }, _T.COMMON_DATES),\r\n !props.tourSearchSplitByIncludingHotel || withHotel ? React.createElement(React.Fragment, null,\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-header-cell tp-search-result-cell-hotel\" }, _T.COMMON_HOTEL),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-header-cell tp-search-result-cell-hotel-category\" }, _T.COMMON_CATEGORY),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-header-cell tp-search-result-cell-accomodation\" }, _T.COMMON_ACCOMMODATION),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-header-cell tp-search-result-cell-meal\" }, _T.COMMON_MEAL),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-header-cell tp-search-result-cell-nights\" }, _T.COMMON_NIGHTS),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-header-cell tp-search-result-cell-tour\" }, _T.COMMON_TOUR),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-header-cell tp-search-result-cell-tour-condition\" }, _T.COMMON_CONDITIONS),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-header-cell tp-search-result-cell-hotel-quota\" },\r\n React.createElement(SvgIcon, { viewBox: \"0 0 18 18\" },\r\n React.createElement(\"path\", { xmlns: \"http://www.w3.org/2000/svg\", d: \"M15.0527 16.8755H11.1153C10.7672 16.8755 10.4334 16.7372 10.1872 16.491C9.9411 16.2449 9.80282 15.9111 9.80282 15.563V11.6255H7.17787V15.563C7.17787 15.9111 7.03959 16.2449 6.79345 16.491C6.54731 16.7372 6.21348 16.8755 5.86539 16.8755H1.92796C1.57987 16.8755 1.24603 16.7372 0.999894 16.491C0.753757 16.2449 0.615479 15.9111 0.615479 15.563V7.97521C0.615536 7.79311 0.65349 7.61301 0.726926 7.44636C0.800362 7.27972 0.907673 7.13018 1.04203 7.00726L7.60442 1.04369C7.84637 0.822343 8.16242 0.699585 8.49034 0.699585C8.81827 0.699585 9.13432 0.822343 9.37627 1.04369L15.9387 7.00726C16.073 7.13018 16.1803 7.27972 16.2538 7.44636C16.3272 7.61301 16.3651 7.79311 16.3652 7.97521V15.563C16.3652 15.9111 16.2269 16.2449 15.9808 16.491C15.7347 16.7372 15.4008 16.8755 15.0527 16.8755ZM7.17787 10.3131H9.80282C10.1509 10.3131 10.4847 10.4513 10.7309 10.6975C10.977 10.9436 11.1153 11.2775 11.1153 11.6255V15.563H15.0527V7.97521L8.49034 2.01165L1.92796 7.97521V15.563H5.86539V11.6255C5.86539 11.2775 6.00367 10.9436 6.2498 10.6975C6.49594 10.4513 6.82977 10.3131 7.17787 10.3131Z\" })))) : React.createElement(React.Fragment, null,\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-header-cell tp-search-result-cell-nights\" }, _T.COMMON_NIGHTS),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-header-cell tp-search-result-cell-tour\" }, _T.COMMON_TOUR),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-header-cell tp-search-result-cell-tour-condition\" }, _T.COMMON_CONDITIONS)),\r\n flightTo ? React.createElement(React.Fragment, null,\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-header-cell tp-search-result-cell-flight-economy\", colSpan: 2 },\r\n React.createElement(Grid, { container: true, spacing: 1 },\r\n React.createElement(Grid, { item: true, xs: 12 }, _T.COMMON_ECONOMY),\r\n React.createElement(Grid, { item: true, xs: 6 },\r\n React.createElement(SvgIcon, { viewBox: \"0 0 18 18\" },\r\n React.createElement(\"path\", { xmlns: \"http://www.w3.org/2000/svg\", d: \"M11.0483 11.4501C11.0483 11.596 10.9934 11.7358 10.8957 11.839C10.798 11.9421 10.6655 12 10.5273 12H1.14835C1.01016 12 0.877627 11.9421 0.779911 11.839C0.682195 11.7358 0.627298 11.596 0.627298 11.4501C0.627298 11.3043 0.682195 11.1644 0.779911 11.0613C0.877627 10.9582 1.01016 10.9003 1.14835 10.9003H10.5273C10.6655 10.9003 10.798 10.9582 10.8957 11.0613C10.9934 11.1644 11.0483 11.3043 11.0483 11.4501ZM15.9918 3.02354C15.9773 3.10195 15.9471 3.1762 15.9033 3.24138C15.8595 3.30655 15.8031 3.36116 15.7378 3.40157L5.87689 9.45002C5.394 9.75067 4.83143 9.87708 4.27437 9.8101C3.71731 9.74313 3.1961 9.48643 2.78966 9.07887L0.334207 6.65261C0.206878 6.52892 0.110956 6.37352 0.0552048 6.20063C-0.000546038 6.02773 -0.0143472 5.84284 0.0150624 5.66287C0.0457958 5.48222 0.118366 5.3124 0.226317 5.1685C0.334268 5.0246 0.474251 4.91109 0.633811 4.83808L1.72151 4.3432C1.85553 4.28799 2.00433 4.28799 2.13835 4.3432L3.72104 5.06489L4.6915 4.47379L3.22604 3.0854C3.09759 2.96103 3.00054 2.80483 2.94368 2.63092C2.88682 2.45702 2.87194 2.2709 2.90039 2.0894C2.92884 1.9079 2.99972 1.73675 3.10662 1.59143C3.21352 1.44611 3.35306 1.33121 3.51262 1.25711L4.58729 0.769114C4.70596 0.720101 4.83691 0.715252 4.95854 0.755368L8.64498 2.05441L11.3284 0.384212C11.8643 0.0479765 12.4971 -0.0731757 13.1107 0.042963C13.7244 0.159102 14.2779 0.50475 14.6696 1.01655L15.8811 2.57678C15.9291 2.63832 15.9639 2.71015 15.983 2.7873C16.0022 2.86444 16.0052 2.94505 15.9918 3.02354ZM14.6892 2.7761L13.862 1.71075C13.6257 1.40499 13.2934 1.19872 12.9254 1.12936C12.5573 1.06001 12.1779 1.13216 11.856 1.33272L8.97064 3.12664C8.90642 3.16665 8.83482 3.19166 8.76066 3.19996C8.6865 3.20826 8.61151 3.19966 8.54077 3.17475L4.82176 1.86883L3.92946 2.26748L5.929 4.17137C5.98942 4.23026 6.03614 4.30307 6.06552 4.38414C6.09489 4.46521 6.10612 4.55235 6.09834 4.63875C6.08854 4.72422 6.05986 4.80606 6.01461 4.87768C5.96936 4.94931 5.9088 5.00873 5.83782 5.05115L4.01413 6.15087C3.94346 6.19348 3.86459 6.2187 3.78339 6.22465C3.70219 6.23061 3.62076 6.21713 3.54519 6.18523L1.92993 5.4498L1.04414 5.84844L3.4996 8.28157C3.74427 8.52622 4.05784 8.68004 4.3928 8.71973C4.72776 8.75942 5.06585 8.68281 5.35584 8.50152L14.6892 2.7761Z\" }))),\r\n React.createElement(Grid, { item: true, xs: 6 },\r\n React.createElement(SvgIcon, { viewBox: \"0 0 18 18\" },\r\n React.createElement(\"path\", { xmlns: \"http://www.w3.org/2000/svg\", d: \"M4.95167 11.4501C4.95167 11.596 5.00656 11.7358 5.10428 11.839C5.202 11.9421 5.33453 12 5.47272 12H14.8517C14.9898 12 15.1224 11.9421 15.2201 11.839C15.3178 11.7358 15.3727 11.596 15.3727 11.4501C15.3727 11.3043 15.3178 11.1644 15.2201 11.0613C15.1224 10.9582 14.9898 10.9003 14.8517 10.9003H5.47272C5.33453 10.9003 5.202 10.9582 5.10428 11.0613C5.00656 11.1644 4.95167 11.3043 4.95167 11.4501ZM0.00819016 3.02354C0.0227203 3.10195 0.0528822 3.1762 0.0966749 3.24138C0.140468 3.30655 0.196892 3.36116 0.262203 3.40157L10.1231 9.45002C10.606 9.75067 11.1686 9.87708 11.7256 9.8101C12.2827 9.74313 12.8039 9.48643 13.2103 9.07887L15.6658 6.65261C15.7931 6.52892 15.889 6.37352 15.9448 6.20063C16.0005 6.02773 16.0143 5.84284 15.9849 5.66287C15.9542 5.48222 15.8816 5.3124 15.7737 5.1685C15.6657 5.0246 15.5257 4.91109 15.3662 4.83808L14.2785 4.3432C14.1445 4.28799 13.9957 4.28799 13.8617 4.3432L12.279 5.06489L11.3085 4.47379L12.774 3.0854C12.9024 2.96103 12.9995 2.80483 13.0563 2.63092C13.1132 2.45702 13.1281 2.2709 13.0996 2.0894C13.0712 1.9079 13.0003 1.73675 12.8934 1.59143C12.7865 1.44611 12.6469 1.33121 12.4874 1.25711L11.4127 0.769114C11.294 0.720101 11.1631 0.715252 11.0415 0.755368L7.35502 2.05441L4.6716 0.384212C4.13571 0.0479765 3.50293 -0.0731757 2.88926 0.042963C2.27559 0.159102 1.72214 0.50475 1.33036 1.01655L0.118914 2.57678C0.0708647 2.63832 0.0360746 2.71015 0.0169554 2.7873C-0.00216484 2.86444 -0.00515556 2.94505 0.00819016 3.02354ZM1.31082 2.7761L2.13799 1.71075C2.37427 1.40499 2.70657 1.19872 3.07462 1.12936C3.44267 1.06001 3.82208 1.13216 4.14404 1.33272L7.02936 3.12664C7.09358 3.16665 7.16518 3.19166 7.23934 3.19996C7.3135 3.20826 7.38849 3.19966 7.45923 3.17475L11.1782 1.86883L12.0705 2.26748L10.071 4.17137C10.0106 4.23026 9.96386 4.30307 9.93448 4.38414C9.90511 4.46521 9.89388 4.55235 9.90166 4.63875C9.91146 4.72422 9.94014 4.80606 9.98539 4.87768C10.0306 4.94931 10.0912 5.00873 10.1622 5.05115L11.9859 6.15087C12.0565 6.19348 12.1354 6.2187 12.2166 6.22465C12.2978 6.23061 12.3792 6.21713 12.4548 6.18523L14.0701 5.4498L14.9559 5.84844L12.5004 8.28157C12.2557 8.52622 11.9422 8.68004 11.6072 8.71973C11.2722 8.75942 10.9342 8.68281 10.6442 8.50152L1.31082 2.7761Z\" }))))),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-header-cell tp-search-result-cell-flight-business\", colSpan: 2 },\r\n React.createElement(Grid, { container: true, spacing: 1 },\r\n React.createElement(Grid, { item: true, xs: 12 }, _T.COMMON_BUSINESS),\r\n React.createElement(Grid, { item: true, xs: 6 },\r\n React.createElement(SvgIcon, { viewBox: \"0 0 18 18\" },\r\n React.createElement(\"path\", { xmlns: \"http://www.w3.org/2000/svg\", d: \"M11.0483 11.4501C11.0483 11.596 10.9934 11.7358 10.8957 11.839C10.798 11.9421 10.6655 12 10.5273 12H1.14835C1.01016 12 0.877627 11.9421 0.779911 11.839C0.682195 11.7358 0.627298 11.596 0.627298 11.4501C0.627298 11.3043 0.682195 11.1644 0.779911 11.0613C0.877627 10.9582 1.01016 10.9003 1.14835 10.9003H10.5273C10.6655 10.9003 10.798 10.9582 10.8957 11.0613C10.9934 11.1644 11.0483 11.3043 11.0483 11.4501ZM15.9918 3.02354C15.9773 3.10195 15.9471 3.1762 15.9033 3.24138C15.8595 3.30655 15.8031 3.36116 15.7378 3.40157L5.87689 9.45002C5.394 9.75067 4.83143 9.87708 4.27437 9.8101C3.71731 9.74313 3.1961 9.48643 2.78966 9.07887L0.334207 6.65261C0.206878 6.52892 0.110956 6.37352 0.0552048 6.20063C-0.000546038 6.02773 -0.0143472 5.84284 0.0150624 5.66287C0.0457958 5.48222 0.118366 5.3124 0.226317 5.1685C0.334268 5.0246 0.474251 4.91109 0.633811 4.83808L1.72151 4.3432C1.85553 4.28799 2.00433 4.28799 2.13835 4.3432L3.72104 5.06489L4.6915 4.47379L3.22604 3.0854C3.09759 2.96103 3.00054 2.80483 2.94368 2.63092C2.88682 2.45702 2.87194 2.2709 2.90039 2.0894C2.92884 1.9079 2.99972 1.73675 3.10662 1.59143C3.21352 1.44611 3.35306 1.33121 3.51262 1.25711L4.58729 0.769114C4.70596 0.720101 4.83691 0.715252 4.95854 0.755368L8.64498 2.05441L11.3284 0.384212C11.8643 0.0479765 12.4971 -0.0731757 13.1107 0.042963C13.7244 0.159102 14.2779 0.50475 14.6696 1.01655L15.8811 2.57678C15.9291 2.63832 15.9639 2.71015 15.983 2.7873C16.0022 2.86444 16.0052 2.94505 15.9918 3.02354ZM14.6892 2.7761L13.862 1.71075C13.6257 1.40499 13.2934 1.19872 12.9254 1.12936C12.5573 1.06001 12.1779 1.13216 11.856 1.33272L8.97064 3.12664C8.90642 3.16665 8.83482 3.19166 8.76066 3.19996C8.6865 3.20826 8.61151 3.19966 8.54077 3.17475L4.82176 1.86883L3.92946 2.26748L5.929 4.17137C5.98942 4.23026 6.03614 4.30307 6.06552 4.38414C6.09489 4.46521 6.10612 4.55235 6.09834 4.63875C6.08854 4.72422 6.05986 4.80606 6.01461 4.87768C5.96936 4.94931 5.9088 5.00873 5.83782 5.05115L4.01413 6.15087C3.94346 6.19348 3.86459 6.2187 3.78339 6.22465C3.70219 6.23061 3.62076 6.21713 3.54519 6.18523L1.92993 5.4498L1.04414 5.84844L3.4996 8.28157C3.74427 8.52622 4.05784 8.68004 4.3928 8.71973C4.72776 8.75942 5.06585 8.68281 5.35584 8.50152L14.6892 2.7761Z\" }))),\r\n React.createElement(Grid, { item: true, xs: 6 },\r\n React.createElement(SvgIcon, { viewBox: \"0 0 18 18\" },\r\n React.createElement(\"path\", { xmlns: \"http://www.w3.org/2000/svg\", d: \"M4.95167 11.4501C4.95167 11.596 5.00656 11.7358 5.10428 11.839C5.202 11.9421 5.33453 12 5.47272 12H14.8517C14.9898 12 15.1224 11.9421 15.2201 11.839C15.3178 11.7358 15.3727 11.596 15.3727 11.4501C15.3727 11.3043 15.3178 11.1644 15.2201 11.0613C15.1224 10.9582 14.9898 10.9003 14.8517 10.9003H5.47272C5.33453 10.9003 5.202 10.9582 5.10428 11.0613C5.00656 11.1644 4.95167 11.3043 4.95167 11.4501ZM0.00819016 3.02354C0.0227203 3.10195 0.0528822 3.1762 0.0966749 3.24138C0.140468 3.30655 0.196892 3.36116 0.262203 3.40157L10.1231 9.45002C10.606 9.75067 11.1686 9.87708 11.7256 9.8101C12.2827 9.74313 12.8039 9.48643 13.2103 9.07887L15.6658 6.65261C15.7931 6.52892 15.889 6.37352 15.9448 6.20063C16.0005 6.02773 16.0143 5.84284 15.9849 5.66287C15.9542 5.48222 15.8816 5.3124 15.7737 5.1685C15.6657 5.0246 15.5257 4.91109 15.3662 4.83808L14.2785 4.3432C14.1445 4.28799 13.9957 4.28799 13.8617 4.3432L12.279 5.06489L11.3085 4.47379L12.774 3.0854C12.9024 2.96103 12.9995 2.80483 13.0563 2.63092C13.1132 2.45702 13.1281 2.2709 13.0996 2.0894C13.0712 1.9079 13.0003 1.73675 12.8934 1.59143C12.7865 1.44611 12.6469 1.33121 12.4874 1.25711L11.4127 0.769114C11.294 0.720101 11.1631 0.715252 11.0415 0.755368L7.35502 2.05441L4.6716 0.384212C4.13571 0.0479765 3.50293 -0.0731757 2.88926 0.042963C2.27559 0.159102 1.72214 0.50475 1.33036 1.01655L0.118914 2.57678C0.0708647 2.63832 0.0360746 2.71015 0.0169554 2.7873C-0.00216484 2.86444 -0.00515556 2.94505 0.00819016 3.02354ZM1.31082 2.7761L2.13799 1.71075C2.37427 1.40499 2.70657 1.19872 3.07462 1.12936C3.44267 1.06001 3.82208 1.13216 4.14404 1.33272L7.02936 3.12664C7.09358 3.16665 7.16518 3.19166 7.23934 3.19996C7.3135 3.20826 7.38849 3.19966 7.45923 3.17475L11.1782 1.86883L12.0705 2.26748L10.071 4.17137C10.0106 4.23026 9.96386 4.30307 9.93448 4.38414C9.90511 4.46521 9.89388 4.55235 9.90166 4.63875C9.91146 4.72422 9.94014 4.80606 9.98539 4.87768C10.0306 4.94931 10.0912 5.00873 10.1622 5.05115L11.9859 6.15087C12.0565 6.19348 12.1354 6.2187 12.2166 6.22465C12.2978 6.23061 12.3792 6.21713 12.4548 6.18523L14.0701 5.4498L14.9559 5.84844L12.5004 8.28157C12.2557 8.52622 11.9422 8.68004 11.6072 8.71973C11.2722 8.75942 10.9342 8.68281 10.6442 8.50152L1.31082 2.7761Z\" })))))) : null,\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-header-cell tp-search-result-cell-price\" }, _T.COMMON_PRICE))),\r\n React.createElement(TableBody, null,\r\n priceOpt.map(price => TpPriceItem(Object.assign({ price, url: tourDetailsUrl(price.packageId, { hash: price.servicesHash, search: encodeURIComponent(pathname + searchStr) }), flightTo, withHotel, classes, backdrop, snackbar, addToCart }, props))),\r\n pageIndex < (totalPages - 1) && tpMultiline ? React.createElement(TableRow, null,\r\n React.createElement(TableCell, { colSpan: flightTo ? 15 : 11, style: { borderBottom: 'none' } },\r\n React.createElement(Button, { variant: \"text\", color: \"primary\", centerRipple: true, fullWidth: true, onClick: nextPage }, _T.COMMON_MORE))) : null))\r\n /*
*/\r\n ))),\r\n pageIndex < (totalPages - 1) && !tpMultiline ? React.createElement(Paper, { classes: { root: 'tp-search-result-paper' } },\r\n React.createElement(Button, { variant: \"text\", color: \"primary\", centerRipple: true, fullWidth: true, onClick: nextPage }, _T.COMMON_MORE)) : null) : null,\r\n replaceCartTourDialogPrice\r\n ? React.createElement(ReplaceCartTourDialog, { price: replaceCartTourDialogPrice, open: !!replaceCartTourDialogPrice, onClose: () => setReplaceCartTourDialogPrice(undefined), onCancel: () => setReplaceCartTourDialogPrice(undefined), onApprove: (p) => __awaiter(this, void 0, void 0, function* () {\r\n const errors = yield addTourToCart({ tourVariantId: p.tourVariantId, hash: p.servicesHash, accmdVariantIds: [], externalFlight: undefined, extras: undefined, replaceExistingTour: true });\r\n if (!errors)\r\n window.open(appUrl(\"/Cart\"), \"_blank\");\r\n setTimeout(() => setReplaceCartTourDialogPrice(undefined), 200);\r\n setTimeout(() => backdrop.hide(), 2000);\r\n }) }) : null));\r\n}\r\nexport function ReplaceCartTourDialog(_a) {\r\n var { price, onCancel, onApprove } = _a, dialogProps = __rest(_a, [\"price\", \"onCancel\", \"onApprove\"]);\r\n return (React.createElement(Dialog, Object.assign({}, dialogProps),\r\n React.createElement(DialogTitle, null, _T.REPLACE_CART_TOUR_DIALOG_TITLE),\r\n React.createElement(DialogContent, null,\r\n React.createElement(DialogContentText, null, _T.REPLACE_CART_TOUR_DIALOG_CONTENT)),\r\n React.createElement(DialogActions, null,\r\n React.createElement(Button, { onClick: onCancel, color: \"default\" }, _T.COMMON_NO),\r\n React.createElement(Button, { onClick: () => onApprove(price), color: \"primary\", autoFocus: true }, _T.COMMON_YES))));\r\n}\r\nfunction PriceItem(_a) {\r\n var _b;\r\n var { price, url, classes, backdrop, snackbar, flightTo, withHotel, addToCart } = _a, props = __rest(_a, [\"price\", \"url\", \"classes\", \"backdrop\", \"snackbar\", \"flightTo\", \"withHotel\", \"addToCart\"]);\r\n const openTourPage = (e) => {\r\n e.preventDefault();\r\n checkTourPrice(price.servicesHash)\r\n .then(valid => {\r\n if (valid)\r\n window.open(url, \"_blank\");\r\n else {\r\n snackbar.enqueueSnackbar('Результаты поиска могли устареть. Пожалуйста, попробуйте повторить поиск.', { variant: 'error', autoHideDuration: 10000, onClick: () => location.reload(), });\r\n }\r\n });\r\n };\r\n const PriceButton = () => (React.createElement(\"strong\", { className: \"results-price text-nowrap\" }, props.tourSearchResultNavigationMode == 1\r\n ? url\r\n ? React.createElement(\"a\", { href: url, onClick: openTourPage, onTouchEnd: openTourPage, className: \"tour-url\", target: \"_blank\" },\r\n price.cost,\r\n \" \",\r\n price.currency)\r\n : React.createElement(React.Fragment, null,\r\n price.cost,\r\n \" \",\r\n price.currency)\r\n : React.createElement(\"a\", { href: \"#\", onClick: e => {\r\n e.preventDefault();\r\n addToCart(price);\r\n } },\r\n price.cost,\r\n \" \",\r\n price.currency)));\r\n return (React.createElement(Fragment, null,\r\n React.createElement(TableRow, { className: classes.rowSM },\r\n withHotel ? null :\r\n React.createElement(TableCell, { className: `result-price-promo-col position-relative${price.promoProgramId && props.promoEnabled ? ' promo-highlight' : ''}` },\r\n price.promoProgramId ?\r\n React.createElement(\"div\", { className: \"result-price-promo-text\", title: price.promoProgramName }, \"P R O M O\") : null,\r\n !price.isRefundable ? React.createElement(\"div\", { className: \"nonref-badge\" },\r\n React.createElement(\"span\", { className: \"nonref-badge-body\" }, _T.TOUR_SEARCH_NONREF_BADGE_TITLE),\r\n React.createElement(\"svg\", { viewBox: \"0 0 15 15\", width: \"18\", xmlns: \"http://www.w3.org/2000/svg\" },\r\n React.createElement(\"path\", { d: \"M 0 0 H 12 L 6 7 L 12 15 H 0 V 0\", fill: \"red\" }))) : null),\r\n React.createElement(TableCell, { colSpan: withHotel ? 3 : 2 },\r\n React.createElement(Grid, { container: true, alignItems: \"center\" },\r\n React.createElement(Grid, { item: true, xs: 8 },\r\n url ?\r\n React.createElement(\"a\", { href: url, onClick: openTourPage, onTouchEnd: openTourPage, className: \"tour-url\", target: \"_blank\" }, price.packageName) :\r\n React.createElement(React.Fragment, null, price.packageName),\r\n React.createElement(\"br\", null),\r\n React.createElement(\"span\", { className: \"small text-muted\" },\r\n moment(price.date).format(\"DD.MM\"),\r\n \" - \",\r\n moment(price.dateEnd).format(\"DD.MM\"))),\r\n React.createElement(Grid, { item: true, xs: 4 },\r\n React.createElement(\"div\", { className: \"results-price-container text-right\" },\r\n React.createElement(PriceButton, null)))))),\r\n ((_b = price.hotels) === null || _b === void 0 ? void 0 : _b.length) ? React.createElement(React.Fragment, null, price.hotels.map((hotel, index) => (React.createElement(TableRow, null,\r\n index == 0 ? React.createElement(React.Fragment, null,\r\n React.createElement(TableCell, { className: `result-price-promo-col position-relative${price.promoProgramId && props.promoEnabled ? ' promo-highlight' : ''}`, rowSpan: price.hotels.length },\r\n price.promoProgramId ?\r\n React.createElement(\"div\", { className: \"result-price-promo-text\", title: price.promoProgramName }, \"P R O M O\") : null,\r\n !price.isRefundable ? React.createElement(\"div\", { className: \"nonref-badge\" },\r\n React.createElement(\"span\", { className: \"nonref-badge-body\" }, _T.TOUR_SEARCH_NONREF_BADGE_TITLE),\r\n React.createElement(\"svg\", { viewBox: \"0 0 15 15\", width: \"18\", xmlns: \"http://www.w3.org/2000/svg\" },\r\n React.createElement(\"path\", { d: \"M 0 0 H 12 L 6 7 L 12 15 H 0 V 0\", fill: \"red\" }))) : null),\r\n React.createElement(TableCell, { rowSpan: price.hotels.length, className: `${classes.column} text-center` },\r\n React.createElement(\"div\", { className: \"results-price-container\" },\r\n React.createElement(PriceButton, null))),\r\n React.createElement(TableCell, { rowSpan: price.hotels.length, className: `${index > 0 ? 'notopborder ' : ''}${classes.column} text-nowrap text-center` },\r\n React.createElement(\"div\", null,\r\n moment(price.date).format(\"DD.MM\"),\r\n \" - \",\r\n moment(price.dateEnd).format(\"DD.MM\"))),\r\n React.createElement(TableCell, { rowSpan: price.hotels.length, className: `${index > 0 ? 'notopborder ' : ''}${classes.columnMD} text-nowrap text-center` },\r\n React.createElement(\"div\", { className: \"results-price-container\" },\r\n React.createElement(PriceButton, null)),\r\n url ?\r\n React.createElement(\"a\", { href: url, onClick: openTourPage, onTouchEnd: openTourPage, className: \"tour-url\", target: \"_blank\" }, price.packageName) :\r\n React.createElement(React.Fragment, null, price.packageName),\r\n React.createElement(\"br\", null),\r\n React.createElement(\"span\", { className: \"small text-muted\" },\r\n moment(price.date).format(\"DD.MM\"),\r\n \" - \",\r\n moment(price.dateEnd).format(\"DD.MM\")))) : null,\r\n React.createElement(TableCell, { className: `${index > 0 ? 'notopborder ' : ''}${classes.columnMD} text-center link-color-black` },\r\n props.tourSearchHotelUrlVisible && hotel.hotelUrl ?\r\n React.createElement(\"a\", { href: hotel.hotelUrl }, hotel.hotelName) :\r\n hotel.hotelName,\r\n React.createElement(\"br\", null),\r\n React.createElement(\"span\", { className: \"small text-muted\" }, hotel.cityName)),\r\n React.createElement(TableCell, { className: `${index > 0 ? 'notopborder ' : ''}${classes.column} text-center link-color-black` },\r\n props.tourSearchHotelUrlVisible && hotel.hotelUrl ?\r\n React.createElement(\"a\", { href: hotel.hotelUrl }, hotel.hotelName) :\r\n hotel.hotelName,\r\n React.createElement(\"br\", null),\r\n React.createElement(\"span\", { className: \"small text-muted\" }, hotel.cityName)),\r\n React.createElement(TableCell, { className: `${index > 0 ? 'notopborder ' : ''}${classes.column} text-center ` },\r\n hotel.roomCategoryName,\r\n React.createElement(\"br\", null),\r\n React.createElement(\"span\", { className: \"small text-muted\" }, hotel.roomTypeName)),\r\n React.createElement(TableCell, { className: `${index > 0 ? 'notopborder ' : ''}${classes.columnMD} text-center ` },\r\n hotel.roomCategoryName,\r\n React.createElement(\"br\", null),\r\n React.createElement(\"span\", { className: \"small text-muted\" }, hotel.roomTypeName)),\r\n React.createElement(TableCell, { className: `${index > 0 ? 'notopborder ' : ''}${classes.column} text-center small` }, hotel.accommodationName),\r\n React.createElement(TableCell, { className: `${index > 0 ? 'notopborder ' : ''}${classes.column} text-center tooltip-wide` }, hotel.mealName),\r\n React.createElement(TableCell, { className: `${index > 0 ? 'notopborder ' : ''}${classes.column} text-center` }, hotel.duration),\r\n React.createElement(TableCell, { className: `${index > 0 ? 'notopborder ' : ''}${classes.columnMD} text-center` },\r\n hotel.accommodationName,\r\n React.createElement(\"br\", null),\r\n React.createElement(\"span\", { className: \"small text-muted\" },\r\n hotel.mealName,\r\n \", \",\r\n hotel.duration,\r\n \" \",\r\n pluralizeDays(hotel.duration))),\r\n React.createElement(TableCell, { className: `${index > 0 ? 'notopborder ' : ''}${classes.columnSM} ${classes.notopborderSM} ${hotel.quota >= 1 ? 'success' : hotel.quota == -2 ? 'danger' : 'warning'} tooltip-wide` },\r\n props.tourSearchHotelUrlVisible && hotel.hotelUrl ?\r\n React.createElement(\"a\", { href: hotel.hotelUrl }, hotel.hotelName) :\r\n hotel.hotelName,\r\n \", \",\r\n React.createElement(\"span\", { className: \"text-muted\" }, hotel.cityName),\r\n React.createElement(\"br\", null),\r\n hotel.roomCategoryName,\r\n \" / \",\r\n hotel.roomTypeName,\r\n \" / \",\r\n hotel.mealName,\r\n React.createElement(\"br\", null),\r\n React.createElement(\"span\", { className: \"small text-muted\" },\r\n hotel.accommodationName,\r\n \", \",\r\n hotel.duration,\r\n \" \",\r\n pluralizeDays(hotel.duration))),\r\n index == 0 ? React.createElement(React.Fragment, null,\r\n React.createElement(TableCell, { className: `link-color-black${index > 0 ? ' notopborder' : ''} ${classes.column}`, rowSpan: price.hotels.length }, props.tourSearchResultNavigationMode == 1 || !url ?\r\n React.createElement(React.Fragment, null, price.packageName) :\r\n React.createElement(\"a\", { href: url, onClick: openTourPage, onTouchEnd: openTourPage, className: \"tour-url\", target: \"_blank\" }, price.packageName))) : null,\r\n React.createElement(TableCell, { className: `text-center${index > 0 ? ' notopborder' : ''} ${classes.notopborderSM} ${hotel.quota >= 1 ? 'success' : hotel.quota == -2 ? 'danger' : 'warning'}`, style: { verticalAlign: 'middle' } }, hotel.quota >= 1 ? '+' : hotel.quota == -2 ? '-' : '?'),\r\n index == 0 && flightTo ? React.createElement(React.Fragment, null,\r\n (() => {\r\n const flights = price.flights.filter(f => (f.type == 1 || f.type == 3) && f.airServiceName.toLowerCase() != 'business');\r\n return React.createElement(TableCell, { className: `${classes.column} text-center warning`, style: { verticalAlign: 'middle' }, rowSpan: price.hotels.length }, flights.length ?\r\n React.createElement(Tooltip, { title: React.createElement(Typography, { variant: 'body2' }, flights.map(f => f.name).join(', ')), arrow: true, placement: \"top\" },\r\n React.createElement(\"span\", null, \"?\")) : React.createElement(\"span\", null, \"?\"));\r\n })(),\r\n (() => {\r\n const flights = price.flights.filter(f => f.type == 2 && f.airServiceName.toLowerCase() != 'business');\r\n return React.createElement(TableCell, { className: `${classes.column} text-center warning`, style: { verticalAlign: 'middle' }, rowSpan: price.hotels.length }, flights.length ?\r\n React.createElement(Tooltip, { title: React.createElement(Typography, { variant: 'body2' }, flights.map(f => f.name).join(', ')), arrow: true, placement: \"top\" },\r\n React.createElement(\"span\", null, \"?\")) : React.createElement(\"span\", null, \"?\"));\r\n })(),\r\n (() => {\r\n const flights = price.flights.filter(f => (f.type == 1 || f.type == 3) && f.airServiceName.toLowerCase() == 'business');\r\n return React.createElement(TableCell, { className: `${classes.column} text-center warning`, style: { verticalAlign: 'middle' }, rowSpan: price.hotels.length }, flights.length ?\r\n React.createElement(Tooltip, { title: React.createElement(Typography, { variant: 'body2' }, flights.map(f => f.name).join(', ')), arrow: true, placement: \"top\" },\r\n React.createElement(\"span\", null, \"?\")) : React.createElement(\"span\", null, \"?\"));\r\n })(),\r\n (() => {\r\n const flights = price.flights.filter(f => f.type == 2 && f.airServiceName.toLowerCase() == 'business');\r\n return React.createElement(TableCell, { className: `${classes.column} text-center warning`, style: { verticalAlign: 'middle' }, rowSpan: price.hotels.length }, flights.length ?\r\n React.createElement(Tooltip, { title: React.createElement(Typography, { variant: 'body2' }, flights.map(f => f.name).join(', ')), arrow: true, placement: \"top\" },\r\n React.createElement(\"span\", null, \"?\")) : React.createElement(\"span\", null, \"?\"));\r\n })()) : null,\r\n React.createElement(TableCell, { className: `resultsRightBorder${index > 0 ? ' notopborder' : ''} ${classes.column}` },\r\n React.createElement(\"div\", null, \"\\u00A0\")))))) : React.createElement(React.Fragment, null,\r\n React.createElement(TableRow, { className: classes.row },\r\n React.createElement(TableCell, { className: `result-price-promo-col position-relative${price.promoProgramId && props.promoEnabled ? ' promo-highlight' : ''}` },\r\n price.promoProgramId ?\r\n React.createElement(\"div\", { className: \"result-price-promo-text\", title: price.promoProgramName }, \"P R O M O\") : null,\r\n !price.isRefundable ? React.createElement(\"div\", { className: \"nonref-badge\" },\r\n React.createElement(\"span\", { className: \"nonref-badge-body\" }, _T.TOUR_SEARCH_NONREF_BADGE_TITLE),\r\n React.createElement(\"svg\", { viewBox: \"0 0 15 15\", width: \"18\", xmlns: \"http://www.w3.org/2000/svg\" },\r\n React.createElement(\"path\", { d: \"M 0 0 H 12 L 6 7 L 12 15 H 0 V 0\", fill: \"red\" }))) : null),\r\n !props.tourSearchSplitByIncludingHotel || withHotel ? React.createElement(React.Fragment, null,\r\n React.createElement(TableCell, { className: `${classes.column} text-center` },\r\n React.createElement(\"div\", { className: \"results-price-container\" },\r\n React.createElement(PriceButton, null))),\r\n React.createElement(TableCell, { className: `${classes.column} text-nowrap text-center` },\r\n React.createElement(\"div\", null,\r\n moment(price.date).format(\"DD.MM\"),\r\n \" - \",\r\n moment(price.dateEnd).format(\"DD.MM\"))),\r\n React.createElement(TableCell, { className: `${classes.columnMD} text-nowrap text-center` },\r\n React.createElement(\"div\", { className: \"results-price-container\" },\r\n React.createElement(PriceButton, null)),\r\n url ?\r\n React.createElement(\"a\", { href: url, onClick: openTourPage, onTouchEnd: openTourPage, className: \"tour-url\", target: \"_blank\" }, price.packageName) :\r\n React.createElement(React.Fragment, null, price.packageName),\r\n React.createElement(\"br\", null),\r\n React.createElement(\"span\", { className: \"small text-muted\" },\r\n moment(price.date).format(\"DD.MM\"),\r\n \" - \",\r\n moment(price.dateEnd).format(\"DD.MM\"))),\r\n React.createElement(TableCell, { className: `${classes.columnMD} text-center link-color-black` }),\r\n React.createElement(TableCell, { className: `${classes.column} text-center link-color-black` }),\r\n React.createElement(TableCell, { className: `${classes.column} text-center ` }),\r\n React.createElement(TableCell, { className: `${classes.columnMD} text-center ` }),\r\n React.createElement(TableCell, { className: `${classes.column} text-center small` }),\r\n React.createElement(TableCell, { className: `${classes.column} text-center tooltip-wide` }),\r\n React.createElement(TableCell, { className: `${classes.column} text-center` }, price.duration),\r\n React.createElement(TableCell, { className: `${classes.columnMD} text-center` }),\r\n React.createElement(TableCell, { className: `${classes.columnSM} ${classes.notopborderSM} tooltip-wide` }),\r\n React.createElement(TableCell, { className: `link-color-black ${classes.column}` }, props.tourSearchResultNavigationMode == 1 || !url ?\r\n React.createElement(React.Fragment, null, price.packageName) :\r\n React.createElement(\"a\", { href: url, onClick: openTourPage, onTouchEnd: openTourPage, className: \"tour-url\", target: \"_blank\" }, price.packageName)),\r\n React.createElement(TableCell, { className: `text-center ${classes.notopborderSM}`, style: { verticalAlign: 'middle' } })) : React.createElement(React.Fragment, null,\r\n React.createElement(TableCell, { className: `${classes.column} text-center` },\r\n React.createElement(\"div\", { className: \"results-price-container\" },\r\n React.createElement(PriceButton, null))),\r\n React.createElement(TableCell, { className: `${classes.column} text-nowrap text-center` },\r\n React.createElement(\"div\", null,\r\n moment(price.date).format(\"DD.MM\"),\r\n \" - \",\r\n moment(price.dateEnd).format(\"DD.MM\"))),\r\n React.createElement(TableCell, { className: `${classes.columnMD} text-center` },\r\n React.createElement(\"div\", { className: \"results-price-container\" },\r\n React.createElement(PriceButton, null))),\r\n React.createElement(TableCell, { className: `${classes.columnMD} text-nowrap text-center` },\r\n React.createElement(\"div\", null,\r\n moment(price.date).format(\"DD.MM\"),\r\n \" - \",\r\n moment(price.dateEnd).format(\"DD.MM\"))),\r\n React.createElement(TableCell, { className: `${classes.columnSM} text-nowrap text-center` },\r\n React.createElement(\"div\", { className: \"results-price-container\" },\r\n React.createElement(PriceButton, null)),\r\n url ?\r\n React.createElement(\"a\", { href: url, onClick: openTourPage, onTouchEnd: openTourPage, className: \"tour-url\", target: \"_blank\" }, price.packageName) :\r\n React.createElement(React.Fragment, null, price.packageName),\r\n React.createElement(\"br\", null),\r\n React.createElement(\"span\", { className: \"small text-muted\" },\r\n moment(price.date).format(\"DD.MM\"),\r\n \" - \",\r\n moment(price.dateEnd).format(\"DD.MM\"))),\r\n React.createElement(TableCell, { className: `${classes.column} text-center` }, price.duration),\r\n React.createElement(TableCell, { className: `link-color-black ${classes.column}` }, props.tourSearchResultNavigationMode == 1 || !url ?\r\n React.createElement(React.Fragment, null, price.packageName) :\r\n React.createElement(\"a\", { href: url, onClick: openTourPage, onTouchEnd: openTourPage, className: \"tour-url\", target: \"_blank\" }, price.packageName)),\r\n React.createElement(TableCell, { className: `${classes.columnMD} text-center` }, price.duration),\r\n React.createElement(TableCell, { className: `link-color-black ${classes.columnMD}` }, props.tourSearchResultNavigationMode == 1 || !url ?\r\n React.createElement(React.Fragment, null, price.packageName) :\r\n React.createElement(\"a\", { href: url, onClick: openTourPage, onTouchEnd: openTourPage, className: \"tour-url\", target: \"_blank\" }, price.packageName))),\r\n flightTo ? React.createElement(React.Fragment, null,\r\n (() => {\r\n const flights = price.flights.filter(f => (f.type == 1 || f.type == 3) && f.airServiceName.toLowerCase() != 'business');\r\n return React.createElement(TableCell, { className: `${classes.column} text-center warning`, style: { verticalAlign: 'middle' } }, flights.length ?\r\n React.createElement(Tooltip, { title: React.createElement(Typography, { variant: 'body2' }, flights.map(f => f.name).join(', ')), arrow: true, placement: \"top\" },\r\n React.createElement(\"span\", null, \"?\")) : React.createElement(\"span\", null, \"?\"));\r\n })(),\r\n (() => {\r\n const flights = price.flights.filter(f => f.type == 2 && f.airServiceName.toLowerCase() != 'business');\r\n return React.createElement(TableCell, { className: `${classes.column} text-center warning`, style: { verticalAlign: 'middle' } }, flights.length ?\r\n React.createElement(Tooltip, { title: React.createElement(Typography, { variant: 'body2' }, flights.map(f => f.name).join(', ')), arrow: true, placement: \"top\" },\r\n React.createElement(\"span\", null, \"?\")) : React.createElement(\"span\", null, \"?\"));\r\n })(),\r\n (() => {\r\n const flights = price.flights.filter(f => (f.type == 1 || f.type == 3) && f.airServiceName.toLowerCase() == 'business');\r\n return React.createElement(TableCell, { className: `${classes.column} text-center warning`, style: { verticalAlign: 'middle' } }, flights.length ?\r\n React.createElement(Tooltip, { title: React.createElement(Typography, { variant: 'body2' }, flights.map(f => f.name).join(', ')), arrow: true, placement: \"top\" },\r\n React.createElement(\"span\", null, \"?\")) : React.createElement(\"span\", null, \"?\"));\r\n })(),\r\n (() => {\r\n const flights = price.flights.filter(f => f.type == 2 && f.airServiceName.toLowerCase() == 'business');\r\n return React.createElement(TableCell, { className: `${classes.column} text-center warning`, style: { verticalAlign: 'middle' } }, flights.length ?\r\n React.createElement(Tooltip, { title: React.createElement(Typography, { variant: 'body2' }, flights.map(f => f.name).join(', ')), arrow: true, placement: \"top\" },\r\n React.createElement(\"span\", null, \"?\")) : React.createElement(\"span\", null, \"?\"));\r\n })()) : null,\r\n React.createElement(TableCell, { className: `resultsRightBorder ${classes.column}` },\r\n React.createElement(\"div\", null, \"\\u00A0\"))))));\r\n}\r\nfunction TpPriceItem(_a) {\r\n var _b;\r\n var { price, url, classes, backdrop, snackbar, flightTo, withHotel, addToCart } = _a, props = __rest(_a, [\"price\", \"url\", \"classes\", \"backdrop\", \"snackbar\", \"flightTo\", \"withHotel\", \"addToCart\"]);\r\n const openTourPage = (e) => {\r\n openTourPage2(e);\r\n };\r\n const openTourPage2 = (e, hotelIndex) => {\r\n e.preventDefault();\r\n checkTourPrice(price.servicesHash)\r\n .then(valid => {\r\n if (valid)\r\n window.open(hotelIndex === undefined ? url : `${url}#tour-hotel-description-${hotelIndex}`, \"_blank\");\r\n else {\r\n snackbar.enqueueSnackbar('Результаты поиска могли устареть. Пожалуйста, попробуйте повторить поиск.', { variant: 'error', autoHideDuration: 10000, onClick: () => location.reload(), });\r\n }\r\n });\r\n };\r\n const addToCartClick = (e, hotelIndex) => {\r\n e.preventDefault();\r\n checkTourPrice(price.servicesHash)\r\n .then(valid => {\r\n if (valid)\r\n addToCart(price);\r\n else {\r\n snackbar.enqueueSnackbar('Результаты поиска могли устареть. Пожалуйста, попробуйте повторить поиск.', { variant: 'error', autoHideDuration: 10000, onClick: () => location.reload(), });\r\n }\r\n });\r\n };\r\n return (React.createElement(React.Fragment, null, ((_b = price.hotels) === null || _b === void 0 ? void 0 : _b.length) ? React.createElement(React.Fragment, null, price.hotels.map((hotel, index) => (React.createElement(TableRow, { className: `${!price.isRefundable ? ' nonref-row' : ''}` },\r\n index == 0 ? React.createElement(React.Fragment, null,\r\n React.createElement(TableCell, { className: `tp-search-result-cell tp-search-result-cell-promo${price.promoProgramId && props.promoEnabled ? ' promo-highlight' : ''}`, rowSpan: price.hotels.length },\r\n price.promoProgramId ?\r\n React.createElement(\"div\", { className: \"tp-result-price-promo-text\", title: price.promoProgramName }, \"P R O M O\") : null,\r\n !price.isRefundable ? React.createElement(\"div\", { className: \"nonref-badge\" },\r\n React.createElement(\"span\", { className: \"nonref-badge-body\" }, _T.TOUR_SEARCH_NONREF_BADGE_TITLE),\r\n React.createElement(\"svg\", { viewBox: \"0 0 15 15\", width: \"18\", xmlns: \"http://www.w3.org/2000/svg\" },\r\n React.createElement(\"path\", { d: \"M 0 0 H 12 L 6 7 L 12 15 H 0 V 0\", fill: \"red\" }))) : null),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-date\", rowSpan: price.hotels.length },\r\n moment(price.date).format('DD.MM'),\r\n \"-\",\r\n moment(price.dateEnd).format('DD.MM'),\r\n React.createElement(\"div\", { className: \"subtext\" },\r\n moment(price.date).format('dd'),\r\n \"-\",\r\n moment(price.dateEnd).format('dd')))) : null,\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-hotel\" },\r\n props.tourSearchHotelUrlVisible && hotel.hotelUrl ?\r\n React.createElement(\"a\", { target: \"_blank\", href: hotel.hotelUrl },\r\n hotel.hotelName,\r\n \" \",\r\n hotel.categoryName) :\r\n React.createElement(\"a\", { target: \"_blank\", href: `${url}#tour-hotel-description-${index}`, onClick: e => openTourPage2(e, index), onTouchEnd: e => openTourPage2(e, index) },\r\n hotel.hotelName,\r\n \" \",\r\n hotel.categoryName),\r\n React.createElement(\"div\", { className: \"subtext\" }, hotel.cityName)),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-hotel-category\" },\r\n hotel.roomCategoryName,\r\n React.createElement(\"div\", { className: \"subtext\" }, hotel.roomTypeName)),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-accomodation\" }, hotel.accommodationName),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-meal\" }, hotel.mealName),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-nights\" }, hotel.duration),\r\n index == 0 ? React.createElement(React.Fragment, null,\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-tour\", rowSpan: price.hotels.length }, props.tourSearchResultNavigationMode == 1 || !url ?\r\n React.createElement(React.Fragment, null, price.packageName) :\r\n React.createElement(\"a\", { href: url, onClick: openTourPage, onTouchEnd: openTourPage, className: \"tour-url\", target: \"_blank\" }, price.packageName)),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-tour-condition\", rowSpan: price.hotels.length, title: price.packageName }, props.tourSearchResultNavigationMode == 1 || !url ?\r\n React.createElement(React.Fragment, null, price.packageName) :\r\n React.createElement(\"a\", { href: url, onClick: openTourPage, onTouchEnd: openTourPage, className: \"tour-url\", target: \"_blank\" }, price.packageName))) : null,\r\n React.createElement(TableCell, { className: `tp-search-result-cell tp-search-result-cell-hotel-quota ${hotel.quota >= 1 ? 'available' : hotel.quota == -2 ? 'stop' : 'request'}` }, hotel.quota >= 1 ? '+' : hotel.quota == -2 ? '-' : '?'),\r\n index == 0 ? React.createElement(React.Fragment, null,\r\n flightTo ? React.createElement(React.Fragment, null,\r\n (() => {\r\n const flights = price.flights.filter(f => (f.type == 1 || f.type == 3) && f.airServiceName.toLowerCase() != 'business');\r\n return React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-flight-economy forward request\", rowSpan: price.hotels.length }, flights.length ?\r\n React.createElement(Tooltip, { title: React.createElement(Typography, { variant: 'body2' }, flights.map(f => f.name).join(', ')), arrow: true, placement: \"top\" },\r\n React.createElement(\"span\", null, \"?\")) : React.createElement(\"span\", null, \"?\"));\r\n })(),\r\n (() => {\r\n const flights = price.flights.filter(f => f.type == 2 && f.airServiceName.toLowerCase() != 'business');\r\n return React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-flight-economy return request\", rowSpan: price.hotels.length }, flights.length ?\r\n React.createElement(Tooltip, { title: React.createElement(Typography, { variant: 'body2' }, flights.map(f => f.name).join(', ')), arrow: true, placement: \"top\" },\r\n React.createElement(\"span\", null, \"?\")) : React.createElement(\"span\", null, \"?\"));\r\n })(),\r\n (() => {\r\n const flights = price.flights.filter(f => (f.type == 1 || f.type == 3) && f.airServiceName.toLowerCase() == 'business');\r\n return React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-flight-business forward request\", rowSpan: price.hotels.length }, flights.length ?\r\n React.createElement(Tooltip, { title: React.createElement(Typography, { variant: 'body2' }, flights.map(f => f.name).join(', ')), arrow: true, placement: \"top\" },\r\n React.createElement(\"span\", null, \"?\")) : React.createElement(\"span\", null, \"?\"));\r\n })(),\r\n (() => {\r\n const flights = price.flights.filter(f => f.type == 2 && f.airServiceName.toLowerCase() == 'business');\r\n return React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-flight-business return request\", rowSpan: price.hotels.length }, flights.length ?\r\n React.createElement(Tooltip, { title: React.createElement(Typography, { variant: 'body2' }, flights.map(f => f.name).join(', ')), arrow: true, placement: \"top\" },\r\n React.createElement(\"span\", null, \"?\")) : React.createElement(\"span\", null, \"?\"));\r\n })()) : null,\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-price\", rowSpan: price.hotels.length },\r\n props.tourSearchResultNavigationMode == 1\r\n ? url\r\n ? React.createElement(\"a\", { href: url, onClick: openTourPage, onTouchEnd: openTourPage, className: \"tour-url\", target: \"_blank\" },\r\n Intl.NumberFormat().format(price.cost),\r\n \" \",\r\n price.currency)\r\n : React.createElement(React.Fragment, null,\r\n Intl.NumberFormat().format(price.cost),\r\n \" \",\r\n price.currency)\r\n : React.createElement(\"a\", { href: \"#\", onClick: addToCartClick, onTouchEnd: addToCartClick },\r\n Intl.NumberFormat().format(price.cost),\r\n \" \",\r\n price.currency),\r\n price.costRub && !props.currencySwitchEnabled && price.currency != 'RUB' ? React.createElement(\"span\", { className: \"cost-in-rub\" },\r\n formatMoney(price.costRub, { currency: 'RUB' }),\r\n \" RUB\") : null)) : null)))) : React.createElement(React.Fragment, null,\r\n React.createElement(TableRow, { className: `${!price.isRefundable ? ' nonref-row' : ''}` },\r\n React.createElement(TableCell, { className: `tp-search-result-cell tp-search-result-cell-promo${price.promoProgramId && props.promoEnabled ? ' promo-highlight' : ''}` },\r\n price.promoProgramId ?\r\n React.createElement(\"div\", { className: \"tp-result-price-promo-text\", title: price.promoProgramName }, \"P R O M O\") : null,\r\n !price.isRefundable ? React.createElement(\"div\", { className: \"nonref-badge\" },\r\n React.createElement(\"span\", { className: \"nonref-badge-body\" }, _T.TOUR_SEARCH_NONREF_BADGE_TITLE),\r\n React.createElement(\"svg\", { viewBox: \"0 0 15 15\", width: \"18\", xmlns: \"http://www.w3.org/2000/svg\" },\r\n React.createElement(\"path\", { d: \"M 0 0 H 12 L 6 7 L 12 15 H 0 V 0\", fill: \"red\" }))) : null),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-date\" },\r\n moment(price.date).format('DD.MM'),\r\n \"-\",\r\n moment(price.dateEnd).format('DD.MM'),\r\n React.createElement(\"div\", { className: \"subtext\" },\r\n moment(price.date).format('dd'),\r\n \"-\",\r\n moment(price.dateEnd).format('dd'))),\r\n !props.tourSearchSplitByIncludingHotel || withHotel ? React.createElement(React.Fragment, null,\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-hotel\" }),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-hotel-category\" }),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-accomodation\" }),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-meal\" })) : null,\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-nights\" }, price.duration),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-tour\" }, props.tourSearchResultNavigationMode == 1 || !url ?\r\n React.createElement(React.Fragment, null, price.packageName) :\r\n React.createElement(\"a\", { href: url, onClick: openTourPage, onTouchEnd: openTourPage, className: \"tour-url\", target: \"_blank\" }, price.packageName)),\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-tour-condition\", title: price.packageName }, props.tourSearchResultNavigationMode == 1 || !url ?\r\n React.createElement(React.Fragment, null, price.packageName) :\r\n React.createElement(\"a\", { href: url, onClick: openTourPage, onTouchEnd: openTourPage, className: \"tour-url\", target: \"_blank\" }, price.packageName)),\r\n withHotel ? React.createElement(TableCell, { className: `tp-search-result-cell tp-search-result-cell-hotel-quota` }) : null,\r\n flightTo ? React.createElement(React.Fragment, null,\r\n (() => {\r\n const flights = price.flights.filter(f => (f.type == 1 || f.type == 3) && f.airServiceName.toLowerCase() != 'business');\r\n return React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-flight-economy forward request\" }, flights.length ?\r\n React.createElement(Tooltip, { title: React.createElement(Typography, { variant: 'body2' }, flights.map(f => f.name).join(', ')), arrow: true, placement: \"top\" },\r\n React.createElement(\"span\", null, \"?\")) : React.createElement(\"span\", null, \"?\"));\r\n })(),\r\n (() => {\r\n const flights = price.flights.filter(f => f.type == 2 && f.airServiceName.toLowerCase() != 'business');\r\n return React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-flight-economy return request\" }, flights.length ?\r\n React.createElement(Tooltip, { title: React.createElement(Typography, { variant: 'body2' }, flights.map(f => f.name).join(', ')), arrow: true, placement: \"top\" },\r\n React.createElement(\"span\", null, \"?\")) : React.createElement(\"span\", null, \"?\"));\r\n })(),\r\n (() => {\r\n const flights = price.flights.filter(f => (f.type == 1 || f.type == 3) && f.airServiceName.toLowerCase() == 'business');\r\n return React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-flight-business forward request\" }, flights.length ?\r\n React.createElement(Tooltip, { title: React.createElement(Typography, { variant: 'body2' }, flights.map(f => f.name).join(', ')), arrow: true, placement: \"top\" },\r\n React.createElement(\"span\", null, \"?\")) : React.createElement(\"span\", null, \"?\"));\r\n })(),\r\n (() => {\r\n const flights = price.flights.filter(f => f.type == 2 && f.airServiceName.toLowerCase() == 'business');\r\n return React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-flight-business return request\" }, flights.length ?\r\n React.createElement(Tooltip, { title: React.createElement(Typography, { variant: 'body2' }, flights.map(f => f.name).join(', ')), arrow: true, placement: \"top\" },\r\n React.createElement(\"span\", null, \"?\")) : React.createElement(\"span\", null, \"?\"));\r\n })()) : null,\r\n React.createElement(TableCell, { className: \"tp-search-result-cell tp-search-result-cell-price\" },\r\n props.tourSearchResultNavigationMode == 1\r\n ? url\r\n ? React.createElement(\"a\", { href: url, onClick: openTourPage, onTouchEnd: openTourPage, className: \"tour-url\", target: \"_blank\" },\r\n Intl.NumberFormat().format(price.cost),\r\n \" \",\r\n price.currency)\r\n : React.createElement(React.Fragment, null,\r\n Intl.NumberFormat().format(price.cost),\r\n \" \",\r\n price.currency)\r\n : React.createElement(\"a\", { href: \"#\", onClick: addToCartClick, onTouchEnd: addToCartClick },\r\n Intl.NumberFormat().format(price.cost),\r\n \" \",\r\n price.currency),\r\n price.costRub && !props.currencySwitchEnabled && price.currency != 'RUB' ? React.createElement(\"span\", { className: \"cost-in-rub\" },\r\n formatMoney(price.costRub, { currency: 'RUB' }),\r\n \" RUB\") : null)))));\r\n}\r\n","import { Button, createStyles, Grid, withStyles } from '@material-ui/core';\r\nimport React from 'react';\r\nconst styledBy = (property, mapping) => (props) => mapping[props[property]];\r\nexport const TpButton = withStyles((theme) => createStyles({\r\n root: {\r\n color: styledBy('color', {\r\n default: theme.palette.getContrastText(theme.palette.secondary.main),\r\n primary: theme.palette.primary.main,\r\n secondary: theme.palette.secondary.main,\r\n })\r\n }\r\n}))(Button);\r\n//export function TpRadioButton({ options, value, onChange, color, gridProps }: TpRadioButtonProps & { gridProps: GridProps }) {\r\nexport function TpRadioButton({ options, value, onChange, color, spacing, xs, sm, md, lg, xl, direction }) {\r\n return (React.createElement(Grid, { container: true, spacing: spacing, direction: direction }, options.map((o, i) => (React.createElement(Grid, { item: true, xs: xs || 'auto', sm: sm, md: md, lg: lg, xl: xl, key: i },\r\n React.createElement(Button, { startIcon: o.icon, classes: { root: `tp-flight-selector${o.value == value ? ' selected' : ''}` }, variant: o.value == value ? 'outlined' : 'outlined' || 'text', onClick: e => onChange(o.value) }, o.name))))));\r\n}\r\n","import React from 'react';\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport AlertTitle from '@material-ui/lab/AlertTitle';\r\nimport { _T } from 'appI18n';\r\nexport default function AsyncLoadError({ errorText }) {\r\n return React.createElement(Alert, { severity: \"warning\" },\r\n React.createElement(AlertTitle, null, _T.COMMON_OOPS),\r\n errorText);\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 { Button, Tooltip, withStyles } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport React, { useMemo } from 'react';\r\nimport { pluralizeDays, pluralizeHours, _T } from '../../../../../include/appI18n';\r\nimport { api } from '../../../../../include/network/network';\r\nimport { formatMoney } from '../../../../../include/utils';\r\nimport { useFlightConfiguration, useTourDescriptionStore } from '../../../store/TourDescriptionStore';\r\nconst AltTooltip = withStyles((theme) => ({\r\n tooltip: {\r\n backgroundColor: theme.palette.common.white,\r\n color: 'rgba(0, 0, 0, 0.87)',\r\n boxShadow: theme.shadows[1],\r\n borderRadius: 0,\r\n fontSize: 12.5,\r\n fontFamily: \"'Play', sans-serif !important\",\r\n width: '180px',\r\n padding: '6px',\r\n marginTop: '2px',\r\n },\r\n arrow: {\r\n color: theme.palette.grey[\"400\"],\r\n },\r\n}))(Tooltip);\r\nexport const FlightAltVariant = ({ isCurrent, variant, onSelect, group, isFrame, onAltMoreDetailed, currentInGroup }) => {\r\n const [{ flightConfiguration }] = useFlightConfiguration(isFrame);\r\n const [{ hash, tourDescription }, actions] = useTourDescriptionStore(isFrame);\r\n const showFlightDetails = () => __awaiter(void 0, void 0, void 0, function* () {\r\n actions.enableFlightLoading();\r\n var { response: data, errors } = yield api('post', `/tour/flights/details/${hash}`, {\r\n aviacenterProviderId: variant.providerId,\r\n aviacenterFlightId: variant.flightId,\r\n });\r\n onAltMoreDetailed(React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { className: \"d-flex\" },\r\n React.createElement(\"h2\", { className: \"flex-1\" }, _T.FLIGHT_SEARCH_MORE_DETAILS_FLIGHT_INFO),\r\n React.createElement(\"div\", { className: \"dismisser\", \"data-dismiss\": \"modal\", onClick: () => onAltMoreDetailed(undefined) }, \"\\u00D7\")),\r\n !(data === null || data === void 0 ? void 0 : data.length) ? React.createElement(React.Fragment, null, _T.FLIGHT_SEARCH_MORE_DETAILS_FLIGHT_NO_INFO) : React.createElement(React.Fragment, null, data.map(d => (React.createElement(React.Fragment, null,\r\n React.createElement(\"h4\", { className: \"mt-4\" },\r\n React.createElement(\"span\", null, d.departure),\r\n \" \\u2013 \",\r\n React.createElement(\"span\", null, d.arrival)),\r\n React.createElement(\"pre\", { dangerouslySetInnerHTML: { __html: d.description } })))))));\r\n actions.disableFlightLoading();\r\n });\r\n const remainingPaymentTimeframeText = useMemo(() => {\r\n if (!variant.paymentDeadline)\r\n return undefined;\r\n const diff = Math.max(1, moment(variant.paymentDeadline).diff(moment.utc()));\r\n const duration = moment.duration(diff);\r\n const hours = Math.floor(duration.asHours());\r\n if (hours >= 48) {\r\n const days = Math.floor(duration.asDays());\r\n return `${days} ${pluralizeDays(days)}`;\r\n }\r\n else if (hours >= 1) {\r\n return `${hours} ${pluralizeHours(hours)}`;\r\n }\r\n return _T.FLIGHT_SEARCH_LESS_THEN_HOUR;\r\n }, [variant.paymentDeadline]);\r\n return (React.createElement(\"div\", { className: `alt-variant${isCurrent ? ' active' : ''}`, onClick: (e) => {\r\n e.stopPropagation();\r\n onSelect(variant);\r\n } },\r\n React.createElement(\"div\", { className: \"alt-variant-title\" },\r\n React.createElement(\"span\", null, variant.forwardStops[0].airServiceClassName),\r\n \"\\u00A0\",\r\n variant.airServiceGeneralClass ? React.createElement(React.Fragment, null,\r\n \"(\",\r\n React.createElement(\"span\", null, variant.airServiceGeneralClass),\r\n \")\") : null),\r\n React.createElement(\"div\", { className: \"alt-variant-main\" },\r\n React.createElement(\"div\", { className: \"alt-variant-conditions\" },\r\n React.createElement(\"div\", null, variant.maxHandBaggageCount\r\n ? React.createElement(\"span\", { className: \"flight-icon-on hand-on\" },\r\n \"x\",\r\n React.createElement(\"span\", null, variant.maxHandBaggageCount))\r\n : React.createElement(\"span\", { className: \"flight-icon-off hand-off\" })),\r\n React.createElement(\"div\", null, variant.maxBaggageCount\r\n ? React.createElement(\"span\", { className: \"flight-icon-on baggage-on\" },\r\n \"x\",\r\n React.createElement(\"span\", null, variant.maxBaggageCount))\r\n : React.createElement(\"span\", { className: \"flight-icon-off baggage-off\" })),\r\n React.createElement(\"div\", null, variant.isTicketRefundable\r\n ? React.createElement(\"span\", { className: \"flight-icon-on refund-on\" })\r\n : React.createElement(\"span\", { className: \"flight-icon-off refund-off\" })),\r\n React.createElement(\"div\", null, variant.isTicketExchangeable\r\n ? React.createElement(\"span\", { className: \"flight-icon-on exchange-on\" })\r\n : React.createElement(\"span\", { className: \"flight-icon-off exchange-off\" })))),\r\n React.createElement(\"div\", { className: \"alt-variant-flight-timer\" }, remainingPaymentTimeframeText ? React.createElement(React.Fragment, null, flightConfiguration.showExactTimeLimit ?\r\n React.createElement(AltTooltip, { arrow: true, title: `${remainingPaymentTimeframeText} ${_T.FLIGHT_SEARCH_TIMES_FOR_PAYMENT}` },\r\n React.createElement(Button, { fullWidth: true, disableElevation: true, disableRipple: true, disableTouchRipple: true, disableFocusRipple: true, className: \"tooltip-btn\" },\r\n React.createElement(\"div\", { className: \"small brand-gray\" }, _T.FLIGHT_SEARCH_PAYMENT_BEFORE),\r\n React.createElement(\"div\", { className: \"nobr\" }, moment(variant.paymentDeadline).format('DD.MM.YYYY HH:mm')))) :\r\n React.createElement(AltTooltip, { arrow: true, title: `${_T.FLIGHT_SEARCH_PAYMENT_AVAILABLE_BEFORE} ${moment(variant.paymentDeadline).format('DD.MM.YYYY HH:mm')}` },\r\n React.createElement(Button, { fullWidth: true, disableElevation: true, disableRipple: true, disableTouchRipple: true, disableFocusRipple: true, className: \"tooltip-btn\" },\r\n React.createElement(\"div\", { className: \"nobr\" }, remainingPaymentTimeframeText),\r\n React.createElement(\"div\", { className: \"small brand-gray\" }, _T.FLIGHT_SEARCH_TIMES_FOR_PAYMENT)))) : null),\r\n React.createElement(\"div\", { className: \"alt-variant-flight-details\" },\r\n React.createElement(\"span\", { onClick: (e) => {\r\n e.stopPropagation();\r\n showFlightDetails();\r\n } }, _T.FLIGHT_SEARCH_MORE_DETAILS)),\r\n React.createElement(\"div\", { className: \"alt-variant-price\" },\r\n React.createElement(\"span\", { className: \"money nobr\" },\r\n React.createElement(\"span\", null, variant.flightCostDifference > 0 ? '+' : variant.flightCostDifference < 0 ? '-' : ''),\r\n React.createElement(\"span\", null, formatMoney(Math.abs(variant.flightCostDifference), { localeAware: true, currency: tourDescription.currency.name })),\r\n \" \",\r\n React.createElement(\"span\", null, variant.flightCostCurrency)))));\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 _ from \"lodash\";\r\nimport moment from \"moment\";\r\nimport React from \"react\";\r\nimport { _T } from \"../../../../../include/appI18n\";\r\nimport { pluralizeAutoSplit } from \"../../../../../include/utils\";\r\nimport { useFlightConfiguration } from \"../../../store/TourDescriptionStore\";\r\nimport { formatSecondsLong } from \"./FlightVariantsDialog\";\r\nexport const getRoute = (stops) => stops.length ? [stops[0].departureAirportCode, ...stops.slice(1, stops.length).map(x => x.departureAirportCode), stops[stops.length - 1].arrivalAirportCode] : [];\r\nexport const FlightInfoCompact = (_a) => {\r\n var _b, _c, _d, _e;\r\n var { direction, variant, isFrame } = _a, attributes = __rest(_a, [\"direction\", \"variant\", \"isFrame\"]);\r\n const [{ flightConfiguration }] = useFlightConfiguration(isFrame);\r\n const { first, last, stops, route } = direction == 'forward' ? {\r\n first: variant.forwardStops[0],\r\n last: variant.forwardStops[variant.forwardStops.length - 1],\r\n stops: variant.forwardStops,\r\n route: getRoute(variant.forwardStops),\r\n } : {\r\n first: !((_b = variant.returnStops) === null || _b === void 0 ? void 0 : _b.length) ? undefined : variant.returnStops[0],\r\n last: !((_c = variant.returnStops) === null || _c === void 0 ? void 0 : _c.length) ? undefined : variant.returnStops[variant.returnStops.length - 1],\r\n stops: !((_d = variant.returnStops) === null || _d === void 0 ? void 0 : _d.length) ? [] : variant.returnStops,\r\n route: !((_e = variant.returnStops) === null || _e === void 0 ? void 0 : _e.length) ? [] : getRoute(variant.returnStops),\r\n };\r\n return (React.createElement(React.Fragment, null, !first || !last ? null :\r\n React.createElement(\"div\", Object.assign({}, attributes),\r\n React.createElement(\"div\", { className: \"info\" },\r\n React.createElement(\"div\", { className: \"airlines\" }),\r\n React.createElement(\"div\", { className: \"primary\" },\r\n React.createElement(\"div\", { className: \"endpoints\" },\r\n React.createElement(\"div\", { className: \"from\" },\r\n React.createElement(\"div\", { className: \"airport-code\" }, first.departureAirportCode),\r\n React.createElement(\"div\", { className: \"airport-city\" }, first.departureAirportCityName)),\r\n React.createElement(\"div\", { className: \"chevron\" },\r\n React.createElement(\"span\", { className: \"fa fa-clock-o\" }),\r\n (() => {\r\n const duration = direction == 'forward' ? variant.forwardFlightDuration : variant.returnFlightDuration;\r\n const hours = Math.floor(duration / 60);\r\n const minutes = duration % 60;\r\n return React.createElement(\"span\", { className: \"duration\" },\r\n hours,\r\n \":\",\r\n _.padStart(minutes.toString(), 2, '0'));\r\n })(),\r\n stops.length > 1 ?\r\n React.createElement(\"span\", { className: \"stops\" },\r\n React.createElement(\"span\", { className: \"fa fa-exchange\" }),\r\n React.createElement(\"span\", null, stops.length - 1),\r\n React.createElement(\"span\", { className: \"clarify\" }, pluralizeAutoSplit(stop.length - 1, _T.FLIGHT_SEARCH_ADDITIONAL_FILTER_TRANSFER_PLURAL))) : null),\r\n React.createElement(\"div\", { className: \"to\" },\r\n React.createElement(\"div\", { className: \"airport-code\" }, last.arrivalAirportCode),\r\n React.createElement(\"div\", { className: \"airport-city\" }, last.arrivalAirportCityName))),\r\n React.createElement(\"div\", { className: \"from clock\" },\r\n React.createElement(\"div\", { className: \"time\" }, moment(first.departureTime).format('HH:mm')),\r\n React.createElement(\"div\", { className: \"timedate\" }, moment(first.departureTime).format('DD.MM.YYYY'))),\r\n React.createElement(\"div\", { className: \"visual\" },\r\n React.createElement(\"svg\", { width: \"100%\", height: \"60px\" },\r\n React.createElement(\"defs\", null,\r\n React.createElement(\"filter\", { id: \"f1\", x: \"-40%\", y: \"-40%\", width: \"300%\", height: \"300%\" },\r\n React.createElement(\"feDropShadow\", { dx: \"0\", dy: \"1.5\", stdDeviation: \"2\", \"flood-color\": \"rgba(0, 0, 0, 0.25)\" })),\r\n React.createElement(\"filter\", { id: \"f2\", x: \"-40%\", y: \"-40%\", width: \"300%\", height: \"300%\" },\r\n React.createElement(\"feDropShadow\", { dx: \"0\", dy: \"1\", stdDeviation: \"3\", \"flood-color\": \"rgba(0, 0, 0, 0.2)\" }))),\r\n React.createElement(\"g\", { className: \"outer\" },\r\n React.createElement(\"line\", { x1: \"1%\", x2: \"10%\", y1: \"40%\", y2: \"40%\", stroke: \"#d0d0d0\", \"stroke-width\": \"4\", \"stroke-linecap\": \"round\", \"stroke-dasharray\": \"0.8, 15\" }),\r\n React.createElement(\"line\", { x1: \"90%\", x2: \"100%\", y1: \"40%\", y2: \"40%\", stroke: \"#d0d0d0\", \"stroke-width\": \"4\", \"stroke-linecap\": \"round\", \"stroke-dasharray\": \"0.8, 15\" })),\r\n React.createElement(\"line\", { className: \"ws-route\", x1: \"10%\", x2: \"90%\", y1: \"40%\", y2: \"40%\", stroke: \"orange\", \"stroke-width\": \"4\", \"stroke-linecap\": \"round\" }),\r\n React.createElement(\"line\", { className: \"ts-route\", x1: \"4%\", x2: \"96%\", y1: \"40%\", y2: \"40%\", stroke: \"orange\", \"stroke-width\": \"4\", \"stroke-linecap\": \"round\", \"stroke-dasharray\": \"0.8 10\" }),\r\n route.map((r, ri) => {\r\n const rx = Math.round(10 + ri * (80 / (route.length > 1 ? route.length - 1 : 1)));\r\n return (React.createElement(\"g\", { className: `marker${ri == 0 ? ' first' : ri == route.length - 1 ? ' last' : ''}`, key: ri },\r\n React.createElement(\"circle\", { cx: `${rx}%`, cy: \"40%\", r: \"8\", filter: \"url(#f1)\", fill: \"white\" }),\r\n React.createElement(\"circle\", { cx: `${rx}%`, cy: \"40%\", r: \"4\", filter: \"url(#f2)\", fill: \"orange\" }),\r\n React.createElement(\"text\", { x: `${rx}%`, y: \"80%\", \"text-anchor\": \"middle\" }, r)));\r\n }),\r\n React.createElement(\"text\", { className: \"top\", x: \"50%\", y: \"20%\", \"text-anchor\": \"middle\" },\r\n React.createElement(\"tspan\", { className: \"duration sym\" }, \"\\uF017\"),\r\n React.createElement(\"tspan\", { className: \"duration\" },\r\n \" \",\r\n formatSecondsLong((direction == 'forward' ? variant.forwardFlightDuration : variant.returnFlightDuration) * 60)),\r\n React.createElement(\"tspan\", { className: \"sep\", dx: \"5\" }, \"\\u00B7\"),\r\n React.createElement(\"tspan\", { className: `stops ${stops.length > 1 ? 'some' : 'none'}`, dx: \"5\" }, stops.length > 1\r\n ? `${stops.length - 1} ${pluralizeAutoSplit(stops.length - 1, _T.FLIGHT_SEARCH_ADDITIONAL_FILTER_TRANSFER_PLURAL)}`\r\n : _T.FLIGHT_SEARCH_ADDITIONAL_FILTER_WITHOUT_TRANSFERS)))),\r\n React.createElement(\"div\", { className: \"to clock\" },\r\n React.createElement(\"div\", { className: \"time\" }, moment(last.arrivalTime).format('HH:mm')),\r\n React.createElement(\"div\", { className: \"timedate\" }, moment(last.arrivalTime).format('DD.MM.YYYY')))),\r\n React.createElement(\"div\", { className: \"secondary\" },\r\n React.createElement(\"div\", { className: \"from endpoint\" },\r\n React.createElement(\"div\", { className: \"airport\" },\r\n first.departureAirportName,\r\n \", \",\r\n first.departureAirportCityName)),\r\n React.createElement(\"div\", { className: \"to endpoint\" },\r\n React.createElement(\"div\", { className: \"airport\" },\r\n last.arrivalAirportName,\r\n \", \",\r\n last.arrivalAirportCityName)))),\r\n React.createElement(\"div\", { className: \"labels\" },\r\n React.createElement(\"div\", null,\r\n variant.maxHandBaggageCount ?\r\n React.createElement(\"div\", { className: \"reiberu normal\" },\r\n React.createElement(\"span\", { className: \"fa fa-suitcase\" }),\r\n React.createElement(\"span\", null,\r\n _T.FLIGHT_SEARCH_HAND_BAGGAGE,\r\n \" \",\r\n variant.maxHandBaggageCount,\r\n \"x\",\r\n variant.maxHandBaggageWeight || '?')) :\r\n React.createElement(\"div\", { className: \"reiberu red\" },\r\n React.createElement(\"span\", { className: \"fa fa-close\" }),\r\n \" \",\r\n React.createElement(\"span\", null, _T.FLIGHT_SEARCH_WITHOUT_HAND_BAGGAGE)),\r\n variant.maxBaggageCount ?\r\n React.createElement(\"div\", { className: \"reiberu normal\" },\r\n React.createElement(\"span\", { className: \"fa fa-suitcase\" }),\r\n React.createElement(\"span\", null,\r\n _T.FLIGHT_SEARCH_BAGGAGE,\r\n \" \",\r\n variant.maxBaggageCount,\r\n \"x\",\r\n variant.maxBaggageWeight || '?')) :\r\n React.createElement(\"div\", { className: \"reiberu red\" },\r\n React.createElement(\"span\", { className: \"fa fa-close\" }),\r\n \" \",\r\n React.createElement(\"span\", null, _T.FLIGHT_SEARCH_WITHOUT_BAGGAGE)),\r\n variant.quota > 0 && variant.quota < flightConfiguration.seatsWarningUpperBoundary ?\r\n React.createElement(\"div\", { className: \"reiberu yellow\" },\r\n React.createElement(\"span\", { className: \"fa fa-users\" }),\r\n \" \",\r\n React.createElement(\"span\", null,\r\n _T.FLIGHT_SEARCH_PLACES_LEFT,\r\n \": \",\r\n variant.quota)) : null),\r\n React.createElement(\"div\", null,\r\n React.createElement(\"div\", { className: `reiberu ${variant.isTicketRefundable ? 'good' : 'red'}` },\r\n React.createElement(\"span\", { className: `fa ${variant.isTicketRefundable ? 'fa-check-circle' : 'fa-close'}` }),\r\n \" \",\r\n _T.FLIGHT_SEARCH_REFUNDABLE_LABEL),\r\n React.createElement(\"div\", { className: `reiberu ${variant.isTicketExchangeable ? 'good' : 'red'}` },\r\n React.createElement(\"span\", { className: `fa ${variant.isTicketExchangeable ? 'fa-check-circle' : 'fa-close'}` }),\r\n \" \",\r\n _T.FLIGHT_SEARCH_EXCHANGEABLE_LABEL))))));\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 { Accordion, AccordionDetails, AccordionSummary, Button, makeStyles, Paper } from '@material-ui/core';\r\nimport _ from 'lodash';\r\nimport moment from 'moment';\r\nimport { useSnackbar } from 'notistack';\r\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\r\nimport { fetchAdditionalFlights } from '../../../../../include/api-ito/ToursApi';\r\nimport { _T } from '../../../../../include/appI18n';\r\nimport { pluralizeAutoSplit } from '../../../../../include/utils';\r\nimport '../../../../NewTourSearch/compoments/TourSearch.css';\r\nimport { useFlightConfiguration, useTourDescription } from '../../../store/TourDescriptionStore';\r\nimport { FlightAltVariant } from './FlightAltVariant';\r\nimport { FlightInfoCompact, getRoute } from './FlightInfoCompact';\r\nimport './FlightVariants.css';\r\nconst useStyles = makeStyles(theme => ({\r\n accordion: {\r\n marginBottom: 16,\r\n '& .MuiCollapse-container': {\r\n width: '100%',\r\n minWidth: '100%',\r\n maxWidth: '100%',\r\n },\r\n '& .MuiAccordionDetails-root': {\r\n display: 'block',\r\n },\r\n },\r\n}));\r\nconst FlightDetailsStop = ({ stop, index, count }) => {\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { className: \"entry\" },\r\n React.createElement(\"div\", { className: \"vertical\" }, index != 0 ? React.createElement(\"div\", { className: \"line mid dotted\" }) : null),\r\n React.createElement(\"div\", { className: \"box start header\" },\r\n React.createElement(\"div\", { className: \"itinerary\" },\r\n _T.COMMON_FLIGHT_PLANE,\r\n \":\\u00A0\",\r\n React.createElement(\"span\", { className: \"number\" }, stop.flightNumber),\r\n \"\\u00A0\",\r\n React.createElement(\"span\", { className: \"sep\" }, \"\\u00B7\"),\r\n \"\\u00A0\",\r\n React.createElement(\"span\", { className: \"airline\" }, stop.airlineName)),\r\n React.createElement(\"div\", { className: \"class\" },\r\n React.createElement(\"span\", { className: \"name\" }, stop.airServiceClassName),\r\n \"\\u00A0\",\r\n React.createElement(\"span\", { className: \"code\" },\r\n \"(\",\r\n stop.airServiceClassAdditionalCode,\r\n \")\")))),\r\n React.createElement(\"div\", { className: \"entry\" },\r\n React.createElement(\"div\", { className: \"vertical\" },\r\n React.createElement(\"div\", { className: \"point\" }),\r\n React.createElement(\"div\", { className: \"line start\" }),\r\n index > 0 ? React.createElement(\"div\", { className: \"line end dotted\" }) : null),\r\n React.createElement(\"div\", { className: \"box mid\" },\r\n React.createElement(\"div\", { className: \"time-container\" },\r\n React.createElement(\"div\", { className: \"time\" }, moment(stop.departureTime).format('HH:mm')),\r\n \"\\u00A0\",\r\n React.createElement(\"div\", { className: \"timedate\" }, moment(stop.departureTime).format('L'))),\r\n React.createElement(\"div\", { className: \"endpoint\" },\r\n React.createElement(\"div\", { className: \"location\" },\r\n React.createElement(\"span\", { className: \"city\" }, stop.departureAirportCityName),\r\n \",\\u00A0\",\r\n React.createElement(\"span\", { className: \"airport\" }, stop.departureAirportName)),\r\n React.createElement(\"div\", { className: \"airport-code\" }, stop.departureAirportCode)))),\r\n React.createElement(\"div\", { className: \"entry\" },\r\n React.createElement(\"div\", { className: \"vertical\" },\r\n React.createElement(\"div\", { className: \"line mid\" }),\r\n React.createElement(\"div\", { className: \"clock\" },\r\n React.createElement(\"span\", { className: \"fa fa-clock-o\" }))),\r\n React.createElement(\"div\", { className: \"box mid duration\" }, (() => {\r\n const duration = stop.flightDuration;\r\n const hours = Math.floor(duration / 60);\r\n const minutes = duration % 60;\r\n return (React.createElement(\"div\", { className: \"duration\" },\r\n _T.FLIGHT_SEARCH_ADDITIONAL_FILTER_FLIGHT_DURATION,\r\n \":\",\r\n React.createElement(\"span\", { className: \"nobr\" },\r\n React.createElement(\"span\", null, ` ${hours}`),\r\n \" \",\r\n pluralizeAutoSplit(hours, _T.COMMON_HOURS_SHORT),\r\n \" \",\r\n React.createElement(\"span\", null, minutes),\r\n \" \",\r\n pluralizeAutoSplit(minutes, _T.COMMON_MINUTES_SHORT))));\r\n })())),\r\n React.createElement(\"div\", { className: \"entry\" },\r\n React.createElement(\"div\", { className: \"vertical\" },\r\n React.createElement(\"div\", { className: \"point\" }),\r\n React.createElement(\"div\", { className: \"line end\" }),\r\n index + 1 < count ? React.createElement(\"div\", { className: \"line start dotted\" }) : null),\r\n React.createElement(\"div\", { className: \"box end\" },\r\n React.createElement(\"div\", { className: \"time-container\" },\r\n React.createElement(\"div\", { className: \"time\" }, moment(stop.arrivalTime).format('HH:mm')),\r\n React.createElement(\"div\", { className: \"timedate\" }, moment(stop.arrivalTime).format('L'))),\r\n React.createElement(\"div\", { className: \"endpoint\" },\r\n React.createElement(\"div\", { className: \"location\" },\r\n React.createElement(\"span\", { className: \"city\" }, stop.arrivalAirportCityName),\r\n \",\\u00A0\",\r\n React.createElement(\"span\", { className: \"airport\" }, stop.arrivalAirportName)),\r\n React.createElement(\"div\", { className: \"airport-code\" }, stop.arrivalAirportCode))))));\r\n};\r\nconst FlightDetailsOneWay = ({ direction, selectedPrice }) => {\r\n var _a, _b, _c, _d;\r\n const { first, last, stops, route } = direction == 'forward' ? {\r\n first: selectedPrice.forwardStops[0],\r\n last: selectedPrice.forwardStops[selectedPrice.forwardStops.length - 1],\r\n stops: selectedPrice.forwardStops,\r\n route: getRoute(selectedPrice.forwardStops),\r\n } : {\r\n first: !((_a = selectedPrice.returnStops) === null || _a === void 0 ? void 0 : _a.length) ? undefined : selectedPrice.returnStops[0],\r\n last: !((_b = selectedPrice.returnStops) === null || _b === void 0 ? void 0 : _b.length) ? undefined : selectedPrice.returnStops[selectedPrice.returnStops.length - 1],\r\n stops: !((_c = selectedPrice.returnStops) === null || _c === void 0 ? void 0 : _c.length) ? [] : selectedPrice.returnStops,\r\n route: !((_d = selectedPrice.returnStops) === null || _d === void 0 ? void 0 : _d.length) ? [] : getRoute(selectedPrice.returnStops),\r\n };\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { className: \"direction\" },\r\n React.createElement(\"h3\", null,\r\n React.createElement(\"span\", null, direction == 'forward' ? _T.FLIGHT_SEARCH_ADDITIONAL_FILTER_DIRECTION_FORWARD_2 : _T.FLIGHT_SEARCH_ADDITIONAL_FILTER_DIRECTION_RETURN),\r\n \" \\u00A0 (\",\r\n React.createElement(\"span\", null, first === null || first === void 0 ? void 0 : first.departureAirportCode),\r\n \" \\u2014 \",\r\n React.createElement(\"span\", null, last === null || last === void 0 ? void 0 : last.arrivalAirportCode),\r\n \")\"),\r\n React.createElement(\"div\", { className: \"overall\" },\r\n React.createElement(\"span\", { className: \"fa fa-clock-o\" }),\r\n \" \\u00A0\",\r\n (() => {\r\n const duration = direction == 'forward' ? selectedPrice.forwardFlightDuration : selectedPrice.returnFlightDuration;\r\n const hours = Math.floor(duration / 60);\r\n const minutes = duration % 60;\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(\"span\", null, ` ${hours}`),\r\n \" \",\r\n pluralizeAutoSplit(hours, _T.COMMON_HOURS_SHORT),\r\n \" \",\r\n React.createElement(\"span\", null, minutes),\r\n \" \",\r\n pluralizeAutoSplit(minutes, _T.COMMON_MINUTES_SHORT)));\r\n })())),\r\n React.createElement(\"div\", { className: \"details\" }, (direction == 'forward' ? selectedPrice.forwardStops : selectedPrice.returnStops || []).map((stop, i, a) => (React.createElement(React.Fragment, null,\r\n React.createElement(FlightDetailsStop, { stop: stop, index: i, key: i, count: a.length }),\r\n i + 1 < a.length ?\r\n React.createElement(\"div\", { className: \"entry\" },\r\n React.createElement(\"div\", { className: \"vertical\" },\r\n React.createElement(\"div\", { className: \"line mid dotted\" }),\r\n React.createElement(\"div\", { className: \"warning\" },\r\n React.createElement(\"span\", { className: \"fa fa-warning\" }))),\r\n React.createElement(\"div\", { className: \"box transfer\" },\r\n React.createElement(\"span\", null, _T.FLIGHT_SEARCH_TRANSFER),\r\n \" \\u00A0\",\r\n (() => {\r\n const duration = stop.stopDuration;\r\n const hours = Math.floor(duration / 60);\r\n const minutes = duration % 60;\r\n return (React.createElement(\"span\", { className: \"duration\" },\r\n React.createElement(\"span\", null, ` ${hours}`),\r\n \" \",\r\n pluralizeAutoSplit(hours, _T.COMMON_HOURS_SHORT),\r\n \" \",\r\n React.createElement(\"span\", null, minutes),\r\n \" \",\r\n pluralizeAutoSplit(minutes, _T.COMMON_MINUTES_SHORT)));\r\n })())) : null))))));\r\n};\r\nexport const FlightResultCard = ({ isFrame, flightIndex, group, current, onFlightSelect, className, onAltMoreDetailed, dialogRef }) => {\r\n var _a, _b, _c;\r\n const classes = useStyles();\r\n const snackbar = useSnackbar();\r\n const [{ flightConfiguration }] = useFlightConfiguration(isFrame);\r\n const [{ hash }] = useTourDescription(isFrame);\r\n const [selectedPrice, setSelectedPrice] = useState(group.selectedPrice);\r\n const isCurrentGroup = useMemo(() => group.prices.map(p => p.flightId).indexOf((current === null || current === void 0 ? void 0 : current.flightId) || '') >= 0, [group.groupHash, group.prices, current === null || current === void 0 ? void 0 : current.flightId]);\r\n const groupPrices = useMemo(() => group.prices.map(p => (Object.assign(Object.assign({}, p), { isCurrent: selectedPrice.flightId == p.flightId }))), [selectedPrice, group.prices, group.groupHash]);\r\n useEffect(() => {\r\n var _a, _b;\r\n if (!isCurrentGroup && group.prices.find(p => p.flightId == (selectedPrice === null || selectedPrice === void 0 ? void 0 : selectedPrice.flightId)))\r\n return;\r\n setSelectedPrice((_b = (_a = group.prices.find(p => p.flightId == (current === null || current === void 0 ? void 0 : current.flightId))) !== null && _a !== void 0 ? _a : group.selectedPrice) !== null && _b !== void 0 ? _b : group.prices[0]);\r\n }, [group.groupHash]);\r\n useEffect(() => {\r\n group.selectedPrice = selectedPrice;\r\n }, [selectedPrice.flightId]);\r\n const [additionalVariantsState, setAdditionalVariantsState] = useState('none');\r\n const [additionalVariants, setAdditionalVariants] = useState([]);\r\n const additionalVariantPrices = useMemo(() => additionalVariants.map(p => (Object.assign(Object.assign({}, p), { isCurrent: selectedPrice.flightId == p.flightId }))), [selectedPrice, additionalVariants, group.groupHash]);\r\n const loadAdditionalVariants = () => __awaiter(void 0, void 0, void 0, function* () {\r\n setAdditionalVariantsState('loading');\r\n try {\r\n const response = yield fetchAdditionalFlights(hash, selectedPrice);\r\n if ('errors' in response) {\r\n console.error(`Couldn't load additional flights`);\r\n console.error(response);\r\n }\r\n else {\r\n setAdditionalVariants(response.prices);\r\n setAdditionalVariantsState('loaded');\r\n }\r\n }\r\n finally {\r\n //setAdditionalVariantsState('none');\r\n }\r\n });\r\n const [expanded, setExpanded] = React.useState(false);\r\n const handleChange = (_, isExpanded) => {\r\n setExpanded(isExpanded);\r\n if (additionalVariantsState == 'none') {\r\n loadAdditionalVariants();\r\n }\r\n };\r\n const FlightDetailsMoreVariants = () => (React.createElement(\"div\", { className: \"details\" },\r\n React.createElement(\"h4\", null, _T.FLIGHT_SEARCH_ADDITIONAL_VARIANTS),\r\n React.createElement(Paper, { elevation: 2, className: \"additional-variants\" }, additionalVariantsState == 'loaded' && additionalVariants.length > 0 ?\r\n React.createElement(\"div\", { className: \"alt-variants-grid\" }, additionalVariantPrices.map((v, i) => React.createElement(FlightAltVariant, { group: group, variant: v, isCurrent: v.isCurrent, currentInGroup: selectedPrice, isFrame: isFrame, onSelect: setSelectedPrice, key: i, onAltMoreDetailed: onAltMoreDetailed }))) :\r\n React.createElement(\"div\", { className: \"text-center py-3\" }, additionalVariantsState == 'loading' || additionalVariantsState == 'none' ?\r\n React.createElement(\"span\", { className: \"fa fa-spinner fa-spin fa-2x\" }) :\r\n React.createElement(React.Fragment, null, _T.FLIGHT_SEARCH_ADDITIONAL_VARIANTS_LOADING_FAILED)))));\r\n const rootRef = useRef(null);\r\n return (React.createElement(Accordion, { ref: rootRef, key: flightIndex, className: `${className} ${classes.accordion}${isCurrentGroup ? ' selected' : ''}`, expanded: expanded, onChange: handleChange },\r\n React.createElement(AccordionSummary, { classes: { content: 'flight-result' } },\r\n React.createElement(\"div\", { className: \"main-container\" },\r\n React.createElement(\"div\", { className: \"main\" },\r\n React.createElement(FlightInfoCompact, { className: \"oneway\", direction: \"forward\", variant: selectedPrice, isFrame: isFrame }),\r\n React.createElement(\"hr\", null),\r\n ((_a = group.prices[0].returnStops) === null || _a === void 0 ? void 0 : _a.length) ? React.createElement(React.Fragment, null,\r\n React.createElement(FlightInfoCompact, { className: \"oneway\", direction: \"return\", variant: selectedPrice, isFrame: isFrame }),\r\n React.createElement(\"hr\", { className: \"summary-sep\" })) : null,\r\n React.createElement(\"div\", { className: \"summary\" },\r\n React.createElement(\"div\", null,\r\n React.createElement(\"span\", { className: \"airline fa fa-arrow-right\" }),\r\n \"\\u00A0\",\r\n Object.entries(_.groupBy(group.prices[0].forwardStops, s => s.airlineName)).map(x => ({ airlineName: x[0], stops: x[1] })).map((x, xi, array) => (React.createElement(React.Fragment, null,\r\n React.createElement(\"span\", { className: \"airline\" }, x.airlineName),\r\n \"\\u00A0\",\r\n flightConfiguration.showFlightNumbersInCardMainArea ? React.createElement(React.Fragment, null,\r\n React.createElement(\"span\", { className: \"airline\" },\r\n x.stops.length ? `(` : null,\r\n x.stops.map((s, si) => (React.createElement(React.Fragment, null,\r\n React.createElement(\"span\", null, s.flightNumber),\r\n si + 1 < x.stops.length ? `| ` : null))),\r\n x.stops.length ? `()`.substring(1) : null)) : null,\r\n xi + 1 < array.length ? ` · ` : null)))),\r\n ((_b = group.prices[0].returnStops) === null || _b === void 0 ? void 0 : _b.length) ?\r\n React.createElement(\"div\", null,\r\n React.createElement(\"span\", { className: \"airline fa fa-arrow-left\" }),\r\n \"\\u00A0\",\r\n Object.entries(_.groupBy(group.prices[0].returnStops, s => s.airlineName)).map(x => ({ airlineName: x[0], stops: x[1] })).map((x, xi, array) => (React.createElement(React.Fragment, null,\r\n React.createElement(\"span\", { className: \"airline\" }, x.airlineName),\r\n \"\\u00A0\",\r\n flightConfiguration.showFlightNumbersInCardMainArea ? React.createElement(React.Fragment, null,\r\n React.createElement(\"span\", { className: \"airline\" },\r\n x.stops.length ? `(` : null,\r\n x.stops.map((s, si) => (React.createElement(React.Fragment, null,\r\n React.createElement(\"span\", null, s.flightNumber),\r\n si + 1 < x.stops.length ? `| ` : null))),\r\n x.stops.length ? `()`.substring(1) : null)) : null,\r\n xi + 1 < array.length ? ` · ` : null)))) : null))),\r\n React.createElement(\"div\", { className: \"alt-variants\", onClick: (e) => e.stopPropagation() },\r\n React.createElement(\"div\", { className: \"alt-variants-grid\" }, groupPrices.map(variant => React.createElement(FlightAltVariant, { key: variant.flightId, variant: variant, group: group, isCurrent: variant.isCurrent, currentInGroup: selectedPrice, isFrame: isFrame, onSelect: setSelectedPrice, onAltMoreDetailed: onAltMoreDetailed }))),\r\n React.createElement(Button, { className: \"alt-variant-confirm-btn\", color: \"primary\", variant: \"contained\", onClick: (event) => {\r\n event.stopPropagation();\r\n onFlightSelect(selectedPrice);\r\n }, onFocus: (event) => event.stopPropagation() }, _T.COMMON_CHOOSE)),\r\n !expanded ?\r\n React.createElement(\"div\", { className: \"indicator\", onClick: () => handleChange(undefined, true) },\r\n React.createElement(\"span\", { className: \"fa fa-chevron-down\" })) : null),\r\n React.createElement(AccordionDetails, { style: { width: '100%' }, className: \"details-container\" },\r\n React.createElement(FlightDetailsMoreVariants, null),\r\n React.createElement(FlightDetailsOneWay, { direction: \"forward\", selectedPrice: selectedPrice }),\r\n ((_c = selectedPrice.returnStops) === null || _c === void 0 ? void 0 : _c.length) ? React.createElement(FlightDetailsOneWay, { direction: \"return\", selectedPrice: selectedPrice }) : null,\r\n React.createElement(\"div\", { className: \"minimize\", onClick: () => {\r\n var _a;\r\n const dialogBody = (_a = dialogRef.current) === null || _a === void 0 ? void 0 : _a.getElementsByClassName('MuiDialog-scrollBody')[0];\r\n if (rootRef.current && dialogBody)\r\n dialogBody.scrollBy({ top: rootRef.current.offsetTop - dialogBody.scrollTop + 25, behavior: 'smooth' });\r\n handleChange(undefined, false);\r\n } },\r\n React.createElement(\"a\", { href: \"#\" },\r\n React.createElement(\"span\", { className: \"fa fa-chevron-up\" }))))));\r\n};\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { _T } from 'appI18n';\r\nimport AsyncLoadError from './AsyncLoadError';\r\nimport AsyncSpinner from './AsyncSpinner';\r\nlet uidCounter = 1;\r\nexport default function HotelLocation(props) {\r\n const [initStatus, setInitStatus] = useState('none');\r\n const [uniqueId] = useState(() => \"google-maps-\" + uidCounter++);\r\n const ref = useRef(null);\r\n const [map, setMap] = useState();\r\n const [marker, setMarker] = useState();\r\n useEffect(() => {\r\n if (ref.current && !map) {\r\n const position = { lat: props.description.latitude, lng: props.description.longitude };\r\n setMap(new google.maps.Map(ref.current, {\r\n zoom: 15,\r\n center: position\r\n }));\r\n }\r\n }, [ref, map, props.description.latitude, props.description.longitude]);\r\n useEffect(() => {\r\n if (ref.current && map) {\r\n const position = { lat: props.description.latitude, lng: props.description.longitude };\r\n setMarker(new google.maps.Marker({ position, map, title: props.description.hotelName }));\r\n }\r\n }, [ref, map]);\r\n return React.createElement(\"div\", null, (() => {\r\n var _a;\r\n if (initStatus == 'loading')\r\n return React.createElement(AsyncSpinner, null);\r\n if (initStatus == 'error')\r\n return React.createElement(AsyncLoadError, { errorText: _T.TOUR_ERROR_LOADING_MAP });\r\n return React.createElement(\"div\", { id: uniqueId, style: { height: `${(_a = props.height) !== null && _a !== void 0 ? _a : 240}px` }, ref: ref });\r\n })());\r\n}\r\n","import React, { useState } from 'react';\r\nimport ImageGrid from './ImageGrid';\r\nimport Lightbox from './Lightbox';\r\nexport function LightboxImageGrid(props) {\r\n const [openLightbox, setOpenLightbox] = useState(false);\r\n const [imageIndex, setImageIndex] = useState(0);\r\n const handleImageGridClick = (index) => {\r\n if (props.onImageClick) {\r\n props.onImageClick(index);\r\n }\r\n else {\r\n setOpenLightbox(true);\r\n setImageIndex(index);\r\n }\r\n };\r\n const handleImageGridClose = () => setOpenLightbox(false);\r\n return React.createElement(\"div\", null,\r\n React.createElement(ImageGrid, { images: props.images, cellHeight: props.imageGridCellHeight, spacing: props.imageGridSpacing, onClick: handleImageGridClick }),\r\n openLightbox &&\r\n React.createElement(Lightbox, { images: props.images, initialIndex: imageIndex, open: true, onClose: handleImageGridClose }));\r\n}\r\n","import React, { useState } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Lightbox from './Lightbox';\r\nconst useStyles = makeStyles({\r\n thumb: {\r\n width: '100%',\r\n overflow: 'hidden',\r\n borderRadius: 4,\r\n cursor: 'pointer',\r\n objectFit: 'cover',\r\n background: '#ccc',\r\n }\r\n});\r\nexport function LightboxThumbnail(props) {\r\n var _a, _b;\r\n const [lightboxOpen, setLightboxOpen] = useState(false);\r\n const classes = useStyles();\r\n return React.createElement(\"div\", { style: { height: props.height || 'unset' } },\r\n ((_a = props.images) === null || _a === void 0 ? void 0 : _a.length) &&\r\n React.createElement(\"img\", { src: props.images[0].urls.thumbnail, height: props.height, loading: \"lazy\", className: classes.thumb, onClick: (_b = props.onImageClick) !== null && _b !== void 0 ? _b : (() => setLightboxOpen(true)) }) || null,\r\n lightboxOpen &&\r\n React.createElement(Lightbox, { images: props.images, open: true, onClose: () => setLightboxOpen(false) }) || null);\r\n}\r\n","import React, { useState, useMemo, useRef, useEffect } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport throttle from 'lodash/fp/throttle';\r\nimport { _ParentFrame } from '../../../Frame/types/Frame';\r\nimport { useHistory, useLocation } from 'react-router-dom';\r\n// Форк react-use-scroll-spy:\r\n// https://github.com/Purii/react-use-scrollspy\r\n//\r\n// * Исправил баг с неверной активной секцией после скроллинга вниз и затем снова вверх.\r\n// * Добавил мемоизацию хэндлера.\r\n// * Корректировка зависимостей useEffect.\r\nfunction useScrollSpy({ offsetPx = 0, sectionElementRefs = [], throttleMs = 100, }) {\r\n const [activeSection, setActiveSection] = useState(0);\r\n const handle = useMemo(() => throttle(throttleMs, () => {\r\n let currentSectionId = 0;\r\n for (let i = 0; i < sectionElementRefs.length; i++) {\r\n const section = sectionElementRefs[i].current;\r\n if (!section || !(section instanceof Element))\r\n continue;\r\n if (section.getBoundingClientRect().top + offsetPx < 0) {\r\n currentSectionId = i;\r\n continue;\r\n }\r\n break;\r\n }\r\n setActiveSection(currentSectionId);\r\n }), [sectionElementRefs, offsetPx, throttleMs]);\r\n useEffect(() => {\r\n window.addEventListener('scroll', handle);\r\n handle();\r\n return () => {\r\n window.removeEventListener('scroll', handle);\r\n };\r\n }, [handle]);\r\n return activeSection;\r\n}\r\nconst useStyles = makeStyles({\r\n root: {\r\n position: 'sticky',\r\n top: -1,\r\n background: '#fff',\r\n zIndex: 1100,\r\n margin: '10px -20px',\r\n padding: '0 20px',\r\n '&:before': {\r\n left: 0,\r\n bottom: 0,\r\n width: '100%',\r\n content: '\" \"',\r\n position: 'absolute',\r\n borderBottom: '1px solid #eee',\r\n }\r\n }\r\n});\r\nexport default function DescriptionMenu(props) {\r\n var _a, _b;\r\n const classes = useStyles();\r\n const location = useLocation();\r\n const history = useHistory();\r\n const rootRef = useRef(null);\r\n const rootHeight = (_b = (_a = rootRef.current) === null || _a === void 0 ? void 0 : _a.offsetHeight) !== null && _b !== void 0 ? _b : 0;\r\n const scrollSpyOptions = useMemo(() => ({\r\n sectionElementRefs: props.items.map(x => x.ref),\r\n offsetPx: -rootHeight,\r\n }), [props.items, rootHeight]);\r\n const index = useScrollSpy(scrollSpyOptions);\r\n const handleTabClick = (ref) => {\r\n if (!ref.current)\r\n return;\r\n const targetY = ref.current.offsetTop - window.scrollY - rootHeight + 1;\r\n const parentFrame = _ParentFrame();\r\n if (props.isFrame && parentFrame) {\r\n parentFrame.sendMessage({ message: 'scroll', top: targetY, behavior: 'smooth' });\r\n }\r\n else {\r\n window.scrollBy({ top: targetY, behavior: 'smooth' });\r\n if (ref.current.id)\r\n history.replace(Object.assign(Object.assign({}, location), { hash: `#${ref.current.id}` }));\r\n }\r\n };\r\n useEffect(() => {\r\n if (location.hash) {\r\n const hashElement = document.getElementById(location.hash.replace('#', ''));\r\n if (!hashElement)\r\n return;\r\n window.scrollBy({ top: hashElement.offsetTop - window.scrollY - rootHeight + 1, behavior: 'smooth' });\r\n }\r\n }, []);\r\n useEffect(() => {\r\n var _a;\r\n if (!props.items || index < 0 || index >= props.items.length)\r\n return;\r\n const ref = props.items[index].ref;\r\n if ((_a = ref === null || ref === void 0 ? void 0 : ref.current) === null || _a === void 0 ? void 0 : _a.id)\r\n history.replace(Object.assign(Object.assign({}, location), { hash: `#${ref.current.id}` }));\r\n }, [index, props.items]);\r\n return React.createElement(\"div\", { ref: rootRef, className: classes.root },\r\n React.createElement(Tabs, { variant: \"scrollable\", value: index }, props.items.map((x, i) => React.createElement(Tab, { label: x.label, disableRipple: true, onClick: handleTabClick.bind(null, x.ref), key: x.label }))));\r\n}\r\n","import React, { Fragment, useMemo } from 'react';\r\nimport Box from '@material-ui/core/Box';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport FoodIcon from '@material-ui/icons/EmojiFoodBeverageOutlined';\r\nimport ExploreIcon from '@material-ui/icons/ExploreOutlined';\r\nimport InfoIcon from '@material-ui/icons/InfoOutlined';\r\nimport LocationIcon from '@material-ui/icons/LocationOnOutlined';\r\nimport ScheduleIcon from '@material-ui/icons/Schedule';\r\nimport { _T } from 'appI18n';\r\nimport { LightboxThumbnail } from './LightboxThumbnail';\r\nimport Cost from '../../../../include/react-components/Cost';\r\nimport { Button, Divider } from '@material-ui/core';\r\nimport CheckIcon from '@material-ui/icons/CheckCircleOutline';\r\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\r\nimport { useTourDescription, useTourExtras, useTourVariant } from '../../store/TourDescriptionStore';\r\nimport moment from 'moment';\r\nimport { _ParentFrame } from '../../../Frame/types/Frame';\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n //padding: `${theme.spacing(1)}px ${theme.spacing(2)}px`,\r\n },\r\n feature: {\r\n borderRadius: theme.shape.borderRadius,\r\n display: 'flex',\r\n padding: '2px 8px',\r\n border: '1px solid #dadada',\r\n marginBottom: '2px',\r\n marginRight: '2px',\r\n },\r\n featureIcon: {\r\n display: 'flex',\r\n marginRight: theme.spacing(1),\r\n alignItems: 'center',\r\n color: '#555',\r\n },\r\n featureTitle: {\r\n color: '#555',\r\n textShadow: '0.15px 0 #555',\r\n },\r\n transportContainer: {},\r\n currentTransport: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '4px 0 8px',\r\n marginLeft: 4,\r\n color: theme.palette.success.main,\r\n '& > :last-child': { marginRight: theme.spacing(.5) }\r\n },\r\n}));\r\nfunction ExcursionFeature({ icon, title, value }) {\r\n const classes = useStyles();\r\n if (!value)\r\n return null;\r\n return (React.createElement(\"div\", { className: classes.feature },\r\n React.createElement(\"div\", { className: classes.featureIcon }, icon),\r\n React.createElement(Box, null,\r\n React.createElement(Typography, { variant: \"caption\", component: \"h6\", className: classes.featureTitle }, title),\r\n React.createElement(Typography, { variant: \"body1\" }, value))));\r\n}\r\nexport default function ExcursionDescription({ service: excursion, isFrame }) {\r\n const classes = useStyles();\r\n const images = useMemo(() => {\r\n return excursion.excursionDescription.excursionImages.map(x => ({\r\n urls: { thumbnail: x.url, large: x.url, original: x.url },\r\n description: x.description\r\n }));\r\n }, [excursion.id]);\r\n const [{ tourVariant, currentAccommodationVariants, totalVariantPrice }, actions] = useTourVariant(isFrame);\r\n const [{ extras, price }] = useTourExtras(isFrame);\r\n const [{ excursionServices, hotelServices, externalFlight, hash }] = useTourDescription(null, isFrame);\r\n const excursionServicesString = useMemo(() => (excursionServices === null || excursionServices === void 0 ? void 0 : excursionServices.length) > 0 ? excursionServices.map(e => `${e.id}__${e.beginDate}=${(e.currentVehicleTypeId == undefined ? '' : e.currentVehicleTypeId)}`).reduce((pr, curr) => `${pr};${curr}`) : \"\", [excursionServices]);\r\n const excursionsPrice = useMemo(() => (excursionServices === null || excursionServices === void 0 ? void 0 : excursionServices.length) > 1 ? excursionServices.filter(s => s != excursion).map(s => { var _a, _b, _c, _d, _e, _f, _g; return ((_b = (_a = s.excursionPrice) === null || _a === void 0 ? void 0 : _a.price) !== null && _b !== void 0 ? _b : 0) - ((_g = (_f = ((_d = (_c = s.prices) === null || _c === void 0 ? void 0 : _c.find(p => p.vehicleTypeId == excursion.vehicleTypeId)) !== null && _d !== void 0 ? _d : (_e = s.prices) === null || _e === void 0 ? void 0 : _e.find(p => p.vehicleTypeId == 0))) === null || _f === void 0 ? void 0 : _f.price) !== null && _g !== void 0 ? _g : 0); }).reduce((a, b) => a + b) : 0, [excursionServices]);\r\n const sortedPrices = useMemo(() => (excursion.prices || []).sort((a, b) => a.price - b.price), [excursion.prices, currentAccommodationVariants, tourVariant]);\r\n const showTransport = sortedPrices.length > 1 || (sortedPrices.length == 1 && sortedPrices[0].vehicleTypeName != null && sortedPrices[0].vehicleTypeName != undefined);\r\n const handleTransportChanged = (price) => actions.setExcursionTransport(excursion.id, price === null || price === void 0 ? void 0 : price.vehicleTypeId);\r\n const fullPrice = useMemo(() => {\r\n var _a, _b, _c, _d, _e, _f, _g, _h;\r\n let cost = actions.getTourCost();\r\n let originalServiceCost = (_a = excursion.excursionPrice) === null || _a === void 0 ? void 0 : _a.costEntityWithPromo;\r\n //let originalServiceCost = price?.services.find(s => s.compositeId == excursion.compositeId)?.costEntityWithPromo;\r\n //let p = 0;\r\n //p -= (sortedPrices.find(sp => sp.vehicleTypeId == excursion.vehicleTypeId)?.price ?? 0);\r\n //p += excursionsPrice;\r\n return {\r\n brutto: cost.brutto - ((_b = originalServiceCost === null || originalServiceCost === void 0 ? void 0 : originalServiceCost.brutto) !== null && _b !== void 0 ? _b : 0),\r\n netto: cost.netto,\r\n discount: cost.discount,\r\n total: cost.brutto + cost.discount - ((_c = originalServiceCost === null || originalServiceCost === void 0 ? void 0 : originalServiceCost.brutto) !== null && _c !== void 0 ? _c : 0),\r\n roundBrutto: Math.ceil(cost.brutto - ((_d = originalServiceCost === null || originalServiceCost === void 0 ? void 0 : originalServiceCost.brutto) !== null && _d !== void 0 ? _d : 0)),\r\n roundTotal: Math.ceil(cost.brutto + cost.discount - (((_e = originalServiceCost === null || originalServiceCost === void 0 ? void 0 : originalServiceCost.brutto) !== null && _e !== void 0 ? _e : 0) + ((_f = originalServiceCost === null || originalServiceCost === void 0 ? void 0 : originalServiceCost.discount) !== null && _f !== void 0 ? _f : 0))),\r\n roundDiscount: Math.ceil(cost.brutto + cost.discount - ((_g = originalServiceCost === null || originalServiceCost === void 0 ? void 0 : originalServiceCost.brutto) !== null && _g !== void 0 ? _g : 0)) - Math.ceil(cost.brutto - ((_h = originalServiceCost === null || originalServiceCost === void 0 ? void 0 : originalServiceCost.brutto) !== null && _h !== void 0 ? _h : 0)),\r\n };\r\n }, [extras, price === null || price === void 0 ? void 0 : price.services, price === null || price === void 0 ? void 0 : price.defaultAirServices, externalFlight, excursionServicesString]);\r\n //const fullPrice = useMemo(() => {\r\n // if (!tourVariant)\r\n // return 0;\r\n // let p = totalVariantPrice + (externalFlight?.flightCostDifference ?? 0)\r\n // //let p = tourVariant.price;\r\n // //p += currentAccommodationVariants.map(hs => hs.accommodation?.price ?? 0).reduce((a, b) => a + b);\r\n // p -= (sortedPrices.find(sp => sp.vehicleTypeId == excursion.vehicleTypeId)?.price ?? 0);\r\n // p += excursionsPrice;\r\n // if (price)\r\n // p += Object.keys(extras).map(e => getExtraCost(e, extras, price, tourVariant)).reduce((c, p) => c + p, 0);\r\n // //let extraKeys = Object.keys(extras);\r\n // //p += price.extras.filter(e => extraKeys.find(k => e.id == key) && ex)\r\n // //p += price!.extras.filter(e => extras[getExtraKey(e)]?.length).map(e => e.cost * (e.isGroupCost ? 1 : extras[getExtraKey(e)]!.length)).reduce((c, p) => c + p, 0);\r\n // return p;\r\n //}, [tourVariant?.price, currentAccommodationVariants, excursion, excursionsPrice, externalFlight?.flightCostDifference, extras, hash]);\r\n return React.createElement(Paper, { className: classes.root, elevation: 0 },\r\n React.createElement(Typography, { variant: \"h6\" },\r\n excursion.name,\r\n \" \",\r\n moment(excursion.beginDate).format(\"L\"),\r\n \" (\",\r\n moment(excursion.beginDate).format(\"dd\"),\r\n \")\"),\r\n React.createElement(Grid, { container: true, spacing: 2 },\r\n React.createElement(Grid, { item: true, xs: 12, container: true, spacing: 1 },\r\n React.createElement(Grid, { item: true, xs: 8 },\r\n React.createElement(LightboxThumbnail, { images: images, height: 240, onImageClick: isFrame ? () => {\r\n const parentFrame = _ParentFrame();\r\n parentFrame.sendMessage({ message: 'open-gallery', params: {} });\r\n } : undefined })),\r\n React.createElement(Grid, { item: true, xs: 4 },\r\n React.createElement(Box, { display: \"flex\", flexWrap: \"nowrap\", mt: 0, flexDirection: \"column\" },\r\n React.createElement(ExcursionFeature, { icon: React.createElement(InfoIcon, null), title: _T.EXCURSION_TYPE, value: excursion.excursionDescription.excursionTypeName }),\r\n React.createElement(ExcursionFeature, { icon: React.createElement(ScheduleIcon, null), title: _T.COMMON_DURATION, value: excursion.excursionDescription.excursionDuration }),\r\n React.createElement(ExcursionFeature, { icon: React.createElement(ExploreIcon, null), title: _T.COMMON_DIRECTION, value: `${excursion.city.name}, ${excursion.city.country.name}` }),\r\n React.createElement(ExcursionFeature, { icon: React.createElement(FoodIcon, null), title: _T.EXCURSION_MEAL, value: excursion.excursionDescription.mealDescription }),\r\n React.createElement(ExcursionFeature, { icon: React.createElement(LocationIcon, null), title: _T.COMMON_MEET_POINT, value: excursion.excursionDescription.rootPoint })))),\r\n React.createElement(Grid, { item: true, xs: 12 },\r\n React.createElement(Typography, { variant: \"body1\" },\r\n React.createElement(\"span\", { dangerouslySetInnerHTML: { __html: excursion.excursionDescription.mainDescription } }))),\r\n React.createElement(Grid, { item: true, xs: 12 }, tourVariant && showTransport &&\r\n React.createElement(Paper, { className: classes.transportContainer, elevation: 0, variant: \"outlined\" },\r\n React.createElement(Box, { p: 2 },\r\n React.createElement(Typography, { variant: \"subtitle1\", gutterBottom: true }, _T.EXCURSION_AVAILABLE_TRANSPORT_TYPES),\r\n React.createElement(Box, { mt: 3 }, sortedPrices.map((x, i) => {\r\n var _a, _b;\r\n const isCurrentVariant = excursion.currentVehicleTypeId == x.vehicleTypeId;\r\n return React.createElement(Fragment, { key: `${x.id}-${x.vehicleTypeId}` },\r\n React.createElement(Grid, { container: true },\r\n React.createElement(Grid, { item: true, sm: 8 }, x.vehicleTypeName || null),\r\n React.createElement(Grid, { item: true, xs: 2 },\r\n React.createElement(Cost, { amount: fullPrice.roundTotal + x.price, currency: (_b = (_a = x.currency) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '', amountVariant: \"h6\" })),\r\n React.createElement(Grid, { item: true, xs: 2 }, !isCurrentVariant\r\n ? React.createElement(Button, { color: \"secondary\", variant: \"outlined\", fullWidth: true, onClick: handleTransportChanged.bind(null, x) },\r\n _T.COMMON_CHOOSE,\r\n \" \",\r\n React.createElement(ChevronRightIcon, null))\r\n : React.createElement(Typography, { className: classes.currentTransport, variant: \"button\", component: \"div\" },\r\n React.createElement(CheckIcon, null),\r\n \" \",\r\n _T.TOUR_SELECTED))),\r\n sortedPrices.length - 1 > i && React.createElement(Box, { my: 1 },\r\n React.createElement(Divider, null)) || null);\r\n })))))));\r\n}\r\n","import { makeStyles } from \"@material-ui/core/styles\";\r\nexport const useListSubheaderStyles = makeStyles({\r\n root: {\r\n fontSize: '1.1rem'\r\n }\r\n});\r\n","import React from 'react';\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport List from '@material-ui/core/List';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport ListSubheader from '@material-ui/core/ListSubheader';\r\nimport { _T } from 'appI18n';\r\nimport { useListSubheaderStyles } from \"./styles\";\r\nimport moment from 'moment';\r\nfunction ExtraServiceIcon() {\r\n return React.createElement(\"svg\", { viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", fontSize: \"6px\", \"aria-hidden\": \"true\" },\r\n React.createElement(\"text\", { x: \"1\", y: \"14\", letterSpacing: \"-0.1\", fill: \"#fff\" }, \"SERVICE\"));\r\n}\r\nexport default function ExtraServiceDescription({ services }) {\r\n const subhClasses = useListSubheaderStyles();\r\n return React.createElement(List, { subheader: React.createElement(ListSubheader, { className: subhClasses.root, disableGutters: true }, _T.COMMON_EXTRA_SERVICES) }, services.map((x, i) => React.createElement(ListItem, { disableGutters: true, key: i },\r\n React.createElement(ListItemAvatar, null,\r\n React.createElement(Avatar, null,\r\n React.createElement(ExtraServiceIcon, null))),\r\n React.createElement(ListItemText, { primary: x.name, secondary: `${moment(x.beginDate).format(\"L\")} (${moment(x.beginDate).format(\"dd\")})` }))));\r\n}\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport StarIcon from '@material-ui/icons/Star';\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n color: '#ccc'\r\n },\r\n star: {\r\n color: '#fde22d',\r\n },\r\n}), { name: 'HotelRecommendations' });\r\nexport default function Rating(props) {\r\n const classes = useStyles();\r\n const stars = [];\r\n for (let i = 0; i < props.rating; ++i) {\r\n stars.push(React.createElement(StarIcon, { className: classes.star, key: i, viewBox: \"4 2 20 22\", fontSize: props.fontSize }));\r\n }\r\n return React.createElement(\"span\", { className: classes.root }, stars);\r\n}\r\n","import React from 'react';\r\nimport Rating from 'react-components/Rating';\r\nimport Box from '@material-ui/core/Box';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport OpenInNewIcon from '@material-ui/icons/OpenInNew';\r\nimport { _T } from 'appI18n';\r\nimport HotelLocation from './HotelLocation';\r\nimport { LightboxImageGrid } from './LightboxImageGrid';\r\nimport { List, ListItem, ListItemText } from '@material-ui/core';\r\nimport { formatMoney } from '../../../../include/utils';\r\nimport { _ParentFrame } from '../../../Frame/types/Frame';\r\nconst useStyles = makeStyles({\r\n root: {},\r\n subheader: {\r\n fontWeight: 600\r\n },\r\n});\r\nfunction HotelDescriptionText({ description }) {\r\n const paragraphs = [description.description]; //.split(/[\\r\\n]+/);\r\n return React.createElement(\"div\", null, paragraphs.map((x, i) => React.createElement(Typography, { variant: \"body1\", paragraph: true, key: i },\r\n React.createElement(\"div\", { dangerouslySetInnerHTML: { __html: x } }))));\r\n}\r\nexport function HotelDescription(props) {\r\n var _a, _b, _c, _d, _e;\r\n const classes = useStyles();\r\n //const frameInfo = useFrame();\r\n return React.createElement(\"div\", { className: classes.root },\r\n React.createElement(Box, { mb: 1 },\r\n React.createElement(LightboxImageGrid, { images: props.description.hotelImages, imageGridCellHeight: 120, imageGridSpacing: 6, onImageClick: props.isFrame ? (index) => {\r\n const parentFrame = _ParentFrame();\r\n parentFrame.sendMessage({ message: 'open-gallery', params: { hotelId: props.description.hotelId, initialIndex: index } });\r\n } : undefined })),\r\n props.description.longitude || props.description.latitude\r\n ? React.createElement(HotelLocation, { description: props.description }) : null,\r\n React.createElement(Box, { mt: 3 },\r\n React.createElement(Grid, { container: true, spacing: 1 },\r\n React.createElement(Grid, { xs: 12, item: true },\r\n React.createElement(Typography, { variant: \"h5\", gutterBottom: true }, _T.TOUR_HOTEL_INFORMATION),\r\n React.createElement(Typography, { variant: \"h6\" },\r\n props.description.hotelName,\r\n \" \",\r\n props.description.homePage &&\r\n React.createElement(React.Fragment, null,\r\n \"\\u00B7 \",\r\n React.createElement(\"a\", { href: props.description.homePage, target: \"_blank\", rel: \"noopener nofollow\" },\r\n _T.COMMON_WEBSITE,\r\n \" \",\r\n React.createElement(OpenInNewIcon, { fontSize: \"inherit\", viewBox: \"2 2 22 22\" }))) || null),\r\n React.createElement(Box, { mb: 1 },\r\n React.createElement(Rating, { rating: (_a = props.description.starRating) !== null && _a !== void 0 ? _a : 0 })),\r\n props.description.address ? React.createElement(Box, { mb: 1 },\r\n React.createElement(Typography, { className: classes.subheader, variant: \"subtitle2\" }, _T.COMMON_ADDRESS),\r\n React.createElement(Typography, { variant: \"subtitle1\", gutterBottom: true }, props.description.address)) : null,\r\n props.description.description ? React.createElement(React.Fragment, null,\r\n React.createElement(Typography, { className: classes.subheader, variant: \"subtitle2\" }, _T.COMMON_DESCRIPTION),\r\n React.createElement(HotelDescriptionText, { description: props.description })) : null, (_c = (_b = props.description.hotelDescriptions) === null || _b === void 0 ? void 0 : _b.map(d => (React.createElement(React.Fragment, null,\r\n React.createElement(Typography, { className: classes.subheader, variant: \"subtitle2\" }, d.name),\r\n React.createElement(HotelDescriptionText, { description: { description: d.text } }))))) !== null && _c !== void 0 ? _c : null,\r\n props.description.checkInTime ? React.createElement(React.Fragment, null,\r\n React.createElement(Box, null,\r\n React.createElement(Typography, { className: classes.subheader, variant: \"subtitle2\", component: \"span\" },\r\n _T.COMMON_CHECK_IN_TIME,\r\n \": \"),\r\n React.createElement(Typography, { variant: \"subtitle1\", component: \"span\" }, props.description.checkInTime))) : null,\r\n props.description.checkOutTime ? React.createElement(React.Fragment, null,\r\n React.createElement(Box, null,\r\n React.createElement(Typography, { className: classes.subheader, variant: \"subtitle2\", component: \"span\" },\r\n _T.COMMON_CHECK_OUT_TIME,\r\n \": \"),\r\n React.createElement(Typography, { variant: \"subtitle1\", component: \"span\" }, props.description.checkOutTime))) : null,\r\n ((_d = props.description.taxes) === null || _d === void 0 ? void 0 : _d.length) ? React.createElement(Box, null,\r\n React.createElement(Typography, { className: classes.subheader, variant: \"subtitle1\", component: \"span\" },\r\n _T.HOTEL_DESCRIPTION_TAXES_HEADER,\r\n \": \"),\r\n React.createElement(List, null, props.description.taxes.map(t => (React.createElement(ListItem, null,\r\n React.createElement(ListItemText, { primary: t.name + (t.price ? ` - ${formatMoney(t.price, { currency: t.currency })} ${t.currency}` : '') + (t.included ? ' (включено в стоимость)' : ''), secondary: t.description })))))) : null,\r\n props.externalHotelPrice ? React.createElement(Box, null,\r\n ((_e = props.externalHotelPrice.availableMeals) === null || _e === void 0 ? void 0 : _e.length) ? React.createElement(Box, null,\r\n React.createElement(Typography, { className: classes.subheader, variant: \"subtitle1\", component: \"span\" }, \"\\u0414\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u044B\\u0435 \\u0432\\u0430\\u0440\\u0438\\u0430\\u043D\\u0442\\u044B \\u043F\\u0438\\u0442\\u0430\\u043D\\u0438\\u044F: \"),\r\n React.createElement(List, null, props.externalHotelPrice.availableMeals.map(t => (React.createElement(ListItem, null,\r\n React.createElement(ListItemText, { primary: t.mealCode + (t.price ? ` - ${formatMoney(t.price, { currency: t.currency })} ${t.currency}` : '') + (t.included ? ' (включено в стоимость)' : ''), secondary: t.mealName })))))) : null,\r\n props.externalHotelPrice.childrenMealNeedBookByManager ? React.createElement(Typography, { variant: 'body1' }, \"\\u0414\\u043E\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u043E\\u0435 \\u043F\\u0438\\u0442\\u0430\\u043D\\u0438\\u0435 \\u0434\\u043B\\u044F \\u0434\\u0435\\u0442\\u0435\\u0439 \\u043D\\u0435\\u043E\\u0431\\u0445\\u043E\\u0434\\u0438\\u043C\\u043E \\u0431\\u0440\\u043E\\u043D\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u043E\\u0442\\u0434\\u0435\\u043B\\u044C\\u043D\\u043E \\u0447\\u0435\\u0440\\u0435\\u0437 \\u043C\\u0435\\u043D\\u0435\\u0434\\u0436\\u0435\\u0440\\u0430\") : null,\r\n props.externalHotelPrice.sharedRoom ? React.createElement(Typography, { variant: 'body1' }, \"\\u041D\\u043E\\u043C\\u0435\\u0440 \\u0441 \\u043F\\u043E\\u0434\\u0441\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435\\u043C\") : null,\r\n props.externalHotelPrice.blockRoom ? React.createElement(Typography, { variant: 'body1' }, \"\\u041D\\u043E\\u043C\\u0435\\u0440 \\u0441 \\u0443\\u0434\\u043E\\u0431\\u0441\\u0442\\u0432\\u0430\\u043C\\u0438 \\u043D\\u0430 \\u044D\\u0442\\u0430\\u0436\\u0435\") : null,\r\n props.externalHotelPrice.roomWithWindow === false ? React.createElement(Typography, { variant: 'body1' }, \"\\u041D\\u043E\\u043C\\u0435\\u0440 \\u0431\\u0435\\u0437 \\u043E\\u043A\\u043E\\u043D\") : null,\r\n props.externalHotelPrice.checkInFrom && props.externalHotelPrice.checkInTo ? React.createElement(React.Fragment, null,\r\n React.createElement(Typography, { className: classes.subheader, variant: \"subtitle1\", component: \"span\" }, \"\\u041F\\u0435\\u0440\\u0438\\u043E\\u0434 \\u0437\\u0430\\u0435\\u0437\\u0434\\u0430: \"),\r\n React.createElement(Typography, { variant: 'subtitle1' },\r\n props.externalHotelPrice.checkInFrom,\r\n \" - \",\r\n props.externalHotelPrice.checkInTo)) : null,\r\n props.externalHotelPrice.checkOutFrom && props.externalHotelPrice.checkOutTo ? React.createElement(React.Fragment, null,\r\n React.createElement(Typography, { className: classes.subheader, variant: \"subtitle1\", component: \"span\" }, \"\\u041F\\u0435\\u0440\\u0438\\u043E\\u0434 \\u0432\\u044B\\u0435\\u0437\\u0434\\u0430: \"),\r\n React.createElement(Typography, { variant: 'subtitle1' },\r\n props.externalHotelPrice.checkOutFrom,\r\n \" - \",\r\n props.externalHotelPrice.checkOutTo)) : null) : null))));\r\n}\r\n","import React, { useCallback, useEffect, useLayoutEffect, useMemo, useState } from 'react';\r\nimport ForwardIcon from '@material-ui/icons/NavigateNext';\r\nimport BackIcon from '@material-ui/icons/NavigateBefore';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Button from '@material-ui/core/Button';\r\nimport throttle from 'lodash/throttle';\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n display: 'flex',\r\n },\r\n viewport: {\r\n display: 'flex',\r\n overflowX: 'hidden',\r\n flex: '1',\r\n },\r\n movementButton: {\r\n color: '#cfcfcf',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n '& button': {\r\n height: '100%',\r\n pointerEvents: 'auto',\r\n display: 'flex',\r\n alignItems: 'center',\r\n borderRadius: 0,\r\n minWidth: 0,\r\n },\r\n '& button:hover': {\r\n background: 'transparent',\r\n },\r\n },\r\n forwardButton: {},\r\n backButton: {},\r\n}));\r\nexport default function HorizontalList(props) {\r\n const classes = useStyles();\r\n const [viewportRef, setViewportRef] = useState(null);\r\n const { leftScrollNeeded, rightScrollNeeded } = useScrollNeededCheck(viewportRef);\r\n const scrollNeeded = useMemo(() => leftScrollNeeded || rightScrollNeeded, [leftScrollNeeded, rightScrollNeeded]);\r\n const handleBackButtonClick = useCallback(() => {\r\n scrollViewport(viewportRef, 'back');\r\n }, [viewportRef]);\r\n const handleForwardButtonClick = useCallback(() => {\r\n scrollViewport(viewportRef, 'forward');\r\n }, [viewportRef]);\r\n return (React.createElement(\"div\", { className: classes.root },\r\n scrollNeeded ?\r\n React.createElement(\"div\", { className: `${classes.movementButton} ${classes.backButton}` },\r\n React.createElement(Button, { color: \"primary\", onClick: handleBackButtonClick, variant: \"text\", size: \"small\", disabled: !leftScrollNeeded, disableRipple: true },\r\n React.createElement(BackIcon, { fontSize: \"large\", viewBox: \"4 0 16 24\" }))) : null,\r\n React.createElement(\"div\", { className: classes.viewport, ref: setViewportRef }, props.children),\r\n scrollNeeded ?\r\n React.createElement(\"div\", { className: `${classes.movementButton} ${classes.forwardButton}` },\r\n React.createElement(Button, { color: \"primary\", onClick: handleForwardButtonClick, variant: \"text\", size: \"small\", disabled: !rightScrollNeeded, disableRipple: true },\r\n React.createElement(ForwardIcon, { fontSize: \"large\", viewBox: \"4 0 16 24\" }))) : null));\r\n}\r\n/**\r\n * Хук проверяющий необходим ли скролл для указанного элемента.\r\n */\r\nfunction useScrollNeededCheck(viewport) {\r\n const [scrollNeeded, setScrollNeeded] = useState({\r\n leftScrollNeeded: false,\r\n rightScrollNeeded: false\r\n });\r\n const handler = () => {\r\n const edges = viewport ? getVisibleEdges(viewport) : [];\r\n if (!viewport || edges.length != 2) {\r\n setScrollNeeded({ leftScrollNeeded: false, rightScrollNeeded: false });\r\n return;\r\n }\r\n const [_0, lEdgeIndex, lEdgeRect] = edges[0];\r\n const [_1, rEdgeIndex, rEdgeRect] = edges[1];\r\n const viewportRect = viewport.getBoundingClientRect();\r\n const leftScrollNeeded = lEdgeIndex != 0 || lEdgeRect.x < viewportRect.x;\r\n const rightScrollNeeded = rEdgeIndex != viewport.children.length - 1 ||\r\n (rEdgeRect.x + rEdgeRect.width > viewportRect.x + viewportRect.width &&\r\n Math.abs((rEdgeRect.x + rEdgeRect.width) - (viewportRect.x + viewportRect.width)) >= 1);\r\n window.GVE = getVisibleEdges;\r\n console.log({ rEdgeIndex, rEdgeRect, rEdge: rEdgeRect.x + rEdgeRect.width, vpEdge: viewportRect.x + viewportRect.width });\r\n setScrollNeeded({ leftScrollNeeded, rightScrollNeeded });\r\n };\r\n // FIXME: при изменении контента вьюпорта реакции со стороны хука не будет.\r\n const throttledHandler = useCallback(throttle(handler, 100), [viewport]);\r\n const throttledScrollHandler = useCallback(throttle(handler, 16), [viewport]);\r\n useLayoutEffect(() => {\r\n if (!viewport)\r\n return;\r\n handler();\r\n window.addEventListener('resize', throttledHandler);\r\n viewport.addEventListener('scroll', throttledScrollHandler);\r\n return () => {\r\n window.removeEventListener('resize', throttledHandler);\r\n viewport === null || viewport === void 0 ? void 0 : viewport.removeEventListener('scroll', throttledScrollHandler);\r\n };\r\n }, [throttledHandler, throttledScrollHandler]);\r\n useEffect(() => {\r\n setTimeout(() => handler(), 100);\r\n }, [viewport]);\r\n return scrollNeeded;\r\n}\r\nfunction scrollViewport(viewport, direction) {\r\n const edges = getVisibleEdges(viewport);\r\n if (edges.length != 2)\r\n return;\r\n const viewportRect = viewport.getBoundingClientRect();\r\n let offsetX = 0;\r\n if (direction == 'forward') {\r\n const [_1, _2, rect] = edges[1];\r\n offsetX = viewport.scrollLeft + rect.x - viewportRect.x;\r\n }\r\n else {\r\n const [_1, _2, rect] = edges[0];\r\n offsetX = Math.max(0, viewport.scrollLeft + rect.x + rect.width - viewportRect.x - viewportRect.width);\r\n }\r\n viewport.scrollTo({ left: offsetX, top: 0, behavior: 'smooth' });\r\n}\r\nfunction getVisibleEdges(viewport) {\r\n const viewRect = viewport.getBoundingClientRect();\r\n const edges = [];\r\n let lastVisibleIndex = null;\r\n let lastVisibleRect = null;\r\n // Можно ускорить алгоритм для длинных списков путем поиска начального\r\n // видимого элемента через бинарный поиск?\r\n for (let i = 0; i < viewport.children.length; ++i) {\r\n const child = viewport.children[i];\r\n const childRect = child.getBoundingClientRect();\r\n const x1 = childRect.x + childRect.width;\r\n const isVisible = (viewRect.x < childRect.x && childRect.x < viewRect.x + viewRect.width) ||\r\n (viewRect.x < x1 && x1 < viewRect.x + viewRect.width);\r\n if (lastVisibleIndex === null && isVisible)\r\n edges.push([child, i, childRect]);\r\n if (lastVisibleIndex !== null && !isVisible)\r\n break;\r\n if (isVisible) {\r\n lastVisibleIndex = i;\r\n lastVisibleRect = childRect;\r\n }\r\n }\r\n if (lastVisibleIndex !== null)\r\n edges.push([viewport.children[lastVisibleIndex], lastVisibleIndex, lastVisibleRect]);\r\n return edges;\r\n}\r\n","import React, { useMemo } from 'react';\r\nimport { useHistory, useLocation, useParams } from 'react-router-dom';\r\nimport Box from '@material-ui/core/Box';\r\nimport Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActionArea from '@material-ui/core/CardActionArea';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CardMedia from '@material-ui/core/CardMedia';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Skeleton from '@material-ui/lab/Skeleton';\r\nimport { _T } from 'appI18n';\r\nimport HorizontalList from 'react-components/HorizontalList';\r\nimport Rating from 'react-components/Rating';\r\nimport { formatMoney } from 'utils';\r\nimport { useTourDescription, useTourDescriptionStore, useTourExtras, useTourVariant } from '../../../store/TourDescriptionStore';\r\nimport { tourDetailsUrlRR } from '../../../tour-urlgen';\r\nimport Carousel from 'react-components/Carousel';\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {},\r\n card: {\r\n width: 200,\r\n minWidth: 200,\r\n },\r\n cardRoot: {\r\n position: 'relative',\r\n },\r\n cardWrapper: {\r\n padding: '3px 6px'\r\n },\r\n media: {\r\n height: 150,\r\n maxHeight: 150,\r\n position: 'relative',\r\n },\r\n skeleton: {\r\n height: 348,\r\n width: 200,\r\n },\r\n description: {\r\n lineClamp: 2,\r\n overflow: 'hidden',\r\n display: '-webkit-box',\r\n '-webkit-box-orient': 'vertical',\r\n minHeight: '3em',\r\n },\r\n ribbon: {\r\n top: 12,\r\n left: -4,\r\n padding: '4px 8px',\r\n position: 'absolute',\r\n background: '#ffc800',\r\n color: '#674c1a',\r\n textTransform: 'uppercase',\r\n fontSize: '0.85rem',\r\n fontWeight: 600,\r\n letterSpacing: -0.5,\r\n boxShadow: '2px 2px 2px rgb(0 0 0 / 25%)',\r\n '&:before': {\r\n borderTop: '4px solid #695a27',\r\n borderLeft: '4px solid transparent',\r\n content: \"' '\",\r\n display: 'block',\r\n position: 'absolute',\r\n left: 0,\r\n bottom: -4,\r\n },\r\n },\r\n fullWidth: { width: '100%' },\r\n cursorDefault: { cursor: 'default' },\r\n}), { name: 'HotelRecommendations' });\r\nfunction HotelRecommendation({ recommendation, isFrame }) {\r\n const classes = useStyles();\r\n const location = useLocation();\r\n const history = useHistory();\r\n const [{ currentAccommodationVariants }] = useTourVariant(isFrame);\r\n //const [{ tourDescription: { id: tourId, name: tourName, currency }, excursionServices }] = useTourDescription(null, isFrame);\r\n const [{ tourDescription: { id: tourId, name: tourName, currency }, externalFlight, externalFlightId, externalFlightProviderId }, actions] = useTourDescription(null, isFrame);\r\n const [{ tourServices, search }] = useTourDescriptionStore(isFrame);\r\n const [{ extras }] = useTourExtras(isFrame);\r\n const hotelServices = useMemo(() => tourServices === null || tourServices === void 0 ? void 0 : tourServices.filter(s => s.type == \"hotel\").map(s => s), [tourServices]);\r\n const excursionServices = useMemo(() => tourServices === null || tourServices === void 0 ? void 0 : tourServices.filter(s => s.type == \"excursion\").map(s => s), [tourServices]);\r\n const excursionServicesString = useMemo(() => (excursionServices === null || excursionServices === void 0 ? void 0 : excursionServices.length) > 0 ? excursionServices.map(e => `${e.id}__${e.beginDate}=${(e.currentVehicleTypeId == undefined ? '' : e.currentVehicleTypeId)}`).reduce((pr, curr) => `${pr};${curr}`) : \"\", [excursionServices]);\r\n const params = useParams();\r\n const descs = recommendation.hotelDescriptions;\r\n const tourUrl = useMemo(() => {\r\n return tourDetailsUrlRR(tourId, {\r\n tourName: tourName,\r\n //accmmdId: recommendation.accmmdVariantIdForBestPrice,\r\n //variantId: recommendation.tourVariantIdForBestPrice,\r\n state: location.state,\r\n excursions: excursionServices === null || excursionServices === void 0 ? void 0 : excursionServices.map(s => ({ id: s.id, vehicleTypeId: s.currentVehicleTypeId })),\r\n hash: recommendation.bestPriceHash,\r\n externalFlight: externalFlight !== null && externalFlight !== void 0 ? externalFlight : (externalFlightId && externalFlightProviderId ? { flightId: externalFlightId, providerId: externalFlightProviderId } : undefined),\r\n extras: extras,\r\n search: search,\r\n }, params['frameId']);\r\n }, [tourName, tourId, location.state, excursionServicesString, params['frameId'], recommendation.bestPriceHash, externalFlight, externalFlightId, externalFlightProviderId]);\r\n //}, [tourName, tourId, recommendation.tourVariantIdForBestPrice, recommendation.accmmdVariantIdForBestPrice, location.state, excursionServicesString, params['frameId'], recommendation.bestPriceHash]);\r\n //const isCurrentHotel = useMemo(() => hotelServices.map(h => `${h.hotelDescription.hotelId}`).reduce((a, b) => a ? `${a} | ${b}` : a, '') == recommendation.hotelDescriptions.map(h => `${h.hotelId}`).reduce((a, b) => a ? `${a} | ${b}` : a, ''), [hotelServices, recommendation]);\r\n const isCurrentHotel = useMemo(() => currentAccommodationVariants.map(h => `${h.hotelDescription.hotelId}`).reduce((a, b) => a ? `${a} | ${b}` : b, '') == recommendation.hotelDescriptions.map(h => `${h.hotelId}`).reduce((a, b) => a ? `${a} | ${b}` : b, ''), [currentAccommodationVariants, recommendation]);\r\n //currentAccommodationVariant?.accommodation?.hotelId == recommendation.hotelDescription.hotelId;\r\n // TODO: сделать враппер для ссылки который позволяет ее отключить булевым атрибутом.\r\n const handleLinkClicked = (e) => isCurrentHotel ? e.preventDefault() : void (0);\r\n return React.createElement(\"div\", { className: classes.cardWrapper },\r\n React.createElement(\"div\", { className: classes.cardRoot },\r\n React.createElement(Card, { className: classes.card },\r\n React.createElement(CardActionArea, { disabled: isCurrentHotel }, (() => {\r\n var _a;\r\n const distinctDesc = descs.filter((v, i, a) => a.findIndex(h => h.hotelId == v.hotelId) == i);\r\n if (distinctDesc.length == 1) {\r\n const desc = distinctDesc[0];\r\n return React.createElement(React.Fragment, null,\r\n React.createElement(CardMedia, { className: classes.media, image: (_a = desc.mainImage) === null || _a === void 0 ? void 0 : _a.urls.thumbnail, title: desc.hotelName, onClick: () => {\r\n if (isCurrentHotel)\r\n return;\r\n //history.replace(tourUrl);\r\n actions.setPriceItem(recommendation.bestPriceHash);\r\n } }),\r\n React.createElement(CardContent, null,\r\n React.createElement(Typography, { gutterBottom: true, variant: \"h5\", color: \"primary\", component: \"h2\", noWrap: true },\r\n desc.hotelName,\r\n desc.starRating && React.createElement(\"div\", null,\r\n React.createElement(Rating, { rating: desc.starRating })) || null),\r\n React.createElement(Typography, { variant: \"body2\", color: \"textSecondary\", component: \"p\", className: classes.description, gutterBottom: true }, desc.description),\r\n React.createElement(Typography, { variant: \"subtitle1\", color: \"secondary\", component: \"p\" },\r\n _T.COMMON_FROM,\r\n \" \",\r\n React.createElement(Typography, { variant: \"h6\", component: \"span\", style: { paddingLeft: '2px' } },\r\n formatMoney(recommendation.bestPrice, { currency: currency.name }),\r\n \" \",\r\n currency.name))));\r\n }\r\n else {\r\n return React.createElement(React.Fragment, null,\r\n React.createElement(Carousel, { autoPlay: true, animation: \"slide\", fullHeightHover: true, navButtonsAlwaysVisible: !isCurrentHotel }, distinctDesc.map(desc => {\r\n var _a;\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(CardMedia, { className: classes.media, image: (_a = desc.mainImage) === null || _a === void 0 ? void 0 : _a.urls.thumbnail, title: desc.hotelName, onClick: () => {\r\n if (isCurrentHotel)\r\n return;\r\n //history.replace(tourUrl);\r\n actions.setPriceItem(recommendation.bestPriceHash);\r\n } }),\r\n React.createElement(CardContent, { style: { paddingBottom: 0 } },\r\n React.createElement(Typography, { gutterBottom: true, variant: \"h5\", color: \"primary\", component: \"h2\", noWrap: true },\r\n desc.hotelName,\r\n desc.starRating && React.createElement(\"div\", null,\r\n React.createElement(Rating, { rating: desc.starRating })) || null),\r\n React.createElement(Typography, { variant: \"body2\", color: \"textSecondary\", component: \"p\", className: classes.description, gutterBottom: true }, desc.description))));\r\n })),\r\n React.createElement(CardContent, { style: { paddingTop: 0 } },\r\n React.createElement(Typography, { variant: \"subtitle1\", color: \"secondary\", component: \"p\" },\r\n _T.COMMON_FROM,\r\n \" \",\r\n React.createElement(Typography, { variant: \"h6\", component: \"span\", style: { paddingLeft: '2px' } },\r\n formatMoney(recommendation.bestPrice, { currency: currency.name }),\r\n \" \",\r\n currency.name))));\r\n }\r\n })()),\r\n React.createElement(CardActions, null,\r\n React.createElement(Button, { color: \"primary\", variant: \"outlined\", fullWidth: true, size: \"small\", disabled: isCurrentHotel, onClick: () => {\r\n //history.replace(tourUrl);\r\n return actions.setPriceItem(recommendation.bestPriceHash);\r\n } }, !isCurrentHotel ? _T.COMMON_VIEW : _T.TOUR_CURRENTLY_VIEWED_HOTEL))),\r\n isCurrentHotel ? React.createElement(\"div\", { className: classes.ribbon }, _T.COMMON_CURRENTLY_VIEWED) : null));\r\n}\r\nexport default function HotelRecommendations(props) {\r\n const classes = useStyles();\r\n return React.createElement(\"div\", { className: classes.root }, (() => {\r\n if (props.loading) {\r\n return React.createElement(Box, { display: \"flex\" }, [1, 2, 3].map(x => React.createElement(Box, { key: x, mr: 1.5 },\r\n React.createElement(Skeleton, { variant: \"rect\", className: classes.skeleton }))));\r\n }\r\n const items = props.recommendations.sort((a, b) => a.bestPrice - b.bestPrice).map((x, i) => React.createElement(HotelRecommendation, { recommendation: x, key: i, isFrame: props.isFrame, hash: props.hash }));\r\n return items.length > 1 ? React.createElement(HorizontalList, null, items) : null;\r\n })());\r\n}\r\n","import React, { useEffect } from 'react';\r\nimport { useInView } from 'react-intersection-observer';\r\nimport { _T } from 'appI18n';\r\nimport { useHotelRecommendations } from '../../../../TourSearch/store/TourDescriptionStore';\r\nimport AsyncLoadError from '../AsyncLoadError';\r\nimport HotelRecommendations from './HotelRecommendations';\r\nexport default function HotelRecommendationsContainer({ isFrame, hash }) {\r\n const [ref, inView] = useInView({ rootMargin: '50px 0px' });\r\n const [{ recommendations, loading, initialized, errors }, actions] = useHotelRecommendations(isFrame);\r\n useEffect(() => {\r\n if (!inView || initialized || loading)\r\n return;\r\n actions.loadHotelRecommendations();\r\n }, [inView]);\r\n return React.createElement(\"div\", { ref: ref }, !errors.length\r\n ? React.createElement(HotelRecommendations, { recommendations: recommendations || [], loading: !initialized || loading, isFrame: isFrame, hash: hash })\r\n : React.createElement(AsyncLoadError, { errorText: _T.TOUR_ERROR_LOADING_HOTEL_RECOMMENDATIONS }));\r\n}\r\n","import { _T } from 'appI18n';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport appSettings from 'appSettings';\r\nimport React from 'react';\r\nconst useStyles = makeStyles({\r\n root: {\r\n // HACK: хак для отображения фильтра напротив заголовка секции.\r\n position: 'absolute',\r\n right: 0,\r\n top: -2\r\n }\r\n});\r\nexport default function HotelRoomFilters(props) {\r\n var _a, _b;\r\n const classes = useStyles();\r\n const handleAvailabilityFilterChanged = (_, value) => {\r\n props.onFilterApplied(value);\r\n };\r\n return (React.createElement(\"div\", { className: classes.root }, !appSettings().tourHideAvailabilityFilter ?\r\n React.createElement(FormControlLabel, { disabled: (_a = props.disabled) !== null && _a !== void 0 ? _a : false, label: _T.TOUR_ONLY_AVAILABLE, control: React.createElement(Checkbox, { disabled: (_b = props.disabled) !== null && _b !== void 0 ? _b : false, value: props.immediateConfirm, onChange: handleAvailabilityFilterChanged }) }) : null));\r\n}\r\n","import { Button, Dialog, Grid, makeStyles, Table, TableBody, TableCell, TableHead, TableRow, Tooltip, useMediaQuery, useTheme } from '@material-ui/core';\r\nimport { Alarm } from '@material-ui/icons';\r\nimport moment from 'moment';\r\nimport React, { useContext, useLayoutEffect, useMemo, useRef, useState } from 'react';\r\nimport { pluralizeDays, pluralizeHours, _T } from '../../../../../include/appI18n';\r\nimport { BackdropContext } from '../../../../../include/react-components/BackdropProvider';\r\nimport { formatMoney } from '../../../../../include/utils';\r\nimport '../../../../NewTourSearch/compoments/TourSearch.css';\r\nimport { useFlightConfiguration, useTourDescription } from '../../../store/TourDescriptionStore';\r\nimport './FlightVariants.css';\r\nimport { FlightVariantsDialog } from './FlightVariantsDialog';\r\nconst drawerWidth = 350;\r\nexport const useFlightVariantsStyles = makeStyles(theme => ({\r\n flightInfoPart: {\r\n fontWeight: 400,\r\n display: 'inline-block',\r\n '& > span': {\r\n display: 'block',\r\n },\r\n '& .time': {\r\n fontSize: '26px',\r\n },\r\n '& label': {\r\n fontWeight: 400,\r\n },\r\n },\r\n flightNumberAirlineInfo: {\r\n color: theme.palette.grey[\"600\"],\r\n marginTop: 4,\r\n },\r\n flightDatetimeContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n },\r\n filterPaper: {\r\n background: theme.palette.secondary.main,\r\n padding: '24px',\r\n },\r\n root: {\r\n display: 'flex',\r\n },\r\n toolbar: theme.mixins.toolbar,\r\n drawer: {\r\n [theme.breakpoints.up('md')]: {\r\n width: drawerWidth,\r\n flexShrink: 0,\r\n },\r\n },\r\n mobileToolbar: {\r\n [theme.breakpoints.up('md')]: {\r\n display: 'none',\r\n },\r\n },\r\n drawerPaper: {\r\n //width: drawerWidth,\r\n },\r\n flightSearchContent: {\r\n flexGrow: 1,\r\n '& .MuiAccordionSummary-root': {\r\n width: '100%',\r\n },\r\n },\r\n dialog: {\r\n overFlowY: 'overlay',\r\n '& .MuiDialog-paper': {\r\n minHeight: 'calc(100% - 64px)',\r\n },\r\n },\r\n selectedFlightsTable: {\r\n fontSize: '13px !important',\r\n fontWeight: 400,\r\n '& .MuiTableCell-root, & .MuiTableCell-head': {\r\n fontSize: '13px !important',\r\n fontWeight: 400,\r\n },\r\n },\r\n remainingPaymentTimeframeButton: {\r\n fontSize: '13px !important',\r\n fontWeight: 400,\r\n },\r\n}));\r\nexport function FlightVariants({ flights, isFrame }) {\r\n var _a;\r\n const classes = useFlightVariantsStyles();\r\n const theme = useTheme();\r\n const fullScreen = useMediaQuery(theme.breakpoints.down('md'));\r\n const spinner = useContext(BackdropContext);\r\n const [{ price: tourPrice, externalFlight, flightsLoading, tourDescription }, { setFlight }] = useTourDescription(null, isFrame);\r\n const [{ flightConfiguration }] = useFlightConfiguration(isFrame);\r\n const [dialogOpen, setDialogOpen] = useState(!!(tourPrice === null || tourPrice === void 0 ? void 0 : tourPrice.externalFlights) && !((_a = tourPrice === null || tourPrice === void 0 ? void 0 : tourPrice.aviacenterServices) === null || _a === void 0 ? void 0 : _a.length) && !!flightConfiguration.enabled && !!flightConfiguration.autorun);\r\n const remainingPaymentTimeframeText = useMemo(() => {\r\n if (!(externalFlight === null || externalFlight === void 0 ? void 0 : externalFlight.paymentDeadline))\r\n return undefined;\r\n const diff = Math.max(1, moment(externalFlight.paymentDeadline).diff(moment.utc()));\r\n const duration = moment.duration(diff);\r\n const hours = Math.floor(duration.asHours());\r\n if (hours >= 48) {\r\n const days = Math.floor(duration.asDays());\r\n return `${days} ${pluralizeDays(days)}`;\r\n }\r\n else if (hours >= 1) {\r\n return `${hours} ${pluralizeHours(hours)}`;\r\n }\r\n return _T.FLIGHT_SEARCH_LESS_THEN_HOUR;\r\n }, [externalFlight === null || externalFlight === void 0 ? void 0 : externalFlight.paymentDeadline]);\r\n const onClose = () => {\r\n if (!flightConfiguration.mandatory || externalFlight)\r\n setDialogOpen(false);\r\n };\r\n const dialogRef = useRef(null);\r\n useLayoutEffect(() => {\r\n if (flightsLoading)\r\n spinner.show();\r\n else\r\n spinner.hide();\r\n }, [flightsLoading]);\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(Grid, { container: true, spacing: 2, alignItems: \"center\", className: classes.selectedFlightsTable },\r\n React.createElement(Grid, { item: true, xs: 12, className: `table-responsive` },\r\n React.createElement(Table, { className: `table table-condensed cart-grid mb-0` },\r\n React.createElement(TableHead, null,\r\n React.createElement(TableRow, { className: `` },\r\n React.createElement(TableCell, { className: `col-sm-4 col-md-6` }, _T.COMMON_FLIGHT_PLANE),\r\n React.createElement(TableCell, { className: `col-sm-2 col-md-3` }, _T.COMMON_TIME),\r\n React.createElement(TableCell, { className: `col-sm-2 col-md-2` }, _T.FLIGHT_CLASS),\r\n React.createElement(TableCell, { className: `col-sm-2 col-md-1` }, _T.COMMON_PRICE))),\r\n React.createElement(TableBody, null, externalFlight ?\r\n React.createElement(React.Fragment, null, [...externalFlight.forwardStops, ...(externalFlight.returnStops || [])].map((stop, index, array) => {\r\n var _a;\r\n return (React.createElement(TableRow, { key: index },\r\n React.createElement(TableCell, null,\r\n React.createElement(\"label\", { className: classes.flightInfoPart },\r\n React.createElement(\"span\", null,\r\n stop.departureAirportCityName,\r\n \" \",\r\n stop.departureAirportName && stop.departureAirportCode ? `(${stop.departureAirportName}, ${stop.departureAirportCode})` : null,\r\n ' - ',\r\n stop.arrivalAirportCityName,\r\n \" \",\r\n stop.arrivalAirportName && stop.arrivalAirportCode ? `(${stop.arrivalAirportName}, ${stop.arrivalAirportCode})` : null),\r\n React.createElement(\"span\", { className: classes.flightNumberAirlineInfo },\r\n _T.COMMON_FLIGHT_PLANE,\r\n \": \",\r\n stop.flightNumber,\r\n \" \",\r\n stop.airlineName ? `- ${stop.airlineName}` : null))),\r\n React.createElement(TableCell, null,\r\n React.createElement(\"label\", { className: classes.flightDatetimeContainer },\r\n React.createElement(\"span\", { className: classes.flightInfoPart },\r\n (() => {\r\n const time = moment(stop.departureTime).format('HH:mm');\r\n if (time == '00:00')\r\n return null;\r\n return React.createElement(\"span\", { className: \"time col-12\" }, time);\r\n })(),\r\n React.createElement(\"span\", { className: \"col-12\" }, moment(stop.departureTime).format('L'))),\r\n React.createElement(\"span\", { className: \"mx-3\" }, \"-\"),\r\n React.createElement(\"span\", { className: classes.flightInfoPart },\r\n (() => {\r\n const time = moment(stop.arrivalTime).format('HH:mm');\r\n if (time == '00:00')\r\n return null;\r\n return React.createElement(\"span\", { className: \"time col-12\" }, time);\r\n })(),\r\n React.createElement(\"span\", { className: \"col-12\" }, moment(stop.arrivalTime).format('L'))))),\r\n React.createElement(TableCell, null,\r\n React.createElement(\"label\", { className: classes.flightInfoPart },\r\n React.createElement(\"span\", null,\r\n stop.airServiceClassName,\r\n \" \",\r\n externalFlight.airServiceGeneralClass ? `(${externalFlight.airServiceGeneralClass})` : null),\r\n externalFlight.maxBaggageCount ?\r\n React.createElement(\"span\", { className: classes.flightNumberAirlineInfo },\r\n _T.FLIGHT_SEARCH_BAGGAGE,\r\n \": \",\r\n externalFlight.maxBaggageCount,\r\n \"x\", (_a = externalFlight.maxBaggageWeight) !== null && _a !== void 0 ? _a : '?') :\r\n React.createElement(\"span\", { className: classes.flightNumberAirlineInfo }, _T.FLIGHT_SEARCH_WITHOUT_BAGGAGE))),\r\n index == 0 ?\r\n React.createElement(TableCell, { rowSpan: array.length, style: { whiteSpace: 'nowrap', verticalAlign: 'middle' } },\r\n externalFlight.flightCostDifference > 0 ? `+` : externalFlight.flightCostDifference < 0 ? `-` : ``,\r\n formatMoney(Math.abs(externalFlight.flightCostDifference), { localeAware: true, currency: tourDescription.currency.name }),\r\n externalFlight.flightCostCurrency,\r\n React.createElement(\"span\", { className: `price-arrow-status${externalFlight.flightCostDifference > 0 ? ' up-arrow' : externalFlight.flightCostDifference < 0 ? ' down-arrow' : ''}` })) : null));\r\n })) :\r\n React.createElement(React.Fragment, null, flights.map((stop, index, array) => {\r\n var _a, _b;\r\n return (React.createElement(TableRow, { key: index },\r\n React.createElement(TableCell, null,\r\n React.createElement(\"label\", { className: classes.flightInfoPart },\r\n React.createElement(\"span\", null,\r\n stop.cityFrom.name,\r\n ' - ',\r\n stop.cityTo.name),\r\n React.createElement(\"span\", { className: classes.flightNumberAirlineInfo },\r\n _T.COMMON_FLIGHT_PLANE,\r\n \": \",\r\n stop.name,\r\n \" \",\r\n ((_a = stop.flightClass) === null || _a === void 0 ? void 0 : _a.name) ? `- ${stop.flightClass.name}` : null))),\r\n React.createElement(TableCell, null,\r\n React.createElement(\"label\", { className: classes.flightDatetimeContainer },\r\n React.createElement(\"span\", { className: classes.flightInfoPart },\r\n (() => {\r\n const time = moment(stop.beginDate).format('HH:mm');\r\n if (time == '00:00')\r\n return null;\r\n return React.createElement(\"span\", { className: \"time col-12\" }, time);\r\n })(),\r\n React.createElement(\"span\", { className: \"col-12\" }, moment(stop.beginDate).format('L'))))),\r\n React.createElement(TableCell, null,\r\n React.createElement(\"label\", { className: classes.flightInfoPart },\r\n React.createElement(\"span\", null, ((_b = stop.flightClass) === null || _b === void 0 ? void 0 : _b.name) ? `- ${stop.flightClass.name}` : null))),\r\n React.createElement(TableCell, { style: { whiteSpace: 'nowrap', verticalAlign: 'middle' } })));\r\n }))))),\r\n (tourPrice === null || tourPrice === void 0 ? void 0 : tourPrice.externalFlights) && flightConfiguration.enabled &&\r\n React.createElement(Grid, { item: true, xs: 12, container: true, justify: \"space-between\", alignItems: \"center\" },\r\n React.createElement(Grid, { xs: \"auto\" }, externalFlight && remainingPaymentTimeframeText &&\r\n React.createElement(React.Fragment, null, flightConfiguration.showExactTimeLimit ?\r\n React.createElement(Tooltip, { title: `${remainingPaymentTimeframeText} ${_T.FLIGHT_SEARCH_TIMES_FOR_PAYMENT}` },\r\n React.createElement(Button, { className: classes.remainingPaymentTimeframeButton, startIcon: React.createElement(Alarm, null) },\r\n _T.FLIGHT_SEARCH_PAYMENT_BEFORE,\r\n React.createElement(\"br\", null),\r\n moment(externalFlight.paymentDeadline).format('DD.MM.YYYY HH:mm'))) :\r\n React.createElement(Tooltip, { title: `${_T.FLIGHT_SEARCH_PAYMENT_AVAILABLE_BEFORE} ${moment(externalFlight.paymentDeadline).format('DD.MM.YYYY HH:mm')}` },\r\n React.createElement(Button, { className: classes.remainingPaymentTimeframeButton, startIcon: React.createElement(Alarm, null) },\r\n remainingPaymentTimeframeText,\r\n React.createElement(\"br\", null),\r\n _T.FLIGHT_SEARCH_TIMES_FOR_PAYMENT))) || null),\r\n React.createElement(Grid, { xs: \"auto\" },\r\n React.createElement(Button, { className: classes.remainingPaymentTimeframeButton, onClick: () => setDialogOpen(true), variant: 'contained', color: 'primary', fullWidth: true }, _T.FLIGHT_SEARCH_CHANGE_FLIGHTS))) || null),\r\n (tourPrice === null || tourPrice === void 0 ? void 0 : tourPrice.externalFlights) && flightConfiguration.enabled ?\r\n React.createElement(Dialog, { ref: dialogRef, disablePortal: true, open: dialogOpen, maxWidth: fullScreen ? false : \"xl\", fullWidth: true, fullScreen: fullScreen, scroll: 'body', onClose: onClose, className: classes.dialog, id: \"flight-search-ui\" },\r\n React.createElement(FlightVariantsDialog, { dialogRef: dialogRef, flights: flights, isFrame: isFrame, current: externalFlight, classes: classes, onClose: onClose, onFlightSelect: (f) => {\r\n setFlight(f);\r\n setDialogOpen(false);\r\n } })) : null));\r\n}\r\n","import { Button, DialogActions, DialogContent, DialogTitle, Grid, Table, TableBody, TableCell, TableHead, TableRow, Typography } from '@material-ui/core';\r\nimport _, { range } from 'lodash';\r\nimport moment from 'moment';\r\nimport React, { useMemo } from 'react';\r\nimport { _T, formatString } from '../../../../../include/appI18n';\r\nimport { formatMoney, pluralizeAutoSplit } from '../../../../../include/utils';\r\nimport MultiSelectList from '../../../../NewTourSearch/compoments/MultiSelectList';\r\nimport { useTourDescription, useTourExtras, useTourVariant } from '../../../store/TourDescriptionStore';\r\nimport { getExtraKey } from '../../../store/utils';\r\nexport function ExtrasDialog(props) {\r\n const [{ price, extras }, actions] = useTourExtras(props.isFrame);\r\n const [{ tourVariant }] = useTourVariant(props.isFrame);\r\n const [{ tourDescription, externalFlight }] = useTourDescription(null, props.isFrame);\r\n const count = useMemo(() => Object.keys(extras).filter(k => { var _a; return !!((_a = extras[k]) === null || _a === void 0 ? void 0 : _a.length); }).length, [extras]);\r\n const fullPrice = useMemo(() => actions.getTourCost(), [extras, price === null || price === void 0 ? void 0 : price.services, price === null || price === void 0 ? void 0 : price.defaultAirServices, externalFlight]);\r\n const allMens = useMemo(() => ([...range(0, tourVariant.adultCount).map(x => 18), ...tourVariant.childAges]), [tourVariant]);\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(DialogTitle, { disableTypography: true },\r\n React.createElement(\"div\", { className: \"custom-modal-content-title\" },\r\n React.createElement(\"div\", { className: \"title\" },\r\n _T.TOUR_EXTRAS_DIALOG_TITLE,\r\n count > 0 ? React.createElement(\"span\", { className: \"text-muted\" },\r\n \"(\",\r\n _T.TOUR_EXTRAS_DIALOG_SUBTITLE_SELECTED_COUNT,\r\n \" - \",\r\n count,\r\n \")\") : null),\r\n React.createElement(\"div\", { className: \"dismisser\", \"data-dismiss\": \"modal\", onClick: props.onClose }, \"\\u00D7\"))),\r\n React.createElement(DialogContent, null,\r\n React.createElement(Grid, { item: true, xs: 12, className: `table-responsive` },\r\n React.createElement(Table, { className: `table table-condensed cart-grid mb-0 extras-table` },\r\n React.createElement(TableHead, null,\r\n React.createElement(TableRow, { className: `` },\r\n React.createElement(TableCell, { className: `col-sm-4` }, _T.COMMON_GIVEN_NAME),\r\n React.createElement(TableCell, { className: `col-sm-3` }, _T.COMMON_CLASS),\r\n React.createElement(TableCell, { className: `col-sm-3` }, _T.COMMON_TOURISTS),\r\n React.createElement(TableCell, { className: `col-sm-2` }, _T.COMMON_PRICE))),\r\n React.createElement(TableBody, null, price.extras.length ?\r\n React.createElement(React.Fragment, null, _.valuesIn(_.groupBy(price.extras.map(service => { var _a; return ({ key: getExtraKey(service), service, mens: (_a = extras[getExtraKey(service)]) !== null && _a !== void 0 ? _a : [] }); }), x => x.key)).map((group, index, array) => {\r\n var _a, _b;\r\n const key = group[0].key;\r\n const service = (_b = (_a = _.maxBy(group.filter(s => !!allMens.filter(m => m >= s.service.ageFrom && m < s.service.ageTo).length), x => x.service.cost)) === null || _a === void 0 ? void 0 : _a.service) !== null && _b !== void 0 ? _b : _.maxBy(group, x => x.service.cost).service;\r\n const mens = _.difference(group.flatMap(x => x.mens));\r\n return (React.createElement(TableRow, { key: index },\r\n React.createElement(TableCell, null,\r\n moment(tourVariant.checkInDate).add(service.day - 1, 'day').format('DD.MM'),\r\n \" \",\r\n service.data.type,\r\n \" \",\r\n service.data.name),\r\n React.createElement(TableCell, null, service.data.class),\r\n React.createElement(TableCell, null,\r\n React.createElement(MultiSelectList, { title: (s) => (s.length == 0 ? _T.COMMON_NOT_SELECTED_MANY : `${s.length} ${pluralizeAutoSplit(s.length, _T.COMMON_SELECTED_FEMALE_PLURAL)}`), valueLabel: (s) => '', options: [\r\n ...range(0, tourVariant.adultCount).map(x => {\r\n var _a, _b;\r\n return ({\r\n index: x,\r\n name: `${_T.COMMON_ADULT} ${x + 1}`,\r\n cost: (_b = (_a = group.find(s => 18 >= s.service.ageFrom && 18 < s.service.ageTo)) === null || _a === void 0 ? void 0 : _a.service) === null || _b === void 0 ? void 0 : _b.costEntityWithPromo.roundTotal,\r\n });\r\n }),\r\n ...tourVariant.childAges.map((x, i) => {\r\n var _a, _b;\r\n return ({\r\n index: tourVariant.adultCount + i,\r\n name: `${formatString(_T.COMMON_ADULT_AGE, [x])}`,\r\n cost: (_b = (_a = group.find(s => x >= s.service.ageFrom && x < s.service.ageTo)) === null || _a === void 0 ? void 0 : _a.service) === null || _b === void 0 ? void 0 : _b.costEntityWithPromo.roundTotal,\r\n });\r\n })\r\n ], valueSelector: \"index\", textSelector: \"name\", onChange: (s) => actions.updateExtra(key, s.length ? s : undefined), selected: extras[key] || [], variant: \"filled\", disableOption: o => !Number.isFinite(o.cost), endAdornment: o => React.createElement(\"span\", null, service.isGroupCost ? '' : Number.isFinite(o.cost) ? o.cost > 0 ? o.cost : _T.COMMON_PRICE_FREE : _T.COMMON_UNAVAILABLE), noShrinkLabel: true })),\r\n React.createElement(TableCell, null, service.isGroupCost\r\n ? React.createElement(React.Fragment, null,\r\n group[0].service.costEntityWithPromo.roundTotal,\r\n \" \", price === null || price === void 0 ? void 0 :\r\n price.currency,\r\n \" \",\r\n React.createElement(\"span\", { className: \"text-grey small\" }, _T.COMMON_FOR_EVERYONE))\r\n : _.uniq(group\r\n .filter(s => !!allMens.filter(m => m >= s.service.ageFrom && m < s.service.ageTo).length)\r\n .map(s => s.service.costEntityWithPromo.roundTotal)).length > 1\r\n ? React.createElement(React.Fragment, null,\r\n React.createElement(\"span\", { className: \"text-grey small\" }, _T.COMMON_FROM),\r\n \" \",\r\n _.min(group\r\n .filter(s => !!allMens.filter(m => m >= s.service.ageFrom && m < s.service.ageTo).length)\r\n .map(s => s.service.costEntityWithPromo.roundTotal)),\r\n \" \", price === null || price === void 0 ? void 0 :\r\n price.currency,\r\n \" \",\r\n React.createElement(\"span\", { className: \"text-grey small\" }, _T.COMMON_PER_PERSON))\r\n : React.createElement(React.Fragment, null,\r\n service.costEntityWithPromo.roundTotal,\r\n \" \", price === null || price === void 0 ? void 0 :\r\n price.currency,\r\n \" \",\r\n React.createElement(\"span\", { className: \"text-grey small\" }, _T.COMMON_PER_PERSON)))));\r\n })) : null)))),\r\n React.createElement(DialogActions, null,\r\n React.createElement(Grid, { container: true },\r\n React.createElement(Grid, { item: true, xs: 12, className: \"text-right transportsDialogTotal\" },\r\n _T.TOUR_EXTRAS_DIALOG_ACTIONS_PRICE_WITH_CHANGES,\r\n \":\\u00A0\",\r\n React.createElement(Typography, { variant: \"h5\", component: \"span\" },\r\n formatMoney(fullPrice.total, { localeAware: true, currency: tourDescription.currency.name }),\r\n \" \",\r\n React.createElement(Typography, { variant: \"h5\", component: \"span\" }, tourDescription.currency.name))),\r\n React.createElement(Grid, { item: true, xs: 12, className: \"clearfix text-center\" },\r\n React.createElement(Button, { variant: \"contained\", color: \"primary\", \"data-dismiss\": \"modal\", style: { minWidth: 150 }, onClick: props.onClose }, _T.COMMON_CLOSE))))));\r\n}\r\n","import { Button, Dialog, Grid, Table, TableBody, TableCell, TableHead, TableRow, useMediaQuery, useTheme } from '@material-ui/core';\r\nimport { range } from 'lodash';\r\nimport moment from 'moment';\r\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\r\nimport { _T } from '../../../../../include/appI18n';\r\nimport { formatMoney } from '../../../../../include/utils';\r\nimport { useTourExtras, useTourVariant } from '../../../store/TourDescriptionStore';\r\nimport { getExtraKey } from '../../../store/utils';\r\nimport { useFlightVariantsStyles } from '../FlightVariants/FlightVariants';\r\nimport { ExtrasDialog } from './ExtrasDialog';\r\nexport const getExtraCost = (key, extras, price, tourVariant) => {\r\n const allMens = [...range(0, tourVariant.adultCount).map(x => 18), ...tourVariant.childAges];\r\n let cost = 0;\r\n const extraMens = extras[key];\r\n if (!(extraMens === null || extraMens === void 0 ? void 0 : extraMens.length))\r\n return 0;\r\n const services = price.extras.filter(x => getExtraKey(x) == key);\r\n for (let service of services) {\r\n const mensInService = allMens.map((value, index) => ({ value, index })).filter(x => x.value >= service.ageFrom && x.value < service.ageTo && extraMens.findIndex(m => m == x.index) >= 0).length;\r\n if (!mensInService)\r\n continue;\r\n cost += service.costEntityWithPromo.total * (service.isGroupCost ? 1 : mensInService);\r\n }\r\n return cost;\r\n};\r\nexport function ExtrasContainer({ isFrame, onChange }) {\r\n var _a;\r\n const [{ price, hash, extras, prevExtras }, { updateExtra, reloadExtras, getTourCost }] = useTourExtras(isFrame);\r\n //const [prevExtras, setPrevExtras] = useState>({});\r\n const [{ tourVariant }] = useTourVariant(isFrame);\r\n const theme = useTheme();\r\n const fullScreen = useMediaQuery(theme.breakpoints.down('sm'));\r\n const classes = useFlightVariantsStyles();\r\n const [dialogOpen, setDialogOpen] = useState(false);\r\n const dialogRef = useRef(null);\r\n const getExtraCostInternal = useCallback((key) => {\r\n return getExtraCost(key, extras, price, tourVariant);\r\n }, [tourVariant, price, extras]);\r\n useEffect(() => {\r\n if (Object.keys(prevExtras).length == Object.keys(extras).length && !Object.keys(prevExtras).filter(p => { var _a, _b, _c; return !(prevExtras[p] == extras[p] || (((_a = prevExtras[p]) === null || _a === void 0 ? void 0 : _a.length) == ((_b = extras[p]) === null || _b === void 0 ? void 0 : _b.length) && ((_c = prevExtras[p]) === null || _c === void 0 ? void 0 : _c.filter((x, i) => { var _a; return extras[p] && x === ((_a = extras[p]) === null || _a === void 0 ? void 0 : _a.at(i)); })))); }))\r\n return;\r\n //setPrevExtras({ ...extras });\r\n if (onChange)\r\n onChange(extras);\r\n }, [extras, onChange]);\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(Grid, { container: true, spacing: 2, alignItems: \"center\", className: classes.selectedFlightsTable },\r\n React.createElement(\"p\", { className: \"servicesHint text-grey w-100\" }, _T.TOUR_EXTRAS_HINT),\r\n React.createElement(Grid, { item: true, xs: 12, className: `table-responsive` },\r\n React.createElement(Table, { className: `table table-condensed cart-grid mb-0` },\r\n React.createElement(TableHead, null,\r\n React.createElement(TableRow, { className: `` },\r\n React.createElement(TableCell, { className: `col-sm-4 col-md-5` }, _T.COMMON_GIVEN_NAME),\r\n React.createElement(TableCell, { className: `col-sm-1 col-md-3` }, _T.COMMON_CLASS),\r\n React.createElement(TableCell, { className: `col-sm-2 col-md-2` }, _T.COMMON_PERSONCOUNT),\r\n React.createElement(TableCell, { className: `col-sm-3 col-md-2` }, _T.COMMON_PRICE),\r\n React.createElement(TableCell, { className: `padding-left-0 width-18` }))),\r\n React.createElement(TableBody, null, ((_a = Object.keys(extras)) === null || _a === void 0 ? void 0 : _a.length) ?\r\n React.createElement(React.Fragment, null, Object.keys(extras).filter(key => { var _a, _b; return !!((_a = price === null || price === void 0 ? void 0 : price.extras) === null || _a === void 0 ? void 0 : _a.find(e => getExtraKey(e) == key)) && !!((_b = extras[key]) === null || _b === void 0 ? void 0 : _b.length); }).map(key => ({ key, services: price.extras.filter(e => getExtraKey(e) == key), mens: extras[key] })).map(({ key, services, mens }, index, array) => (React.createElement(TableRow, { key: index },\r\n React.createElement(TableCell, null,\r\n moment(tourVariant.checkInDate).add(services[0].day - 1, 'day').format('DD.MM'),\r\n \" \",\r\n services[0].data.type,\r\n \" \",\r\n services[0].data.name),\r\n React.createElement(TableCell, null, services[0].data.class),\r\n React.createElement(TableCell, null, mens.length),\r\n React.createElement(TableCell, null,\r\n formatMoney(getExtraCostInternal(key), { localeAware: true, currency: price.currency }),\r\n \" \", price === null || price === void 0 ? void 0 :\r\n price.currency),\r\n React.createElement(TableCell, { className: `padding-left-0` },\r\n React.createElement(\"i\", { className: \"delBtn\", onClick: () => {\r\n updateExtra(key, undefined);\r\n }, title: _T.COMMON_DELETE })))))) : null))),\r\n React.createElement(Grid, { item: true, xs: 12, container: true, justifyContent: \"flex-end\", alignItems: \"center\" },\r\n React.createElement(Grid, { xs: \"auto\" },\r\n React.createElement(Button, { className: classes.remainingPaymentTimeframeButton, onClick: () => setDialogOpen(true), variant: 'contained', color: 'primary', fullWidth: true }, _T.COMMON_ADD)))),\r\n React.createElement(Dialog, { ref: dialogRef, disablePortal: true, open: dialogOpen, maxWidth: fullScreen ? false : \"md\", fullWidth: true, fullScreen: fullScreen, scroll: 'body', onClose: () => setDialogOpen(false) },\r\n React.createElement(ExtrasDialog, { dialogRef: dialogRef, isFrame: isFrame, onClose: () => setDialogOpen(false), getExtraCost: getExtraCostInternal }))));\r\n}\r\n","import Box from '@material-ui/core/Box';\r\nimport Button from '@material-ui/core/Button';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CheckIcon from '@material-ui/icons/CheckCircleOutline';\r\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\r\nimport Skeleton from '@material-ui/lab/Skeleton';\r\nimport { useTourDescription, useTourDescriptionStore, useTourExtras, useTourVariant } from '../../../store/TourDescriptionStore';\r\nimport { LightboxThumbnail } from '../LightboxThumbnail';\r\nimport { _T } from 'appI18n';\r\nimport React, { Fragment, useCallback, useMemo } from 'react';\r\nimport { formatMoney } from 'utils';\r\nimport { getExtraCost } from '../Extras/ExtrasContainer';\r\nimport { Badge, Tooltip } from '@material-ui/core';\r\nimport { _ParentFrame } from '../../../../Frame/types/Frame';\r\nimport { tourDetailsUrlRR } from '../../../tour-urlgen';\r\nimport { useHistory, useLocation, useParams } from 'react-router-dom';\r\nexport const useRoomStyles = makeStyles(theme => ({\r\n root: {\r\n padding: theme.spacing(2),\r\n marginTop: theme.spacing(1),\r\n boxShadow: 'none',\r\n border: '1px solid #dadada',\r\n },\r\n price: {\r\n fontSize: '1.4rem',\r\n },\r\n current: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '4px 0 8px',\r\n marginLeft: 4,\r\n color: theme.palette.success.main,\r\n '& > :last-child': { marginRight: theme.spacing(.5) }\r\n }\r\n}));\r\nfunction HotelRoom({ room, basePrice, basePriceCurrency, isFrame }) {\r\n const location = useLocation();\r\n const history = useHistory();\r\n const params = useParams();\r\n const desc = room.description;\r\n const [{ currentAccommodationVariants: accmds, tourVariant }] = useTourVariant(isFrame);\r\n const [{ excursionServices, hash, externalFlight, externalFlightId, externalFlightProviderId, tourDescription: { id: tourId, name: tourName } }, actions] = useTourDescription(null, isFrame);\r\n const [{ search }] = useTourDescriptionStore(isFrame);\r\n const [{ extras, price }] = useTourExtras(isFrame);\r\n const excursionServicesString = useMemo(() => (excursionServices === null || excursionServices === void 0 ? void 0 : excursionServices.length) > 0 ? excursionServices.map(e => `${e.id}__${e.beginDate}=${(e.currentVehicleTypeId == undefined ? '' : e.currentVehicleTypeId)}`).reduce((pr, curr) => `${pr};${curr}`) : \"\", [excursionServices]);\r\n const classes = useRoomStyles();\r\n const variants = useMemo(() => {\r\n return room.variants.sort((a, b) => a.accomodation.price - b.accomodation.price);\r\n }, [room.variants, excursionServices, hash]);\r\n const tourUrl = useCallback((hash) => {\r\n return tourDetailsUrlRR(tourId, {\r\n tourName: tourName,\r\n //accmmdId: recommendation.accmmdVariantIdForBestPrice,\r\n //variantId: recommendation.tourVariantIdForBestPrice,\r\n state: location.state,\r\n excursions: excursionServices === null || excursionServices === void 0 ? void 0 : excursionServices.map(s => ({ id: s.id, vehicleTypeId: s.currentVehicleTypeId })),\r\n hash: hash,\r\n externalFlight: externalFlight !== null && externalFlight !== void 0 ? externalFlight : (externalFlightId && externalFlightProviderId ? { flightId: externalFlightId, providerId: externalFlightProviderId } : undefined),\r\n extras: extras,\r\n search: search,\r\n }, params['frameId']);\r\n }, [tourName, tourId, location.state, excursionServicesString, params['frameId'], externalFlight, externalFlightId, externalFlightProviderId]);\r\n //const handleSelectClicked = (accmmdId: string) => {\r\n // // TODO hash\r\n // changeAccommodation(room.variants.find(x => x.accomodation.id == accmmdId)!.accomodation);\r\n //}\r\n const handleSelectClicked = (hash) => {\r\n //history.replace(tourUrl(hash));\r\n actions.setPriceItem(hash);\r\n };\r\n const fullPrice = useMemo(() => {\r\n var _a, _b, _c, _d, _e, _f, _g;\r\n // TODO\r\n let p = basePrice;\r\n if (excursionServices === null || excursionServices === void 0 ? void 0 : excursionServices.length) {\r\n for (let i = 0; i < excursionServices.length; i++) {\r\n let exc = excursionServices[i];\r\n let price = (_a = exc.excursionPrice) !== null && _a !== void 0 ? _a : (_b = exc.prices) === null || _b === void 0 ? void 0 : _b.find(ep => ep.vehicleTypeId == exc.currentVehicleTypeId);\r\n let defaultPrice = (_d = (_c = exc.prices) === null || _c === void 0 ? void 0 : _c.find(ep => ep.vehicleTypeId == exc.vehicleTypeId)) !== null && _d !== void 0 ? _d : (_e = exc.prices) === null || _e === void 0 ? void 0 : _e.find(ep => ep.vehicleTypeId == 0);\r\n p += (((_f = price === null || price === void 0 ? void 0 : price.price) !== null && _f !== void 0 ? _f : 0) - ((_g = defaultPrice === null || defaultPrice === void 0 ? void 0 : defaultPrice.price) !== null && _g !== void 0 ? _g : 0));\r\n }\r\n }\r\n if (price && tourVariant)\r\n p += Object.keys(extras).map(e => getExtraCost(e, extras, price, tourVariant)).reduce((c, p) => c + p, 0);\r\n //p += price!.extras.filter(e => extras[getExtraKey(e)]?.length).map(e => e.cost * (e.isGroupCost ? 1 : extras[getExtraKey(e)]!.length)).reduce((c, p) => c + p, 0);\r\n return p + ((externalFlight === null || externalFlight === void 0 ? void 0 : externalFlight.flightCostDifference) || 0);\r\n }, [basePrice, excursionServices, excursionServicesString, hash, extras]);\r\n return (React.createElement(Paper, { className: classes.root },\r\n React.createElement(Grid, { container: true, spacing: 2 },\r\n React.createElement(Grid, { item: true, md: 2, sm: 3 },\r\n React.createElement(LightboxThumbnail, { images: room.description.roomImages, height: 80, onImageClick: isFrame ? () => {\r\n var _a, _b, _c, _d;\r\n const parentFrame = _ParentFrame();\r\n parentFrame.sendMessage({ message: 'open-gallery', params: { hotelId: (_b = (_a = room.variants[0]) === null || _a === void 0 ? void 0 : _a.accomodation) === null || _b === void 0 ? void 0 : _b.hotelId, roomTypeId: room.description.roomTypeId, roomCategoryId: room.description.roomCategoryId, externalRoomProviderId: (_c = room.variants[0].externalHotelPrice) === null || _c === void 0 ? void 0 : _c.providerId, externalRoomVariantId: (_d = room.variants[0].externalHotelPrice) === null || _d === void 0 ? void 0 : _d.id } });\r\n } : undefined })),\r\n React.createElement(Grid, { item: true, md: 10, sm: 9 },\r\n React.createElement(Typography, { variant: \"h6\" }, desc.name),\r\n React.createElement(Typography, { variant: \"body1\" },\r\n React.createElement(\"div\", { dangerouslySetInnerHTML: { __html: desc.description } })),\r\n React.createElement(Typography, { variant: \"body1\" }, desc.equipment))),\r\n React.createElement(Box, { my: 2 },\r\n React.createElement(Divider, null)),\r\n variants.map(({ hash: variantHash, accomodation: x, totalVariantPrice, promoName, externalHotelPrice }, i) => {\r\n const isCurrentVariant = hash == variantHash;\r\n return React.createElement(Fragment, { key: i },\r\n React.createElement(Grid, { container: true, key: i, alignItems: \"center\" },\r\n React.createElement(Grid, { item: true, md: 2, sm: 3 }, x.mealTypeName),\r\n React.createElement(Grid, { item: true, md: 2, sm: 2 }, x.availability == 0 ? _T.TOUR_AVAILABLE : _T.TOUR_ONREQUEST),\r\n React.createElement(Grid, { item: true, md: 3, sm: 1 }, promoName ?\r\n React.createElement(\"span\", { title: promoName, className: \"promo-highlight-cart\" },\r\n \"\\u00A0PROMO\\u00A0\",\r\n React.createElement(\"i\", { className: \"fa fa-tag opacity-80\", \"aria-hidden\": \"true\" }),\r\n \"\\u00A0\") : null),\r\n React.createElement(Grid, { item: true, md: 3, sm: 5, className: classes.price }, promoName && undefined\r\n ? React.createElement(Badge, { variant: \"standard\", color: \"error\", badgeContent: React.createElement(Tooltip, { title: promoName },\r\n React.createElement(Typography, { variant: \"caption\" },\r\n \"\\u00A0PROMO\\u00A0\",\r\n React.createElement(\"i\", { className: \"fa fa-tag opacity-80\", \"aria-hidden\": \"true\" }),\r\n \"\\u00A0\")) },\r\n formatMoney(fullPrice + totalVariantPrice, { currency: basePriceCurrency.name }),\r\n \"\\u00A0\",\r\n basePriceCurrency.name)\r\n : React.createElement(React.Fragment, null,\r\n formatMoney(fullPrice + totalVariantPrice, { currency: basePriceCurrency.name }),\r\n \"\\u00A0\",\r\n basePriceCurrency.name)),\r\n React.createElement(Grid, { item: true, xs: 2 }, !isCurrentVariant\r\n ? React.createElement(Button, { color: \"secondary\", variant: \"outlined\", fullWidth: true, onClick: handleSelectClicked.bind(null, variantHash) },\r\n _T.COMMON_CHOOSE,\r\n \" \",\r\n React.createElement(ChevronRightIcon, null))\r\n : React.createElement(Typography, { className: classes.current, variant: \"button\", component: \"div\" },\r\n React.createElement(CheckIcon, null),\r\n \" \",\r\n _T.TOUR_SELECTED))),\r\n variants.length - 1 > i && React.createElement(Box, { my: 1 },\r\n React.createElement(Divider, null)) || null);\r\n })));\r\n}\r\nexport function HotelRoomVariantsSkeleton({ count }) {\r\n const elems = [];\r\n for (let i = 0; i < count; ++i) {\r\n elems.push(React.createElement(Box, { mt: 1, key: i },\r\n React.createElement(Skeleton, { variant: \"rect\", height: 250 })));\r\n }\r\n return React.createElement(\"div\", null, elems);\r\n}\r\nexport default function HotelRoomVariants(props) {\r\n return React.createElement(\"div\", null,\r\n !props.rooms.length && _T.COMMON_NO_RESULTS,\r\n props.rooms.map(x => React.createElement(HotelRoom, { room: x, basePrice: props.basePrice, basePriceCurrency: props.basePriceCurrency, key: `${x.description.roomCategoryId}-${x.description.roomTypeId}`, isFrame: props.isFrame, hash: props.hash })));\r\n}\r\n","import React, { useEffect, useMemo, useState } from 'react';\r\nimport { useInView } from 'react-intersection-observer';\r\nimport { _T } from 'appI18n';\r\nimport { useTourAccmmdVariants, useTourDescription, useTourVariant } from '../../../../TourSearch/store/TourDescriptionStore';\r\nimport AsyncLoadError from '../AsyncLoadError';\r\nimport HotelRoomFilters from './HotelRoomFilters';\r\nimport HotelRoomVariants, { HotelRoomVariantsSkeleton } from './HotelRoomVariants';\r\nfunction convertTourAccommodationsToRoomDescriptions(accmmds) {\r\n const grouping = accmmds.reduce((acc, x) => {\r\n const id = `${x.accomodation.roomTypeId},${x.accomodation.roomCategoryId}`;\r\n if (!(id in acc))\r\n acc[id] = { description: x.accomodation.description, variants: [] };\r\n acc[id].variants.push(x);\r\n return acc;\r\n }, {});\r\n return Object.values(grouping);\r\n}\r\nexport default function HotelRoomVariantsContainer({ isFrame, hotelIndex }) {\r\n const [ref, inView] = useInView({ rootMargin: '100px 0px', initialInView: false });\r\n const [{ accmmdVariants, initialized, loading, errors }, actions] = useTourAccmmdVariants(isFrame);\r\n const [{ tourVariant }] = useTourVariant(isFrame);\r\n const [{ tourDescription: { currency }, hash }] = useTourDescription(null, isFrame);\r\n const [immediateConfirm, setImmediateConfirm] = useState(false);\r\n const rooms = useMemo(() => accmmdVariants && accmmdVariants[hotelIndex] ? convertTourAccommodationsToRoomDescriptions(accmmdVariants[hotelIndex]) : [], [accmmdVariants, hotelIndex]);\r\n const roomsFiltered = useMemo(() => rooms.map(x => !immediateConfirm ? x : Object.assign(Object.assign({}, x), { variants: x.variants.filter(v => v.accomodation.immediateConfirm) })).filter(x => !!x.variants.length), [rooms, immediateConfirm]);\r\n const handleFilterApplied = (immediateConfirm) => setImmediateConfirm(immediateConfirm);\r\n // Загрузка размещений при скролле во вьюпорт.\r\n useEffect(() => {\r\n if (!inView || initialized || loading)\r\n return;\r\n actions.loadAccommodationVariants();\r\n }, [inView]);\r\n const isReady = initialized && !loading;\r\n return React.createElement(\"div\", { ref: ref },\r\n React.createElement(HotelRoomFilters, { immediateConfirm: immediateConfirm, disabled: !isReady, onFilterApplied: handleFilterApplied }),\r\n (() => {\r\n if (errors.length)\r\n return React.createElement(AsyncLoadError, { errorText: _T.TOUR_ERROR_LOADING_ACCOMMODATION_VARIANTS });\r\n if (!isReady || !tourVariant)\r\n return React.createElement(HotelRoomVariantsSkeleton, { count: 2 });\r\n return React.createElement(HotelRoomVariants, { rooms: roomsFiltered, basePrice: tourVariant.price, basePriceCurrency: currency, disabled: !isReady, isFrame: isFrame, hash: hash });\r\n })());\r\n}\r\n","import React from 'react';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n // HACK: position=relative для возможности отображения элементов напротив заголовка секции.\r\n position: 'relative'\r\n },\r\n mainGutter: {\r\n marginBottom: theme.spacing(5),\r\n },\r\n subGutter: {\r\n marginBottom: theme.spacing(2),\r\n },\r\n title: {\r\n background: theme.palette.secondary.main,\r\n color: '#fff',\r\n padding: `${theme.spacing(1)}px ${theme.spacing(1)}px`,\r\n marginBottom: theme.spacing(0.5),\r\n textTransform: 'uppercase',\r\n fontSize: '1.1rem',\r\n fontWeight: 600,\r\n }\r\n}));\r\nexport default React.forwardRef((props, ref) => {\r\n const classes = useStyles();\r\n return (React.createElement(\"section\", { id: props.id, ref: ref, className: `${classes.root} ${props.variant != 'sub' ? classes.mainGutter : classes.subGutter}` },\r\n props.title && (!props.variant || props.variant == 'main')\r\n ? React.createElement(Typography, { variant: \"h4\", component: \"h2\", className: classes.title }, props.title) : '',\r\n props.title && props.variant == 'sub'\r\n ? React.createElement(Typography, { variant: \"h5\", component: \"h3\", paragraph: true }, props.title) : '',\r\n props.children));\r\n});\r\n","import React from 'react';\r\nimport groupBy from 'lodash/groupBy';\r\nimport MuiAccordion from '@material-ui/core/Accordion';\r\nimport MuiAccordionDetails from '@material-ui/core/AccordionDetails';\r\nimport MuiAccordionSummary from '@material-ui/core/AccordionSummary';\r\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ExpandMore from '@material-ui/icons/ExpandMore';\r\nimport MuiTimeline from '@material-ui/lab/Timeline';\r\nimport TimelineConnector from '@material-ui/lab/TimelineConnector';\r\nimport MuiTimelineContent from '@material-ui/lab/TimelineContent';\r\nimport TimelineDot from '@material-ui/lab/TimelineDot';\r\nimport MuiTimelineItem from '@material-ui/lab/TimelineItem';\r\nimport TimelineSeparator from '@material-ui/lab/TimelineSeparator';\r\nimport { _F } from 'appI18n';\r\nconst useStyles = makeStyles(theme => ({\r\n timestamp: {\r\n width: 60,\r\n \"& > span\": {\r\n fontWeight: 600,\r\n },\r\n },\r\n title: {\r\n whiteSpace: \"nowrap\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\"\r\n },\r\n description: {\r\n whiteSpace: 'pre-wrap',\r\n },\r\n root: {\r\n '& > div + div': {\r\n marginTop: theme.spacing(2),\r\n },\r\n },\r\n dayTitle: {\r\n marginBottom: theme.spacing(1),\r\n fontWeight: 600,\r\n },\r\n dayEvents: {}\r\n}));\r\nconst Timeline = withStyles({\r\n root: {\r\n paddingLeft: 0,\r\n paddingRight: 0,\r\n }\r\n})(MuiTimeline);\r\nconst TimelineItem = withStyles({\r\n missingOppositeContent: {\r\n \"&:before\": {\r\n display: \"none\"\r\n }\r\n }\r\n})(MuiTimelineItem);\r\nconst TimelineContent = withStyles({\r\n root: {\r\n paddingRight: 0\r\n }\r\n})(MuiTimelineContent);\r\nconst Accordion = withStyles({\r\n root: {\r\n border: '1px solid rgba(0, 0, 0, .145)',\r\n boxShadow: 'none',\r\n '&:not(:last-child)': {\r\n borderBottom: 0,\r\n },\r\n '&:before': {\r\n display: 'none',\r\n },\r\n '&$expanded': {\r\n margin: 'auto',\r\n },\r\n },\r\n expanded: {},\r\n})(MuiAccordion);\r\nconst AccordionSummary = withStyles({\r\n root: {\r\n marginBottom: -1,\r\n minHeight: 56,\r\n '&$expanded': {\r\n minHeight: 56,\r\n },\r\n },\r\n content: {\r\n '&$expanded': {\r\n margin: '12px 0',\r\n },\r\n },\r\n expanded: {},\r\n})(MuiAccordionSummary);\r\nconst AccordionDetails = withStyles((theme) => ({\r\n root: {\r\n borderTop: '1px solid rgba(0,0,0,.145)',\r\n padding: theme.spacing(2),\r\n },\r\n}))(MuiAccordionDetails);\r\nfunction TourEvent({ event }) {\r\n const classes = useStyles();\r\n return React.createElement(Accordion, null,\r\n React.createElement(AccordionSummary, { expandIcon: React.createElement(ExpandMore, null) },\r\n React.createElement(\"div\", { className: classes.timestamp },\r\n React.createElement(\"span\", null, event.time)),\r\n React.createElement(\"div\", { className: classes.title }, event.title)),\r\n React.createElement(AccordionDetails, { className: classes.description }, event.description));\r\n}\r\nfunction TourDay({ dayNo, dayEvents, isLast }) {\r\n const classes = useStyles();\r\n return React.createElement(TimelineItem, null,\r\n React.createElement(TimelineSeparator, null,\r\n React.createElement(TimelineDot, { variant: \"outlined\" }),\r\n !isLast ? React.createElement(TimelineConnector, null) : null),\r\n React.createElement(TimelineContent, null,\r\n React.createElement(Typography, { variant: \"subtitle2\", component: \"h5\", className: classes.dayTitle }, _F('COMMON_DAY_NUMBER', dayNo)),\r\n React.createElement(\"div\", { className: classes.dayEvents }, dayEvents.map((x, i) => React.createElement(TourEvent, { event: x, key: i })))));\r\n}\r\nexport default function TourProgram({ events }) {\r\n const classes = useStyles();\r\n const groups = groupBy(events, x => x.day);\r\n const groupEntires = Object.entries(groups);\r\n return React.createElement(\"div\", { className: classes.root },\r\n React.createElement(Timeline, { align: \"left\" }, groupEntires.map(([day, events], i) => React.createElement(TourDay, { dayNo: day, dayEvents: events, key: day, isLast: i == groupEntires.length - 1 }))));\r\n}\r\n","import { ajaxPost } from 'network/network-old.js';\n\nexport function setupLoginControl(successCallback) {\n document.querySelector('.login-form')?.addEventListener('submit', function (evt) {\n evt.preventDefault();\n\n if (document.querySelector(\".login-form .has-error\"))\n return;\n\n const errorEl = document.querySelector(\".login-form .form-error\");\n const postData = {\n login: evt.target.querySelector('[name=login]').value,\n password: evt.target.querySelector('[name=password]').value,\n };\n\n errorEl.innerHTML = '';\n\n ajaxPost(appBase + \"Home/Logon\", postData, function (data) {\n if (data.error) {\n errorEl.textContent = data.error;\n return;\n }\n\n successCallback(data);\n });\n });\n}\n","import { checkSessionEnd, disablePage } from './utils.js';\n\n// Обёртка над POST\nfunction ajaxPost(url, data, success, dataType, keepEnabled) {\n keepEnabled = !!keepEnabled;\n if (!keepEnabled)\n disablePage(true);\n // Добавление CSRF токена\n if (typeof csrfToken != \"undefined\") {\n if (data) {\n if (typeof data == \"string\") {\n if (data)\n data += \"&csrfToken=\" + csrfToken;\n } else {\n data.csrfToken = csrfToken;\n }\n }\n }\n addAjaxHandlers($.post(url, data, success, dataType), keepEnabled);\n}\n\n/**\n * Обёртка над GET\n * @deprecated\n */\nfunction ajaxGet(url, data, success, dataType, keepEnabled, useCache) {\n keepEnabled = !!keepEnabled;\n if (!keepEnabled)\n disablePage(true);\n if (data && typeof data == 'object' && !useCache) data[\"_\"] = $.now(); // Отключение кэша\n addAjaxHandlers($.get(url, data,success, dataType), keepEnabled);\n}\n\n// Добавляет стандартные обработчики для Ajax\nvar gXhrError = null;\nfunction addAjaxHandlers(q, keepEnabled) {\n q.always(function (data) {\n if(!keepEnabled)\n disablePage(false);\n checkSessionEnd(data);\n if (data && data.responseText)\n checkSessionEnd(data.responseText);\n }).fail(function (data) {\n gXhrError = data;\n if (data.status == 401)\r\n location.href = appBase;\n else if(data.status&&data.statusText&&data.status!=200)\n alert(\"Произошла внутренняя ошибка \" + data.status.toString() + \" \" + data.statusText.toString());\n });\n}\n\nexport {\n ajaxGet,\n ajaxPost,\n}","import React, { useEffect, useState } from 'react';\r\nimport { _T } from 'appI18n';\r\nimport { setupLoginControl } from 'inlineLogin.js';\r\nexport default function LoginToSeePricesButton() {\r\n const [open, setOpen] = useState(false);\r\n const bg = document.querySelector(\".logon-background\");\r\n // Модал приходит с разметкой, поэтому такой костыль.\r\n useEffect(() => {\r\n if (!bg)\r\n return;\r\n bg.style.display = open ? 'block' : 'none';\r\n }, [open]);\r\n useEffect(() => {\r\n var _a;\r\n if (!bg)\r\n return;\r\n (_a = bg.querySelector('.close')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', _ => setOpen(false));\r\n setupLoginControl(() => window.location.reload());\r\n }, []);\r\n return (React.createElement(\"span\", { className: \"top-local-logon\", onClick: () => setOpen(x => !x) }, _T.COMMON_LOGIN_TO_SEE_PRICES));\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 React, { Fragment, useCallback, useContext, useEffect, useMemo, useState } from 'react';\r\nimport moment from 'moment';\r\nimport Box from '@material-ui/core/Box';\r\nimport Button from '@material-ui/core/Button';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CheckCircleOutlinedIcon from '@material-ui/icons/CheckCircleOutlined';\r\nimport ContactSupportOutlinedIcon from '@material-ui/icons/ContactSupportOutlined';\r\nimport FoodIcon from '@material-ui/icons/EmojiFoodBeverageOutlined';\r\nimport ErrorIcon from '@material-ui/icons/ErrorOutline';\r\nimport HotelIcon from '@material-ui/icons/LocationCity';\r\nimport UndoIcon from '@material-ui/icons/Replay';\r\nimport AccmmdIcon from '@material-ui/icons/TripOrigin';\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport AlertTitle from '@material-ui/lab/AlertTitle';\r\nimport { fetchTourAvailabilityApprox } from 'api-ito/ToursApi';\r\nimport { _T } from 'appI18n';\r\nimport TourAvailabilityDatePicker from 'react-components/AvailabilityDatePicker';\r\nimport { BackdropContext } from 'react-components/BackdropProvider';\r\nimport Rating from 'react-components/Rating';\r\nimport LoginToSeePricesButton from 'react-components/LoginToSeePricesButton';\r\nimport { TouristPickerDialog, TouristPickerTextField } from 'react-components/TouristPicker';\r\nimport { formatMoney, pluralizeAutoSplit } from 'utils';\r\nimport { useTourDescription, useTourExtras, useTourVariant, useViewConfig } from '../../../TourSearch/store/TourDescriptionStore';\r\nimport { _ParentFrame } from '../../../Frame/types/Frame';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { ReplaceCartTourDialog } from '../../../NewTourSearch/compoments/TourSearch';\r\nconst useStyles = makeStyles(theme => ({\r\n root: {},\r\n sidebar: {\r\n //paddingLeft: theme.spacing(1),\r\n //paddingRight: theme.spacing(1),\r\n },\r\n prop: {\r\n borderBottom: '1px solid #eee',\r\n margin: '4px 0',\r\n padding: '4px 0',\r\n // FIXME: hardcoded color.\r\n color: '#32363a',\r\n },\r\n propIcon: {\r\n paddingRight: theme.spacing(0.5),\r\n },\r\n propTitle: {\r\n display: 'flex',\r\n },\r\n iconSuccess: {\r\n color: theme.palette.success.main,\r\n },\r\n iconWarn: {\r\n color: theme.palette.warning.main,\r\n },\r\n price: {},\r\n bookBtn: {\r\n padding: '8px 0',\r\n borderRadius: 0,\r\n fontWeight: 600,\r\n fontSize: '1.025rem',\r\n },\r\n featuresContainer: {\r\n position: 'relative',\r\n },\r\n featuresOverlay: {\r\n display: 'flex',\r\n background: 'rgba(255,255,255,80%)',\r\n backdropFilter: 'blur(5px)',\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n paddingBottom: 24,\r\n },\r\n}));\r\nconst useConfigurablesStyles = makeStyles(theme => ({\r\n root: {\r\n border: `1px solid ${theme.palette.grey[300]}`,\r\n borderRadius: theme.shape.borderRadius,\r\n overflow: 'hidden',\r\n },\r\n label: {\r\n fontWeight: 600,\r\n color: `${theme.palette.text.secondary} !important`,\r\n },\r\n datepickerContainer: {\r\n borderBottom: `1px solid ${theme.palette.grey[300]}`,\r\n position: 'relative',\r\n },\r\n iconError: {\r\n color: theme.palette.error.main,\r\n },\r\n}));\r\nfunction TourFeatures({ tourVariant, accmmdVariant, hotelDescription }) {\r\n var _a;\r\n const classes = useStyles();\r\n return (React.createElement(\"div\", null,\r\n React.createElement(TourFeature, { title: _T.COMMON_HOTEL, icon: React.createElement(HotelIcon, null) },\r\n React.createElement(Typography, { variant: \"h6\" }, accmmdVariant.hotelName),\r\n React.createElement(Rating, { rating: (_a = hotelDescription.starRating) !== null && _a !== void 0 ? _a : 0 }),\r\n React.createElement(\"br\", null),\r\n accmmdVariant.cityName,\r\n \", \",\r\n accmmdVariant.countryName),\r\n React.createElement(TourFeature, { title: _T.COMMON_ROOM_CATEGORY, icon: React.createElement(AccmmdIcon, null) },\r\n accmmdVariant.roomTypeName,\r\n \", \",\r\n accmmdVariant.roomCategoryName),\r\n React.createElement(TourFeature, { title: _T.COMMON_MEAL, icon: React.createElement(FoodIcon, null) }, accmmdVariant.mealTypeName),\r\n React.createElement(TourFeature, { title: _T.COMMON_AVAILABILITY, icon: accmmdVariant.immediateConfirm\r\n ? React.createElement(CheckCircleOutlinedIcon, { className: classes.iconSuccess })\r\n : React.createElement(ContactSupportOutlinedIcon, { className: classes.iconWarn }) }, accmmdVariant.immediateConfirm ? _T.TOUR_AVAILABLE : _T.TOUR_ONREQUEST)));\r\n}\r\nfunction TourFeature({ title, icon, children }) {\r\n const classes = useStyles();\r\n return React.createElement(Grid, { container: true, spacing: 1, className: classes.prop },\r\n React.createElement(Grid, { item: true, xs: 4, className: classes.propTitle },\r\n React.createElement(\"span\", { className: classes.propIcon }, icon),\r\n \" \",\r\n title),\r\n React.createElement(Grid, { item: true, xs: 8, className: \"tour-prop-value\" }, children));\r\n}\r\nfunction Configurables(props) {\r\n const classes = useConfigurablesStyles();\r\n const [touristPickerOpen, setTouristPickerOpen] = useState(false);\r\n const maxDate = useMemo(() => moment().add(1, 'year').day(31).format('YYYY-MM-DD'), []);\r\n const datepickerInputProps = useMemo(() => ({ borderless: true }), []);\r\n const datepickerLabelProps = useMemo(() => ({ className: classes.label }), []);\r\n const handleDateAndDurationChanged = (dateIso, duration) => dateIso && props.onChange(dateIso, duration !== null && duration !== void 0 ? duration : props.duration, props.adultCount, props.childAges);\r\n const handleTouristsChanged = (ac, ca) => props.onChange(props.date, props.duration, ac, ca);\r\n const loadAvailability = (monthIso) => __awaiter(this, void 0, void 0, function* () {\r\n const result = yield fetchTourAvailabilityApprox(props.tourId, monthIso);\r\n if ('errors' in result) {\r\n console.error('Unable to load availabilities', result.errors, monthIso);\r\n return [];\r\n }\r\n return result;\r\n });\r\n return (React.createElement(Grid, { container: true, className: classes.root },\r\n React.createElement(Grid, { item: true, xs: 12, className: classes.datepickerContainer },\r\n React.createElement(TourAvailabilityDatePicker, { calendarLabel: _T.TOUR_START_DATE, fieldLabel: _T.TOUR_DATE, labelFunc: props.datepickerLabelFunc, labelProps: datepickerLabelProps, inputProps: datepickerInputProps, date: props.date, maxDate: maxDate, adornment: !props.date ? React.createElement(ErrorIcon, { className: classes.iconError }) : null, onChange: handleDateAndDurationChanged, onAvailabilityRequested: loadAvailability, fullWidth: true, isFrame: props.isFrame, withDuration: true, duration: props.duration })),\r\n React.createElement(Grid, { item: true, xs: 12 },\r\n React.createElement(TouristPickerTextField, { adultCount: props.adultCount, childAges: props.childAges, onClick: () => {\r\n const parentFrame = _ParentFrame();\r\n if (props.isFrame && parentFrame) {\r\n parentFrame.sendMessage({ message: 'open-modal', });\r\n }\r\n setTouristPickerOpen(true);\r\n }, labelProps: datepickerLabelProps, fullWidth: true, borderless: true }),\r\n touristPickerOpen &&\r\n React.createElement(TouristPickerDialog, { open: touristPickerOpen, adultCount: props.adultCount, childAges: props.childAges, onChange: handleTouristsChanged, onClose: () => {\r\n setTouristPickerOpen(false);\r\n const parentFrame = _ParentFrame();\r\n if (props.isFrame && parentFrame) {\r\n parentFrame.sendMessage({ message: 'close-modal', });\r\n }\r\n }, isFrame: props.isFrame }) || null)));\r\n}\r\nfunction NotAvailableError(props) {\r\n return (React.createElement(Alert, { severity: \"error\" },\r\n React.createElement(AlertTitle, null, _T.TOUR_ERROR_DATE_UNAVAIL_TITLE),\r\n _T.TOUR_ERROR_DATE_UNAVAIL_BODY,\r\n props.showCancelButton &&\r\n React.createElement(Box, { mt: 1 },\r\n React.createElement(Button, { size: \"small\", color: \"primary\", variant: \"contained\", disableElevation: true, onClick: props.onClickCancel },\r\n React.createElement(UndoIcon, { fontSize: \"small\" }),\r\n \" \",\r\n _T.COMMON_ACTION_CANCEL)) || null));\r\n}\r\nfunction BookButton({ onClick, label, disabled }) {\r\n const classes = useStyles();\r\n return (React.createElement(Button, { color: \"primary\", variant: \"contained\", className: classes.bookBtn, fullWidth: true, disableElevation: true, onClick: onClick, disabled: disabled || false }, label));\r\n}\r\nfunction TourSidebarImpl(props) {\r\n var _a;\r\n const classes = useStyles();\r\n const location = useLocation();\r\n const backdrop = useContext(BackdropContext);\r\n const [{ tourDescription, excursionServices, flightServices, externalFlight, hotelServices, hash }, actions] = useTourDescription(null, props.isFrame);\r\n const [{ tourVariant, currentAccommodationVariants, loading, errors, totalVariantPrice }] = useTourVariant(props.isFrame);\r\n const [{ extras, price }] = useTourExtras(props.isFrame);\r\n const excursionServicesString = useMemo(() => (excursionServices === null || excursionServices === void 0 ? void 0 : excursionServices.length) > 0 ? excursionServices.map(e => `${e.id}__${e.beginDate}=${(e.currentVehicleTypeId == undefined ? '' : e.currentVehicleTypeId)}`).reduce((pr, curr) => `${pr};${curr}`) : \"\", [excursionServices]);\r\n const [adultCount, setAdultCount] = useState(tourVariant && tourVariant.adultCount || 2);\r\n const [childAges, setChildAges] = useState((tourVariant === null || tourVariant === void 0 ? void 0 : tourVariant.childAges) || []);\r\n const [[date, duration], setDate] = useState([(tourVariant === null || tourVariant === void 0 ? void 0 : tourVariant.checkInDate) || null, (tourVariant === null || tourVariant === void 0 ? void 0 : tourVariant.duration) || null]);\r\n //const [date, setDate] = useState(tourVariant?.checkInDate || null);\r\n //// TODO\r\n //const [duration, setDuration] = useState(tourVariant?.duration || 0);\r\n // Дата на которую тур оказался недоступен.\r\n const [unavailableDate, setUnavailableDate] = useState(null);\r\n const [showError, setShowError] = useState(false);\r\n const labelFunc = useCallback(() => {\r\n if (!tourVariant)\r\n return date ? moment(date).format('L') + (duration ? `, ${duration} ${pluralizeAutoSplit(duration, _T.COMMON_NIGHTS_PLURAL)}` : '') : _T.TOUR_CHOOSE_TOUR_DATE;\r\n //const duration = Math.max(0, tourDescription.durationDays);\r\n const daysPlural = pluralizeAutoSplit(tourVariant.duration, _T.COMMON_NIGHTS_PLURAL);\r\n const from = moment(tourVariant.checkInDate);\r\n const to = from.clone().add(tourVariant.duration, 'days');\r\n return `${from.format('L')} — ${to.format('L')}, ${duration} ${daysPlural}`;\r\n }, [tourVariant, tourDescription, date, duration]);\r\n const handleRevertParams = () => {\r\n setShowError(false);\r\n if (tourVariant) {\r\n setDate([tourVariant.checkInDate, tourVariant.duration]);\r\n //setDuration(tourVariant.duration);\r\n setAdultCount(tourVariant.adultCount);\r\n setChildAges(tourVariant.childAges);\r\n }\r\n };\r\n const handleApplyParamsClicked = () => {\r\n if (!date || !duration || loading)\r\n return;\r\n const momentDate = moment(date);\r\n //if (tourVariant &&\r\n // tourVariant.adultCount == adultCount &&\r\n // tourVariant.childAges.join(' ') == childAges.join(' ') &&\r\n // moment(tourVariant.checkInDate).format('YYYYMMDD') == momentDate.format('YYYYMMDD')) {\r\n // setShowError(false);\r\n // return;\r\n //}\r\n setUnavailableDate(null);\r\n actions.setBookingParams({\r\n date: moment(date),\r\n duration: duration,\r\n tourists: { adultCount, childAges },\r\n handlers: {\r\n onTourUnavailable: (_variant) => {\r\n setUnavailableDate(moment(_variant.checkInDate));\r\n },\r\n onFinished: (params) => {\r\n setUnavailableDate(null);\r\n setDate([params.date, params.duration]);\r\n setAdultCount(params.tourists.adultCount);\r\n setChildAges(params.tourists.childAges);\r\n },\r\n }\r\n });\r\n };\r\n const handleTourParameterChange = (dateIso, duration, adultCount, childAges) => {\r\n setDate([dateIso, duration]);\r\n //setDuration(duration);\r\n setAdultCount(adultCount);\r\n setChildAges(childAges);\r\n };\r\n useEffect(() => {\r\n if (tourVariant && hash)\r\n handleApplyParamsClicked();\r\n }, [date, duration, adultCount, childAges]);\r\n useEffect(() => {\r\n const showError = !loading && (errors.length || unavailableDate);\r\n setShowError(!!showError);\r\n }, [errors, unavailableDate, loading]);\r\n const handleBookClicked = (replaceExistingTour) => {\r\n if (!tourVariant)\r\n return;\r\n backdrop.show();\r\n actions.book(replaceExistingTour).then((errors) => {\r\n if (errors === null || errors === void 0 ? void 0 : errors.length) {\r\n if (errors[0] == \"CART_ALREADY_CONTAINS_OTHER_TOUR\")\r\n setReplaceCartTourDialogOpen(true);\r\n backdrop.hide();\r\n }\r\n else {\r\n if (props.bookCallback)\r\n props.bookCallback();\r\n backdrop.hide();\r\n }\r\n }).catch(() => backdrop.hide());\r\n };\r\n useEffect(() => {\r\n if (!props.isFrame)\r\n return;\r\n const params = new URLSearchParams(location.search);\r\n if (params.get('cartOpen') != \"true\")\r\n return;\r\n //const tempCart = JSON.parse(sessionStorage.getItem('frame-cart') || '{ \"services\": [] }') as CartFrameProps;\r\n //if (props.bookCallback && tempCart?.services?.length)\r\n // props.bookCallback();\r\n handleBookClicked(false);\r\n }, [tourVariant]);\r\n const fullPrice = useMemo(() => actions.getTourCost(), [extras, hash, price === null || price === void 0 ? void 0 : price.services, price === null || price === void 0 ? void 0 : price.defaultAirServices, externalFlight, excursionServicesString]);\r\n //const fullPrice = useMemo(() => {\r\n // if (!tourVariant || !hash)\r\n // return 0;\r\n // let p = totalVariantPrice + (externalFlight?.flightCostDifference ?? 0);\r\n // if (excursionServices?.length) {\r\n // for (let i = 0; i < excursionServices.length; i++) {\r\n // let exc = excursionServices[i];\r\n // let price = exc.excursionPrice ?? exc.prices?.find(ep => ep.vehicleTypeId == exc.currentVehicleTypeId);\r\n // let defaultPrice = exc.prices?.find(ep => ep.vehicleTypeId == exc.vehicleTypeId) ?? exc.prices?.find(ep => ep.vehicleTypeId == 0);\r\n // p += ((price?.price ?? 0) - (defaultPrice?.price ?? 0));\r\n // }\r\n // }\r\n // if (price)\r\n // p += Object.keys(extras).map(e => getExtraCost(e, extras, price, tourVariant)).reduce((c, p) => c + p, 0);\r\n // //p += price!.extras.filter(e => extras[getExtraKey(e)]?.length).map(e => e.cost * (e.isGroupCost ? 1 : extras[getExtraKey(e)]!.length)).reduce((c, p) => c + p, 0);\r\n // return p;\r\n //}, [tourVariant?.price, currentAccommodationVariants, hotelServices, excursionServicesString, totalVariantPrice, hash, flightServices, externalFlight?.flightCostDifference, extras]);\r\n const [replaceCartTourDialogOpen, setReplaceCartTourDialogOpen] = useState(false);\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(Paper, { className: `${classes.sidebar} ${((_a = props.classes) === null || _a === void 0 ? void 0 : _a.root) || ''}`, elevation: 0 },\r\n React.createElement(Box, { mb: 2 },\r\n React.createElement(Configurables, { tourId: tourDescription.id, date: date, duration: duration, adultCount: adultCount, childAges: childAges, datepickerLabelFunc: labelFunc, onChange: handleTourParameterChange, isFrame: props.isFrame })),\r\n tourVariant && (React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { className: classes.featuresContainer },\r\n currentAccommodationVariants.map((currentAccommodationVariant, index) => (React.createElement(Fragment, { key: index }, (currentAccommodationVariant === null || currentAccommodationVariant === void 0 ? void 0 : currentAccommodationVariant.accommodation) &&\r\n React.createElement(Box, { mb: 2 },\r\n React.createElement(TourFeatures, { tourVariant: tourVariant, accmmdVariant: currentAccommodationVariant.accommodation, hotelDescription: currentAccommodationVariant.hotelDescription })) || null))),\r\n React.createElement(Box, { mb: 2 },\r\n React.createElement(Grid, { container: true, justify: \"space-between\", alignItems: \"center\" },\r\n React.createElement(Grid, { item: true, xs: \"auto\" },\r\n React.createElement(Typography, { variant: \"h4\", component: \"div\", className: classes.price },\r\n formatMoney(fullPrice.total, { localeAware: true, currency: tourDescription.currency.name }),\r\n \" \",\r\n React.createElement(Typography, { variant: \"h5\", component: \"span\" }, tourDescription.currency.name))),\r\n React.createElement(Grid, { item: true, xs: \"auto\" }, (price === null || price === void 0 ? void 0 : price.promoProgramName) ?\r\n React.createElement(\"span\", { title: price.promoProgramName, className: \"promo-highlight-cart\" },\r\n \"\\u00A0PROMO\\u00A0\",\r\n React.createElement(\"i\", { className: \"fa fa-tag opacity-80\", \"aria-hidden\": \"true\" }),\r\n \"\\u00A0\") : null))),\r\n loading &&\r\n React.createElement(\"div\", { className: classes.featuresOverlay },\r\n React.createElement(CircularProgress, { variant: \"indeterminate\" })) || null,\r\n showError &&\r\n React.createElement(\"div\", { className: classes.featuresOverlay },\r\n React.createElement(NotAvailableError, { showCancelButton: true, onClickCancel: handleRevertParams })) || null))) || null,\r\n !tourVariant && showError &&\r\n React.createElement(Box, { mb: 1 },\r\n React.createElement(NotAvailableError, null)) || null,\r\n !tourVariant && !showError &&\r\n React.createElement(Box, { mb: 1 },\r\n React.createElement(Alert, { severity: \"info\" }, _T.TOUR_CHOOSE_TOUR_PARAMETERS)) || null,\r\n tourVariant &&\r\n React.createElement(BookButton, { label: _T.COMMON_BOOK, onClick: () => handleBookClicked(false), disabled: loading || showError }) || null,\r\n !tourVariant &&\r\n React.createElement(BookButton, { onClick: handleApplyParamsClicked, disabled: !date, label: React.createElement(React.Fragment, null,\r\n _T.COMMON_SEARCH,\r\n \" \",\r\n loading &&\r\n React.createElement(Box, { display: \"inline-flex\", pl: 1 },\r\n React.createElement(CircularProgress, { variant: \"indeterminate\", color: \"#fff\", size: 16 })) || null) }) || null),\r\n price\r\n ? React.createElement(ReplaceCartTourDialog, { price: price, open: replaceCartTourDialogOpen, onClose: () => setReplaceCartTourDialogOpen(false), onCancel: () => setReplaceCartTourDialogOpen(false), onApprove: p => {\r\n handleBookClicked(true);\r\n setTimeout(() => setReplaceCartTourDialogOpen(false), 200);\r\n } }) : null));\r\n}\r\nexport default function TourSidebar(props) {\r\n var _a;\r\n const classes = useStyles();\r\n const [{ hidePrices }] = useViewConfig(props.isFrame);\r\n return (React.createElement(Paper, { className: `${classes.sidebar} ${((_a = props.classes) === null || _a === void 0 ? void 0 : _a.root) || ''}`, elevation: 0 }, !hidePrices\r\n ? React.createElement(TourSidebarImpl, Object.assign({}, props))\r\n : React.createElement(LoginToSeePricesButton, null)));\r\n}\r\n","import React from 'react';\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport List from '@material-ui/core/List';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport ListSubheader from '@material-ui/core/ListSubheader';\r\nimport TransferIcon from '@material-ui/icons/AirportShuttle';\r\nimport { _T } from 'appI18n';\r\nimport { useListSubheaderStyles } from './styles';\r\nimport moment from 'moment';\r\nexport default function TransferDescription({ services }) {\r\n const subhClasses = useListSubheaderStyles();\r\n return React.createElement(List, { subheader: React.createElement(ListSubheader, { className: subhClasses.root, disableGutters: true }, _T.COMMON_TRANSFERS) }, services.map((x, i) => React.createElement(ListItem, { disableGutters: true, key: i },\r\n React.createElement(ListItemAvatar, null,\r\n React.createElement(Avatar, null,\r\n React.createElement(TransferIcon, null))),\r\n React.createElement(ListItemText, { primary: `${x.name} / ${x.transferType.name}`, secondary: `${moment(x.beginDate).format(\"L\")} (${moment(x.beginDate).format(\"dd\")})` }))));\r\n}\r\n","import { Typography } from \"@material-ui/core\";\r\nimport React from \"react\";\r\nexport function TourGeneralInfo({ description }) {\r\n const paragraphs = [description.description]; //.split(/[\\r\\n]+/);\r\n return React.createElement(\"div\", null, paragraphs.map((x, i) => React.createElement(Typography, { variant: \"body1\", paragraph: i < paragraphs.length - 1, key: i },\r\n React.createElement(\"div\", { dangerouslySetInnerHTML: { __html: x } }))));\r\n}\r\n","import React, { createRef, useEffect, useMemo, useRef, useState } from 'react';\r\nimport Box from '@material-ui/core/Box';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { _T } from 'appI18n';\r\nimport { useHotelRecommendations, useTourDescription, useTourVariant } from '../../../TourSearch/store/TourDescriptionStore';\r\nimport DescriptionMenu from './DescriptionMenu';\r\nimport ExcursionDescription from './ExcursionDescription';\r\nimport ExtraServiceDescription from './OtherServices/ExtraServiceDescription';\r\nimport { HotelDescription } from './HotelDescription';\r\nimport { HotelRecommendationsContainer } from './HotelRecommendations';\r\nimport { HotelRoomVariantsContainer } from './HotelRoomVariants';\r\nimport { LightboxImageGrid } from './LightboxImageGrid';\r\nimport Section from './Section';\r\nimport TourProgram from './TourProgram';\r\nimport TourSidebar from './TourSidebar';\r\nimport TransferDescription from './OtherServices/TransferDescription';\r\nimport { TourGeneralInfo } from './TourGeneralInfo';\r\nimport { useRoomStyles } from './HotelRoomVariants/HotelRoomVariants';\r\nimport moment from 'moment';\r\nimport { Wrapper } from '@googlemaps/react-wrapper';\r\nimport { FlightVariants } from './FlightVariants/FlightVariants';\r\nimport { ExtrasContainer } from './Extras/ExtrasContainer';\r\nimport { _ParentFrame } from '../../../Frame/types/Frame';\r\nconst useStyles = makeStyles(theme => ({\r\n sidebar: {\r\n position: 'sticky',\r\n top: 70,\r\n },\r\n mainGrid: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n flexDirection: 'column-reverse'\r\n }\r\n },\r\n mainGridColumns: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n maxWidth: '100%'\r\n }\r\n },\r\n}));\r\nexport default function TourDescription({ isFrame, bookCallback, style }) {\r\n var _a;\r\n const [state] = useTourDescription(null, isFrame);\r\n const classes = useStyles();\r\n const roomClasses = useRoomStyles();\r\n const { tourDescription, tourEvents, excursionServices, transferServices, flightServices, extraServices, hotelServices, hotelDescriptions, hash, price } = state;\r\n const [{ tourVariant }] = useTourVariant(isFrame);\r\n const [recommendations] = useHotelRecommendations(isFrame);\r\n const [hotelRefs, setHotelRefs] = useState([]);\r\n useEffect(() => {\r\n setHotelRefs(hotelDescriptions.map(() => createRef()));\r\n }, hotelDescriptions);\r\n const descriptionRef = useRef(null);\r\n //const hotelRef = useRef(null);\r\n const itineraryRef = useRef(null);\r\n const flightsRef = useRef(null);\r\n const excursionsRef = useRef(null);\r\n const transfersRef = useRef(null);\r\n const extrasRef = useRef(null);\r\n const tabs = useMemo(() => [\r\n { d: { label: _T.COMMON_DESCRIPTION, ref: descriptionRef }, visible: true },\r\n ...(hotelDescriptions.length > 1 ? hotelDescriptions.map((hd, i) => ({ d: { label: `${_T.COMMON_HOTEL}: ${hd.hotelDescription.hotelName}`, ref: hotelRefs[i] }, visible: true })) : [{ d: { label: _T.COMMON_HOTEL, ref: hotelRefs[0] }, visible: !!hotelDescriptions.length }]),\r\n { d: { label: _T.COMMON_ITINERARY, ref: itineraryRef }, visible: !!tourEvents.length },\r\n { d: { label: _T.COMMON_FLIGHTS, ref: flightsRef }, visible: !!flightServices.length },\r\n { d: { label: _T.COMMON_EXCURSIONS, ref: excursionsRef }, visible: !!excursionServices.length },\r\n { d: { label: _T.TOUR_OTHER_SVCS_SHORT, ref: transfersRef }, visible: !!transferServices.length },\r\n { d: { label: _T.COMMON_EXTRA_SERVICES, ref: extrasRef }, visible: !!(price === null || price === void 0 ? void 0 : price.extras.length) },\r\n ].filter(({ visible }) => visible).map(({ d }) => d), [\r\n tourEvents.length,\r\n excursionServices.length,\r\n descriptionRef,\r\n hotelRefs,\r\n itineraryRef,\r\n flightsRef,\r\n excursionsRef,\r\n transfersRef,\r\n flightServices,\r\n extrasRef,\r\n ]);\r\n return (React.createElement(Wrapper, { apiKey: window._GMAPS_API_KEY },\r\n React.createElement(\"div\", { style: style },\r\n React.createElement(DescriptionMenu, { items: tabs, isFrame: isFrame }),\r\n React.createElement(Box, { mt: 3, mb: 3 },\r\n React.createElement(Grid, { container: true, justify: \"space-between\" },\r\n React.createElement(Grid, { item: true, xs: \"auto\" },\r\n React.createElement(Typography, { variant: \"h3\", component: \"h1\" }, tourDescription.name)))),\r\n React.createElement(Grid, { container: true, spacing: 3, className: classes.mainGrid },\r\n React.createElement(Grid, { item: true, sm: 12, md: 8, className: classes.mainGridColumns },\r\n ((_a = tourDescription.images) === null || _a === void 0 ? void 0 : _a.length) ?\r\n React.createElement(Box, { mb: 3 },\r\n React.createElement(LightboxImageGrid, { images: tourDescription.images, imageGridCellHeight: 140, onImageClick: isFrame ? (index) => {\r\n const parentFrame = _ParentFrame();\r\n parentFrame.sendMessage({ message: 'open-gallery', params: { initialIndex: index } });\r\n } : undefined })) : null,\r\n React.createElement(Section, { ref: descriptionRef, id: \"tour-description-section\", variant: \"sub\" },\r\n React.createElement(TourGeneralInfo, { description: tourDescription })),\r\n flightServices.length &&\r\n React.createElement(Section, { title: _T.COMMON_FLIGHTS, ref: flightsRef, id: \"tour-flights-section\" },\r\n React.createElement(FlightVariants, { flights: flightServices, isFrame: isFrame })) || null,\r\n tourVariant && hotelDescriptions.length && (!recommendations.initialized || (recommendations.recommendations && recommendations.recommendations.length > 1)) &&\r\n React.createElement(Section, { title: _T.TOUR_HOTEL_VARIANTS, variant: \"sub\" },\r\n React.createElement(HotelRecommendationsContainer, { isFrame: isFrame, hash: hash })) || null,\r\n hotelDescriptions.map(({ hotelDescription, externalHotelPrice }, i) => (React.createElement(Section, { title: `${_T.COMMON_HOTEL} ${hotelDescription.hotelName} ${moment(hotelServices[i].beginDate).format(\"L\")} (${moment(hotelServices[i].beginDate).format(\"dd\")})`, ref: hotelRefs[i], id: `tour-hotel-description-${i}`, key: i },\r\n React.createElement(Box, { mb: 3 },\r\n React.createElement(HotelDescription, { description: hotelDescription, externalHotelPrice: externalHotelPrice, isFrame: !!isFrame })),\r\n tourVariant &&\r\n React.createElement(Section, { title: _T.TOUR_HOTEL_ROOM_VARIANTS, variant: \"sub\" },\r\n React.createElement(HotelRoomVariantsContainer, { isFrame: isFrame, hash: hash, hotelIndex: i })) || null))),\r\n tourEvents.length &&\r\n React.createElement(Section, { title: _T.COMMON_ITINERARY, ref: itineraryRef, id: \"tour-program-section\" },\r\n React.createElement(TourProgram, { events: tourEvents })) || null,\r\n excursionServices.length &&\r\n React.createElement(Section, { title: _T.COMMON_EXCURSIONS, ref: excursionsRef, id: \"tour-excursions-section\" }, excursionServices.map(x => React.createElement(Box, { mb: 1, key: x.id },\r\n React.createElement(ExcursionDescription, { service: x, isFrame: isFrame, hash: hash })))) || null,\r\n React.createElement(Section, { title: _T.TOUR_OTHER_SVCS, ref: transfersRef, id: \"tour-other-services-section\" },\r\n transferServices.length && React.createElement(TransferDescription, { services: transferServices }) || null,\r\n extraServices.length && React.createElement(ExtraServiceDescription, { services: extraServices }) || null),\r\n (price === null || price === void 0 ? void 0 : price.extras.length) &&\r\n React.createElement(Section, { title: _T.COMMON_EXTRA_SERVICES, ref: extrasRef, id: \"tour-extras-section\" },\r\n React.createElement(ExtrasContainer, { isFrame: isFrame, hash: price === null || price === void 0 ? void 0 : price.servicesHash })) || null),\r\n React.createElement(Grid, { item: true, sm: 12, md: 4, className: classes.mainGridColumns },\r\n React.createElement(TourSidebar, { classes: { root: classes.sidebar }, isFrame: isFrame, bookCallback: bookCallback, hash: hash }))))));\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 React, { useContext, useEffect, useLayoutEffect, useMemo, useState } from 'react';\r\nimport { useHistory, useLocation, useParams } from 'react-router-dom';\r\nimport { useTourDescriptionStore, useTourExtras } from '../../store/TourDescriptionStore';\r\nimport TourDescription from './TourDescription';\r\nimport { GlobalSpinnerContext } from 'react-components/GlobalSpinnerProvider';\r\nimport TourSearchResultsHeader from '../TourSearchResults/TourSearchResultsHeader';\r\nimport { tourDetailsUrlRR } from '../../tour-urlgen';\r\n//import { tourDetailsUrlRR, useTourUrlgen } from '../../tour-urlgen';\r\nimport { parseInt } from 'lodash';\r\nimport _ from 'lodash';\r\nimport { useSnackbar } from 'notistack';\r\nimport { Typography } from '@material-ui/core';\r\nimport { appUrl } from '../../../../include/utils';\r\n/**\r\n * Контейнер описания тура, реализующий перезагрузку данных тура при изменении\r\n * входных параметров.\r\n */\r\nexport default function TourDescriptionContainer({ isFrame, bookCallback, style }) {\r\n const params = useParams();\r\n const snackbar = useSnackbar();\r\n const spinner = useContext(GlobalSpinnerContext);\r\n const [{ tourDescription: tour, tourVariant, currentAccommodationVariants: accmmds, loading, loaded, tourServices, frameId, hash, hasAccommodation, externalFlight, externalFlightId, externalFlightProviderId, search: searchUrl }, actions] = useTourDescriptionStore(isFrame);\r\n const [{ extras, price }] = useTourExtras(isFrame);\r\n const hotelServices = useMemo(() => tourServices === null || tourServices === void 0 ? void 0 : tourServices.filter(s => s.type == \"hotel\").map(s => s), [tourServices]);\r\n const excursionServices = useMemo(() => tourServices === null || tourServices === void 0 ? void 0 : tourServices.filter(s => s.type == \"excursion\").map(s => s), [tourServices]);\r\n const excursionServicesString = useMemo(() => (excursionServices === null || excursionServices === void 0 ? void 0 : excursionServices.length) > 0 ? excursionServices.map(e => `${e.id}__${e.beginDate}=${(e.currentVehicleTypeId == undefined ? '' : e.currentVehicleTypeId)}`).reduce((pr, curr) => `${pr};${curr}`) : \"\", [tourServices]);\r\n const [hashBlackList, setHashBlackList] = useState([]);\r\n const [prevHash, setPrevHash] = useState();\r\n const history = useHistory();\r\n const { pathname, search, state: historyState, hash: anchor, } = useLocation();\r\n useEffect(() => {\r\n const searchParams = new URLSearchParams(search);\r\n const flightId = searchParams.get('fId') || undefined;\r\n const fpId = searchParams.get('fpId');\r\n const flightProviderId = fpId ? parseInt(fpId) : undefined;\r\n const tourVariantId = searchParams.get('variant') || undefined;\r\n const accmmdVariantId = searchParams.get('accmmd') || undefined;\r\n const accmmdVariantIds = _.filter([...searchParams], x => _.startsWith(x[0], 'accmmd')).map(x => x[1]) || undefined;\r\n const hotelId = searchParams.get('hid');\r\n const tourId = parseInt(params['id']);\r\n const tourHash = params['hash'];\r\n const tourSearch = searchParams.get('search') || undefined;\r\n //hack: когда params не прогрузился редиректит на страницу не фрейма, поэтому юзаю pathname\r\n const frameParId = isFrame ? (params['frameId'] || pathname.split(\"/\")[2]) : undefined;\r\n const tempFrameParId = isFrame ? (searchParams.get('tempId') || undefined) : undefined;\r\n const excursions = searchParams.get('exc') || undefined;\r\n (() => __awaiter(this, void 0, void 0, function* () {\r\n if (tourHash) {\r\n if (!prevHash || prevHash !== tourHash) {\r\n yield actions.enableLoading();\r\n let errors = yield actions.loadDescription({ hash: tourHash, search: tourSearch, frameId: frameParId, tempFrameId: tempFrameParId, excursions, externalFlight: flightId && flightProviderId ? { flightId, providerId: flightProviderId } : undefined });\r\n if (errors === null || errors === void 0 ? void 0 : errors.length) {\r\n snackbar.enqueueSnackbar(React.createElement(Typography, null,\r\n \"\\u0420\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u044B \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u043C\\u043E\\u0433\\u043B\\u0438 \\u0443\\u0441\\u0442\\u0430\\u0440\\u0435\\u0442\\u044C. \\u041F\\u043E\\u0436\\u0430\\u043B\\u0443\\u0439\\u0441\\u0442\\u0430, \\u043F\\u043E\\u043F\\u0440\\u043E\\u0431\\u0443\\u0439\\u0442\\u0435 \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u0438\\u0442\\u044C \",\r\n React.createElement(\"a\", { href: searchUrl !== null && searchUrl !== void 0 ? searchUrl : appUrl(\"/Tour\") }, \"\\u043F\\u043E\\u0438\\u0441\\u043A\"),\r\n \".\"), { variant: 'error', autoHideDuration: null });\r\n return;\r\n }\r\n yield actions.loadAccommodationVariants();\r\n yield actions.loadHotelRecommendations();\r\n yield actions.loadExternalFlight(flightId, flightProviderId);\r\n yield actions.disableLoading();\r\n }\r\n }\r\n else if (tourId) {\r\n if ((tour === null || tour === void 0 ? void 0 : tour.id) != tourId) {\r\n yield actions.enableLoading();\r\n yield actions.loadDescription({ tourId, hotelId: (hotelId ? parseInt(hotelId) : null) || undefined, frameId: frameParId, tempFrameId: tempFrameParId, excursions, externalFlight: flightId && flightProviderId ? { flightId, providerId: flightProviderId } : undefined });\r\n yield actions.disableLoading();\r\n }\r\n }\r\n else {\r\n console.error('Bad query params', { tourId, variantId: tourVariantId, accmmdId: accmmdVariantId, hotelId });\r\n }\r\n }))();\r\n }, [pathname, search, params['id'], params['frameId'], params['hash']]);\r\n // Обновление урла при изменении опций тура.\r\n useEffect(() => {\r\n if (!tour)\r\n return;\r\n //if (prevHash && prevHash !== params['hash'])\r\n // setHashBlackList(prev => ([...prev, prevHash]));\r\n setPrevHash(params['hash']);\r\n const state = tourDetailsUrlRR(tour.id, {\r\n tourName: tour.name,\r\n variantId: tourVariant === null || tourVariant === void 0 ? void 0 : tourVariant.id,\r\n accmmdId: accmmds.map(hs => { var _a; return ((_a = hs.accommodation) === null || _a === void 0 ? void 0 : _a.id) || ''; }).filter(x => x),\r\n state: historyState,\r\n excursions: excursionServices === null || excursionServices === void 0 ? void 0 : excursionServices.map(s => ({ id: s.id, vehicleTypeId: s.currentVehicleTypeId })),\r\n //hash: price?.servicesHash ?? hash,\r\n hash: hash,\r\n externalFlight: externalFlight !== null && externalFlight !== void 0 ? externalFlight : (externalFlightId && externalFlightProviderId ? { flightId: externalFlightId, providerId: externalFlightProviderId } : undefined),\r\n extras: extras,\r\n search: searchUrl,\r\n anchor: anchor,\r\n }, (frameId || params['frameId'] || (pathname.split(\"/\")[1] == \"frame\" ? pathname.split(\"/\")[2] : undefined)));\r\n history.replace(state);\r\n }, [tour === null || tour === void 0 ? void 0 : tour.id, tourVariant === null || tourVariant === void 0 ? void 0 : tourVariant.id, accmmds, excursionServicesString, !isFrame ? undefined : frameId, !isFrame ? undefined : params['frameId'], !isFrame ? undefined : pathname, hotelServices, hash, externalFlight, externalFlightId, externalFlightProviderId]);\r\n useLayoutEffect(() => {\r\n if (!tour || loading)\r\n spinner.show();\r\n else\r\n spinner.hide();\r\n }, [!tour, loading]);\r\n useEffect(() => {\r\n console.log(actions.getTourCost());\r\n }, [extras, price === null || price === void 0 ? void 0 : price.services, price === null || price === void 0 ? void 0 : price.aviacenterServices, price === null || price === void 0 ? void 0 : price.defaultAirServices, excursionServicesString]);\r\n return (React.createElement(React.Fragment, null,\r\n typeof historyState == 'object' && historyState.searchQuery && historyState.searchResult && !isFrame\r\n ? React.createElement(TourSearchResultsHeader, { searchQuery: historyState.searchQuery, searchResult: historyState.searchResult, variant: \"description\" })\r\n : null,\r\n tour && loaded ? React.createElement(TourDescription, { isFrame: isFrame, bookCallback: bookCallback, style: style, hash: hash }) : null));\r\n}\r\n","import React from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport moment from 'moment';\r\nimport { appUrl } from 'utils';\r\nimport { _T } from 'appI18n';\r\nexport default function TourSearchResultsHeader({ variant, searchResult, searchQuery }) {\r\n const history = useHistory();\r\n // XXX: полон хаков.\r\n return React.createElement(React.Fragment, null,\r\n variant != 'description' ? React.createElement(\"h1\", null, searchResult.searchLocation) : null,\r\n variant == 'description' ?\r\n React.createElement(\"a\", { onClick: () => history.goBack(), className: \"back-to-search\", href: \"#\" },\r\n React.createElement(\"i\", { className: \"fa fa-angle-left\", \"aria-hidden\": \"true\" }),\r\n \" \",\r\n _T.COMMON_TOSEARCHRESULTS) : null,\r\n React.createElement(\"div\", { className: \"row mb-4\" },\r\n React.createElement(\"div\", { className: \"col-md-9\" },\r\n variant == 'description' ? React.createElement(\"div\", { className: \"col-xs-12 col-md-2\" }) : null,\r\n variant != 'description' ?\r\n React.createElement(\"div\", { className: \"col-xs-12 col-md-2 hotels-number\" },\r\n React.createElement(\"span\", null, _T.TOUR_TOURSFOUND),\r\n React.createElement(\"span\", { className: \"count\" }, searchResult.totalCount)) : null,\r\n React.createElement(\"div\", { className: \"col-xs-12 col-md-10 steps\" },\r\n React.createElement(\"ul\", { className: \"list-inline\" },\r\n React.createElement(\"li\", { className: \"active\" },\r\n React.createElement(\"span\", { className: \"step-number\" }, \"1\"),\r\n React.createElement(\"span\", { className: \"step-text\" }, _T.COMMON_SEARCHRESULT)),\r\n React.createElement(\"li\", null,\r\n React.createElement(\"span\", { className: \"step-number\" }, \"2\"),\r\n \" \",\r\n React.createElement(\"span\", { className: \"step-text\" }, _T.COMMON_BASKET),\r\n \" \"),\r\n React.createElement(\"li\", null,\r\n React.createElement(\"span\", { className: \"step-number\" }, \"3\"),\r\n \" \",\r\n React.createElement(\"span\", { className: \"step-text\" }, _T.COMMON_BOOKING)))))),\r\n variant != 'description' ? (React.createElement(\"div\", { className: \"row mb-4\" },\r\n React.createElement(\"div\", { className: \"col-md-3\" },\r\n React.createElement(\"a\", { href: appUrl('/Tour'), className: \"btn btn-orange w-100 py-3 text-uppercase\" },\r\n React.createElement(\"i\", { className: \"fa fa-search\", \"aria-hidden\": \"true\" }),\r\n \" \",\r\n _T.COMMON_NEWSEARCH)),\r\n React.createElement(\"div\", { className: \"col-md-9 hotel-info m-0 py-3\" },\r\n React.createElement(\"div\", { className: \"hotel-info-item\" },\r\n React.createElement(\"span\", null,\r\n _T.COMMON_COUNTRY,\r\n \":\"),\r\n \" \",\r\n React.createElement(\"span\", null, searchResult.searchCountry)),\r\n React.createElement(\"div\", { className: \"hotel-info-item\" },\r\n React.createElement(\"span\", null,\r\n _T.COMMON_DATE,\r\n \":\"),\r\n React.createElement(\"span\", null,\r\n moment(searchQuery['cimin']).format('L'),\r\n \" - \",\r\n moment(searchQuery['cimax']).format('L'))),\r\n React.createElement(\"div\", { className: \"hotel-info-item\" },\r\n React.createElement(\"span\", null,\r\n _T.COMMON_DURATION,\r\n \":\"),\r\n React.createElement(\"span\", null, searchQuery['dmin'] != searchQuery['dmax']\r\n ? `${searchQuery['dmin']} - ${searchQuery['dmax']}`\r\n : searchQuery['dmin']))))) : null);\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 { addTourToCart, fetchAccommodations, fetchExternalFlight, fetchHotelRecommendationsNew, fetchTourDetails, fetchTourDetailsFromCart, fetchTourVariant } from 'api-ito/ToursApi';\r\nimport _, { range } from 'lodash';\r\nimport moment from 'moment';\r\nimport { createHook, createSelector, createStore } from 'react-sweet-state';\r\nimport { fetchExcursionPrice } from '../../../include/api-ito/ExcursionsApi';\r\nimport { api } from '../../../include/network/network';\r\nimport { appUrl, removeEmptyFields } from '../../../include/utils';\r\nimport { getExtraKey, mapExtrasToJsonCompatibility } from './utils';\r\nexport const CreateTourDescriptionStore = (actions) => {\r\n return createStore({\r\n initialState: {\r\n loaded: false,\r\n loading: true,\r\n flightsLoading: false,\r\n loadingHotelRecommendations: false,\r\n loadingAccommodationVariants: false,\r\n loadingTourVariant: false,\r\n loadAccommodationVariantsErrors: [],\r\n loadDescriptionErrors: [],\r\n loadHotelRecommendationsErrors: [],\r\n loadExternalFlightErrors: [],\r\n hasAccommodation: false,\r\n setBookingParamsErrors: [],\r\n tourDescription: undefined,\r\n tourVariant: undefined,\r\n tourEvents: [],\r\n tourServices: [],\r\n accommodationVariants: undefined,\r\n currentAccommodationVariants: [],\r\n hotelRecommendations: undefined,\r\n viewConfig: {\r\n hidePrices: false,\r\n },\r\n frameId: undefined,\r\n tempFrameId: undefined,\r\n hash: undefined,\r\n price: undefined,\r\n totalVariantPrice: 0,\r\n totalVariantPriceOriginal: 0,\r\n externalFlight: undefined,\r\n externalFlightId: undefined,\r\n externalFlightProviderId: undefined,\r\n externalFlights: {},\r\n flightConfiguration: {\r\n seatsWarningUpperBoundary: 0,\r\n initialResultLimit: 6,\r\n resultLimit: 10,\r\n },\r\n flightSearchMetadata: {\r\n isSearchPerformed: false,\r\n flightsRemain: 0,\r\n allAirlines: [],\r\n maxStopDurationBounds: { from: 0, to: 0 },\r\n forwardArrivalRangeBounds: { from: moment(new Date(1, 1, 1)), to: moment(new Date(9999, 12, 31, 23, 59, 59)) },\r\n forwardDepartureRangeBounds: { from: moment(new Date(1, 1, 1)), to: moment(new Date(9999, 12, 31, 23, 59, 59)) },\r\n returnArrivalRangeBounds: { from: moment(new Date(1, 1, 1)), to: moment(new Date(9999, 12, 31, 23, 59, 59)) },\r\n returnDepartureRangeBounds: { from: moment(new Date(1, 1, 1)), to: moment(new Date(9999, 12, 31, 23, 59, 59)) },\r\n stops: [0, 1, 2, 3],\r\n airlineLaxFiltering: true,\r\n airlineIds: [],\r\n baggage: ['withbaggage', 'withoutbaggage'],\r\n maxStopDuration: 0,\r\n forwardArrivalRange: { from: moment(new Date(1, 1, 1)), to: moment(new Date(9999, 12, 31, 23, 59, 59)) },\r\n forwardDepartureRange: { from: moment(new Date(1, 1, 1)), to: moment(new Date(9999, 12, 31, 23, 59, 59)) },\r\n returnArrivalRange: { from: moment(new Date(1, 1, 1)), to: moment(new Date(9999, 12, 31, 23, 59, 59)) },\r\n returnDepartureRange: { from: moment(new Date(1, 1, 1)), to: moment(new Date(9999, 12, 31, 23, 59, 59)) },\r\n },\r\n prevExtras: {},\r\n extras: {},\r\n search: undefined\r\n },\r\n actions: actions,\r\n name: 'TourDescriptionStore'\r\n });\r\n};\r\nexport const CreateTourFlightSearchMetadataHook = (store) => {\r\n return createHook(store, {\r\n selector: createSelector(state => ({\r\n flightSearchMetadata: state.flightSearchMetadata,\r\n }), (state) => {\r\n return Object.assign({}, state.flightSearchMetadata);\r\n })\r\n });\r\n};\r\nexport const CreateTourDescriptionHook = (store) => {\r\n return createHook(store, {\r\n selector: createSelector(state => ({\r\n desc: state.tourDescription,\r\n svcs: state.tourServices,\r\n evts: state.tourEvents,\r\n hotels: state.currentAccommodationVariants.map(v => ({ hotelDescription: v.hotelDescription, externalHotelPrice: v.externalHotelPrice })),\r\n hasAccmmd: state.hasAccommodation,\r\n hash: state.hash,\r\n price: state.price,\r\n externalFlight: state.externalFlight,\r\n externalFlightId: state.externalFlightId,\r\n externalFlightProviderId: state.externalFlightProviderId,\r\n externalFlights: state.externalFlights,\r\n flightsLoading: state.flightsLoading,\r\n }), (state) => {\r\n if (!state.desc)\r\n throw new Error('Tour description is not loaded');\r\n const excursions = findServiceOfType(state.svcs, 'excursion');\r\n const transfers = findServiceOfType(state.svcs, 'transfer');\r\n const extras = findServiceOfType(state.svcs, 'extra');\r\n const flights = findServiceOfType(state.svcs, 'flight');\r\n const hotels = findServiceOfType(state.svcs, 'hotel');\r\n return {\r\n tourDescription: state.desc,\r\n tourEvents: state.evts,\r\n excursionServices: excursions,\r\n transferServices: transfers,\r\n extraServices: extras,\r\n flightServices: flights,\r\n hotelServices: hotels,\r\n hotelDescriptions: state.hotels,\r\n hasAccommodation: state.hasAccmmd,\r\n hash: state.hash,\r\n price: state.price,\r\n externalFlight: state.externalFlight,\r\n externalFlightId: state.externalFlightId,\r\n externalFlightProviderId: state.externalFlightProviderId,\r\n externalFlights: state.externalFlights,\r\n flightsLoading: state.flightsLoading,\r\n };\r\n })\r\n });\r\n};\r\nexport const CreateExtrasHook = (store) => {\r\n return createHook(store, {\r\n selector: state => ({\r\n price: state.price,\r\n extras: state.extras,\r\n prevExtras: state.prevExtras,\r\n hash: state.hash\r\n }),\r\n });\r\n};\r\nexport const CreateViewConfigHook = (store) => {\r\n return createHook(store, {\r\n selector: state => state.viewConfig\r\n });\r\n};\r\nexport const CreateTourVariantHook = (store) => {\r\n return createHook(store, {\r\n selector: state => ({\r\n initialized: !!state.tourVariant,\r\n tourVariant: state.tourVariant,\r\n currentAccommodationVariants: state.currentAccommodationVariants,\r\n loading: state.loadingTourVariant,\r\n errors: state.setBookingParamsErrors,\r\n totalVariantPrice: state.totalVariantPrice,\r\n })\r\n });\r\n};\r\nexport const CreateTourAccmmdVariantsHook = (store) => {\r\n return createHook(store, {\r\n selector: state => ({\r\n initialized: !!state.accommodationVariants,\r\n loading: state.loadingAccommodationVariants,\r\n accmmdVariants: state.accommodationVariants,\r\n errors: state.loadAccommodationVariantsErrors,\r\n })\r\n });\r\n};\r\nexport const CreateHotelRecommendationsHook = (store) => {\r\n return createHook(store, {\r\n selector: state => ({\r\n initialized: !!state.hotelRecommendations,\r\n loading: state.loadingHotelRecommendations,\r\n recommendations: state.hotelRecommendations,\r\n errors: state.loadHotelRecommendationsErrors,\r\n })\r\n });\r\n};\r\nconst reloadExtras = (extras) => ({ setState, getState }) => {\r\n setState({ extras: Object.assign({}, extras) });\r\n};\r\nconst updateExtra = (id, mens) => ({ setState, getState }) => {\r\n const { extras } = getState();\r\n if (!(mens === null || mens === void 0 ? void 0 : mens.length)) {\r\n let newExtras = removeEmptyFields(Object.assign(Object.assign({}, extras), { [id]: mens }));\r\n setState({ prevExtras: Object.assign({}, extras), extras: Object.assign({}, newExtras) });\r\n }\r\n else\r\n setState({ prevExtras: Object.assign({}, extras), extras: Object.assign(Object.assign({}, extras), { [id]: mens }) });\r\n};\r\nconst setFlightFilter = (filter) => ({ setState, getState }) => {\r\n const { flightSearchMetadata } = getState();\r\n if (!flightSearchMetadata)\r\n return;\r\n setState({ flightSearchMetadata: Object.assign(Object.assign({}, flightSearchMetadata), filter) });\r\n};\r\nconst resetStopsFilter = () => ({ setState, getState }) => {\r\n const { flightSearchMetadata } = getState();\r\n if (!flightSearchMetadata)\r\n return;\r\n setState({ flightSearchMetadata: Object.assign(Object.assign({}, flightSearchMetadata), { stops: [0, 1, 2, 3] }) });\r\n};\r\nconst resetAirlinesFilter = () => ({ setState, getState }) => {\r\n const { flightSearchMetadata } = getState();\r\n if (!flightSearchMetadata)\r\n return;\r\n setState({\r\n flightSearchMetadata: Object.assign(Object.assign({}, flightSearchMetadata), { airlineLaxFiltering: true, airlineIds: flightSearchMetadata.allAirlines.map(a => a.id) })\r\n });\r\n};\r\nconst resetBaggageFilter = () => ({ setState, getState }) => {\r\n const { flightSearchMetadata } = getState();\r\n if (!flightSearchMetadata)\r\n return;\r\n setState({ flightSearchMetadata: Object.assign(Object.assign({}, flightSearchMetadata), { baggage: ['withbaggage', 'withoutbaggage'] }) });\r\n};\r\nconst resetStopDurationFilter = () => ({ setState, getState }) => {\r\n const { flightSearchMetadata } = getState();\r\n if (!flightSearchMetadata)\r\n return;\r\n setState({\r\n flightSearchMetadata: Object.assign(Object.assign({}, flightSearchMetadata), { maxStopDuration: flightSearchMetadata.maxStopDurationBounds.to })\r\n });\r\n};\r\nconst resetTimeRangesFilter = () => ({ setState, getState }) => {\r\n const { flightSearchMetadata } = getState();\r\n if (!flightSearchMetadata)\r\n return;\r\n setState({\r\n flightSearchMetadata: Object.assign(Object.assign({}, flightSearchMetadata), { forwardArrivalRange: Object.assign({}, flightSearchMetadata.forwardArrivalRangeBounds), forwardDepartureRange: Object.assign({}, flightSearchMetadata.forwardDepartureRangeBounds), returnArrivalRange: Object.assign({}, flightSearchMetadata.returnArrivalRangeBounds), returnDepartureRange: Object.assign({}, flightSearchMetadata.returnDepartureRangeBounds) })\r\n });\r\n};\r\nconst resetAllSecondaryFilters = () => ({ dispatch }) => {\r\n dispatch(resetStopsFilter());\r\n dispatch(resetAirlinesFilter());\r\n dispatch(resetBaggageFilter());\r\n dispatch(resetStopDurationFilter());\r\n dispatch(resetTimeRangesFilter());\r\n};\r\nexport const getTourCostInternal = (state) => {\r\n let cost = {\r\n netto: 0,\r\n brutto: 0,\r\n discount: 0,\r\n };\r\n if (!state.price || !state.tourVariant)\r\n return cost;\r\n const { price, tourVariant, extras, tourServices } = state;\r\n for (let service of price.allServices.filter(s => { var _a; return !state.externalFlight || !((_a = price.defaultAirServices) === null || _a === void 0 ? void 0 : _a.find(d => d == s.compositeId)); })) {\r\n cost.netto += service.costEntityWithPromo.netto;\r\n cost.brutto += service.costEntityWithPromo.brutto;\r\n cost.discount += service.costEntityWithPromo.discount;\r\n }\r\n if (state.externalFlight) {\r\n cost.netto += state.externalFlight.flightCostEntityWithPromo.netto;\r\n cost.brutto += state.externalFlight.flightCostEntityWithPromo.brutto;\r\n cost.discount += state.externalFlight.flightCostEntityWithPromo.discount;\r\n }\r\n const allMens = [...range(0, tourVariant.adultCount).map(x => 18), ...tourVariant.childAges];\r\n for (let service of price.extras) { //.filter(s => !!extras[getExtraKey(s)]?.length)) {\r\n const extraMens = extras[getExtraKey(service)];\r\n if (!(extraMens === null || extraMens === void 0 ? void 0 : extraMens.length))\r\n continue;\r\n const mensInService = allMens.map((value, index) => ({ value, index })).filter(x => x.value >= service.ageFrom && x.value < service.ageTo && extraMens.findIndex(m => m == x.index) >= 0).length;\r\n cost.netto += service.costEntityWithPromo.netto * (service.isGroupCost ? 1 : mensInService);\r\n cost.brutto += service.costEntityWithPromo.brutto * (service.isGroupCost ? 1 : mensInService);\r\n cost.discount += service.costEntityWithPromo.discount * (service.isGroupCost ? 1 : mensInService);\r\n }\r\n return cost;\r\n};\r\nexport const getTourCost = () => {\r\n return ({ getState }) => {\r\n const cost = getTourCostInternal(getState());\r\n return {\r\n brutto: cost.brutto,\r\n netto: cost.netto,\r\n discount: cost.discount,\r\n total: cost.brutto + cost.discount,\r\n roundBrutto: Math.ceil(cost.brutto),\r\n roundTotal: Math.ceil(cost.brutto + cost.discount),\r\n roundDiscount: Math.ceil(cost.brutto + cost.discount) - Math.ceil(cost.brutto),\r\n };\r\n };\r\n};\r\nexport const loadDescription = (params) => {\r\n return ({ setState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n setState({ frameId: params.frameId, tempFrameId: params.tempFrameId });\r\n if ('hash' in params)\r\n setState({ hash: params.hash, search: params.search });\r\n //setState({ loading: true, frameId: params.frameId, tempFrameId: params.tempFrameId });\r\n const result = 'fromCart' in params ? yield fetchTourDetailsFromCart() : yield fetchTourDetails(params);\r\n //setState({ loading: false });\r\n if (!('errors' in result)) {\r\n setState({ price: result.priceItem });\r\n const [services, hotelServices] = result.tourServices.reduce(([services, hotelServices], x) => {\r\n if (x.type === 'hotel') {\r\n hotelServices.push(x);\r\n }\r\n services.push(x);\r\n return [services, hotelServices];\r\n }, [[], []]);\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 setState({\r\n tourDescription: result.tourDescription,\r\n tourEvents: result.tourEvents,\r\n tourServices: services,\r\n tourVariant: result.tourVariant,\r\n totalVariantPrice: result.totalVariantPrice,\r\n totalVariantPriceOriginal: result.totalVariantPriceOriginal,\r\n loadDescriptionErrors: [],\r\n //extras: result.extras ?? {},\r\n loaded: true,\r\n });\r\n return [];\r\n }\r\n else {\r\n setState({ loadDescriptionErrors: result.errors });\r\n return result.errors;\r\n }\r\n });\r\n};\r\nexport const loadExcursionPrices = (excursions, hash) => ({ setState, getState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n const { tourServices, tourVariant, tourDescription, currentAccommodationVariants } = getState();\r\n if (!tourVariant || !tourVariant.checkInDate || !tourDescription)\r\n return [];\r\n //setState({ loading: true });\r\n for (const excursion of tourServices.filter(s => s.type == \"excursion\").map(s => s)) {\r\n if (!excursions.find(s => s.id == excursion.id) || !excursion.beginDate || new Date(excursion.beginDate).toString() == new Date(\"0001-01-01T00:00:00\").toString())\r\n continue;\r\n var result = yield fetchExcursionPrice(excursion.id, excursion.beginDate, tourVariant.adultCount, tourVariant.childAges.map((x) => ({ age: x, withPlace: true })), tourVariant.tourId);\r\n if (!('errors' in result)) {\r\n setState({\r\n tourServices: [...tourServices].map(service => {\r\n var _a, _b;\r\n if (service.type == \"excursion\" && service.id == excursion.id) {\r\n const exc = service;\r\n exc.prices = result;\r\n //const vehicleTypeId = excursions.find(e => e.id == exc.id)?.vehicleTypeId;\r\n exc.currentVehicleTypeId = (_a = excursions.find(s => s.id == exc.id)) === null || _a === void 0 ? void 0 : _a.vehicleTypeId;\r\n if (((_b = exc.prices) === null || _b === void 0 ? void 0 : _b.length) > 0) {\r\n if (!exc.prices.find((e) => exc.currentVehicleTypeId == e.vehicleTypeId) || exc.currentVehicleTypeId == undefined) {\r\n exc.currentVehicleTypeId = exc.prices[0].vehicleTypeId;\r\n exc.excursionPrice = exc.prices[0];\r\n }\r\n else\r\n exc.excursionPrice = exc.prices.find((x) => x.vehicleTypeId == exc.currentVehicleTypeId);\r\n }\r\n }\r\n return service;\r\n })\r\n });\r\n }\r\n else {\r\n setState({ loadDescriptionErrors: result.errors });\r\n return result.errors;\r\n }\r\n }\r\n //setState({ loading: false });\r\n return [];\r\n});\r\nconst setBookingParams = ({ date, duration, tourists, handlers }) => {\r\n return ({ setState, getState, dispatch }) => __awaiter(void 0, void 0, void 0, function* () {\r\n var _a;\r\n const { tourDescription: desc, tourVariant, currentAccommodationVariants, hotelRecommendations, hasAccommodation, tourServices, frameId, tempFrameId, hash } = getState();\r\n const wantDate = moment(date).format('YYYY-MM-DD');\r\n const writeErrors = (errors) => {\r\n setState({ setBookingParamsErrors: errors });\r\n return errors;\r\n };\r\n if (!desc || (!tourVariant && !tourists))\r\n return writeErrors(['Bad invocation']);\r\n const { adultCount, childAges } = !tourists\r\n ? { adultCount: tourVariant.adultCount, childAges: tourVariant.childAges }\r\n : tourists;\r\n const userParams = { date: wantDate, duration, tourists: { adultCount, childAges } };\r\n let keepLoading = false;\r\n setState({ loadingTourVariant: true });\r\n try {\r\n const variantResponse = yield fetchTourVariant(desc.id, wantDate, duration, adultCount, childAges, hash);\r\n if ('errors' in variantResponse)\r\n return writeErrors(variantResponse.errors);\r\n setState({ tourVariant: variantResponse });\r\n //keepLoading = true;\r\n let newHash = (_a = variantResponse.similarPriceHash) !== null && _a !== void 0 ? _a : variantResponse.bestPriceHash;\r\n if (newHash) {\r\n yield dispatch(setPriceItem(newHash));\r\n if (handlers === null || handlers === void 0 ? void 0 : handlers.onFinished)\r\n handlers.onFinished(userParams);\r\n }\r\n else if (handlers === null || handlers === void 0 ? void 0 : handlers.onTourUnavailable)\r\n handlers.onTourUnavailable(variantResponse, userParams);\r\n return [];\r\n }\r\n finally {\r\n if (!keepLoading)\r\n setState({ loadingTourVariant: false });\r\n }\r\n });\r\n};\r\nconst setPriceItem = (hash) => ({ setState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n setState({ hash });\r\n});\r\nconst setExcursionTransport = (excursionId, vehicleTypeId) => ({ setState, getState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n const { tourServices } = getState();\r\n setState({\r\n tourServices: [...tourServices].map(x => {\r\n var _a;\r\n if (x.type == 'excursion' && x.id == excursionId) {\r\n var excursion = x;\r\n if ((_a = excursion.prices) === null || _a === void 0 ? void 0 : _a.length) {\r\n excursion.currentVehicleTypeId = vehicleTypeId;\r\n if (!excursion.prices.find(e => excursion.currentVehicleTypeId == e.vehicleTypeId) || excursion.currentVehicleTypeId == undefined) {\r\n excursion.currentVehicleTypeId = excursion.prices[0].vehicleTypeId;\r\n excursion.excursionPrice = excursion.prices[0];\r\n }\r\n else\r\n excursion.excursionPrice = excursion.prices.find(x => x.vehicleTypeId == excursion.currentVehicleTypeId);\r\n }\r\n }\r\n return x;\r\n })\r\n });\r\n});\r\nconst loadAccommodationVariants = () => {\r\n return ({ getState, setState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n var _a, _b;\r\n const { tourDescription: desc, tourVariant, currentAccommodationVariants, hash } = getState();\r\n if (!tourVariant || !desc || !currentAccommodationVariants.length)\r\n return [];\r\n let errors = [];\r\n let variants = [];\r\n let accmmds = [];\r\n setState({ loadingAccommodationVariants: false });\r\n for (let i = 0; i < currentAccommodationVariants.length; i++) {\r\n const currentAccommodationVariant = currentAccommodationVariants[i];\r\n const accmmdsResponse = yield fetchAccommodations(desc.id, tourVariant.adultCount, tourVariant.childAges, tourVariant.checkInDate, false, i, hash);\r\n if ('errors' in accmmdsResponse) {\r\n errors.push(...accmmdsResponse.errors);\r\n }\r\n else {\r\n accmmds.push((_b = (_a = accmmdsResponse[0]) === null || _a === void 0 ? void 0 : _a.accomodationVariants) !== null && _b !== void 0 ? _b : []);\r\n }\r\n }\r\n setState({ loadingAccommodationVariants: false });\r\n if (errors.length) {\r\n setState({ loadAccommodationVariantsErrors: errors });\r\n return errors;\r\n }\r\n setState({\r\n accommodationVariants: accmmds,\r\n loadAccommodationVariantsErrors: [],\r\n });\r\n return [];\r\n });\r\n};\r\nconst loadHotelRecommendations = (tourVariantId) => {\r\n return ({ setState, getState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n const { tourVariant, hash } = getState();\r\n if (!tourVariant)\r\n throw new Error('Bad invocation');\r\n setState({ loadingHotelRecommendations: true });\r\n try {\r\n const response = yield fetchHotelRecommendationsNew(tourVariant.id, hash);\r\n if ('errors' in response) {\r\n setState({ loadHotelRecommendationsErrors: response.errors, });\r\n return response.errors;\r\n }\r\n setState({\r\n hotelRecommendations: response,\r\n loadHotelRecommendationsErrors: [],\r\n });\r\n return [];\r\n }\r\n finally {\r\n setState({ loadingHotelRecommendations: false });\r\n }\r\n });\r\n};\r\nconst loadExternalFlight = (flightId, providerId) => {\r\n return ({ setState, getState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n const { tourVariant, hash } = getState();\r\n if (!tourVariant || !hash)\r\n throw new Error('Bad invocation');\r\n if (!flightId || !providerId)\r\n return [];\r\n setState({ loadingHotelRecommendations: true });\r\n try {\r\n const response = yield fetchExternalFlight(hash, { flightId, providerId });\r\n if ('errors' in response) {\r\n setState({ loadExternalFlightErrors: response.errors, });\r\n return response.errors;\r\n }\r\n setState({\r\n externalFlight: response,\r\n externalFlightId: response === null || response === void 0 ? void 0 : response.flightId,\r\n externalFlightProviderId: response === null || response === void 0 ? void 0 : response.providerId,\r\n loadHotelRecommendationsErrors: [],\r\n });\r\n return [];\r\n }\r\n finally {\r\n setState({ loadingHotelRecommendations: false });\r\n }\r\n });\r\n};\r\nconst setFlight = (flight) => ({ setState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n setState({ externalFlight: flight, externalFlightId: flight.flightId, externalFlightProviderId: flight.providerId });\r\n});\r\nconst setFlightVariants = (flights) => ({ setState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n setState({ externalFlights: flights });\r\n});\r\nconst addFlightVariants = (flights) => ({ setState, getState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n setState({ externalFlights: Object.assign(Object.assign({}, getState().externalFlights), flights) });\r\n});\r\nconst clearFlightVariants = () => ({ setState, getState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n setState({ externalFlights: {} });\r\n});\r\nconst searchExternalFlight = (first, applyAdditionalFilters, clearBefore, disableCache) => ({ getState, setState, dispatch }) => __awaiter(void 0, void 0, void 0, function* () {\r\n var _a, _b, _c, _d, _e, _f, _g, _h;\r\n const { flightSearchMetadata, price, tourServices, tourVariant, flightsLoading, hash, externalFlights, flightConfiguration } = getState();\r\n if (!tourServices.find(v => v.type == 'flight'))\r\n return [];\r\n if (!tourVariant || flightsLoading)\r\n return [];\r\n setState({ flightsLoading: true });\r\n try {\r\n let flights = tourServices.filter(v => v.type == 'flight').map(v => v);\r\n if (flights.length > 1)\r\n flights = [flights[0], flights[flights.length - 1]];\r\n const query = {\r\n hash: hash,\r\n disableCache: disableCache || false,\r\n includeMetadata: first,\r\n flights: flights.map(f => ({ cityFromId: f.cityFrom.id, cityToId: f.cityTo.id, departureDate: f.beginDate })),\r\n fareClassId: flights[0].flightClass.id,\r\n adultPassengers: tourVariant.adultCount,\r\n childPassengers: tourVariant.childAges.filter(c => c >= 2).length,\r\n infantPassengers: tourVariant.childAges.filter(c => c < 2).length,\r\n stops: applyAdditionalFilters && !!flightSearchMetadata ? flightSearchMetadata.stops : [0, 1, 2, 3],\r\n offset: first || clearBefore ? 0 : Object.keys(externalFlights).length,\r\n limit: first || clearBefore ? flightConfiguration.initialResultLimit : flightConfiguration.resultLimit,\r\n airlines: applyAdditionalFilters && flightSearchMetadata ? flightSearchMetadata.airlineIds : undefined,\r\n airlinesFilterMode: applyAdditionalFilters && flightSearchMetadata ? (flightSearchMetadata.airlineLaxFiltering ? 'lax' : 'strict') : undefined,\r\n maxStopDuration: applyAdditionalFilters && flightSearchMetadata ? Math.floor(flightSearchMetadata.maxStopDuration / 60) : undefined,\r\n forwardDepartureNotBeforeTime: applyAdditionalFilters && flightSearchMetadata ? (_a = flightSearchMetadata.forwardDepartureRange.from) === null || _a === void 0 ? void 0 : _a.format('YYYY-MM-DD HH:mm:ss') : undefined,\r\n forwardDepartureNotAfterTime: applyAdditionalFilters && flightSearchMetadata ? (_b = flightSearchMetadata.forwardDepartureRange.to) === null || _b === void 0 ? void 0 : _b.format('YYYY-MM-DD HH:mm:ss') : undefined,\r\n forwardArrivalNotBeforeTime: applyAdditionalFilters && flightSearchMetadata ? (_c = flightSearchMetadata.forwardArrivalRange.from) === null || _c === void 0 ? void 0 : _c.format('YYYY-MM-DD HH:mm:ss') : undefined,\r\n forwardArrivalNotAfterTime: applyAdditionalFilters && flightSearchMetadata ? (_d = flightSearchMetadata.forwardArrivalRange.to) === null || _d === void 0 ? void 0 : _d.format('YYYY-MM-DD HH:mm:ss') : undefined,\r\n returnDepartureNotBeforeTime: applyAdditionalFilters && flightSearchMetadata ? (_e = flightSearchMetadata.returnDepartureRange.from) === null || _e === void 0 ? void 0 : _e.format('YYYY-MM-DD HH:mm:ss') : undefined,\r\n returnDepartureNotAfterTime: applyAdditionalFilters && flightSearchMetadata ? (_f = flightSearchMetadata.returnDepartureRange.to) === null || _f === void 0 ? void 0 : _f.format('YYYY-MM-DD HH:mm:ss') : undefined,\r\n returnArrivalNotBeforeTime: applyAdditionalFilters && flightSearchMetadata ? (_g = flightSearchMetadata.returnArrivalRange.from) === null || _g === void 0 ? void 0 : _g.format('YYYY-MM-DD HH:mm:ss') : undefined,\r\n returnArrivalNotAfterTime: applyAdditionalFilters && flightSearchMetadata ? (_h = flightSearchMetadata.returnArrivalRange.to) === null || _h === void 0 ? void 0 : _h.format('YYYY-MM-DD HH:mm:ss') : undefined,\r\n baggage: applyAdditionalFilters && flightSearchMetadata ? flightSearchMetadata.baggage.length == 0 ? 'none' : flightSearchMetadata.baggage.join(',') : 'withbaggage,withoutbaggage',\r\n };\r\n var { response, errors } = yield api('post', `/tour/flights/${hash}`, query);\r\n console.log(response);\r\n if (errors === null || errors === void 0 ? void 0 : errors.length)\r\n return errors;\r\n else if (response) {\r\n if (!response.data)\r\n return [response.status];\r\n else if (response.data) {\r\n const variants = {};\r\n response.data.variants.map(f => (Object.assign(Object.assign({}, f), { selectedPrice: f.prices[0] }))).forEach(v => variants[v.groupHash] = v);\r\n if (first || clearBefore) {\r\n yield dispatch(setFlightVariants(variants));\r\n if (first && !applyAdditionalFilters && response.data.metadata) {\r\n const { metadata: md } = response.data;\r\n setState({\r\n flightSearchMetadata: {\r\n airlineLaxFiltering: true,\r\n allAirlines: md.airlines || [],\r\n airlineIds: md.airlines.map(a => a.id) || [],\r\n stops: [0, 1, 2, 3],\r\n baggage: ['withbaggage', 'withoutbaggage'],\r\n maxStopDuration: md.maxStopDuration * 60,\r\n maxStopDurationBounds: { from: 0, to: md.maxStopDuration * 60 },\r\n forwardArrivalRange: { from: moment.utc(md.forwardMinArrivalTime), to: moment.utc(md.forwardMaxArrivalTime) },\r\n forwardArrivalRangeBounds: { from: moment.utc(md.forwardMinArrivalTime), to: moment.utc(md.forwardMaxArrivalTime) },\r\n forwardDepartureRange: { from: moment.utc(md.forwardMinDepartureTime), to: moment.utc(md.forwardMaxDepartureTime) },\r\n forwardDepartureRangeBounds: { from: moment.utc(md.forwardMinDepartureTime), to: moment.utc(md.forwardMaxDepartureTime) },\r\n returnArrivalRange: { from: moment.utc(md.returnMinArrivalTime), to: moment.utc(md.returnMaxArrivalTime) },\r\n returnArrivalRangeBounds: { from: moment.utc(md.returnMinArrivalTime), to: moment.utc(md.returnMaxArrivalTime) },\r\n returnDepartureRange: { from: moment.utc(md.returnMinDepartureTime), to: moment.utc(md.returnMaxDepartureTime) },\r\n returnDepartureRangeBounds: { from: moment.utc(md.returnMinDepartureTime), to: moment.utc(md.returnMaxDepartureTime) },\r\n flightsRemain: response.data.remaining,\r\n isSearchPerformed: true,\r\n }\r\n });\r\n }\r\n else {\r\n setState({ flightSearchMetadata: Object.assign(Object.assign({}, flightSearchMetadata), { flightsRemain: response.data.remaining }) });\r\n }\r\n }\r\n else {\r\n yield dispatch(addFlightVariants(variants));\r\n setState({ flightSearchMetadata: Object.assign(Object.assign({}, flightSearchMetadata), { flightsRemain: response.data.remaining }) });\r\n }\r\n }\r\n }\r\n }\r\n finally {\r\n setState({ flightsLoading: false });\r\n }\r\n return [];\r\n});\r\nconst TourDescriptionStoreActions = {\r\n /**\r\n * Загружает тур для просмотра.\r\n * @param tourVariantId Идентификатор варианта для просмотра\r\n * @param accmdVariantId Список выбранных размещений\r\n */\r\n loadDescription: loadDescription,\r\n loadExcursionPrices: loadExcursionPrices,\r\n setBookingParams: setBookingParams,\r\n setPriceItem: setPriceItem,\r\n setExcursionTransport: setExcursionTransport,\r\n loadAccommodationVariants: loadAccommodationVariants,\r\n loadHotelRecommendations: loadHotelRecommendations,\r\n book: (replaceExistingTour) => ({ setState, getState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n var _j;\r\n const state = getState();\r\n if (!state.tourVariant || !state.hash)\r\n return [];\r\n const excursionServices = findServiceOfType(state.tourServices, \"excursion\");\r\n const excursions = (excursionServices === null || excursionServices === void 0 ? void 0 : excursionServices.length) > 0 ? excursionServices.map(e => `${e.id}=${(e.currentVehicleTypeId == undefined ? '' : e.currentVehicleTypeId)}`).reduce((pr, curr) => `${pr};${curr}`) : \"\";\r\n const errors = yield addTourToCart({ tourVariantId: state.tourVariant.id, accmdVariantIds: [], excursions, hash: state.hash, externalFlight: (_j = state.externalFlight) !== null && _j !== void 0 ? _j : (state.externalFlightId && state.externalFlightProviderId ? { flightId: state.externalFlightId, providerId: state.externalFlightProviderId } : undefined), extras: mapExtrasToJsonCompatibility(state.extras), replaceExistingTour });\r\n if (!(errors === null || errors === void 0 ? void 0 : errors.length)) {\r\n window.location.href = appUrl('/Cart');\r\n }\r\n return errors || [];\r\n }),\r\n enableLoading: () => ({ setState, getState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n setState({ loading: true });\r\n }),\r\n disableLoading: () => ({ setState, getState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n setState({ loading: false });\r\n }),\r\n enableFlightLoading: () => ({ setState, getState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n setState({ flightsLoading: true });\r\n }),\r\n disableFlightLoading: () => ({ setState, getState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n setState({ flightsLoading: false });\r\n }),\r\n setFlight: setFlight,\r\n loadExternalFlight: loadExternalFlight,\r\n setFlightVariants: setFlightVariants,\r\n addFlightVariants: addFlightVariants,\r\n clearFlightVariants: clearFlightVariants,\r\n searchExternalFlight: searchExternalFlight,\r\n resetStopsFilter: resetStopsFilter,\r\n resetAirlinesFilter: resetAirlinesFilter,\r\n resetBaggageFilter: resetBaggageFilter,\r\n resetStopDurationFilter: resetStopDurationFilter,\r\n resetTimeRangesFilter: resetTimeRangesFilter,\r\n resetAllSecondaryFilters: resetAllSecondaryFilters,\r\n setFlightFilter: setFlightFilter,\r\n reloadExtras: reloadExtras,\r\n updateExtra: updateExtra,\r\n getTourCost: getTourCost,\r\n //updateExcursion: updateExcursion,\r\n};\r\nexport const tourFrameBook = (replaceExistingTour) => ({ setState, getState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n const state = getState();\r\n if (!state.tourVariant || !state.hash)\r\n return [];\r\n const accmdVariantIds = [];\r\n const excursionServices = findServiceOfType(state.tourServices, \"excursion\");\r\n const excursions = (excursionServices === null || excursionServices === void 0 ? void 0 : excursionServices.length) > 0 ? excursionServices.map(e => `${e.id}=${(e.currentVehicleTypeId == undefined ? '' : e.currentVehicleTypeId)}`).reduce((pr, curr) => `${pr};${curr}`) : \"\";\r\n const cart = JSON.parse(sessionStorage.getItem('frame-cart') || '{ \"services\": [] }');\r\n cart.services = [];\r\n const r = yield api('post', `/frame/${state.frameId}/tour-cart${state.tempFrameId ? `?tempId=${state.tempFrameId}` : ''}`, { accomodationIds: accmdVariantIds, tourVariantId: state.tourVariant.id, excursions: excursions, hash: state.hash, extras: mapExtrasToJsonCompatibility(state.extras) });\r\n if (r.errors)\r\n return r.errors;\r\n cart.services.push({ type: 'tour', tourVariantId: state.tourVariant.id, accmdVariantIds, excursions, cartData: r.response });\r\n cart.price = _.sum(_.map(cart.services, s => s.type == 'tour' ? s.cartData.priceInBookingCurrency : 0));\r\n cart.pricePerPerson = _.sum(_.map(cart.services, s => s.type == 'tour' ? (s.cartData.priceInBookingCurrency / (s.cartData.accommodation.adults + s.cartData.accommodation.childs)) : 0));\r\n cart.currency = r.response.bookingCurrency;\r\n sessionStorage.setItem('frame-cart', JSON.stringify(cart));\r\n return [];\r\n});\r\nconst TourFrameDescriptionStoreActions = {\r\n loadDescription: loadDescription,\r\n loadExcursionPrices: loadExcursionPrices,\r\n setBookingParams: setBookingParams,\r\n setPriceItem: setPriceItem,\r\n setExcursionTransport: setExcursionTransport,\r\n loadAccommodationVariants: loadAccommodationVariants,\r\n loadHotelRecommendations: loadHotelRecommendations,\r\n book: tourFrameBook,\r\n enableLoading: () => ({ setState, getState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n setState({ loading: true });\r\n }),\r\n disableLoading: () => ({ setState, getState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n setState({ loading: false });\r\n }),\r\n enableFlightLoading: () => ({ setState, getState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n setState({ flightsLoading: true });\r\n }),\r\n disableFlightLoading: () => ({ setState, getState }) => __awaiter(void 0, void 0, void 0, function* () {\r\n setState({ flightsLoading: false });\r\n }),\r\n setFlight: setFlight,\r\n loadExternalFlight: loadExternalFlight,\r\n setFlightVariants: setFlightVariants,\r\n addFlightVariants: addFlightVariants,\r\n clearFlightVariants: clearFlightVariants,\r\n searchExternalFlight: searchExternalFlight,\r\n resetStopsFilter: resetStopsFilter,\r\n resetAirlinesFilter: resetAirlinesFilter,\r\n resetBaggageFilter: resetBaggageFilter,\r\n resetStopDurationFilter: resetStopDurationFilter,\r\n resetTimeRangesFilter: resetTimeRangesFilter,\r\n resetAllSecondaryFilters: resetAllSecondaryFilters,\r\n setFlightFilter: setFlightFilter,\r\n reloadExtras: reloadExtras,\r\n updateExtra: updateExtra,\r\n getTourCost: getTourCost,\r\n};\r\nexport const TourDescriptionStore = (isFrame = false) => isFrame ? TourDescriptionStoreFrame : TourDescriptionStoreDefault;\r\nexport const TourDescriptionStoreDefault = CreateTourDescriptionStore(TourDescriptionStoreActions);\r\nexport const TourDescriptionStoreFrame = CreateTourDescriptionStore(TourFrameDescriptionStoreActions);\r\nexport const useTourDescriptionStore = (isFrame = false) => isFrame ? useTourDescriptionStoreFrame() : useTourDescriptionStoreDefault();\r\nexport const useTourDescriptionStoreDefault = createHook(TourDescriptionStoreDefault);\r\nexport const useTourDescriptionStoreFrame = createHook(TourDescriptionStoreFrame);\r\nexport const useTourDescription = (arg, isFrame = false) => isFrame ? useTourDescriptionFrame() : useTourDescriptionDefault();\r\nexport const useTourDescriptionDefault = CreateTourDescriptionHook(TourDescriptionStoreDefault);\r\nexport const useTourDescriptionFrame = CreateTourDescriptionHook(TourDescriptionStoreFrame);\r\nexport const useTourFlightSearchMetadata = (arg, isFrame = false) => isFrame ? useTourFlightSearchMetadataFrame() : useTourFlightSearchMetadataDefault();\r\nexport const useTourFlightSearchMetadataDefault = CreateTourFlightSearchMetadataHook(TourDescriptionStoreDefault);\r\nexport const useTourFlightSearchMetadataFrame = CreateTourFlightSearchMetadataHook(TourDescriptionStoreFrame);\r\nexport const useViewConfig = (isFrame = false) => isFrame ? useViewConfigFrame() : useViewConfigDefault();\r\nexport const useViewConfigDefault = CreateViewConfigHook(TourDescriptionStoreDefault);\r\nexport const useViewConfigFrame = CreateViewConfigHook(TourDescriptionStoreFrame);\r\nexport const useTourExtras = (isFrame = false) => isFrame ? useTourExtrasFrame() : useTourExtrasDefault();\r\nexport const useTourExtrasDefault = CreateExtrasHook(TourDescriptionStoreDefault);\r\nexport const useTourExtrasFrame = CreateExtrasHook(TourDescriptionStoreFrame);\r\nexport const useTourVariant = (isFrame = false) => isFrame ? useTourVariantFrame() : useTourVariantDefault();\r\nexport const useTourVariantDefault = CreateTourVariantHook(TourDescriptionStoreDefault);\r\nexport const useTourVariantFrame = CreateTourVariantHook(TourDescriptionStoreFrame);\r\nexport const useTourAccmmdVariants = (isFrame = false) => isFrame ? useTourAccmmdVariantsFrame() : useTourAccmmdVariantsDefault();\r\nexport const useTourAccmmdVariantsDefault = CreateTourAccmmdVariantsHook(TourDescriptionStoreDefault);\r\nexport const useTourAccmmdVariantsFrame = CreateTourAccmmdVariantsHook(TourDescriptionStoreFrame);\r\nexport const useHotelRecommendations = (isFrame = false) => isFrame ? useHotelRecommendationsFrame() : useHotelRecommendationsDefault();\r\nexport const useHotelRecommendationsDefault = CreateHotelRecommendationsHook(TourDescriptionStoreDefault);\r\nexport const useHotelRecommendationsFrame = CreateHotelRecommendationsHook(TourDescriptionStoreFrame);\r\nexport const useFlightConfiguration = (isFrame = false) => createHook(isFrame ? TourDescriptionStoreFrame : TourDescriptionStoreDefault, {\r\n selector: createSelector(state => ({ flightConfiguration: state.flightConfiguration }), state => ({ flightConfiguration: state.flightConfiguration }))\r\n})();\r\nfunction findServiceOfType(array, type) {\r\n if (!(array === null || array === void 0 ? void 0 : array.length))\r\n return [];\r\n return array.filter(x => type == x.type);\r\n}\r\n","import { appUrl, toURLSearchParams } from \"utils\";\r\nexport function tourDetailsUrl(tourId, options, frameId) {\r\n const [baseUrl, q] = tourDetailsUrlImpl(tourId, options, frameId);\r\n return appUrl(baseUrl, q) + (options.anchor ? `${options.anchor}` : '');\r\n}\r\nexport function tourDetailsUrlRR(tourId, options, frameId) {\r\n const [baseUrl, q] = tourDetailsUrlImpl(tourId, options, frameId);\r\n const usp = toURLSearchParams(q);\r\n return { pathname: appUrl(baseUrl), search: usp.toString(), state: options.state, hash: options.anchor, };\r\n}\r\nfunction tourDetailsUrlImpl(tourId, options, frameId) {\r\n var _a;\r\n const slug = (_a = options.tourName) === null || _a === void 0 ? void 0 : _a.trim().toLowerCase().replace(/[^\\wа-яё ]+/gu, '').replace(/\\s+/gu, '-');\r\n const baseUrl = (frameId ? `/frame/${frameId}` : '') + (options.hash ? `/Tour/${tourId}/view/${options.hash}` : `/Tour/${tourId}`) + (slug ? '/' + slug : '');\r\n const q = {};\r\n if (options.variantId)\r\n q['variant'] = options.variantId;\r\n if (options.accmmdId)\r\n q['accmmd'] = !Array.isArray(options.accmmdId) || options.accmmdId.length > 1 ? options.accmmdId : options.accmmdId[0];\r\n if (options.excursions && options.excursions.length > 0)\r\n q['exc'] = options.excursions.map(e => `${e.id}=${(e.vehicleTypeId == undefined ? '' : e.vehicleTypeId)}`).reduce((pr, curr) => `${pr};${curr}`);\r\n if (options.externalFlight) {\r\n q['fId'] = options.externalFlight.flightId;\r\n q['fpId'] = options.externalFlight.providerId;\r\n }\r\n if (options.useExtrasFromCart) {\r\n q['useExtrasFromCart'] = 'true';\r\n }\r\n if (options.search) {\r\n q['search'] = options.search;\r\n }\r\n if (options.extras) {\r\n //Object.keys(options.extras).filter(key => options.extras![key]?.length).forEach((key) => {\r\n // q[`extras[${key}]`] = options.extras![key];\r\n //});\r\n }\r\n return [baseUrl, q];\r\n}\r\n//export const useTourUrlgen = (isFrame: boolean = false): {\r\n// tourDetailsUrl: ((tourId: number, options: {\r\n// accmmdId?: string,\r\n// variantId?: string,\r\n// tourName?: string,\r\n// }, frameId?: string) => string),\r\n// tourDetailsUrlRR: ((tourId: number, options: {\r\n// accmmdId?: string,\r\n// variantId?: string,\r\n// tourName?: string,\r\n// state?: any,\r\n// excursions?: {\r\n// id: number,\r\n// vehicleTypeId?: number\r\n// }[],\r\n// }, frameId?: string) => { pathname: string, search: string, state: any })\r\n//} => {\r\n// if (!isFrame)\r\n// return { tourDetailsUrl: tourDetailsUrl, tourDetailsUrlRR: tourDetailsUrlRR };\r\n// else\r\n// return { tourDetailsUrl: tourDetailsUrl, tourDetailsUrlRR: tourDetailsUrlRR };\r\n//}\r\n"],"names":["checkSessionEnd","p","match","$","html","alert","window","location","appBase","scrHiderDisableCount","disablePage","d","e","removeClass","addClass","Carousel","language","_T","_F","resource","args","result","length","reduce","acc","x","i","replace","pluralizeDays","n","COMMON_DAYS","pluralizeHours","COMMON_HOURS","pluralizePersons","COMMON_PERSONS","pluralizeI18n","type","COMMON_PLURAL_ADULTS","COMMON_PLURAL_CHILDREN","formatString","format","str","replaceAll","appSettings","_APP_SETTINGS","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","done","then","apply","useStyles","theme","root","position","display","adornment","right","top","bottom","left","alignItems","justifyContent","paddingRight","spacing","pointerEvents","inputBorderless","border","borderRadius","fullWidth","width","toolbar","background","palette","primary","main","color","padding","toolbarTitle","fontSize","durationSelector","marginTop","AvailabilityDatePicker","props","ref","_a","status","setStatus","useState","availabilityDates","setAvailabilityDates","availabilityDurations","setAvailabilityDurations","open","setOpen","tempDuration","setTempDuration","duration","classes","renderInput","useCallback","params","_b","_c","label","fieldLabel","masqueradeAsSelect","className","inputProps","borderless","input","disabled","onClick","inputRef","readOnly","InputLabelProps","labelProps","InputProps","startAdornment","dialogRef","useRef","durationRef","loadAvailability","monthIso","availabilities","onAvailabilityRequested","Object","assign","date","checkInDate","month","substr","convertTourAvailabilitiesToAvailabilityMap","withDuration","map","durations","autoOk","inputVariant","maxDate","shouldDisableDate","dateIso","disablePast","labelFunc","onChange","Error","undefined","onMonthChange","onOpen","parentFrame","isFrame","sendMessage","message","onClose","ToolbarComponent","calendarLabel","variant","component","COMMON_NIGHTS","Number","parseInt","target","formControlClassName","find","key","TextFieldComponent","PopoverProps","anchorOrigin","horizontal","vertical","transformOrigin","DialogProps","style","height","size","BootstrapInput","backgroundColor","paper","transition","transitions","create","cursor","borderColor","error","borderRight","borderTopRightRadius","borderBottomRightRadius","borderLeft","borderTopLeftRadius","borderBottomLeftRadius","grey","common","white","black","Cost","amountVariant","amount","localeAware","currency","currencyVariant","children","s","t","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__rest","containerRef","topRef","viewRef","bottomRef","scroll","currentTarget","current","scrollLeft","sticky","getElementsByClassName","onLoad","topVisible","onScroll","scrollWidth","bottomVisible","marginRight","labelClassName","selectProps","errorText","shape","selectMasq","textFieldProps","disableUnderline","css","dialog","childAges","gridTemplateColumns","gap","categories","marginBottom","countBtn","_ParentFrame","parentIFrame","AUTOCOMPLETE_CLEAR","AUTOCOMPLETE_CLOSE","AUTOCOMPLETE_LOADING","AUTOCOMPLETE_NO_OPTIONS","AUTOCOMPLETE_OPEN","selectList","overflow","secondary","selectListError","selectListDisabled","multilineSubheader","MultiLineSelectList","snackbar","selected","setSelected","searchText","setSearchText","searchOpen","setSearchOpen","getOptionValue","o","valueSelector","getOptionText","textSelector","options","useMemo","filter","toLowerCase","includes","useEffect","findIndex","listClass","heightPx","subheader","title","searchable","htmlColor","text","disableOption","newSelected","maxSelected","maxSelectedAlertText","enqueueSnackbar","autoHideDuration","dense","button","edge","checked","tabIndex","disableRipple","endAdornment","DropdownSelectList","anchorRef","handleClose","event","contains","handleListKeyDown","preventDefault","onAllChange","onAllClick","valueLabel","f","join","prevOpen","focus","shrink","noShrinkLabel","onInput","stopPropagation","caretColor","anchorEl","role","disablePortal","zIndex","minWidth","clientWidth","TransitionProps","placement","elevation","onClickAway","autoFocusItem","id","onKeyDown","maxHeight","overflowY","COMMON_ALL","MultiSelectList","ReplaceCartTourDialog","price","onCancel","onApprove","dialogProps","REPLACE_CART_TOUR_DIALOG_TITLE","REPLACE_CART_TOUR_DIALOG_CONTENT","COMMON_NO","autoFocus","COMMON_YES","container","breakpoints","up","down","gridFilterFirstSecond","margin","between","marginLeft","paddingLeft","rowSM","row","columnMD","columnSM","column","notopborderSM","borderTopStyle","borderTopWidth","priceContainer","resetButton","borderBottomWidth","borderBottomStyle","borderBottomColor","mapping","default","getContrastText","AsyncLoadError","severity","COMMON_OOPS","AltTooltip","withStyles","tooltip","boxShadow","shadows","fontFamily","arrow","Tooltip","FlightAltVariant","isCurrent","onSelect","group","onAltMoreDetailed","currentInGroup","flightConfiguration","hash","tourDescription","actions","remainingPaymentTimeframeText","paymentDeadline","diff","Math","max","hours","floor","asHours","days","asDays","FLIGHT_SEARCH_LESS_THEN_HOUR","forwardStops","airServiceClassName","airServiceGeneralClass","maxHandBaggageCount","maxBaggageCount","isTicketRefundable","isTicketExchangeable","showExactTimeLimit","FLIGHT_SEARCH_TIMES_FOR_PAYMENT","Button","disableElevation","disableTouchRipple","disableFocusRipple","FLIGHT_SEARCH_PAYMENT_BEFORE","FLIGHT_SEARCH_PAYMENT_AVAILABLE_BEFORE","enableFlightLoading","response","data","errors","aviacenterProviderId","providerId","aviacenterFlightId","flightId","FLIGHT_SEARCH_MORE_DETAILS_FLIGHT_INFO","departure","arrival","dangerouslySetInnerHTML","__html","description","FLIGHT_SEARCH_MORE_DETAILS_FLIGHT_NO_INFO","disableFlightLoading","FLIGHT_SEARCH_MORE_DETAILS","flightCostDifference","abs","name","flightCostCurrency","getRoute","stops","departureAirportCode","slice","arrivalAirportCode","FlightInfoCompact","_d","_e","direction","attributes","first","last","route","returnStops","departureAirportCityName","forwardFlightDuration","returnFlightDuration","minutes","toString","stop","FLIGHT_SEARCH_ADDITIONAL_FILTER_TRANSFER_PLURAL","arrivalAirportCityName","departureTime","y","dx","dy","stdDeviation","x1","x2","y1","y2","stroke","r","ri","rx","round","cx","cy","fill","FLIGHT_SEARCH_ADDITIONAL_FILTER_WITHOUT_TRANSFERS","arrivalTime","departureAirportName","arrivalAirportName","FLIGHT_SEARCH_HAND_BAGGAGE","maxHandBaggageWeight","FLIGHT_SEARCH_WITHOUT_HAND_BAGGAGE","FLIGHT_SEARCH_BAGGAGE","maxBaggageWeight","FLIGHT_SEARCH_WITHOUT_BAGGAGE","quota","seatsWarningUpperBoundary","FLIGHT_SEARCH_PLACES_LEFT","FLIGHT_SEARCH_REFUNDABLE_LABEL","FLIGHT_SEARCH_EXCHANGEABLE_LABEL","makeStyles","accordion","maxWidth","FlightDetailsStop","index","count","COMMON_FLIGHT_PLANE","flightNumber","airlineName","airServiceClassAdditionalCode","flightDuration","FLIGHT_SEARCH_ADDITIONAL_FILTER_FLIGHT_DURATION","COMMON_HOURS_SHORT","COMMON_MINUTES_SHORT","FlightDetailsOneWay","selectedPrice","FLIGHT_SEARCH_ADDITIONAL_FILTER_DIRECTION_FORWARD_2","FLIGHT_SEARCH_ADDITIONAL_FILTER_DIRECTION_RETURN","a","FLIGHT_SEARCH_TRANSFER","stopDuration","FlightResultCard","flightIndex","onFlightSelect","setSelectedPrice","isCurrentGroup","prices","groupHash","groupPrices","additionalVariantsState","setAdditionalVariantsState","additionalVariants","setAdditionalVariants","additionalVariantPrices","expanded","setExpanded","handleChange","_","isExpanded","console","rootRef","Accordion","AccordionSummary","content","entries","xi","array","showFlightNumbersInCardMainArea","si","substring","onFocus","COMMON_CHOOSE","AccordionDetails","FLIGHT_SEARCH_ADDITIONAL_VARIANTS","Paper","v","FLIGHT_SEARCH_ADDITIONAL_VARIANTS_LOADING_FAILED","dialogBody","scrollBy","offsetTop","scrollTop","behavior","href","uidCounter","HotelLocation","initStatus","setInitStatus","uniqueId","setMap","marker","setMarker","lat","latitude","lng","longitude","google","maps","Map","zoom","center","Marker","hotelName","TOUR_ERROR_LOADING_MAP","LightboxImageGrid","openLightbox","setOpenLightbox","imageIndex","setImageIndex","images","cellHeight","imageGridCellHeight","imageGridSpacing","onImageClick","initialIndex","thumb","objectFit","LightboxThumbnail","lightboxOpen","setLightboxOpen","src","urls","thumbnail","loading","borderBottom","DescriptionMenu","history","rootHeight","offsetHeight","offsetPx","sectionElementRefs","throttleMs","activeSection","setActiveSection","handle","currentSectionId","section","Element","getBoundingClientRect","addEventListener","removeEventListener","useScrollSpy","items","handleTabClick","targetY","scrollY","hashElement","document","getElementById","Tabs","Tab","bind","feature","featureIcon","featureTitle","textShadow","transportContainer","currentTransport","success","ExcursionFeature","icon","Box","Typography","ExcursionDescription","service","excursion","excursionDescription","excursionImages","url","large","original","tourVariant","currentAccommodationVariants","totalVariantPrice","extras","excursionServices","hotelServices","externalFlight","excursionServicesString","beginDate","currentVehicleTypeId","pr","curr","sortedPrices","_f","_g","excursionPrice","vehicleTypeId","b","sort","showTransport","vehicleTypeName","handleTransportChanged","setExcursionTransport","fullPrice","_h","cost","getTourCost","originalServiceCost","costEntityWithPromo","brutto","netto","discount","total","roundBrutto","ceil","roundTotal","roundDiscount","services","defaultAirServices","Grid","item","xs","flexWrap","mt","flexDirection","EXCURSION_TYPE","excursionTypeName","Schedule","COMMON_DURATION","excursionDuration","COMMON_DIRECTION","city","country","EXCURSION_MEAL","mealDescription","COMMON_MEET_POINT","rootPoint","mainDescription","gutterBottom","EXCURSION_AVAILABLE_TRANSPORT_TYPES","isCurrentVariant","Fragment","sm","TOUR_SELECTED","ChevronRight","my","Divider","useListSubheaderStyles","ExtraServiceIcon","viewBox","xmlns","letterSpacing","ExtraServiceDescription","subhClasses","List","ListSubheader","disableGutters","COMMON_EXTRA_SERVICES","ListItem","ListItemAvatar","Avatar","ListItemText","star","Rating","stars","rating","push","Star","fontWeight","HotelDescriptionText","paragraphs","paragraph","HotelDescription","mb","hotelImages","hotelId","TOUR_HOTEL_INFORMATION","homePage","rel","COMMON_WEBSITE","OpenInNew","starRating","address","COMMON_ADDRESS","COMMON_DESCRIPTION","hotelDescriptions","checkInTime","COMMON_CHECK_IN_TIME","checkOutTime","COMMON_CHECK_OUT_TIME","taxes","HOTEL_DESCRIPTION_TAXES_HEADER","included","externalHotelPrice","availableMeals","mealCode","mealName","childrenMealNeedBookByManager","sharedRoom","blockRoom","roomWithWindow","checkInFrom","checkInTo","checkOutFrom","checkOutTo","viewport","overflowX","flex","movementButton","forwardButton","backButton","HorizontalList","viewportRef","setViewportRef","leftScrollNeeded","rightScrollNeeded","scrollNeeded","setScrollNeeded","handler","edges","getVisibleEdges","_0","lEdgeIndex","lEdgeRect","_1","rEdgeIndex","rEdgeRect","viewportRect","GVE","log","rEdge","vpEdge","throttledHandler","throttledScrollHandler","useLayoutEffect","setTimeout","useScrollNeededCheck","handleBackButtonClick","scrollViewport","handleForwardButtonClick","offsetX","_2","rect","scrollTo","viewRect","lastVisibleIndex","lastVisibleRect","child","childRect","isVisible","card","cardRoot","cardWrapper","media","skeleton","lineClamp","minHeight","ribbon","textTransform","borderTop","cursorDefault","HotelRecommendation","recommendation","tourId","tourName","externalFlightId","externalFlightProviderId","tourServices","search","descs","isCurrentHotel","state","excursions","bestPriceHash","h","hotelDescription","Card","CardActionArea","distinctDesc","desc","CardMedia","image","mainImage","setPriceItem","CardContent","noWrap","COMMON_FROM","bestPrice","autoPlay","animation","fullHeightHover","navButtonsAlwaysVisible","paddingBottom","paddingTop","CardActions","TOUR_CURRENTLY_VIEWED_HOTEL","COMMON_VIEW","COMMON_CURRENTLY_VIEWED","HotelRecommendations","mr","Skeleton","recommendations","HotelRecommendationsContainer","inView","rootMargin","initialized","loadHotelRecommendations","TOUR_ERROR_LOADING_HOTEL_RECOMMENDATIONS","HotelRoomFilters","tourHideAvailabilityFilter","FormControlLabel","TOUR_ONLY_AVAILABLE","control","Checkbox","immediateConfirm","onFilterApplied","useFlightVariantsStyles","flightInfoPart","flightNumberAirlineInfo","flightDatetimeContainer","filterPaper","mixins","drawer","flexShrink","mobileToolbar","drawerPaper","flightSearchContent","flexGrow","overFlowY","selectedFlightsTable","remainingPaymentTimeframeButton","flights","useTheme","fullScreen","useMediaQuery","spinner","useContext","tourPrice","flightsLoading","setFlight","dialogOpen","setDialogOpen","externalFlights","aviacenterServices","enabled","autorun","mandatory","show","hide","Table","TableHead","TableRow","TableCell","COMMON_TIME","FLIGHT_CLASS","COMMON_PRICE","TableBody","time","rowSpan","whiteSpace","verticalAlign","cityFrom","cityTo","flightClass","justify","startIcon","Alarm","FLIGHT_SEARCH_CHANGE_FLIGHTS","Dialog","FlightVariantsDialog","ExtrasDialog","keys","k","allMens","range","adultCount","DialogTitle","disableTypography","TOUR_EXTRAS_DIALOG_TITLE","TOUR_EXTRAS_DIALOG_SUBTITLE_SELECTED_COUNT","DialogContent","COMMON_GIVEN_NAME","COMMON_CLASS","COMMON_TOURISTS","mens","m","ageFrom","ageTo","flatMap","add","day","class","COMMON_NOT_SELECTED_MANY","COMMON_SELECTED_FEMALE_PLURAL","COMMON_ADULT","COMMON_ADULT_AGE","updateExtra","isFinite","isGroupCost","COMMON_PRICE_FREE","COMMON_UNAVAILABLE","COMMON_FOR_EVERYONE","COMMON_PER_PERSON","DialogActions","TOUR_EXTRAS_DIALOG_ACTIONS_PRICE_WITH_CHANGES","COMMON_CLOSE","getExtraCost","extraMens","mensInService","ExtrasContainer","prevExtras","reloadExtras","getExtraCostInternal","at","TOUR_EXTRAS_HINT","COMMON_PERSONCOUNT","COMMON_DELETE","COMMON_ADD","useRoomStyles","HotelRoom","room","basePrice","basePriceCurrency","accmds","variants","accomodation","handleSelectClicked","exc","ep","defaultPrice","c","md","roomImages","roomTypeId","roomCategoryId","externalRoomProviderId","externalRoomVariantId","equipment","variantHash","promoName","mealTypeName","availability","TOUR_AVAILABLE","TOUR_ONREQUEST","HotelRoomVariantsSkeleton","elems","HotelRoomVariants","rooms","COMMON_NO_RESULTS","HotelRoomVariantsContainer","hotelIndex","initialInView","accmmdVariants","setImmediateConfirm","accmmds","grouping","values","convertTourAccommodationsToRoomDescriptions","roomsFiltered","loadAccommodationVariants","isReady","TOUR_ERROR_LOADING_ACCOMMODATION_VARIANTS","mainGutter","subGutter","timestamp","textOverflow","dayTitle","dayEvents","missingOppositeContent","TourEvent","expandIcon","ExpandMore","TourDay","dayNo","isLast","TimelineSeparator","TimelineDot","TimelineConnector","TourProgram","events","groups","groupEntires","align","setupLoginControl","successCallback","_document$querySelect","querySelector","evt","errorEl","postData","login","password","keepEnabled","innerHTML","textContent","csrfToken","q","always","responseText","fail","statusText","addAjaxHandlers","post","dataType","LoginToSeePricesButton","bg","reload","COMMON_LOGIN_TO_SEE_PRICES","sidebar","prop","propIcon","propTitle","iconSuccess","iconWarn","warning","bookBtn","featuresContainer","featuresOverlay","backdropFilter","useConfigurablesStyles","datepickerContainer","iconError","TourFeatures","accmmdVariant","TourFeature","COMMON_HOTEL","cityName","countryName","COMMON_ROOM_CATEGORY","roomTypeName","roomCategoryName","COMMON_MEAL","COMMON_AVAILABILITY","CheckCircleOutlined","ContactSupportOutlined","Configurables","touristPickerOpen","setTouristPickerOpen","datepickerInputProps","datepickerLabelProps","TOUR_START_DATE","TOUR_DATE","datepickerLabelFunc","this","TouristPickerTextField","TouristPickerDialog","ac","ca","NotAvailableError","Alert","AlertTitle","TOUR_ERROR_DATE_UNAVAIL_TITLE","TOUR_ERROR_DATE_UNAVAIL_BODY","showCancelButton","onClickCancel","COMMON_ACTION_CANCEL","BookButton","TourSidebarImpl","backdrop","flightServices","setAdultCount","setChildAges","setDate","unavailableDate","setUnavailableDate","showError","setShowError","COMMON_NIGHTS_PLURAL","TOUR_CHOOSE_TOUR_DATE","daysPlural","from","to","clone","handleApplyParamsClicked","setBookingParams","tourists","handlers","onTourUnavailable","_variant","onFinished","handleBookClicked","replaceExistingTour","book","setReplaceCartTourDialogOpen","bookCallback","catch","URLSearchParams","get","replaceCartTourDialogOpen","currentAccommodationVariant","accommodation","promoProgramName","CircularProgress","TOUR_CHOOSE_TOUR_PARAMETERS","COMMON_BOOK","COMMON_SEARCH","pl","TourSidebar","hidePrices","TransferDescription","COMMON_TRANSFERS","transferType","TourGeneralInfo","mainGrid","mainGridColumns","TourDescription","tourEvents","transferServices","extraServices","hotelRefs","setHotelRefs","createRef","descriptionRef","itineraryRef","flightsRef","excursionsRef","transfersRef","extrasRef","tabs","visible","hd","COMMON_ITINERARY","COMMON_FLIGHTS","COMMON_EXCURSIONS","TOUR_OTHER_SVCS_SHORT","Wrapper","apiKey","_GMAPS_API_KEY","Section","TOUR_HOTEL_VARIANTS","TOUR_HOTEL_ROOM_VARIANTS","TOUR_OTHER_SVCS","servicesHash","TourDescriptionContainer","tour","loaded","frameId","hasAccommodation","searchUrl","hashBlackList","setHashBlackList","prevHash","setPrevHash","pathname","historyState","anchor","searchParams","fpId","flightProviderId","tourVariantId","accmmdVariantId","tourHash","tourSearch","frameParId","split","tempFrameParId","enableLoading","loadDescription","tempFrameId","loadExternalFlight","disableLoading","variantId","accmmdId","hs","searchQuery","searchResult","TourSearchResultsHeader","searchLocation","goBack","COMMON_TOSEARCHRESULTS","TOUR_TOURSFOUND","totalCount","COMMON_SEARCHRESULT","COMMON_BASKET","COMMON_BOOKING","COMMON_NEWSEARCH","COMMON_COUNTRY","searchCountry","COMMON_DATE","CreateTourDescriptionStore","initialState","loadingHotelRecommendations","loadingAccommodationVariants","loadingTourVariant","loadAccommodationVariantsErrors","loadDescriptionErrors","loadHotelRecommendationsErrors","loadExternalFlightErrors","setBookingParamsErrors","accommodationVariants","hotelRecommendations","viewConfig","totalVariantPriceOriginal","initialResultLimit","resultLimit","flightSearchMetadata","isSearchPerformed","flightsRemain","allAirlines","maxStopDurationBounds","forwardArrivalRangeBounds","Date","forwardDepartureRangeBounds","returnArrivalRangeBounds","returnDepartureRangeBounds","airlineLaxFiltering","airlineIds","baggage","maxStopDuration","forwardArrivalRange","forwardDepartureRange","returnArrivalRange","returnDepartureRange","CreateTourFlightSearchMetadataHook","store","selector","CreateTourDescriptionHook","svcs","evts","hotels","hasAccmmd","findServiceOfType","transfers","CreateExtrasHook","CreateViewConfigHook","CreateTourVariantHook","CreateTourAccmmdVariantsHook","CreateHotelRecommendationsHook","setState","getState","newExtras","setFlightFilter","resetStopsFilter","resetAirlinesFilter","resetBaggageFilter","resetStopDurationFilter","resetTimeRangesFilter","resetAllSecondaryFilters","dispatch","allServices","compositeId","flightCostEntityWithPromo","getTourCostInternal","priceItem","hotel","loadExcursionPrices","age","withPlace","wantDate","writeErrors","userParams","variantResponse","newHash","similarPriceHash","excursionId","accmmdsResponse","accomodationVariants","flight","setFlightVariants","addFlightVariants","clearFlightVariants","searchExternalFlight","applyAdditionalFilters","clearBefore","disableCache","query","includeMetadata","cityFromId","cityToId","departureDate","fareClassId","adultPassengers","childPassengers","infantPassengers","offset","limit","airlines","airlinesFilterMode","forwardDepartureNotBeforeTime","forwardDepartureNotAfterTime","forwardArrivalNotBeforeTime","forwardArrivalNotAfterTime","returnDepartureNotBeforeTime","returnDepartureNotAfterTime","returnArrivalNotBeforeTime","returnArrivalNotAfterTime","forEach","metadata","forwardMinArrivalTime","forwardMaxArrivalTime","forwardMinDepartureTime","forwardMaxDepartureTime","returnMinArrivalTime","returnMaxArrivalTime","returnMinDepartureTime","returnMaxDepartureTime","remaining","TourFrameDescriptionStoreActions","accmdVariantIds","cart","JSON","parse","sessionStorage","getItem","accomodationIds","cartData","priceInBookingCurrency","pricePerPerson","adults","childs","bookingCurrency","setItem","stringify","TourDescriptionStoreDefault","_j","TourDescriptionStoreFrame","useTourDescriptionStore","useTourDescriptionStoreFrame","useTourDescriptionStoreDefault","useTourDescription","arg","useTourDescriptionFrame","useTourDescriptionDefault","useTourFlightSearchMetadata","useTourFlightSearchMetadataFrame","useTourFlightSearchMetadataDefault","useViewConfig","useViewConfigFrame","useViewConfigDefault","useTourExtras","useTourExtrasFrame","useTourExtrasDefault","useTourVariant","useTourVariantFrame","useTourVariantDefault","useTourAccmmdVariants","useTourAccmmdVariantsFrame","useTourAccmmdVariantsDefault","useHotelRecommendations","useHotelRecommendationsFrame","useHotelRecommendationsDefault","useFlightConfiguration","tourDetailsUrlRR","baseUrl","slug","trim","Array","isArray","useExtrasFromCart","tourDetailsUrlImpl","usp"],"sourceRoot":""}