@roomstay/frontend 2.9.0 → 2.9.1-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/177.bundle.js +1 -1
- package/dist/219.bundle.js +2 -0
- package/dist/288.bundle.js +1 -1
- package/dist/291.bundle.js +1 -0
- package/dist/446.bundle.js +1 -1
- package/dist/537.bundle.js +1 -1
- package/dist/596.bundle.js +1 -1
- package/dist/625.bundle.js +1 -1
- package/dist/836.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js +6 -0
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js.map +1 -1
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/ShadowDomBottomSheet.d.ts +22 -0
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/ShadowDomBottomSheet.js +131 -0
- package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/ShadowDomBottomSheet.js.map +1 -0
- package/dist/src/components/generic/Portal/Portal.js +5 -1
- package/dist/src/components/generic/Portal/Portal.js.map +1 -1
- package/dist/src/components/generic/Select/InputSelect.js +3 -2
- package/dist/src/components/generic/Select/InputSelect.js.map +1 -1
- package/dist/src/components/generic/Select/Select.js +5 -5
- package/dist/src/components/generic/Select/Select.js.map +1 -1
- package/dist/src/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField.d.ts +2 -2
- package/dist/src/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField.js.map +1 -1
- package/dist/src/components/members/SignInModal/EmailAndFullnameMemberModal.d.ts +4 -0
- package/dist/src/components/members/SignInModal/EmailAndFullnameMemberModal.js +105 -30
- package/dist/src/components/members/SignInModal/EmailAndFullnameMemberModal.js.map +1 -1
- package/dist/src/components/members/SignInModal/ExternalMemberModal.d.ts +9 -3
- package/dist/src/components/members/SignInModal/ExternalMemberModal.js +45 -6
- package/dist/src/components/members/SignInModal/ExternalMemberModal.js.map +1 -1
- package/dist/src/components/steps/confirmation/RoomContactDetails.js +2 -3
- package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
- package/dist/src/components/steps/date/BEPeoplePickerBlock.js +3 -1
- package/dist/src/components/steps/date/BEPeoplePickerBlock.js.map +1 -1
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +2 -0
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
- package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +1 -0
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
- package/dist/src/contexts/ShadowDomContext/ShadowDomContext.d.ts +10 -0
- package/dist/src/contexts/ShadowDomContext/ShadowDomContext.js +12 -0
- package/dist/src/contexts/ShadowDomContext/ShadowDomContext.js.map +1 -0
- package/dist/src/contexts/ShadowDomContext/ShadowDomContextProvider.d.ts +8 -0
- package/dist/src/contexts/ShadowDomContext/ShadowDomContextProvider.js +13 -0
- package/dist/src/contexts/ShadowDomContext/ShadowDomContextProvider.js.map +1 -0
- package/dist/src/contexts/index.d.ts +2 -0
- package/dist/src/contexts/index.js +2 -0
- package/dist/src/contexts/index.js.map +1 -1
- package/dist/src/engines/BaseEngine.d.ts +13 -0
- package/dist/src/engines/BaseEngine.js +32 -0
- package/dist/src/engines/BaseEngine.js.map +1 -1
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js +1 -0
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js +3 -1
- package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js.map +1 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngine.js +1 -0
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngine.js.map +1 -1
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +12 -10
- package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js +1 -0
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js.map +1 -1
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js +11 -9
- package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js.map +1 -1
- package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngine.js +1 -0
- package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngine.js.map +1 -1
- package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js +4 -2
- package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js.map +1 -1
- package/dist/src/handlers/membership/SalesforceMemberHandler.js +1 -1
- package/dist/src/handlers/membership/SalesforceMemberHandler.js.map +1 -1
- package/dist/src/hooks/BodyClickHook.d.ts +2 -2
- package/dist/src/hooks/BodyClickHook.js +7 -3
- package/dist/src/hooks/BodyClickHook.js.map +1 -1
- package/dist/src/pages/findReservation/FindReservationResults.js +1 -1
- package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
- package/dist/src/pages/findReservation/ReservationRow.js +10 -9
- package/dist/src/pages/findReservation/ReservationRow.js.map +1 -1
- package/dist/src/pages/hotel/HotelInfo.js +7 -6
- package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
- package/dist/src/providers/RoomstayThemeEngine.js +7 -2
- package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
- package/dist/src/providers/ShadowDomManager.d.ts +21 -0
- package/dist/src/providers/ShadowDomManager.js +55 -0
- package/dist/src/providers/ShadowDomManager.js.map +1 -0
- package/dist/src/providers/StyleInjector.d.ts +42 -0
- package/dist/src/providers/StyleInjector.js +118 -0
- package/dist/src/providers/StyleInjector.js.map +1 -0
- package/dist/src/providers/storage/SessionProvider.js.map +1 -1
- package/dist/src/stories/EnhancedPhoneNumberField.stories.d.ts +1 -1
- package/dist/src/translations/Translation.d.ts +3 -0
- package/dist/src/translations/Translation.js +3 -0
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +3 -0
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/src/util/Analytics/Analytics.js +1 -0
- package/dist/src/util/Analytics/Analytics.js.map +1 -1
- package/dist/src/util/ObjectHelper.d.ts +1 -0
- package/dist/src/util/ObjectHelper.js +5 -1
- package/dist/src/util/ObjectHelper.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/package.json +1 -1
- package/dist/326.bundle.js +0 -2
- package/dist/686.bundle.js +0 -1
- /package/dist/{326.bundle.js.LICENSE.txt → 219.bundle.js.LICENSE.txt} +0 -0
|
@@ -74,6 +74,7 @@ const Text_1 = __importStar(require("../../components/generic/Text"));
|
|
|
74
74
|
const Tooltip_1 = __importDefault(require("../../components/generic/Tooltip/Tooltip"));
|
|
75
75
|
const RatesNotFoundBlock_1 = __importDefault(require("../../components/steps/room/RatesNotFoundBlock"));
|
|
76
76
|
const RoomRates_1 = __importDefault(require("../../components/steps/room/roomDetails/roomRates/RoomRates"));
|
|
77
|
+
const ShadowDomContextProvider_1 = require("../../contexts/ShadowDomContext/ShadowDomContextProvider");
|
|
77
78
|
const RoomListSearchEvent_1 = require("../../events/actions/RoomListSearchEvent");
|
|
78
79
|
const useSignedInMember_1 = require("../../hooks/useSignedInMember");
|
|
79
80
|
const BasketRow_1 = __importStar(require("../../models/BasketRow"));
|
|
@@ -433,16 +434,17 @@ function InlineRoomMiniEngineElement(props) {
|
|
|
433
434
|
}, [isCompact, isLoading, rooms, basketContext.currentBasketRows, isPromoModalOpen, hotel, standardRates]);
|
|
434
435
|
}
|
|
435
436
|
const renderInlineRoomMiniEngineElement = (container, engine) => {
|
|
436
|
-
(0, react_dom_1.render)(react_1.default.createElement(
|
|
437
|
-
react_1.default.createElement(
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
react_1.default.createElement(
|
|
443
|
-
react_1.default.createElement(
|
|
444
|
-
react_1.default.createElement(contexts_1.
|
|
445
|
-
react_1.default.createElement(
|
|
437
|
+
(0, react_dom_1.render)(react_1.default.createElement(ShadowDomContextProvider_1.ShadowDomContextProvider, { value: engine.getShadowDomContextValue() },
|
|
438
|
+
react_1.default.createElement(contexts_1.BookingEngineContextWrapper, { engine: engine },
|
|
439
|
+
react_1.default.createElement(react_router_dom_1.HashRouter, { future: {
|
|
440
|
+
v7_startTransition: false,
|
|
441
|
+
v7_relativeSplatPath: false,
|
|
442
|
+
} },
|
|
443
|
+
react_1.default.createElement(NotificationContext_1.NotificationContextWrapper, null,
|
|
444
|
+
react_1.default.createElement(ErrorContext_1.ErrorContextWrapper, null,
|
|
445
|
+
react_1.default.createElement(contexts_1.CompanyContextWrapper, { configCompany: engine.getConfig().company },
|
|
446
|
+
react_1.default.createElement(contexts_1.BasketContextWrapper, null,
|
|
447
|
+
react_1.default.createElement(InlineRoomMiniEngineElement, { engine: engine })))))))), container);
|
|
446
448
|
};
|
|
447
449
|
exports.renderInlineRoomMiniEngineElement = renderInlineRoomMiniEngineElement;
|
|
448
450
|
const GuestSelectorCustom = ({ maxAdults, maxChildren, maxInfants = 10, defaultValue, onChange, disableChild, showInfants, disableRoom, applyButton, promoCodeConfig, row, }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineRoomMiniEngineElement.js","sourceRoot":"/","sources":["src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BasketContextWrapper, BookingEngineContext, BookingEngineContextWrapper, CompanyContext, CompanyContextWrapper } from '@frontend/contexts';\nimport { useCurrentHotel, useEvent } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport { ErrorContextWrapper } from 'contexts/ErrorContext';\nimport { NotificationContextWrapper } from 'contexts/NotificationContext';\nimport dayjs from 'dayjs';\nimport React, { useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { render } from 'react-dom';\nimport { useTranslation } from 'react-i18next';\nimport { HashRouter } from 'react-router-dom';\nimport useMeasure from 'react-use-measure';\nimport { Translation } from 'translations/Translation';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport API from '@/api/BookingAPI';\nimport BEButton from '@/components/generic/BEButton';\nimport { BookingWizardOnBooking } from '@/components/generic/BookingWizard/BookingWizardContext';\nimport { BookNowPayLaterInfoBlock } from '@/components/generic/BookNowPayLaterInfoBlock';\nimport FloatingDatePicker from '@/components/generic/date/FloatingDatePicker';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport LargeLoader from '@/components/generic/loader/LargeLoader';\nimport NumberIncrement from '@/components/generic/NumberIncrement';\nimport { Overlay } from '@/components/generic/Overlay/Overlay';\nimport PromoCodeInput from '@/components/generic/PromoCodeInput';\nimport { IDefaultSelectOption, Select } from '@/components/generic/Select/Select';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport RatesNotFoundBlock from '@/components/steps/room/RatesNotFoundBlock';\nimport RoomRates from '@/components/steps/room/roomDetails/roomRates/RoomRates';\nimport type { InlineRoomMiniEngine } from '@/engines/InlineRoomMiniEngine/InlineRoomMiniEngine';\nimport { RoomListSearchEvent } from '@/events/actions/RoomListSearchEvent';\nimport { useSignedInMember } from '@/hooks/useSignedInMember';\nimport BasketRow, { EPromoCodeStatus } from '@/models/BasketRow';\nimport { Room } from '@/models/Room/Room';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport { RoomListSearch } from '@/models/RoomListSearch';\nimport { SearchParameters } from '@/models/SearchParameters';\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport FeaturedPromoFeature from '@/providers/feature/FeaturedPromoFeature';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport { Color } from '@/util/Color';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport StringHelper from '@/util/StringHelper';\n\nimport styles from './InlineRoomMiniEngine.module.scss';\n\nexport interface InlineRoomMiniEngineElementProps {\n engine: InlineRoomMiniEngine;\n}\n\nexport default function InlineRoomMiniEngineElement(props: InlineRoomMiniEngineElementProps) {\n const { layout = 'default', policy, priceDescription, showInfants = false, maxInfants } = props.engine.getConfig();\n const isCardLayout = layout === 'card';\n\n const { hotel } = useCurrentHotel();\n\n const { memberNumber } = useSignedInMember();\n\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n\n const row = basketContext.currentBasketRows[0];\n const [isLoading, setLoading] = useState(true);\n const [rooms, setRooms] = useState<Room[]>([]);\n\n const [isPromoModalOpen, setIsPromoModalOpen] = useState(false);\n\n const [featuredRates, setFeaturedRates] = useState<RoomRate[]>([]);\n const [standardRates, setStandardRates] = useState<RoomRate[]>([]);\n\n const [promoCode, setPromoCode] = useState(row?.getPromoCode());\n\n const { t } = useTranslation();\n\n const [ref, bounds] = useMeasure();\n const thisElement = React.useRef<HTMLDivElement | null>(null);\n\n const { raise } = useEvent();\n\n const promoCodeTooltip = row?.getPromoCodeTooltip(t, Translation) || '';\n\n const didInitialEagerFetchRef = useRef(false);\n\n useEffect(() => {\n if (!row) {\n basketContext.addBasketRow(new BasketRow());\n return;\n }\n\n // Filters availability results by the provided room code.\n row.setEnableRoomCodeFilter(true);\n row.setRoomCode(props.engine.getRoomCode());\n }, [row, props.engine]);\n\n useEffect(() => {\n if (!row?.getStartDate() || !row?.getEndDate()) {\n return;\n }\n\n fetchAvailability();\n }, [\n row?.getStartDate()?.format('YYYY-MM-DD'),\n row?.getEndDate()?.format('YYYY-MM-DD'),\n row?.getAdults(),\n row?.getChildren(),\n row?.getPromoCode(),\n memberNumber,\n hotel?.hotelID,\n props.engine.getRoomCode(),\n ]);\n\n useEffect(() => {\n if (!(rooms && rooms.length > 0)) return;\n\n const room = rooms[0];\n\n let nonPromoRates: RoomRate[] = [];\n const toSetFeaturedRate: RoomRate[] = [];\n\n if (FeaturedPromoFeature.isActive()) {\n for (const currentRate of room.getRates()) {\n if (currentRate.promoCode?.toLowerCase() === basketContext.selectedBasketRow?.getPromoCode()?.toLowerCase()) {\n toSetFeaturedRate.unshift(currentRate);\n } else {\n nonPromoRates.push(currentRate);\n }\n }\n\n if (toSetFeaturedRate.length > 0) {\n setFeaturedRates(toSetFeaturedRate);\n }\n } else {\n nonPromoRates = room.getRates();\n }\n\n try {\n const search: SearchParameters = {\n checkInTime: row?.getStartDate()?.format('YYYY-M-D'),\n checkOutTime: row?.getEndDate()?.format('YYYY-M-D'),\n numAdults: row?.getAdults(),\n numChildren: row?.getChildren(),\n numRooms: 1,\n promoCode: promoCode,\n roomCode: props.engine.getRoomCode(),\n };\n if (showInfants) {\n search.numInfants = row?.getInfants();\n }\n\n const eventRooms: RoomListSearch[] =\n rooms?.map((room) => {\n const { name, code } = room;\n\n const foundRoom: RoomListSearch = {\n name: name as string,\n code: code as string,\n lowestPrice: room.getLowestPrice(),\n highestPrice: room.getHighestPrice(),\n currency: ccx.currentCurrency,\n\n rates:\n room.getRates()?.map((rate) => {\n const { name, code } = rate;\n return {\n name,\n code,\n\n price: {\n averagePrice: rate.getAveragePrice(),\n totalPrice: rate.getTotalPrice(),\n currency: ccx.currentCurrency,\n },\n };\n }) ?? [],\n };\n\n return foundRoom;\n }) ?? [];\n\n const event = new RoomListSearchEvent(search, eventRooms);\n raise(event);\n } catch (ex) {\n console.warn(ex);\n }\n\n setStandardRates(nonPromoRates);\n }, [rooms]);\n\n useEffect(() => {\n if (hotel?.colors) {\n // Do this manually as Guide Step manages this for Fullpage.\n RoomstayThemeEngine.changeTheme(hotel.colors);\n }\n }, [hotel, hotel?.colors]);\n\n const updatePeopleValues = ({ adults, children, infants }: { adults?: number; children?: number; infants?: number; promoCode?: string }) => {\n if (adults && adults !== row.getAdults()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setAdults(adults);\n }\n\n if ((children || children === 0) && children !== row.getChildren()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setChildren(children);\n }\n\n if ((infants || infants === 0) && infants !== row.getInfants()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setInfants(infants);\n }\n\n basketContext.updateBasketRow(row);\n };\n\n const updateDateValues = (startDate: dayjs.Dayjs, endDate: dayjs.Dayjs) => {\n if (startDate && endDate) {\n row.setStartDate(startDate);\n row.setEndDate(endDate);\n\n basketContext.updateBasketRow(row, false);\n }\n };\n\n if (!row?.getArrivalDate() && !row?.getDepartureDate()) {\n row?.setStartDate(dayjs().add(7, 'day'));\n row?.setEndDate(dayjs().add(8, 'day'));\n }\n\n const isCompact = bounds.width < 1000 ? '--compact' : '';\n\n const fetchAvailability = async () => {\n // Only eager search on the initial load\n const eager = !didInitialEagerFetchRef.current;\n didInitialEagerFetchRef.current = true;\n\n try {\n setLoading(true);\n\n const allRooms = await API.Availability.fetchAvailabilityData(row, hotel?.hotelID as string, memberNumber, false, eager);\n\n if (allRooms) {\n setRooms(allRooms.filter((room) => room.isAvailable() && room.code === props.engine.getRoomCode()));\n }\n } finally {\n setLoading(false);\n }\n };\n const getButtonLabelHandler = () => {\n return t(Translation.Misc.BookNow);\n };\n\n const updateNumberOfAdultsOnChange = (value: string) => {\n updatePeopleValues({ adults: +value });\n };\n const updateNumberOfChildrenOnChange = (value: string) => {\n updatePeopleValues({ children: +value });\n };\n const updateNumberOfInfantsOnChange = (value: string) => {\n updatePeopleValues({ infants: +value });\n };\n\n const defaultGuestValue: BookingWizardOnBooking['guests'] = {\n adults: row?.getAdults() ?? 1,\n children: row?.getChildren() ?? 0,\n infants: 0,\n room: 1,\n };\n\n const updatePromoCode = (code: string) => {\n DataLayer.instance.sendInteraction('Promo Code updated', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n\n if (row) {\n row.setPromoCode(code);\n basketContext.updateBasketRow(row);\n\n if (code) {\n setIsPromoModalOpen(false);\n }\n }\n };\n\n const onAddToBasketOverrideHandler = (rate: RoomRate) => {\n row.setRate(rate);\n basketContext.updateBasketRow(row);\n DataLayer.instance.sendRoomRateAddToCart(rate, row.getNumberOfDays(), row.getStartDate(), row.getEndDate(), row.getPreUpsellRoomRate());\n\n const session = props.engine.getSessionProvider();\n session\n .updateSessionAsync({\n step: StepConfirmation.getName(), // TODO:\n })\n .then(() => {\n // TODO: Remove this URL coupling (can we get the hotel's checkout URL from Hotel in database instead?)\n // Allow override via window.RoomstayCheckoutUrlOverride (e.g., '/checkout/?park=ParkName')\n const checkoutUrl = (window as any).RoomstayCheckoutUrlOverride ?? hotel?.checkoutUrl ?? '/checkout/';\n\n window.open(`${checkoutUrl}#${StepConfirmation.getStepUrl()}?session=${session.getCurrentSessionID()}`, '_self');\n });\n };\n const openPromoModalOnClick = () => {\n setIsPromoModalOpen(true);\n };\n const setPromoCodeOnClose = () => {\n setPromoCode(row?.getPromoCode());\n setIsPromoModalOpen(false);\n };\n const cancelPromoPopupOnClick = () => {\n DataLayer.instance.sendInteraction('Cancel Promo Popup', InteractionType.BUTTON, InteractionStep.ROOMS);\n setIsPromoModalOpen(false);\n };\n\n const changePromoCode = (val: any) => {\n updatePromoCode(val);\n };\n\n const maxOccupancy = hotel?.maxOccupancy ?? 1;\n\n const DatePickerSelector = () => {\n const inner = () => {\n if (isCardLayout) {\n return (\n <div className={classNames('u-cursor-pointer', styles['rs-inline-filter-item-dates-inner'])}>\n <div className={classNames(styles['card'])}>\n <div className={styles['image']}>\n <Icon icon={IconType.Calendar} />\n </div>\n <div className={styles['content']}>\n <Text className={styles['title']} type={TextType.Body}>\n {t(Translation.Misc.CheckIn)}\n </Text>\n <Text className={styles['sub-title']} type={TextType.Body} color={Color.Navy}>\n {row?.getArrivalDate() ? row.getArrivalDate() : t(Translation.Misc.CheckInPlaceHolder)}\n </Text>\n </div>\n </div>\n <div className={classNames(styles['card'])}>\n <div className={styles['image']}>\n <Icon icon={IconType.Calendar} />\n </div>\n <div className={styles['content']}>\n <Text className={styles['title']} type={TextType.Body}>\n {t(Translation.Misc.CheckOut)}\n </Text>\n <Text className={styles['sub-title']}>{row?.getDepartureDate() ? row.getDepartureDate() : t(Translation.Misc.CheckOutPlaceHolder)}</Text>\n </div>\n </div>\n </div>\n );\n } else {\n return (\n <div className=\"u-flex align-items-center justify-content-center u-w-100@xl- u-cursor-pointer\">\n <Text color={row?.getArrivalDate() ? Color.Accent : Color.Graphite} className=\"u-mw-75 u-align-center\" bold={!!row?.getArrivalDate()}>\n <span>{row?.getArrivalDate() ? row.getArrivalDate() : 'Arrival Date'}</span>\n </Text>\n <Icon icon={IconType.ArrowRight2} />\n <Text color={row?.getDepartureDate() ? Color.Accent : Color.Graphite} className=\"u-marg-right u-mw-75 u-align-center\" bold={!!row?.getDepartureDate()}>\n <span>{row?.getDepartureDate() ? row.getDepartureDate() : 'Departure Date'}</span>\n </Text>\n </div>\n );\n }\n };\n\n return (\n <FloatingDatePicker\n startDate={row?.getStartDate()}\n selectedDateChanged={updateDateValues}\n className={classNames('rs-inline-filter-item-dates', {\n 'u-w-100@xl- room-builder-progress--value u-marg-left--none ': !isCardLayout,\n [styles['rs-inline-filter-item-dates']]: isCardLayout,\n })}\n roomCode={props.engine.getRoomCode()}\n >\n <Tooltip title={t(Translation.Step.Date.SelectArrivalAndDepartureDatesByClickingHere)} wrapperClasses=\"u-w-100@xl-\">\n {inner()}\n </Tooltip>\n </FloatingDatePicker>\n );\n };\n\n const renderGuestSelector = () => {\n if (isCardLayout) {\n const numChildren = row?.getChildren?.() || 0;\n const maxAdults = maxOccupancy - numChildren;\n const maxChildren = maxOccupancy + 1 - (row?.getAdults?.() || 0);\n\n return (\n <GuestSelectorCustom\n maxAdults={maxAdults}\n maxChildren={maxChildren}\n maxInfants={maxInfants}\n onChange={(newValue) => {\n updatePeopleValues({\n adults: +newValue.adults,\n children: +newValue.children,\n });\n }}\n disableChild={false}\n showInfants={showInfants}\n disableRoom\n applyButton={false}\n defaultValue={defaultGuestValue}\n promoCodeConfig={{\n promoCode: basketContext.selectedBasketRow?.getPromoCode(),\n setPromoCode,\n onChange: changePromoCode,\n valid: basketContext.selectedBasketRow?.getPromoCodeStatus() !== 'new' ? basketContext.selectedBasketRow?.getPromoCodeStatus() === 'valid' : undefined,\n }}\n row={row}\n />\n );\n } else {\n const maxInfantsNum = !!maxInfants ? maxInfants + 1 : maxOccupancy + 1 - (row?.getAdults() ? row.getAdults() : 0);\n return (\n <>\n <Tooltip title={t(Translation.Step.Date.UpdateAdults)} wrapperClasses=\"u-w-100@xl- rs-inline-filter-item-adult\">\n <div className=\"room-builder-progress--value --mw-l u-flex justify-content-center \">\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={[...Array(maxOccupancy - (row?.getChildren() ? row.getChildren() : 0))].map((v: any, value: number) => {\n value += 1;\n return {\n text: StringHelper.pluralWithDictAndCount(value, Translation.Step.Date.Adult, t),\n value: value.toString(),\n };\n })}\n value={row?.getAdults()?.toString()}\n onChange={updateNumberOfAdultsOnChange}\n keyName=\"value\"\n labelName=\"text\"\n />\n </div>\n </Tooltip>\n <Tooltip title={t(Translation.Step.Date.UpdateChildren)} wrapperClasses=\"u-w-100@xl- rs-inline-filter-item-children\">\n <div className=\"room-builder-progress--value --mw-l u-flex justify-content-center\">\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={[...Array(maxOccupancy + 1 - (row?.getAdults() ? row.getAdults() : 0))].map((v: any, value: number) => {\n return {\n text: StringHelper.pluralWithDictAndCount(value, Translation.Step.Date.Child, t),\n value: value.toString(),\n };\n })}\n value={row?.getChildren()?.toString()}\n onChange={updateNumberOfChildrenOnChange}\n keyName=\"value\"\n labelName=\"text\"\n />\n </div>\n </Tooltip>\n {showInfants ? (\n <Tooltip title={t(Translation.Step.Date.UpdateInfants)} wrapperClasses=\"u-w-100@xl- rs-inline-filter-item-infants\">\n <div className=\"room-builder-progress--value --mw-l u-flex justify-content-center\">\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={[...Array(maxInfantsNum)].map((v: any, value: number) => {\n return {\n text: StringHelper.pluralWithDictAndCount(value, Translation.Step.Date.Infant, t),\n value: value.toString(),\n };\n })}\n value={row?.getInfants()?.toString()}\n onChange={updateNumberOfInfantsOnChange}\n keyName=\"value\"\n labelName=\"text\"\n />\n </div>\n </Tooltip>\n ) : (\n <></>\n )}\n </>\n );\n }\n };\n return useMemo(\n () => (\n <>\n <div\n className={classNames(`room-builder-progress ${isCompact} rs-inline-container`, {\n [styles['rs-inline-container']]: isCardLayout,\n [styles['rs-inline-container--card-layout']]: isCardLayout,\n })}\n >\n <div\n className={classNames('rs-inline-filter-container', {\n 'u-flex w-100 flex-wrap room-builder-progress--item --current': !isCardLayout,\n [styles['rs-inline-filter-container']]: isCardLayout,\n })}\n ref={ref}\n >\n <div\n className={classNames('rs-inline-filter-inner', {\n 'u-flex u-flex-align-center flex-wrap flex-row u-w-100@xl-': !isCardLayout,\n [styles['rs-inline-filter-inner']]: isCardLayout,\n })}\n >\n <DatePickerSelector />\n {renderGuestSelector()}\n\n <Tooltip\n title={promoCodeTooltip}\n wrapperClasses={classNames('u-w-100@xl- rs-inline-filter-item-promo', {\n [styles['rs-inline-filter-item-promo']]: isCardLayout,\n })}\n >\n <div className=\"room-builder-progress--value u-cursor-pointer\" ref={thisElement} onClick={openPromoModalOnClick}>\n <div className=\"u-flex align-items-center justify-content-center u-w-100@xl-\">\n <Text className=\"u-pad-right--light\" type={TextType.Body} color={row?.getPromoCode() ? row?.getPromoCodeColour() : Color.Navy}>\n {row?.getPromoCode() ? row?.getPromoCode() : 'Promo Code'}\n </Text>\n <Icon icon={IconType.Dropdown} color={Color.DarkGrey} />\n </div>\n </div>\n </Tooltip>\n <Overlay open={isPromoModalOpen} container={RoomstayThemeEngine.EngineContainer} followElement={thisElement.current} onClose={setPromoCodeOnClose}>\n <div className=\"u-pad--heavy\">\n <div>\n <PromoCodeInput\n value={basketContext.selectedBasketRow?.getPromoCode()}\n onChange={changePromoCode}\n valid={\n basketContext.selectedBasketRow?.getPromoCodeStatus() !== EPromoCodeStatus.New\n ? basketContext.selectedBasketRow?.getPromoCodeStatus() === EPromoCodeStatus.Valid\n : undefined\n }\n row={basketContext.selectedBasketRow}\n />\n </div>\n\n <div className=\"u-flex justify-content-end align-items-center u-marg-top\">\n <BEButton isText size=\"small\" onClick={cancelPromoPopupOnClick}>\n {t(Translation.Misc.Cancel)}\n </BEButton>\n </div>\n </div>\n </Overlay>\n </div>\n <div\n className={classNames(`u-flex flex-xl-nowrap flex-row rs-inline-filter-button`, {\n 'w-100': isCompact,\n [styles['rs-inline-filter-button']]: isCardLayout,\n })}\n >\n <BEButton filled primary isLoading={isLoading} wide={isCompact !== ''} onClick={() => fetchAvailability()}>\n {t(Translation.Misc.CheckRates)}\n </BEButton>\n </div>\n </div>\n <div\n className={classNames('u-border-rounded rs-inline-content', {\n [styles['rs-inline-content']]: isCardLayout,\n })}\n >\n {!isLoading ? (\n <AutoAutoHeight open={!isLoading}>\n <>\n <BookNowPayLaterInfoBlock />\n {rooms.length > 0 ? (\n <RoomRates\n classNames={classNames('rs-inline-content-list', {\n [styles['rs-inline-content-list']]: isCardLayout,\n })}\n featuredRates={featuredRates}\n rates={standardRates}\n roomCode={rooms[0].code as string}\n getButtonLabel={getButtonLabelHandler}\n onAddToBasketOverride={onAddToBasketOverrideHandler}\n isCardLayout={isCardLayout}\n policy={policy}\n priceDescription={priceDescription}\n />\n ) : (\n <RatesNotFoundBlock />\n )}\n </>\n </AutoAutoHeight>\n ) : (\n <LargeLoader />\n )}\n </div>\n </div>\n </>\n ),\n [isCompact, isLoading, rooms, basketContext.currentBasketRows, isPromoModalOpen, hotel, standardRates]\n );\n}\n\nexport const renderInlineRoomMiniEngineElement = (container: Element, engine: InlineRoomMiniEngine) => {\n render(\n <BookingEngineContextWrapper engine={engine}>\n <HashRouter\n future={{\n v7_startTransition: false,\n v7_relativeSplatPath: false,\n }}\n >\n <NotificationContextWrapper>\n <ErrorContextWrapper>\n <CompanyContextWrapper configCompany={engine.getConfig().company}>\n <BasketContextWrapper>\n <InlineRoomMiniEngineElement engine={engine} />\n </BasketContextWrapper>\n </CompanyContextWrapper>\n </ErrorContextWrapper>\n </NotificationContextWrapper>\n </HashRouter>\n </BookingEngineContextWrapper>,\n container\n );\n};\n\nexport const GuestSelectorCustom = ({\n maxAdults,\n maxChildren,\n maxInfants = 10,\n defaultValue,\n onChange,\n disableChild,\n showInfants,\n disableRoom,\n applyButton,\n promoCodeConfig,\n row,\n}: {\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n defaultValue?: { adults?: number; children?: number; infants?: number; room?: number };\n onChange?: (params: { adults: number; children: number; infants: number; room: number }) => void;\n disableChild?: boolean;\n showInfants?: boolean;\n disableRoom?: boolean;\n applyButton?: boolean;\n promoCodeConfig?: {\n promoCode: string;\n setPromoCode: React.Dispatch<React.SetStateAction<string>>;\n onChange: (val: any) => void;\n valid?: boolean;\n };\n row: BasketRow;\n}) => {\n const { t } = useTranslation();\n const ref = React.useRef(null);\n const targetRef = useRef(null);\n\n const [adults, setAdults] = useState(defaultValue?.adults ?? 1);\n const [children, setChildren] = useState(defaultValue?.children ?? 0);\n const [infants, setInfants] = useState(defaultValue?.infants ?? 0);\n const [room, setRoom] = useState(defaultValue?.room ?? 1);\n const [open, setOpen] = useState(false);\n\n const prevOpenRef = useRef(open);\n\n useEffect(() => {\n const wasOpen = prevOpenRef.current;\n prevOpenRef.current = open;\n\n if (wasOpen && !open) {\n // onChange is only called when the modal is closed\n onChange?.({ adults, children, infants, room });\n }\n }, [open, adults, children, infants, room, onChange]);\n\n const onChangeAdults = (newValue: number) => {\n setAdults(newValue);\n };\n const onChangeChildren = (newValue: number) => {\n setChildren(newValue);\n };\n const onChangeInfants = (newValue: number) => {\n setInfants(newValue);\n };\n\n const onChangeRoom = (newValue: number) => {\n setRoom(newValue);\n };\n\n const inner = () => {\n return (\n <div className={styles['popper--box']}>\n <div className={styles['popper--content']} ref={ref}>\n <div className={styles['row-wrapper']}>\n <div className={styles.row}>\n <Text className={styles['title']} type={TextType.Small}>\n {StringHelper.plural(adults, 'Adult', t)}\n </Text>\n <NumberIncrement number={adults} min={1} max={maxAdults} onChange={(value: number) => onChangeAdults(value)} textSize={TextType.Small} />\n </div>\n </div>\n {disableChild ? null : (\n <div className={styles['row-wrapper']}>\n <div className={styles.divider} />\n <div className={styles.row}>\n <Text className={styles['title']} type={TextType.Small}>\n {StringHelper.plural(children, 'Child', t)}\n </Text>\n <NumberIncrement number={children} min={0} max={maxChildren} onChange={(value: number) => onChangeChildren(value)} textSize={TextType.Small} />\n </div>\n </div>\n )}\n {showInfants ? (\n <div className={styles['row-wrapper']}>\n <div className={styles.divider} />\n <div className={styles.row}>\n <Text className={styles['title']} type={TextType.Small}>\n {StringHelper.plural(infants, 'Infant', t)}\n </Text>\n <NumberIncrement number={infants} min={0} onChange={(value: number) => onChangeInfants(value)} textSize={TextType.Small} />\n </div>\n\n <div className={styles.divider} />\n </div>\n ) : null}\n {disableRoom ? null : (\n <div className={styles['row-wrapper']}>\n <div className={styles.divider} />\n <div className={styles.row}>\n <Text className={styles['title']} type={TextType.Small}>\n {StringHelper.plural(room, 'Room', t)}\n </Text>\n <NumberIncrement number={room} min={1} max={10} onChange={(value: number) => onChangeRoom(value)} textSize={TextType.Small} />\n </div>\n </div>\n )}\n {promoCodeConfig ? (\n <div className={styles['row-wrapper']}>\n <div className={styles.divider} />\n <div className={classNames(styles.row)}>\n <Text className={styles['title']} type={TextType.Small}>\n {t(Translation.Misc.Promocode)}\n </Text>\n <PromoCodeInput\n className={styles.promo}\n value={promoCodeConfig.promoCode}\n onChange={promoCodeConfig.onChange}\n valid={promoCodeConfig.valid}\n row={row}\n />\n </div>\n </div>\n ) : null}\n </div>\n </div>\n );\n };\n\n const content = () => {\n return (\n <Overlay\n offset={[0, 6]}\n usePortal={false}\n followElement={targetRef.current}\n placement=\"top-start\"\n strategy=\"absolute\"\n open={open}\n onClose={() => setOpen?.(false)}\n className={styles.popper}\n hideStyles\n >\n {inner()}\n </Overlay>\n );\n };\n\n const getValueAsText = () => {\n const parts = [StringHelper.pluralWithCount(adults, 'Adult', t)];\n\n if (children > 0) {\n parts.push(StringHelper.pluralWithCount(children, 'Child', t));\n }\n\n if (infants > 0) {\n parts.push(StringHelper.pluralWithCount(infants, 'Infant', t));\n }\n\n return parts.join(' - ');\n };\n\n return (\n <div ref={targetRef} className={classNames('u-cursor-pointer', 'rs-inline-filter-item-guest', styles['rs-inline-filter-item-guest'])}>\n <div className={classNames(styles['card'])} onClick={() => setOpen?.(!open)}>\n <div className={styles['image']}>\n <Icon icon={IconType.People} />\n </div>\n <div className={styles['content']}>\n <Text className={styles['title']} type={TextType.Body}>\n {t(Translation.Misc.Guests)}\n </Text>\n <Text className={styles['sub-title']} type={TextType.Body} color={Color.Navy}>\n {getValueAsText()}\n </Text>\n </div>\n\n <Icon icon={IconType.Dropdown} />\n </div>\n {content()}\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"InlineRoomMiniEngineElement.js","sourceRoot":"/","sources":["src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDA,8CAwhBC;AA3kBD,iDAAmK;AACnK,2CAA4D;AAC5D,4DAAoC;AACpC,wDAA4D;AAC5D,sEAA0E;AAC1E,kDAA0B;AAC1B,+CAAgF;AAChF,yCAAmC;AACnC,iDAA+C;AAC/C,uDAA8C;AAC9C,0EAA2C;AAC3C,0DAAuD;AAEvD,iFAAyD;AACzD,kEAAmC;AACnC,6EAAqD;AAErD,4FAAyF;AACzF,sGAA8E;AAC9E,uEAAgE;AAChE,0FAAkE;AAClE,2FAAmE;AACnE,kEAA+D;AAC/D,yFAAiE;AACjE,+DAAkF;AAClF,kEAA2D;AAC3D,mFAA2D;AAC3D,oGAA4E;AAC5E,wGAAgF;AAChF,mGAAgG;AAEhG,8EAA2E;AAC3E,iEAA8D;AAC9D,gEAAiE;AAKjE,uGAA+E;AAC/E,oGAA4E;AAC5E,0FAAkE;AAClE,wCAAqC;AACrC,8DAA+E;AAC/E,uEAA+C;AAE/C,0GAAwD;AAMxD,SAAwB,2BAA2B,CAAC,KAAuC;;IACvF,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,WAAW,GAAG,KAAK,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IACnH,MAAM,YAAY,GAAG,MAAM,KAAK,MAAM,CAAC;IAEvC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAA,qCAAiB,GAAE,CAAC;IAE7C,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAC;IAEvC,MAAM,GAAG,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAS,EAAE,CAAC,CAAC;IAE/C,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAEhE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAa,EAAE,CAAC,CAAC;IACnE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAa,EAAE,CAAC,CAAC;IAEnE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,YAAY,EAAE,CAAC,CAAC;IAEhE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAA,2BAAU,GAAE,CAAC;IACnC,MAAM,WAAW,GAAG,eAAK,CAAC,MAAM,CAAwB,IAAI,CAAC,CAAC;IAE9D,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,gBAAQ,GAAE,CAAC;IAE7B,MAAM,gBAAgB,GAAG,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,mBAAmB,CAAC,CAAC,EAAE,yBAAW,CAAC,KAAI,EAAE,CAAC;IAExE,MAAM,uBAAuB,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAE9C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,aAAa,CAAC,YAAY,CAAC,IAAI,mBAAS,EAAE,CAAC,CAAC;YAC5C,OAAO;QACX,CAAC;QAED,0DAA0D;QAC1D,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAClC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAChD,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAExB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,YAAY,EAAE,CAAA,IAAI,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,UAAU,EAAE,CAAA,EAAE,CAAC;YAC7C,OAAO;QACX,CAAC;QAED,iBAAiB,EAAE,CAAC;IACxB,CAAC,EAAE;QACC,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,YAAY,EAAE,0CAAE,MAAM,CAAC,YAAY,CAAC;QACzC,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,UAAU,EAAE,0CAAE,MAAM,CAAC,YAAY,CAAC;QACvC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,SAAS,EAAE;QAChB,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,EAAE;QAClB,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,YAAY,EAAE;QACnB,YAAY;QACZ,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO;QACd,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE;KAC7B,CAAC,CAAC;IAEH,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACX,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAAE,OAAO;QAEzC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEtB,IAAI,aAAa,GAAe,EAAE,CAAC;QACnC,MAAM,iBAAiB,GAAe,EAAE,CAAC;QAEzC,IAAI,8BAAoB,CAAC,QAAQ,EAAE,EAAE,CAAC;YAClC,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACxC,IAAI,CAAA,MAAA,WAAW,CAAC,SAAS,0CAAE,WAAW,EAAE,OAAK,MAAA,MAAA,aAAa,CAAC,iBAAiB,0CAAE,YAAY,EAAE,0CAAE,WAAW,EAAE,CAAA,EAAE,CAAC;oBAC1G,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAC3C,CAAC;qBAAM,CAAC;oBACJ,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACpC,CAAC;YACL,CAAC;YAED,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;YACxC,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,CAAC;YACD,MAAM,MAAM,GAAqB;gBAC7B,WAAW,EAAE,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,YAAY,EAAE,0CAAE,MAAM,CAAC,UAAU,CAAC;gBACpD,YAAY,EAAE,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,UAAU,EAAE,0CAAE,MAAM,CAAC,UAAU,CAAC;gBACnD,SAAS,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,SAAS,EAAE;gBAC3B,WAAW,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,EAAE;gBAC/B,QAAQ,EAAE,CAAC;gBACX,SAAS,EAAE,SAAS;gBACpB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE;aACvC,CAAC;YACF,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,CAAC,UAAU,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,UAAU,EAAE,CAAC;YAC1C,CAAC;YAED,MAAM,UAAU,GACZ,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;;gBAChB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;gBAE5B,MAAM,SAAS,GAAmB;oBAC9B,IAAI,EAAE,IAAc;oBACpB,IAAI,EAAE,IAAc;oBACpB,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;oBAClC,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE;oBACpC,QAAQ,EAAE,GAAG,CAAC,eAAe;oBAE7B,KAAK,EACD,MAAA,MAAA,IAAI,CAAC,QAAQ,EAAE,0CAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;wBAC1B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;wBAC5B,OAAO;4BACH,IAAI;4BACJ,IAAI;4BAEJ,KAAK,EAAE;gCACH,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE;gCACpC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;gCAChC,QAAQ,EAAE,GAAG,CAAC,eAAe;6BAChC;yBACJ,CAAC;oBACN,CAAC,CAAC,mCAAI,EAAE;iBACf,CAAC;gBAEF,OAAO,SAAS,CAAC;YACrB,CAAC,CAAC,mCAAI,EAAE,CAAC;YAEb,MAAM,KAAK,GAAG,IAAI,yCAAmB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAC1D,KAAK,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;QAED,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAE,CAAC;YAChB,4DAA4D;YAC5D,6BAAmB,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClD,CAAC;IACL,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAC,CAAC,CAAC;IAE3B,MAAM,kBAAkB,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAgF,EAAE,EAAE;QACvI,IAAI,MAAM,IAAI,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC;YACvC,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,2BAAe,CAAC,YAAY,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;YAClG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,QAAQ,KAAK,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;YACjE,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,2BAAe,CAAC,YAAY,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;YAClG,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,OAAO,KAAK,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;YAC7D,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,2BAAe,CAAC,YAAY,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;YAClG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QAED,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,SAAsB,EAAE,OAAoB,EAAE,EAAE;QACtE,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;YACvB,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC5B,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAExB,aAAa,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,cAAc,EAAE,CAAA,IAAI,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,gBAAgB,EAAE,CAAA,EAAE,CAAC;QACrD,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,YAAY,CAAC,IAAA,eAAK,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QACzC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,UAAU,CAAC,IAAA,eAAK,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzD,MAAM,iBAAiB,GAAG,GAAS,EAAE;QACjC,wCAAwC;QACxC,MAAM,KAAK,GAAG,CAAC,uBAAuB,CAAC,OAAO,CAAC;QAC/C,uBAAuB,CAAC,OAAO,GAAG,IAAI,CAAC;QAEvC,IAAI,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,CAAC;YAEjB,MAAM,QAAQ,GAAG,MAAM,oBAAG,CAAC,YAAY,CAAC,qBAAqB,CAAC,GAAG,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAiB,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAEzH,IAAI,QAAQ,EAAE,CAAC;gBACX,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACxG,CAAC;QACL,CAAC;gBAAS,CAAC;YACP,UAAU,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACL,CAAC,CAAA,CAAC;IACF,MAAM,qBAAqB,GAAG,GAAG,EAAE;QAC/B,OAAO,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,MAAM,4BAA4B,GAAG,CAAC,KAAa,EAAE,EAAE;QACnD,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC;IACF,MAAM,8BAA8B,GAAG,CAAC,KAAa,EAAE,EAAE;QACrD,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC;IACF,MAAM,6BAA6B,GAAG,CAAC,KAAa,EAAE,EAAE;QACpD,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAqC;QACxD,MAAM,EAAE,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,SAAS,EAAE,mCAAI,CAAC;QAC7B,QAAQ,EAAE,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,EAAE,mCAAI,CAAC;QACjC,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,CAAC;KACV,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,EAAE;QACrC,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,oBAAoB,EAAE,2BAAe,CAAC,UAAU,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;QAE5G,IAAI,GAAG,EAAE,CAAC;YACN,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACvB,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAEnC,IAAI,IAAI,EAAE,CAAC;gBACP,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,4BAA4B,GAAG,CAAC,IAAc,EAAE,EAAE;QACpD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClB,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACnC,mBAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,eAAe,EAAE,EAAE,GAAG,CAAC,YAAY,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAExI,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAClD,OAAO;aACF,kBAAkB,CAAC;YAChB,IAAI,EAAE,0BAAgB,CAAC,OAAO,EAAE,EAAE,QAAQ;SAC7C,CAAC;aACD,IAAI,CAAC,GAAG,EAAE;;YACP,uGAAuG;YACvG,2FAA2F;YAC3F,MAAM,WAAW,GAAG,MAAA,MAAC,MAAc,CAAC,2BAA2B,mCAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,mCAAI,YAAY,CAAC;YAEtG,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,IAAI,0BAAgB,CAAC,UAAU,EAAE,YAAY,OAAO,CAAC,mBAAmB,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QACrH,CAAC,CAAC,CAAC;IACX,CAAC,CAAC;IACF,MAAM,qBAAqB,GAAG,GAAG,EAAE;QAC/B,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC;IACF,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC7B,YAAY,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,YAAY,EAAE,CAAC,CAAC;QAClC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,MAAM,uBAAuB,GAAG,GAAG,EAAE;QACjC,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,oBAAoB,EAAE,2BAAe,CAAC,MAAM,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;QACxG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,GAAQ,EAAE,EAAE;QACjC,eAAe,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAY,mCAAI,CAAC,CAAC;IAE9C,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC5B,MAAM,KAAK,GAAG,GAAG,EAAE;YACf,IAAI,YAAY,EAAE,CAAC;gBACf,OAAO,CACH,uCAAK,SAAS,EAAE,IAAA,oBAAU,EAAC,kBAAkB,EAAE,0CAAM,CAAC,mCAAmC,CAAC,CAAC;oBACvF,uCAAK,SAAS,EAAE,IAAA,oBAAU,EAAC,0CAAM,CAAC,MAAM,CAAC,CAAC;wBACtC,uCAAK,SAAS,EAAE,0CAAM,CAAC,OAAO,CAAC;4BAC3B,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,QAAQ,GAAI,CAC/B;wBACN,uCAAK,SAAS,EAAE,0CAAM,CAAC,SAAS,CAAC;4BAC7B,8BAAC,cAAI,IAAC,SAAS,EAAE,0CAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,eAAQ,CAAC,IAAI,IAChD,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CACzB;4BACP,8BAAC,cAAI,IAAC,SAAS,EAAE,0CAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,eAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,aAAK,CAAC,IAAI,IACvE,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,cAAc,EAAE,EAAC,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CACnF,CACL,CACJ;oBACN,uCAAK,SAAS,EAAE,IAAA,oBAAU,EAAC,0CAAM,CAAC,MAAM,CAAC,CAAC;wBACtC,uCAAK,SAAS,EAAE,0CAAM,CAAC,OAAO,CAAC;4BAC3B,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,QAAQ,GAAI,CAC/B;wBACN,uCAAK,SAAS,EAAE,0CAAM,CAAC,SAAS,CAAC;4BAC7B,8BAAC,cAAI,IAAC,SAAS,EAAE,0CAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,eAAQ,CAAC,IAAI,IAChD,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC1B;4BACP,8BAAC,cAAI,IAAC,SAAS,EAAE,0CAAM,CAAC,WAAW,CAAC,IAAG,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,gBAAgB,EAAE,EAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAQ,CACvI,CACJ,CACJ,CACT,CAAC;YACN,CAAC;iBAAM,CAAC;gBACJ,OAAO,CACH,uCAAK,SAAS,EAAC,+EAA+E;oBAC1F,8BAAC,cAAI,IAAC,KAAK,EAAE,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,cAAc,EAAE,EAAC,CAAC,CAAC,aAAK,CAAC,MAAM,CAAC,CAAC,CAAC,aAAK,CAAC,QAAQ,EAAE,SAAS,EAAC,wBAAwB,EAAC,IAAI,EAAE,CAAC,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,cAAc,EAAE,CAAA;wBAChI,4CAAO,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,cAAc,EAAE,EAAC,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,cAAc,CAAQ,CACzE;oBACP,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,WAAW,GAAI;oBACpC,8BAAC,cAAI,IAAC,KAAK,EAAE,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,gBAAgB,EAAE,EAAC,CAAC,CAAC,aAAK,CAAC,MAAM,CAAC,CAAC,CAAC,aAAK,CAAC,QAAQ,EAAE,SAAS,EAAC,qCAAqC,EAAC,IAAI,EAAE,CAAC,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,gBAAgB,EAAE,CAAA;wBACjJ,4CAAO,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,gBAAgB,EAAE,EAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAQ,CAC/E,CACL,CACT,CAAC;YACN,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,CACH,8BAAC,4BAAkB,IACf,SAAS,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,YAAY,EAAE,EAC9B,mBAAmB,EAAE,gBAAgB,EACrC,SAAS,EAAE,IAAA,oBAAU,EAAC,6BAA6B,EAAE;gBACjD,6DAA6D,EAAE,CAAC,YAAY;gBAC5E,CAAC,0CAAM,CAAC,6BAA6B,CAAC,CAAC,EAAE,YAAY;aACxD,CAAC,EACF,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE;YAEpC,8BAAC,iBAAO,IAAC,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC,EAAE,cAAc,EAAC,aAAa,IAC9G,KAAK,EAAE,CACF,CACO,CACxB,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,GAAG,EAAE;;QAC7B,IAAI,YAAY,EAAE,CAAC;YACf,MAAM,WAAW,GAAG,CAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,mDAAI,KAAI,CAAC,CAAC;YAC9C,MAAM,SAAS,GAAG,YAAY,GAAG,WAAW,CAAC;YAC7C,MAAM,WAAW,GAAG,YAAY,GAAG,CAAC,GAAG,CAAC,CAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,SAAS,mDAAI,KAAI,CAAC,CAAC,CAAC;YAEjE,OAAO,CACH,8BAAC,2BAAmB,IAChB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;oBACnB,kBAAkB,CAAC;wBACf,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM;wBACxB,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ;qBAC/B,CAAC,CAAC;gBACP,CAAC,EACD,YAAY,EAAE,KAAK,EACnB,WAAW,EAAE,WAAW,EACxB,WAAW,QACX,WAAW,EAAE,KAAK,EAClB,YAAY,EAAE,iBAAiB,EAC/B,eAAe,EAAE;oBACb,SAAS,EAAE,MAAA,aAAa,CAAC,iBAAiB,0CAAE,YAAY,EAAE;oBAC1D,YAAY;oBACZ,QAAQ,EAAE,eAAe;oBACzB,KAAK,EAAE,CAAA,MAAA,aAAa,CAAC,iBAAiB,0CAAE,kBAAkB,EAAE,MAAK,KAAK,CAAC,CAAC,CAAC,CAAA,MAAA,aAAa,CAAC,iBAAiB,0CAAE,kBAAkB,EAAE,MAAK,OAAO,CAAC,CAAC,CAAC,SAAS;iBACzJ,EACD,GAAG,EAAE,GAAG,GACV,CACL,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,MAAM,aAAa,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,SAAS,EAAE,EAAC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClH,OAAO,CACH;gBACI,8BAAC,iBAAO,IAAC,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,cAAc,EAAC,yCAAyC;oBAC3G,uCAAK,SAAS,EAAC,oEAAoE;wBAC/E,8BAAC,eAAM,IACH,cAAc,QACd,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,GAAG,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,EAAE,EAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,KAAa,EAAE,EAAE;gCAC3G,KAAK,IAAI,CAAC,CAAC;gCACX,OAAO;oCACH,IAAI,EAAE,sBAAY,CAAC,sBAAsB,CAAC,KAAK,EAAE,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;oCAChF,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;iCAC1B,CAAC;4BACN,CAAC,CAAC,EACF,KAAK,EAAE,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,SAAS,EAAE,0CAAE,QAAQ,EAAE,EACnC,QAAQ,EAAE,4BAA4B,EACtC,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,MAAM,GAClB,CACA,CACA;gBACV,8BAAC,iBAAO,IAAC,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,cAAc,EAAC,4CAA4C;oBAChH,uCAAK,SAAS,EAAC,mEAAmE;wBAC9E,8BAAC,eAAM,IACH,cAAc,QACd,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,SAAS,EAAE,EAAC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,KAAa,EAAE,EAAE;gCAC3G,OAAO;oCACH,IAAI,EAAE,sBAAY,CAAC,sBAAsB,CAAC,KAAK,EAAE,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;oCAChF,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;iCAC1B,CAAC;4BACN,CAAC,CAAC,EACF,KAAK,EAAE,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,EAAE,0CAAE,QAAQ,EAAE,EACrC,QAAQ,EAAE,8BAA8B,EACxC,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,MAAM,GAClB,CACA,CACA;gBACT,WAAW,CAAC,CAAC,CAAC,CACX,8BAAC,iBAAO,IAAC,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,cAAc,EAAC,2CAA2C;oBAC9G,uCAAK,SAAS,EAAC,mEAAmE;wBAC9E,8BAAC,eAAM,IACH,cAAc,QACd,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,KAAa,EAAE,EAAE;gCAC7D,OAAO;oCACH,IAAI,EAAE,sBAAY,CAAC,sBAAsB,CAAC,KAAK,EAAE,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;oCACjF,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;iCAC1B,CAAC;4BACN,CAAC,CAAC,EACF,KAAK,EAAE,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,UAAU,EAAE,0CAAE,QAAQ,EAAE,EACpC,QAAQ,EAAE,6BAA6B,EACvC,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,MAAM,GAClB,CACA,CACA,CACb,CAAC,CAAC,CAAC,CACA,6DAAK,CACR,CACF,CACN,CAAC;QACN,CAAC;IACL,CAAC,CAAC;IACF,OAAO,IAAA,eAAO,EACV,GAAG,EAAE;;QAAC,OAAA,CACF;YACI,uCACI,SAAS,EAAE,IAAA,oBAAU,EAAC,yBAAyB,SAAS,sBAAsB,EAAE;oBAC5E,CAAC,0CAAM,CAAC,qBAAqB,CAAC,CAAC,EAAE,YAAY;oBAC7C,CAAC,0CAAM,CAAC,kCAAkC,CAAC,CAAC,EAAE,YAAY;iBAC7D,CAAC;gBAEF,uCACI,SAAS,EAAE,IAAA,oBAAU,EAAC,4BAA4B,EAAE;wBAChD,8DAA8D,EAAE,CAAC,YAAY;wBAC7E,CAAC,0CAAM,CAAC,4BAA4B,CAAC,CAAC,EAAE,YAAY;qBACvD,CAAC,EACF,GAAG,EAAE,GAAG;oBAER,uCACI,SAAS,EAAE,IAAA,oBAAU,EAAC,wBAAwB,EAAE;4BAC5C,2DAA2D,EAAE,CAAC,YAAY;4BAC1E,CAAC,0CAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,YAAY;yBACnD,CAAC;wBAEF,8BAAC,kBAAkB,OAAG;wBACrB,mBAAmB,EAAE;wBAEtB,8BAAC,iBAAO,IACJ,KAAK,EAAE,gBAAgB,EACvB,cAAc,EAAE,IAAA,oBAAU,EAAC,yCAAyC,EAAE;gCAClE,CAAC,0CAAM,CAAC,6BAA6B,CAAC,CAAC,EAAE,YAAY;6BACxD,CAAC;4BAEF,uCAAK,SAAS,EAAC,+CAA+C,EAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,qBAAqB;gCAC3G,uCAAK,SAAS,EAAC,8DAA8D;oCACzE,8BAAC,cAAI,IAAC,SAAS,EAAC,oBAAoB,EAAC,IAAI,EAAE,eAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,YAAY,EAAE,EAAC,CAAC,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,aAAK,CAAC,IAAI,IACxH,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,YAAY,EAAE,EAAC,CAAC,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CACtD;oCACP,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAK,CAAC,QAAQ,GAAI,CACtD,CACJ,CACA;wBACV,8BAAC,iBAAO,IAAC,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,6BAAmB,CAAC,eAAe,EAAE,aAAa,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB;4BAC7I,uCAAK,SAAS,EAAC,cAAc;gCACzB;oCACI,8BAAC,wBAAc,IACX,KAAK,EAAE,MAAA,aAAa,CAAC,iBAAiB,0CAAE,YAAY,EAAE,EACtD,QAAQ,EAAE,eAAe,EACzB,KAAK,EACD,CAAA,MAAA,aAAa,CAAC,iBAAiB,0CAAE,kBAAkB,EAAE,MAAK,4BAAgB,CAAC,GAAG;4CAC1E,CAAC,CAAC,CAAA,MAAA,aAAa,CAAC,iBAAiB,0CAAE,kBAAkB,EAAE,MAAK,4BAAgB,CAAC,KAAK;4CAClF,CAAC,CAAC,SAAS,EAEnB,GAAG,EAAE,aAAa,CAAC,iBAAiB,GACtC,CACA;gCAEN,uCAAK,SAAS,EAAC,0DAA0D;oCACrE,8BAAC,kBAAQ,IAAC,MAAM,QAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAE,uBAAuB,IACzD,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CACpB,CACT,CACJ,CACA,CACR;oBACN,uCACI,SAAS,EAAE,IAAA,oBAAU,EAAC,wDAAwD,EAAE;4BAC5E,OAAO,EAAE,SAAS;4BAClB,CAAC,0CAAM,CAAC,yBAAyB,CAAC,CAAC,EAAE,YAAY;yBACpD,CAAC;wBAEF,8BAAC,kBAAQ,IAAC,MAAM,QAAC,OAAO,QAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,EAAE,IACpG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CACxB,CACT,CACJ;gBACN,uCACI,SAAS,EAAE,IAAA,oBAAU,EAAC,oCAAoC,EAAE;wBACxD,CAAC,0CAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,YAAY;qBAC9C,CAAC,IAED,CAAC,SAAS,CAAC,CAAC,CAAC,CACV,8BAAC,wBAAc,IAAC,IAAI,EAAE,CAAC,SAAS;oBAC5B;wBACI,8BAAC,mDAAwB,OAAG;wBAC3B,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAChB,8BAAC,mBAAS,IACN,UAAU,EAAE,IAAA,oBAAU,EAAC,wBAAwB,EAAE;gCAC7C,CAAC,0CAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,YAAY;6BACnD,CAAC,EACF,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAc,EACjC,cAAc,EAAE,qBAAqB,EACrC,qBAAqB,EAAE,4BAA4B,EACnD,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,gBAAgB,GACpC,CACL,CAAC,CAAC,CAAC,CACA,8BAAC,4BAAkB,OAAG,CACzB,CACF,CACU,CACpB,CAAC,CAAC,CAAC,CACA,8BAAC,qBAAW,OAAG,CAClB,CACC,CACJ,CACP,CACN,CAAA;KAAA,EACD,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,CAAC,CACzG,CAAC;AACN,CAAC;AAEM,MAAM,iCAAiC,GAAG,CAAC,SAAkB,EAAE,MAA4B,EAAE,EAAE;IAClG,IAAA,kBAAM,EACF,8BAAC,mDAAwB,IAAC,KAAK,EAAE,MAAM,CAAC,wBAAwB,EAAE;QAC9D,8BAAC,sCAA2B,IAAC,MAAM,EAAE,MAAM;YACvC,8BAAC,6BAAU,IACP,MAAM,EAAE;oBACJ,kBAAkB,EAAE,KAAK;oBACzB,oBAAoB,EAAE,KAAK;iBAC9B;gBAED,8BAAC,gDAA0B;oBACvB,8BAAC,kCAAmB;wBAChB,8BAAC,gCAAqB,IAAC,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO;4BAC5D,8BAAC,+BAAoB;gCACjB,8BAAC,2BAA2B,IAAC,MAAM,EAAE,MAAM,GAAI,CAC5B,CACH,CACN,CACG,CACpB,CACa,CACP,EAC3B,SAAS,CACZ,CAAC;AACN,CAAC,CAAC;AAxBW,QAAA,iCAAiC,qCAwB5C;AAEK,MAAM,mBAAmB,GAAG,CAAC,EAChC,SAAS,EACT,WAAW,EACX,UAAU,GAAG,EAAE,EACf,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,WAAW,EACX,WAAW,EACX,eAAe,EACf,GAAG,GAkBN,EAAE,EAAE;;IACD,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IAE/B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,mCAAI,CAAC,CAAC,CAAC;IAChE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,mCAAI,CAAC,CAAC,CAAC;IACtE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,mCAAI,CAAC,CAAC,CAAC;IACnE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,mCAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAExC,MAAM,WAAW,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IAEjC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QACpC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;QAE3B,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,mDAAmD;YACnD,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;IACL,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEtD,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAE,EAAE;QACxC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAE,EAAE;QAC1C,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC,CAAC;IACF,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,EAAE;QACzC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,EAAE;QACtC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,GAAG,EAAE;QACf,OAAO,CACH,uCAAK,SAAS,EAAE,0CAAM,CAAC,aAAa,CAAC;YACjC,uCAAK,SAAS,EAAE,0CAAM,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,GAAG;gBAC/C,uCAAK,SAAS,EAAE,0CAAM,CAAC,aAAa,CAAC;oBACjC,uCAAK,SAAS,EAAE,0CAAM,CAAC,GAAG;wBACtB,8BAAC,cAAI,IAAC,SAAS,EAAE,0CAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK,IACjD,sBAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CACrC;wBACP,8BAAC,yBAAe,IAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,eAAQ,CAAC,KAAK,GAAI,CACvI,CACJ;gBACL,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACnB,uCAAK,SAAS,EAAE,0CAAM,CAAC,aAAa,CAAC;oBACjC,uCAAK,SAAS,EAAE,0CAAM,CAAC,OAAO,GAAI;oBAClC,uCAAK,SAAS,EAAE,0CAAM,CAAC,GAAG;wBACtB,8BAAC,cAAI,IAAC,SAAS,EAAE,0CAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK,IACjD,sBAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CACvC;wBACP,8BAAC,yBAAe,IAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,eAAQ,CAAC,KAAK,GAAI,CAC7I,CACJ,CACT;gBACA,WAAW,CAAC,CAAC,CAAC,CACX,uCAAK,SAAS,EAAE,0CAAM,CAAC,aAAa,CAAC;oBACjC,uCAAK,SAAS,EAAE,0CAAM,CAAC,OAAO,GAAI;oBAClC,uCAAK,SAAS,EAAE,0CAAM,CAAC,GAAG;wBACtB,8BAAC,cAAI,IAAC,SAAS,EAAE,0CAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK,IACjD,sBAAY,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CACvC;wBACP,8BAAC,yBAAe,IAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,eAAQ,CAAC,KAAK,GAAI,CACzH;oBAEN,uCAAK,SAAS,EAAE,0CAAM,CAAC,OAAO,GAAI,CAChC,CACT,CAAC,CAAC,CAAC,IAAI;gBACP,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAClB,uCAAK,SAAS,EAAE,0CAAM,CAAC,aAAa,CAAC;oBACjC,uCAAK,SAAS,EAAE,0CAAM,CAAC,OAAO,GAAI;oBAClC,uCAAK,SAAS,EAAE,0CAAM,CAAC,GAAG;wBACtB,8BAAC,cAAI,IAAC,SAAS,EAAE,0CAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK,IACjD,sBAAY,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAClC;wBACP,8BAAC,yBAAe,IAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,eAAQ,CAAC,KAAK,GAAI,CAC5H,CACJ,CACT;gBACA,eAAe,CAAC,CAAC,CAAC,CACf,uCAAK,SAAS,EAAE,0CAAM,CAAC,aAAa,CAAC;oBACjC,uCAAK,SAAS,EAAE,0CAAM,CAAC,OAAO,GAAI;oBAClC,uCAAK,SAAS,EAAE,IAAA,oBAAU,EAAC,0CAAM,CAAC,GAAG,CAAC;wBAClC,8BAAC,cAAI,IAAC,SAAS,EAAE,0CAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK,IACjD,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAC3B;wBACP,8BAAC,wBAAc,IACX,SAAS,EAAE,0CAAM,CAAC,KAAK,EACvB,KAAK,EAAE,eAAe,CAAC,SAAS,EAChC,QAAQ,EAAE,eAAe,CAAC,QAAQ,EAClC,KAAK,EAAE,eAAe,CAAC,KAAK,EAC5B,GAAG,EAAE,GAAG,GACV,CACA,CACJ,CACT,CAAC,CAAC,CAAC,IAAI,CACN,CACJ,CACT,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACjB,OAAO,CACH,8BAAC,iBAAO,IACJ,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACd,SAAS,EAAE,KAAK,EAChB,aAAa,EAAE,SAAS,CAAC,OAAO,EAChC,SAAS,EAAC,WAAW,EACrB,QAAQ,EAAC,UAAU,EACnB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,KAAK,CAAC,EAC/B,SAAS,EAAE,0CAAM,CAAC,MAAM,EACxB,UAAU,UAET,KAAK,EAAE,CACF,CACb,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,GAAG,EAAE;QACxB,MAAM,KAAK,GAAG,CAAC,sBAAY,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAEjE,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,sBAAY,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,sBAAY,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO,CACH,uCAAK,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,IAAA,oBAAU,EAAC,kBAAkB,EAAE,6BAA6B,EAAE,0CAAM,CAAC,6BAA6B,CAAC,CAAC;QAChI,uCAAK,SAAS,EAAE,IAAA,oBAAU,EAAC,0CAAM,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,IAAI,CAAC;YACvE,uCAAK,SAAS,EAAE,0CAAM,CAAC,OAAO,CAAC;gBAC3B,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,MAAM,GAAI,CAC7B;YACN,uCAAK,SAAS,EAAE,0CAAM,CAAC,SAAS,CAAC;gBAC7B,8BAAC,cAAI,IAAC,SAAS,EAAE,0CAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,eAAQ,CAAC,IAAI,IAChD,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CACxB;gBACP,8BAAC,cAAI,IAAC,SAAS,EAAE,0CAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,eAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,aAAK,CAAC,IAAI,IACvE,cAAc,EAAE,CACd,CACL;YAEN,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,QAAQ,GAAI,CAC/B;QACL,OAAO,EAAE,CACR,CACT,CAAC;AACN,CAAC,CAAC;AA3LW,QAAA,mBAAmB,uBA2L9B","sourcesContent":["import { BasketContext, BasketContextWrapper, BookingEngineContext, BookingEngineContextWrapper, CompanyContext, CompanyContextWrapper } from '@frontend/contexts';\nimport { useCurrentHotel, useEvent } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport { ErrorContextWrapper } from 'contexts/ErrorContext';\nimport { NotificationContextWrapper } from 'contexts/NotificationContext';\nimport dayjs from 'dayjs';\nimport React, { useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { render } from 'react-dom';\nimport { useTranslation } from 'react-i18next';\nimport { HashRouter } from 'react-router-dom';\nimport useMeasure from 'react-use-measure';\nimport { Translation } from 'translations/Translation';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport API from '@/api/BookingAPI';\nimport BEButton from '@/components/generic/BEButton';\nimport { BookingWizardOnBooking } from '@/components/generic/BookingWizard/BookingWizardContext';\nimport { BookNowPayLaterInfoBlock } from '@/components/generic/BookNowPayLaterInfoBlock';\nimport FloatingDatePicker from '@/components/generic/date/FloatingDatePicker';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport LargeLoader from '@/components/generic/loader/LargeLoader';\nimport NumberIncrement from '@/components/generic/NumberIncrement';\nimport { Overlay } from '@/components/generic/Overlay/Overlay';\nimport PromoCodeInput from '@/components/generic/PromoCodeInput';\nimport { IDefaultSelectOption, Select } from '@/components/generic/Select/Select';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport RatesNotFoundBlock from '@/components/steps/room/RatesNotFoundBlock';\nimport RoomRates from '@/components/steps/room/roomDetails/roomRates/RoomRates';\nimport { ShadowDomContextProvider } from '@/contexts/ShadowDomContext/ShadowDomContextProvider';\nimport type { InlineRoomMiniEngine } from '@/engines/InlineRoomMiniEngine/InlineRoomMiniEngine';\nimport { RoomListSearchEvent } from '@/events/actions/RoomListSearchEvent';\nimport { useSignedInMember } from '@/hooks/useSignedInMember';\nimport BasketRow, { EPromoCodeStatus } from '@/models/BasketRow';\nimport { Room } from '@/models/Room/Room';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport { RoomListSearch } from '@/models/RoomListSearch';\nimport { SearchParameters } from '@/models/SearchParameters';\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport FeaturedPromoFeature from '@/providers/feature/FeaturedPromoFeature';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport { Color } from '@/util/Color';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport StringHelper from '@/util/StringHelper';\n\nimport styles from './InlineRoomMiniEngine.module.scss';\n\nexport interface InlineRoomMiniEngineElementProps {\n engine: InlineRoomMiniEngine;\n}\n\nexport default function InlineRoomMiniEngineElement(props: InlineRoomMiniEngineElementProps) {\n const { layout = 'default', policy, priceDescription, showInfants = false, maxInfants } = props.engine.getConfig();\n const isCardLayout = layout === 'card';\n\n const { hotel } = useCurrentHotel();\n\n const { memberNumber } = useSignedInMember();\n\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n\n const row = basketContext.currentBasketRows[0];\n const [isLoading, setLoading] = useState(true);\n const [rooms, setRooms] = useState<Room[]>([]);\n\n const [isPromoModalOpen, setIsPromoModalOpen] = useState(false);\n\n const [featuredRates, setFeaturedRates] = useState<RoomRate[]>([]);\n const [standardRates, setStandardRates] = useState<RoomRate[]>([]);\n\n const [promoCode, setPromoCode] = useState(row?.getPromoCode());\n\n const { t } = useTranslation();\n\n const [ref, bounds] = useMeasure();\n const thisElement = React.useRef<HTMLDivElement | null>(null);\n\n const { raise } = useEvent();\n\n const promoCodeTooltip = row?.getPromoCodeTooltip(t, Translation) || '';\n\n const didInitialEagerFetchRef = useRef(false);\n\n useEffect(() => {\n if (!row) {\n basketContext.addBasketRow(new BasketRow());\n return;\n }\n\n // Filters availability results by the provided room code.\n row.setEnableRoomCodeFilter(true);\n row.setRoomCode(props.engine.getRoomCode());\n }, [row, props.engine]);\n\n useEffect(() => {\n if (!row?.getStartDate() || !row?.getEndDate()) {\n return;\n }\n\n fetchAvailability();\n }, [\n row?.getStartDate()?.format('YYYY-MM-DD'),\n row?.getEndDate()?.format('YYYY-MM-DD'),\n row?.getAdults(),\n row?.getChildren(),\n row?.getPromoCode(),\n memberNumber,\n hotel?.hotelID,\n props.engine.getRoomCode(),\n ]);\n\n useEffect(() => {\n if (!(rooms && rooms.length > 0)) return;\n\n const room = rooms[0];\n\n let nonPromoRates: RoomRate[] = [];\n const toSetFeaturedRate: RoomRate[] = [];\n\n if (FeaturedPromoFeature.isActive()) {\n for (const currentRate of room.getRates()) {\n if (currentRate.promoCode?.toLowerCase() === basketContext.selectedBasketRow?.getPromoCode()?.toLowerCase()) {\n toSetFeaturedRate.unshift(currentRate);\n } else {\n nonPromoRates.push(currentRate);\n }\n }\n\n if (toSetFeaturedRate.length > 0) {\n setFeaturedRates(toSetFeaturedRate);\n }\n } else {\n nonPromoRates = room.getRates();\n }\n\n try {\n const search: SearchParameters = {\n checkInTime: row?.getStartDate()?.format('YYYY-M-D'),\n checkOutTime: row?.getEndDate()?.format('YYYY-M-D'),\n numAdults: row?.getAdults(),\n numChildren: row?.getChildren(),\n numRooms: 1,\n promoCode: promoCode,\n roomCode: props.engine.getRoomCode(),\n };\n if (showInfants) {\n search.numInfants = row?.getInfants();\n }\n\n const eventRooms: RoomListSearch[] =\n rooms?.map((room) => {\n const { name, code } = room;\n\n const foundRoom: RoomListSearch = {\n name: name as string,\n code: code as string,\n lowestPrice: room.getLowestPrice(),\n highestPrice: room.getHighestPrice(),\n currency: ccx.currentCurrency,\n\n rates:\n room.getRates()?.map((rate) => {\n const { name, code } = rate;\n return {\n name,\n code,\n\n price: {\n averagePrice: rate.getAveragePrice(),\n totalPrice: rate.getTotalPrice(),\n currency: ccx.currentCurrency,\n },\n };\n }) ?? [],\n };\n\n return foundRoom;\n }) ?? [];\n\n const event = new RoomListSearchEvent(search, eventRooms);\n raise(event);\n } catch (ex) {\n console.warn(ex);\n }\n\n setStandardRates(nonPromoRates);\n }, [rooms]);\n\n useEffect(() => {\n if (hotel?.colors) {\n // Do this manually as Guide Step manages this for Fullpage.\n RoomstayThemeEngine.changeTheme(hotel.colors);\n }\n }, [hotel, hotel?.colors]);\n\n const updatePeopleValues = ({ adults, children, infants }: { adults?: number; children?: number; infants?: number; promoCode?: string }) => {\n if (adults && adults !== row.getAdults()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setAdults(adults);\n }\n\n if ((children || children === 0) && children !== row.getChildren()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setChildren(children);\n }\n\n if ((infants || infants === 0) && infants !== row.getInfants()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setInfants(infants);\n }\n\n basketContext.updateBasketRow(row);\n };\n\n const updateDateValues = (startDate: dayjs.Dayjs, endDate: dayjs.Dayjs) => {\n if (startDate && endDate) {\n row.setStartDate(startDate);\n row.setEndDate(endDate);\n\n basketContext.updateBasketRow(row, false);\n }\n };\n\n if (!row?.getArrivalDate() && !row?.getDepartureDate()) {\n row?.setStartDate(dayjs().add(7, 'day'));\n row?.setEndDate(dayjs().add(8, 'day'));\n }\n\n const isCompact = bounds.width < 1000 ? '--compact' : '';\n\n const fetchAvailability = async () => {\n // Only eager search on the initial load\n const eager = !didInitialEagerFetchRef.current;\n didInitialEagerFetchRef.current = true;\n\n try {\n setLoading(true);\n\n const allRooms = await API.Availability.fetchAvailabilityData(row, hotel?.hotelID as string, memberNumber, false, eager);\n\n if (allRooms) {\n setRooms(allRooms.filter((room) => room.isAvailable() && room.code === props.engine.getRoomCode()));\n }\n } finally {\n setLoading(false);\n }\n };\n const getButtonLabelHandler = () => {\n return t(Translation.Misc.BookNow);\n };\n\n const updateNumberOfAdultsOnChange = (value: string) => {\n updatePeopleValues({ adults: +value });\n };\n const updateNumberOfChildrenOnChange = (value: string) => {\n updatePeopleValues({ children: +value });\n };\n const updateNumberOfInfantsOnChange = (value: string) => {\n updatePeopleValues({ infants: +value });\n };\n\n const defaultGuestValue: BookingWizardOnBooking['guests'] = {\n adults: row?.getAdults() ?? 1,\n children: row?.getChildren() ?? 0,\n infants: 0,\n room: 1,\n };\n\n const updatePromoCode = (code: string) => {\n DataLayer.instance.sendInteraction('Promo Code updated', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n\n if (row) {\n row.setPromoCode(code);\n basketContext.updateBasketRow(row);\n\n if (code) {\n setIsPromoModalOpen(false);\n }\n }\n };\n\n const onAddToBasketOverrideHandler = (rate: RoomRate) => {\n row.setRate(rate);\n basketContext.updateBasketRow(row);\n DataLayer.instance.sendRoomRateAddToCart(rate, row.getNumberOfDays(), row.getStartDate(), row.getEndDate(), row.getPreUpsellRoomRate());\n\n const session = props.engine.getSessionProvider();\n session\n .updateSessionAsync({\n step: StepConfirmation.getName(), // TODO:\n })\n .then(() => {\n // TODO: Remove this URL coupling (can we get the hotel's checkout URL from Hotel in database instead?)\n // Allow override via window.RoomstayCheckoutUrlOverride (e.g., '/checkout/?park=ParkName')\n const checkoutUrl = (window as any).RoomstayCheckoutUrlOverride ?? hotel?.checkoutUrl ?? '/checkout/';\n\n window.open(`${checkoutUrl}#${StepConfirmation.getStepUrl()}?session=${session.getCurrentSessionID()}`, '_self');\n });\n };\n const openPromoModalOnClick = () => {\n setIsPromoModalOpen(true);\n };\n const setPromoCodeOnClose = () => {\n setPromoCode(row?.getPromoCode());\n setIsPromoModalOpen(false);\n };\n const cancelPromoPopupOnClick = () => {\n DataLayer.instance.sendInteraction('Cancel Promo Popup', InteractionType.BUTTON, InteractionStep.ROOMS);\n setIsPromoModalOpen(false);\n };\n\n const changePromoCode = (val: any) => {\n updatePromoCode(val);\n };\n\n const maxOccupancy = hotel?.maxOccupancy ?? 1;\n\n const DatePickerSelector = () => {\n const inner = () => {\n if (isCardLayout) {\n return (\n <div className={classNames('u-cursor-pointer', styles['rs-inline-filter-item-dates-inner'])}>\n <div className={classNames(styles['card'])}>\n <div className={styles['image']}>\n <Icon icon={IconType.Calendar} />\n </div>\n <div className={styles['content']}>\n <Text className={styles['title']} type={TextType.Body}>\n {t(Translation.Misc.CheckIn)}\n </Text>\n <Text className={styles['sub-title']} type={TextType.Body} color={Color.Navy}>\n {row?.getArrivalDate() ? row.getArrivalDate() : t(Translation.Misc.CheckInPlaceHolder)}\n </Text>\n </div>\n </div>\n <div className={classNames(styles['card'])}>\n <div className={styles['image']}>\n <Icon icon={IconType.Calendar} />\n </div>\n <div className={styles['content']}>\n <Text className={styles['title']} type={TextType.Body}>\n {t(Translation.Misc.CheckOut)}\n </Text>\n <Text className={styles['sub-title']}>{row?.getDepartureDate() ? row.getDepartureDate() : t(Translation.Misc.CheckOutPlaceHolder)}</Text>\n </div>\n </div>\n </div>\n );\n } else {\n return (\n <div className=\"u-flex align-items-center justify-content-center u-w-100@xl- u-cursor-pointer\">\n <Text color={row?.getArrivalDate() ? Color.Accent : Color.Graphite} className=\"u-mw-75 u-align-center\" bold={!!row?.getArrivalDate()}>\n <span>{row?.getArrivalDate() ? row.getArrivalDate() : 'Arrival Date'}</span>\n </Text>\n <Icon icon={IconType.ArrowRight2} />\n <Text color={row?.getDepartureDate() ? Color.Accent : Color.Graphite} className=\"u-marg-right u-mw-75 u-align-center\" bold={!!row?.getDepartureDate()}>\n <span>{row?.getDepartureDate() ? row.getDepartureDate() : 'Departure Date'}</span>\n </Text>\n </div>\n );\n }\n };\n\n return (\n <FloatingDatePicker\n startDate={row?.getStartDate()}\n selectedDateChanged={updateDateValues}\n className={classNames('rs-inline-filter-item-dates', {\n 'u-w-100@xl- room-builder-progress--value u-marg-left--none ': !isCardLayout,\n [styles['rs-inline-filter-item-dates']]: isCardLayout,\n })}\n roomCode={props.engine.getRoomCode()}\n >\n <Tooltip title={t(Translation.Step.Date.SelectArrivalAndDepartureDatesByClickingHere)} wrapperClasses=\"u-w-100@xl-\">\n {inner()}\n </Tooltip>\n </FloatingDatePicker>\n );\n };\n\n const renderGuestSelector = () => {\n if (isCardLayout) {\n const numChildren = row?.getChildren?.() || 0;\n const maxAdults = maxOccupancy - numChildren;\n const maxChildren = maxOccupancy + 1 - (row?.getAdults?.() || 0);\n\n return (\n <GuestSelectorCustom\n maxAdults={maxAdults}\n maxChildren={maxChildren}\n maxInfants={maxInfants}\n onChange={(newValue) => {\n updatePeopleValues({\n adults: +newValue.adults,\n children: +newValue.children,\n });\n }}\n disableChild={false}\n showInfants={showInfants}\n disableRoom\n applyButton={false}\n defaultValue={defaultGuestValue}\n promoCodeConfig={{\n promoCode: basketContext.selectedBasketRow?.getPromoCode(),\n setPromoCode,\n onChange: changePromoCode,\n valid: basketContext.selectedBasketRow?.getPromoCodeStatus() !== 'new' ? basketContext.selectedBasketRow?.getPromoCodeStatus() === 'valid' : undefined,\n }}\n row={row}\n />\n );\n } else {\n const maxInfantsNum = !!maxInfants ? maxInfants + 1 : maxOccupancy + 1 - (row?.getAdults() ? row.getAdults() : 0);\n return (\n <>\n <Tooltip title={t(Translation.Step.Date.UpdateAdults)} wrapperClasses=\"u-w-100@xl- rs-inline-filter-item-adult\">\n <div className=\"room-builder-progress--value --mw-l u-flex justify-content-center \">\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={[...Array(maxOccupancy - (row?.getChildren() ? row.getChildren() : 0))].map((v: any, value: number) => {\n value += 1;\n return {\n text: StringHelper.pluralWithDictAndCount(value, Translation.Step.Date.Adult, t),\n value: value.toString(),\n };\n })}\n value={row?.getAdults()?.toString()}\n onChange={updateNumberOfAdultsOnChange}\n keyName=\"value\"\n labelName=\"text\"\n />\n </div>\n </Tooltip>\n <Tooltip title={t(Translation.Step.Date.UpdateChildren)} wrapperClasses=\"u-w-100@xl- rs-inline-filter-item-children\">\n <div className=\"room-builder-progress--value --mw-l u-flex justify-content-center\">\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={[...Array(maxOccupancy + 1 - (row?.getAdults() ? row.getAdults() : 0))].map((v: any, value: number) => {\n return {\n text: StringHelper.pluralWithDictAndCount(value, Translation.Step.Date.Child, t),\n value: value.toString(),\n };\n })}\n value={row?.getChildren()?.toString()}\n onChange={updateNumberOfChildrenOnChange}\n keyName=\"value\"\n labelName=\"text\"\n />\n </div>\n </Tooltip>\n {showInfants ? (\n <Tooltip title={t(Translation.Step.Date.UpdateInfants)} wrapperClasses=\"u-w-100@xl- rs-inline-filter-item-infants\">\n <div className=\"room-builder-progress--value --mw-l u-flex justify-content-center\">\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={[...Array(maxInfantsNum)].map((v: any, value: number) => {\n return {\n text: StringHelper.pluralWithDictAndCount(value, Translation.Step.Date.Infant, t),\n value: value.toString(),\n };\n })}\n value={row?.getInfants()?.toString()}\n onChange={updateNumberOfInfantsOnChange}\n keyName=\"value\"\n labelName=\"text\"\n />\n </div>\n </Tooltip>\n ) : (\n <></>\n )}\n </>\n );\n }\n };\n return useMemo(\n () => (\n <>\n <div\n className={classNames(`room-builder-progress ${isCompact} rs-inline-container`, {\n [styles['rs-inline-container']]: isCardLayout,\n [styles['rs-inline-container--card-layout']]: isCardLayout,\n })}\n >\n <div\n className={classNames('rs-inline-filter-container', {\n 'u-flex w-100 flex-wrap room-builder-progress--item --current': !isCardLayout,\n [styles['rs-inline-filter-container']]: isCardLayout,\n })}\n ref={ref}\n >\n <div\n className={classNames('rs-inline-filter-inner', {\n 'u-flex u-flex-align-center flex-wrap flex-row u-w-100@xl-': !isCardLayout,\n [styles['rs-inline-filter-inner']]: isCardLayout,\n })}\n >\n <DatePickerSelector />\n {renderGuestSelector()}\n\n <Tooltip\n title={promoCodeTooltip}\n wrapperClasses={classNames('u-w-100@xl- rs-inline-filter-item-promo', {\n [styles['rs-inline-filter-item-promo']]: isCardLayout,\n })}\n >\n <div className=\"room-builder-progress--value u-cursor-pointer\" ref={thisElement} onClick={openPromoModalOnClick}>\n <div className=\"u-flex align-items-center justify-content-center u-w-100@xl-\">\n <Text className=\"u-pad-right--light\" type={TextType.Body} color={row?.getPromoCode() ? row?.getPromoCodeColour() : Color.Navy}>\n {row?.getPromoCode() ? row?.getPromoCode() : 'Promo Code'}\n </Text>\n <Icon icon={IconType.Dropdown} color={Color.DarkGrey} />\n </div>\n </div>\n </Tooltip>\n <Overlay open={isPromoModalOpen} container={RoomstayThemeEngine.EngineContainer} followElement={thisElement.current} onClose={setPromoCodeOnClose}>\n <div className=\"u-pad--heavy\">\n <div>\n <PromoCodeInput\n value={basketContext.selectedBasketRow?.getPromoCode()}\n onChange={changePromoCode}\n valid={\n basketContext.selectedBasketRow?.getPromoCodeStatus() !== EPromoCodeStatus.New\n ? basketContext.selectedBasketRow?.getPromoCodeStatus() === EPromoCodeStatus.Valid\n : undefined\n }\n row={basketContext.selectedBasketRow}\n />\n </div>\n\n <div className=\"u-flex justify-content-end align-items-center u-marg-top\">\n <BEButton isText size=\"small\" onClick={cancelPromoPopupOnClick}>\n {t(Translation.Misc.Cancel)}\n </BEButton>\n </div>\n </div>\n </Overlay>\n </div>\n <div\n className={classNames(`u-flex flex-xl-nowrap flex-row rs-inline-filter-button`, {\n 'w-100': isCompact,\n [styles['rs-inline-filter-button']]: isCardLayout,\n })}\n >\n <BEButton filled primary isLoading={isLoading} wide={isCompact !== ''} onClick={() => fetchAvailability()}>\n {t(Translation.Misc.CheckRates)}\n </BEButton>\n </div>\n </div>\n <div\n className={classNames('u-border-rounded rs-inline-content', {\n [styles['rs-inline-content']]: isCardLayout,\n })}\n >\n {!isLoading ? (\n <AutoAutoHeight open={!isLoading}>\n <>\n <BookNowPayLaterInfoBlock />\n {rooms.length > 0 ? (\n <RoomRates\n classNames={classNames('rs-inline-content-list', {\n [styles['rs-inline-content-list']]: isCardLayout,\n })}\n featuredRates={featuredRates}\n rates={standardRates}\n roomCode={rooms[0].code as string}\n getButtonLabel={getButtonLabelHandler}\n onAddToBasketOverride={onAddToBasketOverrideHandler}\n isCardLayout={isCardLayout}\n policy={policy}\n priceDescription={priceDescription}\n />\n ) : (\n <RatesNotFoundBlock />\n )}\n </>\n </AutoAutoHeight>\n ) : (\n <LargeLoader />\n )}\n </div>\n </div>\n </>\n ),\n [isCompact, isLoading, rooms, basketContext.currentBasketRows, isPromoModalOpen, hotel, standardRates]\n );\n}\n\nexport const renderInlineRoomMiniEngineElement = (container: Element, engine: InlineRoomMiniEngine) => {\n render(\n <ShadowDomContextProvider value={engine.getShadowDomContextValue()}>\n <BookingEngineContextWrapper engine={engine}>\n <HashRouter\n future={{\n v7_startTransition: false,\n v7_relativeSplatPath: false,\n }}\n >\n <NotificationContextWrapper>\n <ErrorContextWrapper>\n <CompanyContextWrapper configCompany={engine.getConfig().company}>\n <BasketContextWrapper>\n <InlineRoomMiniEngineElement engine={engine} />\n </BasketContextWrapper>\n </CompanyContextWrapper>\n </ErrorContextWrapper>\n </NotificationContextWrapper>\n </HashRouter>\n </BookingEngineContextWrapper>\n </ShadowDomContextProvider>,\n container\n );\n};\n\nexport const GuestSelectorCustom = ({\n maxAdults,\n maxChildren,\n maxInfants = 10,\n defaultValue,\n onChange,\n disableChild,\n showInfants,\n disableRoom,\n applyButton,\n promoCodeConfig,\n row,\n}: {\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n defaultValue?: { adults?: number; children?: number; infants?: number; room?: number };\n onChange?: (params: { adults: number; children: number; infants: number; room: number }) => void;\n disableChild?: boolean;\n showInfants?: boolean;\n disableRoom?: boolean;\n applyButton?: boolean;\n promoCodeConfig?: {\n promoCode: string;\n setPromoCode: React.Dispatch<React.SetStateAction<string>>;\n onChange: (val: any) => void;\n valid?: boolean;\n };\n row: BasketRow;\n}) => {\n const { t } = useTranslation();\n const ref = React.useRef(null);\n const targetRef = useRef(null);\n\n const [adults, setAdults] = useState(defaultValue?.adults ?? 1);\n const [children, setChildren] = useState(defaultValue?.children ?? 0);\n const [infants, setInfants] = useState(defaultValue?.infants ?? 0);\n const [room, setRoom] = useState(defaultValue?.room ?? 1);\n const [open, setOpen] = useState(false);\n\n const prevOpenRef = useRef(open);\n\n useEffect(() => {\n const wasOpen = prevOpenRef.current;\n prevOpenRef.current = open;\n\n if (wasOpen && !open) {\n // onChange is only called when the modal is closed\n onChange?.({ adults, children, infants, room });\n }\n }, [open, adults, children, infants, room, onChange]);\n\n const onChangeAdults = (newValue: number) => {\n setAdults(newValue);\n };\n const onChangeChildren = (newValue: number) => {\n setChildren(newValue);\n };\n const onChangeInfants = (newValue: number) => {\n setInfants(newValue);\n };\n\n const onChangeRoom = (newValue: number) => {\n setRoom(newValue);\n };\n\n const inner = () => {\n return (\n <div className={styles['popper--box']}>\n <div className={styles['popper--content']} ref={ref}>\n <div className={styles['row-wrapper']}>\n <div className={styles.row}>\n <Text className={styles['title']} type={TextType.Small}>\n {StringHelper.plural(adults, 'Adult', t)}\n </Text>\n <NumberIncrement number={adults} min={1} max={maxAdults} onChange={(value: number) => onChangeAdults(value)} textSize={TextType.Small} />\n </div>\n </div>\n {disableChild ? null : (\n <div className={styles['row-wrapper']}>\n <div className={styles.divider} />\n <div className={styles.row}>\n <Text className={styles['title']} type={TextType.Small}>\n {StringHelper.plural(children, 'Child', t)}\n </Text>\n <NumberIncrement number={children} min={0} max={maxChildren} onChange={(value: number) => onChangeChildren(value)} textSize={TextType.Small} />\n </div>\n </div>\n )}\n {showInfants ? (\n <div className={styles['row-wrapper']}>\n <div className={styles.divider} />\n <div className={styles.row}>\n <Text className={styles['title']} type={TextType.Small}>\n {StringHelper.plural(infants, 'Infant', t)}\n </Text>\n <NumberIncrement number={infants} min={0} onChange={(value: number) => onChangeInfants(value)} textSize={TextType.Small} />\n </div>\n\n <div className={styles.divider} />\n </div>\n ) : null}\n {disableRoom ? null : (\n <div className={styles['row-wrapper']}>\n <div className={styles.divider} />\n <div className={styles.row}>\n <Text className={styles['title']} type={TextType.Small}>\n {StringHelper.plural(room, 'Room', t)}\n </Text>\n <NumberIncrement number={room} min={1} max={10} onChange={(value: number) => onChangeRoom(value)} textSize={TextType.Small} />\n </div>\n </div>\n )}\n {promoCodeConfig ? (\n <div className={styles['row-wrapper']}>\n <div className={styles.divider} />\n <div className={classNames(styles.row)}>\n <Text className={styles['title']} type={TextType.Small}>\n {t(Translation.Misc.Promocode)}\n </Text>\n <PromoCodeInput\n className={styles.promo}\n value={promoCodeConfig.promoCode}\n onChange={promoCodeConfig.onChange}\n valid={promoCodeConfig.valid}\n row={row}\n />\n </div>\n </div>\n ) : null}\n </div>\n </div>\n );\n };\n\n const content = () => {\n return (\n <Overlay\n offset={[0, 6]}\n usePortal={false}\n followElement={targetRef.current}\n placement=\"top-start\"\n strategy=\"absolute\"\n open={open}\n onClose={() => setOpen?.(false)}\n className={styles.popper}\n hideStyles\n >\n {inner()}\n </Overlay>\n );\n };\n\n const getValueAsText = () => {\n const parts = [StringHelper.pluralWithCount(adults, 'Adult', t)];\n\n if (children > 0) {\n parts.push(StringHelper.pluralWithCount(children, 'Child', t));\n }\n\n if (infants > 0) {\n parts.push(StringHelper.pluralWithCount(infants, 'Infant', t));\n }\n\n return parts.join(' - ');\n };\n\n return (\n <div ref={targetRef} className={classNames('u-cursor-pointer', 'rs-inline-filter-item-guest', styles['rs-inline-filter-item-guest'])}>\n <div className={classNames(styles['card'])} onClick={() => setOpen?.(!open)}>\n <div className={styles['image']}>\n <Icon icon={IconType.People} />\n </div>\n <div className={styles['content']}>\n <Text className={styles['title']} type={TextType.Body}>\n {t(Translation.Misc.Guests)}\n </Text>\n <Text className={styles['sub-title']} type={TextType.Body} color={Color.Navy}>\n {getValueAsText()}\n </Text>\n </div>\n\n <Icon icon={IconType.Dropdown} />\n </div>\n {content()}\n </div>\n );\n};\n"]}
|
|
@@ -31,6 +31,7 @@ class MemberPortalWidget extends BaseEngine_1.BaseEngine {
|
|
|
31
31
|
}
|
|
32
32
|
render() {
|
|
33
33
|
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
this.initializeShadowDom();
|
|
34
35
|
(0, MemberPortalWidgetElement_1.renderMemberPortalWidget)(RoomstayThemeEngine_1.default.createElementOrReuseExisting('div', 'member-portal-widget'), this);
|
|
35
36
|
});
|
|
36
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemberPortalWidget.js","sourceRoot":"/","sources":["src/engines/MemberPortalWidget/MemberPortalWidget.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAIA,qDAAyF;AAIzF,0FAAkE;AAElE,2EAAuE;AA0BvE,MAAa,kBAAmB,SAAQ,uBAAoC;IACxE,YAAmB,gBAA6B,EAAE,MAAiC;QAC/E,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,gCAAmB,CAAC,IAAI,CAAC;QAEvC,4CAA4C;QAC5C,6BAAmB,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC1E,CAAC;IAEM,SAAS,CAAC,MAAgC;QAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;QACtG,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAEe,MAAM;;YAClB,IAAA,oDAAwB,EAAC,6BAAmB,CAAC,4BAA4B,CAAC,KAAK,EAAE,sBAAsB,CAAC,EAAE,IAAI,CAAC,CAAC;QACpH,CAAC;KAAA;;
|
|
1
|
+
{"version":3,"file":"MemberPortalWidget.js","sourceRoot":"/","sources":["src/engines/MemberPortalWidget/MemberPortalWidget.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAIA,qDAAyF;AAIzF,0FAAkE;AAElE,2EAAuE;AA0BvE,MAAa,kBAAmB,SAAQ,uBAAoC;IACxE,YAAmB,gBAA6B,EAAE,MAAiC;QAC/E,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,gCAAmB,CAAC,IAAI,CAAC;QAEvC,4CAA4C;QAC5C,6BAAmB,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC1E,CAAC;IAEM,SAAS,CAAC,MAAgC;QAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;QACtG,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAEe,MAAM;;YAClB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAA,oDAAwB,EAAC,6BAAmB,CAAC,4BAA4B,CAAC,KAAK,EAAE,sBAAsB,CAAC,EAAE,IAAI,CAAC,CAAC;QACpH,CAAC;KAAA;;AApBL,gDAuBC;AAD0B,sCAAmB,GAAG,cAAc,CAAC","sourcesContent":["import { Placement } from '@popperjs/core';\nimport { IHotelColorScheme, IRoomstayMember } from '@roomstay/core';\n\nimport { MenuItemType } from '@/components/generic/modal/SigninModal/AuthenticatedUserModal';\nimport { BaseEngine, BaseEngineConfig, BookingEngineSource } from '@/engines/BaseEngine';\nimport { ConfigCompany } from '@/models/Client/Hotel/Company';\nimport { ConfigHotel, Hotel } from '@/models/Client/Hotel/Hotel';\nimport { Language } from '@/providers/LanguageProvider';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\n\nimport { renderMemberPortalWidget } from './MemberPortalWidgetElement';\n\nexport interface GroupWidgetConfig {\n name?: string;\n logo?: string;\n logoLink?: string;\n checkoutUrl?: string;\n colors?: IHotelColorScheme;\n defaultLanguage?: Language;\n privacyPolicyUrl?: string;\n hotels: ConfigHotel[];\n}\n\nexport interface MemberPortalWidgetConfig extends BaseEngineConfig {\n company: Pick<ConfigCompany, 'colors' | 'companyShort' | 'companyId'>;\n hotel?: Hotel;\n groupWidgetConfig?: GroupWidgetConfig;\n authMenuItem?: MenuItemType[];\n buttonClass?: string;\n overlayPlacement?: Placement;\n fallbackPlacements?: Placement;\n onSignedIn?: (user: IRoomstayMember) => void;\n onSignedOut?: () => void;\n renderInput?: (member?: IRoomstayMember | null, isLoading?: boolean) => JSX.Element | string;\n}\n\nexport class MemberPortalWidget extends BaseEngine<MemberPortalWidgetConfig> {\n public constructor(bookingContainer: HTMLElement, config?: MemberPortalWidgetConfig) {\n super(bookingContainer, config);\n this.source = BookingEngineSource.Auth;\n\n // TODO: Make this a more permanent solution\n RoomstayThemeEngine.EngineContainer.classList.add('--transparent-bg');\n }\n\n public setConfig(config: MemberPortalWidgetConfig): void {\n if (!config.hotel && !config.groupWidgetConfig) {\n throw new Error('MemberPortalWidget requires either a hotel or groupWidgetConfig to be provided');\n }\n\n super.setConfig(config);\n }\n\n protected async render() {\n this.initializeShadowDom();\n renderMemberPortalWidget(RoomstayThemeEngine.createElementOrReuseExisting('div', 'member-portal-widget'), this);\n }\n\n public static readonly MEMBER_PORTAL_PARAM = 'memberPortal';\n}\n"]}
|
|
@@ -49,6 +49,7 @@ const Icon_1 = __importStar(require("../../components/generic/Icon/Icon"));
|
|
|
49
49
|
const SmallSpinner_1 = __importDefault(require("../../components/generic/loader/SmallSpinner"));
|
|
50
50
|
const AuthenticatedUserModal_1 = require("../../components/generic/modal/SigninModal/AuthenticatedUserModal");
|
|
51
51
|
const UnauthenticatedUserModal_1 = require("../../components/generic/modal/SigninModal/UnauthenticatedUserModal");
|
|
52
|
+
const ShadowDomContextProvider_1 = require("../../contexts/ShadowDomContext/ShadowDomContextProvider");
|
|
52
53
|
const AccountRoutes_1 = require("../../pages/account/AccountRoutes");
|
|
53
54
|
const Translation_1 = require("../../translations/Translation");
|
|
54
55
|
const Color_1 = require("../../util/Color");
|
|
@@ -146,15 +147,16 @@ const renderMemberPortalWidget = (container, engine) => {
|
|
|
146
147
|
hotels: ((_d = config.groupWidgetConfig) === null || _d === void 0 ? void 0 : _d.hotels) || (config.hotel ? [config.hotel] : []),
|
|
147
148
|
privacyPolicyUrl: (_e = config.groupWidgetConfig) === null || _e === void 0 ? void 0 : _e.privacyPolicyUrl,
|
|
148
149
|
};
|
|
149
|
-
(0, react_dom_1.render)(react_1.default.createElement(
|
|
150
|
-
react_1.default.createElement(
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
react_1.default.createElement(contexts_1.
|
|
156
|
-
react_1.default.createElement(contexts_1.
|
|
157
|
-
react_1.default.createElement(
|
|
150
|
+
(0, react_dom_1.render)(react_1.default.createElement(ShadowDomContextProvider_1.ShadowDomContextProvider, { value: engine.getShadowDomContextValue() },
|
|
151
|
+
react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement(react_1.default.Fragment, null) },
|
|
152
|
+
react_1.default.createElement(react_router_dom_1.HashRouter, { future: {
|
|
153
|
+
v7_startTransition: false,
|
|
154
|
+
v7_relativeSplatPath: false,
|
|
155
|
+
} },
|
|
156
|
+
react_1.default.createElement(contexts_1.BookingEngineContextWrapper, { engine: engine },
|
|
157
|
+
react_1.default.createElement(contexts_1.CompanyContextWrapper, { configCompany: company },
|
|
158
|
+
react_1.default.createElement(contexts_1.AuthenticationContextProvider, null,
|
|
159
|
+
react_1.default.createElement(MemberPortalWidgetElement, { engine: engine }))))))), container);
|
|
158
160
|
};
|
|
159
161
|
exports.renderMemberPortalWidget = renderMemberPortalWidget;
|
|
160
162
|
//# sourceMappingURL=MemberPortalWidgetElement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemberPortalWidgetElement.js","sourceRoot":"/","sources":["src/engines/MemberPortalWidget/MemberPortalWidgetElement.tsx"],"names":[],"mappings":"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","sourcesContent":["import { AuthenticationContext, AuthenticationContextProvider, BookingEngineContextWrapper, CompanyContextWrapper, RoomstayMemberContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport React, { Suspense, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { render } from 'react-dom';\nimport { useTranslation } from 'react-i18next';\nimport { HashRouter, useLocation } from 'react-router-dom';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\nimport { AuthenticatedUserModal, AuthenticatedUserModalProps } from '@/components/generic/modal/SigninModal/AuthenticatedUserModal';\nimport { UnauthenticatedUserModal, UnauthenticatedUserModalProps } from '@/components/generic/modal/SigninModal/UnauthenticatedUserModal';\nimport { ConfigCompany } from '@/models/Client/Hotel/Company';\nimport { AccountRoutes } from '@/pages/account/AccountRoutes';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\n\nimport { MemberPortalWidget } from './MemberPortalWidget';\n\nexport interface MemberPortalWidgetElementProps {\n engine: MemberPortalWidget;\n}\n\nexport default function MemberPortalWidgetElement({ engine }: MemberPortalWidgetElementProps) {\n const engineConfig = engine.getConfig();\n\n const { roomstayMember } = useContext(RoomstayMemberContext);\n const { loading } = useContext(AuthenticationContext);\n\n const { t } = useTranslation();\n const [loginModalOpen, setLoginModalOpen] = useState(false);\n const loginAnchorEl = useRef<HTMLDivElement | null>(null);\n\n const { hotel } = useCurrentHotel();\n const location = useLocation();\n\n const closeLoginClickHandler = () => {\n setLoginModalOpen(false);\n };\n\n const onLoginClickHandler = () => {\n setLoginModalOpen(true);\n };\n\n useEffect(() => {\n if (roomstayMember) {\n engineConfig.onSignedIn?.(roomstayMember);\n }\n }, [roomstayMember]);\n\n // Detect changes to the roomstay path\n useEffect(() => {\n const href = window.location.href.split('#');\n const checkoutUrl = engineConfig.groupWidgetConfig?.checkoutUrl || hotel?.checkoutUrl;\n\n // Only redirect if the hash contains an account route path\n const isAccountRoute =\n href.length > 1 &&\n Object.values(AccountRoutes).some((route) => {\n return location.pathname.startsWith(route.path);\n });\n\n // Ensure the user is redirected to the checkout if a member portal account link is clicked\n if (isAccountRoute && checkoutUrl && href[0] !== checkoutUrl) {\n // Add Member portal flag to URL to ensure member portal in enabled when the user lands in the checkout\n const params = new URLSearchParams(window.location.search);\n params.set(MemberPortalWidget.MEMBER_PORTAL_PARAM, true.toString());\n\n // Redirected to the checkout\n const url = new URL(checkoutUrl, window.location.origin);\n url.hash = location.pathname + '?' + params.toString();\n window.location.href = url.toString();\n }\n }, [location, engineConfig.groupWidgetConfig]);\n\n const buttonElement = useMemo(() => {\n if (engineConfig.renderInput) {\n return (\n <div ref={loginAnchorEl} onClick={onLoginClickHandler}>\n {engineConfig.renderInput(roomstayMember, loading)}\n </div>\n );\n } else {\n return (\n <div ref={loginAnchorEl} style={{ width: 'fit-content' }}>\n {roomstayMember ? (\n <BEButton isLoading={loading} size=\"small\" className={engineConfig.buttonClass} onClick={onLoginClickHandler} stopIconAnimation>\n {roomstayMember.forename} {roomstayMember.surname}\n <span className=\"u-white u-pad-left--light\" style={{ marginRight: -13 }}>\n <Icon icon={IconType.ArrowDown2} size=\"1.3em\" color={Color.DarkGrey} />\n </span>\n </BEButton>\n ) : (\n <BEButton isLoading={loading} size=\"small\" className={engineConfig.buttonClass} onClick={onLoginClickHandler} stopIconAnimation>\n {t(Translation.Navigation.SignIn.SignIn)}\n <span className=\"u-white u-pad-left--light\" style={{ marginRight: -13 }}>\n <Icon icon={IconType.ArrowDown2} size=\"1.3em\" color={Color.DarkGrey} />\n </span>\n </BEButton>\n )}\n </div>\n );\n }\n }, [engineConfig.renderInput, roomstayMember, loading]);\n\n const authProps: AuthenticatedUserModalProps = {\n open: loginModalOpen,\n anchorEl: loginAnchorEl.current,\n menuItems: engineConfig.authMenuItem,\n placement: engineConfig.overlayPlacement || 'bottom-end',\n fallbackPlacements: engineConfig.fallbackPlacements,\n onClose: closeLoginClickHandler,\n onSignedOut: engineConfig.onSignedOut,\n };\n\n const unauthProps: UnauthenticatedUserModalProps = {\n open: loginModalOpen,\n anchorEl: loginAnchorEl.current,\n placement: engineConfig.overlayPlacement || 'bottom-end',\n fallbackPlacements: engineConfig.fallbackPlacements,\n onClose: closeLoginClickHandler,\n };\n\n return (\n <>\n {buttonElement}\n <Suspense fallback={SmallSpinner}>{roomstayMember ? <AuthenticatedUserModal {...authProps} /> : <UnauthenticatedUserModal {...unauthProps} />}</Suspense>\n </>\n );\n}\n\nexport const renderMemberPortalWidget = (container: Element, engine: MemberPortalWidget) => {\n const config = engine.getConfig();\n const companyConfig = config.company;\n\n const company: ConfigCompany = {\n companyId: companyConfig.companyId,\n name: config.groupWidgetConfig?.name || '',\n logo: config.groupWidgetConfig?.logo || '',\n logoLink: config.groupWidgetConfig?.logoLink || '',\n companyShort: companyConfig.companyShort,\n colors: companyConfig.colors,\n selectedHotel: config.hotel,\n hotels: config.groupWidgetConfig?.hotels || (config.hotel ? [config.hotel] : []),\n privacyPolicyUrl: config.groupWidgetConfig?.privacyPolicyUrl,\n };\n\n render(\n <Suspense fallback={<></>}>\n <HashRouter\n future={{\n v7_startTransition: false,\n v7_relativeSplatPath: false,\n }}\n >\n <BookingEngineContextWrapper engine={engine}>\n <CompanyContextWrapper configCompany={company}>\n <AuthenticationContextProvider>\n <MemberPortalWidgetElement engine={engine} />\n </AuthenticationContextProvider>\n </CompanyContextWrapper>\n </BookingEngineContextWrapper>\n </HashRouter>\n </Suspense>,\n container\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"MemberPortalWidgetElement.js","sourceRoot":"/","sources":["src/engines/MemberPortalWidget/MemberPortalWidgetElement.tsx"],"names":[],"mappings":"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","sourcesContent":["import { AuthenticationContext, AuthenticationContextProvider, BookingEngineContextWrapper, CompanyContextWrapper, RoomstayMemberContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport React, { Suspense, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { render } from 'react-dom';\nimport { useTranslation } from 'react-i18next';\nimport { HashRouter, useLocation } from 'react-router-dom';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\nimport { AuthenticatedUserModal, AuthenticatedUserModalProps } from '@/components/generic/modal/SigninModal/AuthenticatedUserModal';\nimport { UnauthenticatedUserModal, UnauthenticatedUserModalProps } from '@/components/generic/modal/SigninModal/UnauthenticatedUserModal';\nimport { ShadowDomContextProvider } from '@/contexts/ShadowDomContext/ShadowDomContextProvider';\nimport { ConfigCompany } from '@/models/Client/Hotel/Company';\nimport { AccountRoutes } from '@/pages/account/AccountRoutes';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\n\nimport { MemberPortalWidget } from './MemberPortalWidget';\n\nexport interface MemberPortalWidgetElementProps {\n engine: MemberPortalWidget;\n}\n\nexport default function MemberPortalWidgetElement({ engine }: MemberPortalWidgetElementProps) {\n const engineConfig = engine.getConfig();\n\n const { roomstayMember } = useContext(RoomstayMemberContext);\n const { loading } = useContext(AuthenticationContext);\n\n const { t } = useTranslation();\n const [loginModalOpen, setLoginModalOpen] = useState(false);\n const loginAnchorEl = useRef<HTMLDivElement | null>(null);\n\n const { hotel } = useCurrentHotel();\n const location = useLocation();\n\n const closeLoginClickHandler = () => {\n setLoginModalOpen(false);\n };\n\n const onLoginClickHandler = () => {\n setLoginModalOpen(true);\n };\n\n useEffect(() => {\n if (roomstayMember) {\n engineConfig.onSignedIn?.(roomstayMember);\n }\n }, [roomstayMember]);\n\n // Detect changes to the roomstay path\n useEffect(() => {\n const href = window.location.href.split('#');\n const checkoutUrl = engineConfig.groupWidgetConfig?.checkoutUrl || hotel?.checkoutUrl;\n\n // Only redirect if the hash contains an account route path\n const isAccountRoute =\n href.length > 1 &&\n Object.values(AccountRoutes).some((route) => {\n return location.pathname.startsWith(route.path);\n });\n\n // Ensure the user is redirected to the checkout if a member portal account link is clicked\n if (isAccountRoute && checkoutUrl && href[0] !== checkoutUrl) {\n // Add Member portal flag to URL to ensure member portal in enabled when the user lands in the checkout\n const params = new URLSearchParams(window.location.search);\n params.set(MemberPortalWidget.MEMBER_PORTAL_PARAM, true.toString());\n\n // Redirected to the checkout\n const url = new URL(checkoutUrl, window.location.origin);\n url.hash = location.pathname + '?' + params.toString();\n window.location.href = url.toString();\n }\n }, [location, engineConfig.groupWidgetConfig]);\n\n const buttonElement = useMemo(() => {\n if (engineConfig.renderInput) {\n return (\n <div ref={loginAnchorEl} onClick={onLoginClickHandler}>\n {engineConfig.renderInput(roomstayMember, loading)}\n </div>\n );\n } else {\n return (\n <div ref={loginAnchorEl} style={{ width: 'fit-content' }}>\n {roomstayMember ? (\n <BEButton isLoading={loading} size=\"small\" className={engineConfig.buttonClass} onClick={onLoginClickHandler} stopIconAnimation>\n {roomstayMember.forename} {roomstayMember.surname}\n <span className=\"u-white u-pad-left--light\" style={{ marginRight: -13 }}>\n <Icon icon={IconType.ArrowDown2} size=\"1.3em\" color={Color.DarkGrey} />\n </span>\n </BEButton>\n ) : (\n <BEButton isLoading={loading} size=\"small\" className={engineConfig.buttonClass} onClick={onLoginClickHandler} stopIconAnimation>\n {t(Translation.Navigation.SignIn.SignIn)}\n <span className=\"u-white u-pad-left--light\" style={{ marginRight: -13 }}>\n <Icon icon={IconType.ArrowDown2} size=\"1.3em\" color={Color.DarkGrey} />\n </span>\n </BEButton>\n )}\n </div>\n );\n }\n }, [engineConfig.renderInput, roomstayMember, loading]);\n\n const authProps: AuthenticatedUserModalProps = {\n open: loginModalOpen,\n anchorEl: loginAnchorEl.current,\n menuItems: engineConfig.authMenuItem,\n placement: engineConfig.overlayPlacement || 'bottom-end',\n fallbackPlacements: engineConfig.fallbackPlacements,\n onClose: closeLoginClickHandler,\n onSignedOut: engineConfig.onSignedOut,\n };\n\n const unauthProps: UnauthenticatedUserModalProps = {\n open: loginModalOpen,\n anchorEl: loginAnchorEl.current,\n placement: engineConfig.overlayPlacement || 'bottom-end',\n fallbackPlacements: engineConfig.fallbackPlacements,\n onClose: closeLoginClickHandler,\n };\n\n return (\n <>\n {buttonElement}\n <Suspense fallback={SmallSpinner}>{roomstayMember ? <AuthenticatedUserModal {...authProps} /> : <UnauthenticatedUserModal {...unauthProps} />}</Suspense>\n </>\n );\n}\n\nexport const renderMemberPortalWidget = (container: Element, engine: MemberPortalWidget) => {\n const config = engine.getConfig();\n const companyConfig = config.company;\n\n const company: ConfigCompany = {\n companyId: companyConfig.companyId,\n name: config.groupWidgetConfig?.name || '',\n logo: config.groupWidgetConfig?.logo || '',\n logoLink: config.groupWidgetConfig?.logoLink || '',\n companyShort: companyConfig.companyShort,\n colors: companyConfig.colors,\n selectedHotel: config.hotel,\n hotels: config.groupWidgetConfig?.hotels || (config.hotel ? [config.hotel] : []),\n privacyPolicyUrl: config.groupWidgetConfig?.privacyPolicyUrl,\n };\n\n render(\n <ShadowDomContextProvider value={engine.getShadowDomContextValue()}>\n <Suspense fallback={<></>}>\n <HashRouter\n future={{\n v7_startTransition: false,\n v7_relativeSplatPath: false,\n }}\n >\n <BookingEngineContextWrapper engine={engine}>\n <CompanyContextWrapper configCompany={company}>\n <AuthenticationContextProvider>\n <MemberPortalWidgetElement engine={engine} />\n </AuthenticationContextProvider>\n </CompanyContextWrapper>\n </BookingEngineContextWrapper>\n </HashRouter>\n </Suspense>\n </ShadowDomContextProvider>,\n container\n );\n};\n"]}
|
|
@@ -26,6 +26,7 @@ class RecentSearchesEngine extends BaseEngine_1.BaseEngine {
|
|
|
26
26
|
}
|
|
27
27
|
render() {
|
|
28
28
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
this.initializeShadowDom();
|
|
29
30
|
(0, RecentSearchesEngineElement_1.renderRecentSearchesEngineElement)(RoomstayThemeEngine_1.default.createElementOrReuseExisting('div', 'recent-searches-engine'), this);
|
|
30
31
|
});
|
|
31
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecentSearchesEngine.js","sourceRoot":"/","sources":["src/engines/RecentSearchesEngine/RecentSearchesEngine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,qDAAyF;AACzF,4GAA+G;AAE/G,0FAAkE;AAMlE,MAAa,oBAAqB,SAAQ,uBAAsC;IAG5E,YAAY,gBAA6B,EAAE,MAAmC;QAC1E,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAEhC,IAAI,CAAC,MAAM,GAAG,gCAAmB,CAAC,cAAc,CAAC;IACrD,CAAC;IAEM,WAAW;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAEe,MAAM;;YAClB,IAAA,+DAAiC,EAAC,6BAAmB,CAAC,4BAA4B,CAAC,KAAK,EAAE,wBAAwB,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/H,CAAC;KAAA;CACJ;
|
|
1
|
+
{"version":3,"file":"RecentSearchesEngine.js","sourceRoot":"/","sources":["src/engines/RecentSearchesEngine/RecentSearchesEngine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,qDAAyF;AACzF,4GAA+G;AAE/G,0FAAkE;AAMlE,MAAa,oBAAqB,SAAQ,uBAAsC;IAG5E,YAAY,gBAA6B,EAAE,MAAmC;QAC1E,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAEhC,IAAI,CAAC,MAAM,GAAG,gCAAmB,CAAC,cAAc,CAAC;IACrD,CAAC;IAEM,WAAW;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAEe,MAAM;;YAClB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAA,+DAAiC,EAAC,6BAAmB,CAAC,4BAA4B,CAAC,KAAK,EAAE,wBAAwB,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/H,CAAC;KAAA;CACJ;AAjBD,oDAiBC","sourcesContent":["import { BaseEngine, BaseEngineConfig, BookingEngineSource } from '@/engines/BaseEngine';\nimport { renderRecentSearchesEngineElement } from '@/engines/RecentSearchesEngine/RecentSearchesEngineElement';\nimport { ConfigCompany } from '@/models/Client/Hotel/Company';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\n\nexport interface RecentSearchesEngineConfig extends BaseEngineConfig {\n company: ConfigCompany;\n}\n\nexport class RecentSearchesEngine extends BaseEngine<RecentSearchesEngineConfig> {\n private roomCode!: string;\n\n constructor(bookingContainer: HTMLElement, config?: RecentSearchesEngineConfig) {\n super(bookingContainer, config);\n\n this.source = BookingEngineSource.RecentSearches;\n }\n\n public getRoomCode(): string {\n return this.roomCode;\n }\n\n protected async render() {\n this.initializeShadowDom();\n renderRecentSearchesEngineElement(RoomstayThemeEngine.createElementOrReuseExisting('div', 'recent-searches-engine'), this);\n }\n}\n"]}
|
|
@@ -55,6 +55,7 @@ const BEButton_1 = __importDefault(require("../../components/generic/BEButton"))
|
|
|
55
55
|
const Icon_1 = require("../../components/generic/Icon/Icon");
|
|
56
56
|
const RecentSearchesCard_1 = __importDefault(require("../../components/generic/RecentSearchesCard"));
|
|
57
57
|
const Text_1 = __importStar(require("../../components/generic/Text"));
|
|
58
|
+
const ShadowDomContextProvider_1 = require("../../contexts/ShadowDomContext/ShadowDomContextProvider");
|
|
58
59
|
const RoomstayThemeEngine_1 = __importDefault(require("../../providers/RoomstayThemeEngine"));
|
|
59
60
|
const SessionProvider_1 = __importDefault(require("../../providers/storage/SessionProvider"));
|
|
60
61
|
const Translation_1 = require("../../translations/Translation");
|
|
@@ -156,8 +157,9 @@ const RecentSearchesEngineElement = ({ engine }) => {
|
|
|
156
157
|
};
|
|
157
158
|
exports.RecentSearchesEngineElement = RecentSearchesEngineElement;
|
|
158
159
|
const renderRecentSearchesEngineElement = (container, engine) => {
|
|
159
|
-
(0, react_dom_1.render)(react_1.default.createElement(
|
|
160
|
-
react_1.default.createElement(
|
|
160
|
+
(0, react_dom_1.render)(react_1.default.createElement(ShadowDomContextProvider_1.ShadowDomContextProvider, { value: engine.getShadowDomContextValue() },
|
|
161
|
+
react_1.default.createElement(contexts_1.BookingEngineContextWrapper, { engine: engine },
|
|
162
|
+
react_1.default.createElement(exports.RecentSearchesEngineElement, { engine: engine }))), container);
|
|
161
163
|
};
|
|
162
164
|
exports.renderRecentSearchesEngineElement = renderRecentSearchesEngineElement;
|
|
163
165
|
//# sourceMappingURL=RecentSearchesEngineElement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecentSearchesEngineElement.js","sourceRoot":"/","sources":["src/engines/RecentSearchesEngine/RecentSearchesEngineElement.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BookingEngineContext, BookingEngineContextWrapper } from '@frontend/contexts';\nimport dayjs from 'dayjs';\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { render } from 'react-dom';\nimport { useTranslation } from 'react-i18next';\n\nimport BEButton from '@/components/generic/BEButton';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport RecentSearchesCard from '@/components/generic/RecentSearchesCard';\nimport Text, { TextType } from '@/components/generic/Text';\nimport type { RecentSearchesEngine } from '@/engines/RecentSearchesEngine/RecentSearchesEngine';\nimport BasketRow from '@/models/BasketRow';\nimport { ConfigHotel } from '@/models/Client/Hotel/Hotel';\nimport { RoomstaySession } from '@/models/RoomstaySession';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport SessionProvider from '@/providers/storage/SessionProvider';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\nimport getStepRoom from '@/util/GetStepRoom';\nimport ScreenSize from '@/util/ScreenSize';\n\nexport interface RecentSearchesEngineElementProps {\n engine: RecentSearchesEngine;\n}\n\nexport const RecentSearchesEngineElement = ({ engine }: RecentSearchesEngineElementProps) => {\n const { t } = useTranslation();\n\n const [currentSessions, setCurrentSessions] = useState<RoomstaySession[]>([]);\n\n const beContext = useContext(BookingEngineContext);\n const hotel = useMemo(() => {\n const config = engine.getConfig();\n const selectedHotel = config?.company?.selectedHotel;\n\n if (selectedHotel) {\n return config.company.hotels.find((hotel) => hotel.hotelID === selectedHotel || hotel.hotelID === (selectedHotel as ConfigHotel)?.hotelID);\n }\n }, [engine]);\n\n useEffect(() => {\n resetSessions();\n }, []);\n\n useEffect(() => {\n if (hotel) {\n RoomstayThemeEngine.changeTheme(hotel?.colors);\n }\n }, [hotel]);\n\n const resetSessions = () => {\n engine\n .getSessionProvider()\n .getAllSessions()\n .then((sessions) => {\n const sessionsToUse: RoomstaySession[] = [];\n\n sessions.forEach((session) => {\n if (!hotel || (hotel?.hotelID === session.hotelID && session.basketRows?.length > 0)) {\n let hasValidRow = false;\n session.basketRows.forEach((basket) => {\n if (basket.isValid() && basket.getStartDate().isAfter(dayjs())) {\n hasValidRow = true;\n }\n });\n\n if (hasValidRow) {\n sessionsToUse.push(session);\n }\n }\n });\n\n sessionsToUse.reverse();\n\n setCurrentSessions(sessionsToUse);\n });\n };\n\n const smallBlurb = (\n <Text color={Color.White} type={TextType.Small}>\n {t(Translation.RecentSearch.SubTagLine)}\n </Text>\n );\n\n const onRemoveCard = async (session: RoomstaySession) => {\n const provider = new SessionProvider();\n await provider.initialize(session.id);\n\n provider.deleteSession();\n\n resetSessions();\n };\n\n const redirectToCheckout = () => {\n window.open(hotel?.checkoutUrl);\n };\n\n return currentSessions.length ? (\n <div style={{ backgroundColor: Color.Navy }}>\n <div className=\"container\">\n <div className=\"u-pad-top-bottom--heavy\">\n <div className=\"u-marg-bottom\">\n <Text color={Color.White} bold>\n {t(Translation.RecentSearch.RecentSearches)}\n </Text>\n {beContext.screenSize <= ScreenSize.Medium && smallBlurb}\n </div>\n <div className=\"row u-marg-bottom\">\n {!!currentSessions?.length &&\n currentSessions.slice(0, 2).map((session: RoomstaySession) => {\n let validRow: BasketRow | undefined = undefined;\n\n for (const row of session.basketRows) {\n if (row.isValid()) {\n validRow = row;\n break;\n }\n }\n\n const removeCard = () => {\n onRemoveCard(session);\n };\n\n const onViewRates = async () => {\n const manager = new SessionProvider();\n await manager.initialize(session.id);\n\n manager\n .updateSession({\n step: getStepRoom().getName(),\n })\n .then(() => {\n window.open(`${hotel?.checkoutUrl ?? '/checkout/'}#${getStepRoom().getStepUrl()}?session=${session.id}`, '_self');\n });\n };\n\n return (\n <div key={validRow?.getID()} className=\"col-lg-6\">\n <RecentSearchesCard basketRow={validRow as BasketRow} onRemove={removeCard} onViewRatesClicked={onViewRates} />\n </div>\n );\n })}\n </div>\n <div className=\"u-flex u-flex-align-center flex-column flex-md-row justify-align-content-md-center\">\n {beContext.screenSize > ScreenSize.Medium && smallBlurb}\n <BEButton icon={IconType.ArrowRight} iconPosition=\"right\" primary filled onClick={redirectToCheckout}>\n {t(Translation.RecentSearch.SeeAllRooms, {\n hotelName: hotel?.name,\n })}\n </BEButton>\n </div>\n </div>\n </div>\n </div>\n ) : (\n <></>\n );\n};\n\nexport const renderRecentSearchesEngineElement = (container: Element, engine: RecentSearchesEngine) => {\n render(\n <BookingEngineContextWrapper engine={engine}>\n <RecentSearchesEngineElement engine={engine} />\n </BookingEngineContextWrapper>,\n container\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"RecentSearchesEngineElement.js","sourceRoot":"/","sources":["src/engines/RecentSearchesEngine/RecentSearchesEngineElement.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BookingEngineContext, BookingEngineContextWrapper } from '@frontend/contexts';\nimport dayjs from 'dayjs';\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { render } from 'react-dom';\nimport { useTranslation } from 'react-i18next';\n\nimport BEButton from '@/components/generic/BEButton';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport RecentSearchesCard from '@/components/generic/RecentSearchesCard';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { ShadowDomContextProvider } from '@/contexts/ShadowDomContext/ShadowDomContextProvider';\nimport type { RecentSearchesEngine } from '@/engines/RecentSearchesEngine/RecentSearchesEngine';\nimport BasketRow from '@/models/BasketRow';\nimport { ConfigHotel } from '@/models/Client/Hotel/Hotel';\nimport { RoomstaySession } from '@/models/RoomstaySession';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport SessionProvider from '@/providers/storage/SessionProvider';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\nimport getStepRoom from '@/util/GetStepRoom';\nimport ScreenSize from '@/util/ScreenSize';\n\nexport interface RecentSearchesEngineElementProps {\n engine: RecentSearchesEngine;\n}\n\nexport const RecentSearchesEngineElement = ({ engine }: RecentSearchesEngineElementProps) => {\n const { t } = useTranslation();\n\n const [currentSessions, setCurrentSessions] = useState<RoomstaySession[]>([]);\n\n const beContext = useContext(BookingEngineContext);\n const hotel = useMemo(() => {\n const config = engine.getConfig();\n const selectedHotel = config?.company?.selectedHotel;\n\n if (selectedHotel) {\n return config.company.hotels.find((hotel) => hotel.hotelID === selectedHotel || hotel.hotelID === (selectedHotel as ConfigHotel)?.hotelID);\n }\n }, [engine]);\n\n useEffect(() => {\n resetSessions();\n }, []);\n\n useEffect(() => {\n if (hotel) {\n RoomstayThemeEngine.changeTheme(hotel?.colors);\n }\n }, [hotel]);\n\n const resetSessions = () => {\n engine\n .getSessionProvider()\n .getAllSessions()\n .then((sessions) => {\n const sessionsToUse: RoomstaySession[] = [];\n\n sessions.forEach((session) => {\n if (!hotel || (hotel?.hotelID === session.hotelID && session.basketRows?.length > 0)) {\n let hasValidRow = false;\n session.basketRows.forEach((basket) => {\n if (basket.isValid() && basket.getStartDate().isAfter(dayjs())) {\n hasValidRow = true;\n }\n });\n\n if (hasValidRow) {\n sessionsToUse.push(session);\n }\n }\n });\n\n sessionsToUse.reverse();\n\n setCurrentSessions(sessionsToUse);\n });\n };\n\n const smallBlurb = (\n <Text color={Color.White} type={TextType.Small}>\n {t(Translation.RecentSearch.SubTagLine)}\n </Text>\n );\n\n const onRemoveCard = async (session: RoomstaySession) => {\n const provider = new SessionProvider();\n await provider.initialize(session.id);\n\n provider.deleteSession();\n\n resetSessions();\n };\n\n const redirectToCheckout = () => {\n window.open(hotel?.checkoutUrl);\n };\n\n return currentSessions.length ? (\n <div style={{ backgroundColor: Color.Navy }}>\n <div className=\"container\">\n <div className=\"u-pad-top-bottom--heavy\">\n <div className=\"u-marg-bottom\">\n <Text color={Color.White} bold>\n {t(Translation.RecentSearch.RecentSearches)}\n </Text>\n {beContext.screenSize <= ScreenSize.Medium && smallBlurb}\n </div>\n <div className=\"row u-marg-bottom\">\n {!!currentSessions?.length &&\n currentSessions.slice(0, 2).map((session: RoomstaySession) => {\n let validRow: BasketRow | undefined = undefined;\n\n for (const row of session.basketRows) {\n if (row.isValid()) {\n validRow = row;\n break;\n }\n }\n\n const removeCard = () => {\n onRemoveCard(session);\n };\n\n const onViewRates = async () => {\n const manager = new SessionProvider();\n await manager.initialize(session.id);\n\n manager\n .updateSession({\n step: getStepRoom().getName(),\n })\n .then(() => {\n window.open(`${hotel?.checkoutUrl ?? '/checkout/'}#${getStepRoom().getStepUrl()}?session=${session.id}`, '_self');\n });\n };\n\n return (\n <div key={validRow?.getID()} className=\"col-lg-6\">\n <RecentSearchesCard basketRow={validRow as BasketRow} onRemove={removeCard} onViewRatesClicked={onViewRates} />\n </div>\n );\n })}\n </div>\n <div className=\"u-flex u-flex-align-center flex-column flex-md-row justify-align-content-md-center\">\n {beContext.screenSize > ScreenSize.Medium && smallBlurb}\n <BEButton icon={IconType.ArrowRight} iconPosition=\"right\" primary filled onClick={redirectToCheckout}>\n {t(Translation.RecentSearch.SeeAllRooms, {\n hotelName: hotel?.name,\n })}\n </BEButton>\n </div>\n </div>\n </div>\n </div>\n ) : (\n <></>\n );\n};\n\nexport const renderRecentSearchesEngineElement = (container: Element, engine: RecentSearchesEngine) => {\n render(\n <ShadowDomContextProvider value={engine.getShadowDomContextValue()}>\n <BookingEngineContextWrapper engine={engine}>\n <RecentSearchesEngineElement engine={engine} />\n </BookingEngineContextWrapper>\n </ShadowDomContextProvider>,\n container\n );\n};\n"]}
|