@roomstay/frontend 2.6.108 → 2.6.110
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/836.bundle.js +1 -1
- package/dist/978.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/components/steps/addons/AddonCard.js +3 -0
- package/dist/src/components/steps/addons/AddonCard.js.map +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +7 -2
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
- package/dist/src/events/actions/AddAddonToCartEvent.d.ts +7 -0
- package/dist/src/events/actions/AddAddonToCartEvent.js +15 -0
- package/dist/src/events/actions/AddAddonToCartEvent.js.map +1 -0
- package/dist/src/events/index.d.ts +1 -0
- package/dist/src/events/index.js +1 -0
- package/dist/src/events/index.js.map +1 -1
- package/dist/src/events/views/CommittedBookingEvent.d.ts +3 -1
- package/dist/src/events/views/CommittedBookingEvent.js +2 -1
- package/dist/src/events/views/CommittedBookingEvent.js.map +1 -1
- package/dist/src/events/views/StepCheckoutViewEvent.d.ts +3 -1
- package/dist/src/events/views/StepCheckoutViewEvent.js +2 -1
- package/dist/src/events/views/StepCheckoutViewEvent.js.map +1 -1
- package/dist/src/models/Confirmation.d.ts +1 -0
- package/dist/src/models/Confirmation.js.map +1 -1
- package/dist/src/models/Room/Room.d.ts +1 -0
- package/dist/src/models/Room/Room.js +3 -0
- package/dist/src/models/Room/Room.js.map +1 -1
- package/dist/src/models/Room/RoomRate.d.ts +1 -0
- package/dist/src/models/Room/RoomRate.js +3 -0
- package/dist/src/models/Room/RoomRate.js.map +1 -1
- package/dist/src/models/Room/RoomRateSortable.d.ts +1 -0
- package/dist/src/models/Room/RoomRateSortable.js.map +1 -1
- package/dist/src/models/RoomstaySession.d.ts +1 -0
- package/dist/src/models/RoomstaySession.js.map +1 -1
- package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js +2 -2
- package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js.map +1 -1
- package/dist/src/providers/RoomSortProvider.js +15 -3
- package/dist/src/providers/RoomSortProvider.js.map +1 -1
- package/dist/src/providers/feature/AnalyticsEventsFeature.js +1 -0
- package/dist/src/providers/feature/AnalyticsEventsFeature.js.map +1 -1
- package/dist/src/util/AnalyticsEvents/AnalyticsEvents.d.ts +9 -3
- package/dist/src/util/AnalyticsEvents/AnalyticsEvents.js +51 -12
- package/dist/src/util/AnalyticsEvents/AnalyticsEvents.js.map +1 -1
- package/dist/src/util/AnalyticsEvents/helpers.d.ts +12 -3
- package/dist/src/util/AnalyticsEvents/helpers.js +27 -3
- package/dist/src/util/AnalyticsEvents/helpers.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/package.json +3 -3
|
@@ -51,6 +51,8 @@ const NumberIncrement_1 = __importDefault(require("../../generic/NumberIncrement
|
|
|
51
51
|
const Select_1 = require("../../generic/Select/Select");
|
|
52
52
|
const TaxInclusionNotice_1 = require("../../generic/TaxInclusionNotice/TaxInclusionNotice");
|
|
53
53
|
const Text_1 = __importStar(require("../../generic/Text"));
|
|
54
|
+
const AddAddonToCartEvent_1 = require("../../../events/actions/AddAddonToCartEvent");
|
|
55
|
+
const RoomstayEventManager_1 = __importDefault(require("../../../events/RoomstayEventManager"));
|
|
54
56
|
const ImageProvider_1 = __importStar(require("../../../providers/ImageProvider"));
|
|
55
57
|
const Translation_1 = require("../../../translations/Translation");
|
|
56
58
|
const Color_1 = require("../../../util/Color");
|
|
@@ -105,6 +107,7 @@ const AddonCard = ({ addon, className }) => {
|
|
|
105
107
|
const selectedBasketRow = basketContext.currentBasketRows[0];
|
|
106
108
|
if (basketAddonRow && selectedBasketRow) {
|
|
107
109
|
DataLayer_1.default.instance.sendRoomAddonAddToCart(basketAddonRow, quantity, selectedBasketRow.getStartDate(), selectedBasketRow.getStartDate());
|
|
110
|
+
RoomstayEventManager_1.default.raise(new AddAddonToCartEvent_1.AddAddonToCartEvent(basketAddonRow));
|
|
108
111
|
}
|
|
109
112
|
};
|
|
110
113
|
const classes = (0, classnames_1.default)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddonCard.js","sourceRoot":"/","sources":["src/components/steps/addons/AddonCard.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { ADDON_PER_NIGHT_TYPES, BasketAddonDTO, EAddonPricingType, EPromoCodeDiscountType, TotalCalculator } from '@roomstay/core';\nimport classNames from 'classnames';\nimport Check from 'icons/Check';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport { HtmlContentViewer } from '@/components/generic/HtmlContentViewer';\nimport NumberIncrement from '@/components/generic/NumberIncrement';\nimport { IDefaultSelectOption, Select } from '@/components/generic/Select/Select';\nimport { TaxInclusionNotice } from '@/components/generic/TaxInclusionNotice/TaxInclusionNotice';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Addon, PriceInfo } from '@/models/Addon/Addon';\nimport ImageProvider, { ImageSize } from '@/providers/ImageProvider';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\nimport DataLayer from '@/util/DataLayer';\nimport { AddonDiscountCalculator } from '@/utils/AddonDiscountCalculator';\n\ninterface Props {\n addon: Addon;\n className?: string;\n}\n\nconst AddonCard = ({ addon, className }: Props) => {\n const { t } = useTranslation();\n\n const { hotel } = useCurrentHotel();\n const basketContext = React.useContext(BasketContext);\n\n const addonBasketRow = basketContext.getRowForAddon(addon);\n\n const [quantity, setQuantity] = useState(1);\n const [adultQuantity, setAdultQuantity] = useState(addonBasketRow ? addonBasketRow.getAdultQuantity() : 1);\n const [childQuantity, setChildQuantity] = useState(addonBasketRow ? addonBasketRow.getChildQuantity() : 0);\n\n const [priceInfo, setPriceInfo] = useState<PriceInfo>({ quantity: 1 });\n\n const [selectedDate, setSelectedDate] = useState(addonBasketRow ? addonBasketRow.getSelectedDate() : '');\n const [selectedTime, setSelectedTime] = useState(addonBasketRow ? addonBasketRow.getSelectedTime() : '');\n\n useEffect(() => {\n if (addonBasketRow) {\n setPriceInfo(addon.availability[addonBasketRow.getSelectedDate()] ?? addon.availability[addon.firstDate as string]);\n setSelectedDate(addonBasketRow.getSelectedDate() ?? addon.firstDate);\n setSelectedTime(addonBasketRow.getSelectedTime() ?? '');\n setQuantity(addonBasketRow.getQuantity());\n setAdultQuantity(addonBasketRow.getAdultQuantity());\n setChildQuantity(addonBasketRow.getChildQuantity());\n } else {\n setPriceInfo(addon.availability[addon.firstDate as string] ?? ([] as any));\n setSelectedDate(addon.firstDate as string);\n setSelectedTime(addon.availability[addon.firstDate as string]?.selectorTimes?.[0]?.value || '');\n }\n }, []);\n\n const setDate = (date: any) => {\n setPriceInfo(addon.availability[date]);\n setSelectedDate(date);\n setSelectedTime(addon.availability[date]?.selectorTimes?.[0]?.value || '');\n if (addon.availability[date].quantity < quantity) {\n setQuantity(addon.availability[date].quantity);\n }\n };\n\n const onClickAddToCartHandler = () => {\n basketContext.setAddonQuantities(\n addon,\n {\n quantity,\n adult: adultQuantity,\n child: childQuantity,\n },\n selectedDate,\n selectedTime\n );\n const basketAddonRow = basketContext.basketAddonRows.find((row) => {\n return row.getAddon().code === addon.code;\n });\n const selectedBasketRow = basketContext.currentBasketRows[0];\n if (basketAddonRow && selectedBasketRow) {\n DataLayer.instance.sendRoomAddonAddToCart(basketAddonRow, quantity, selectedBasketRow.getStartDate(), selectedBasketRow.getStartDate());\n }\n };\n\n const classes = classNames({\n '--active': !!basketContext.getRowForAddon(addon),\n });\n\n const onClickRemove = () => {\n const selectedAddon = basketContext.basketAddonRows.find((row) => {\n return row.getAddon().code === addon.code;\n });\n if (selectedAddon) basketContext.removeBasketAddonRow(selectedAddon);\n };\n\n const setQuantityOnChange = (val: any) => {\n setQuantity(val);\n };\n const setAdultsQuantityOnChange = (val: any) => {\n setAdultQuantity(val);\n };\n const setChildQuantityOnChange = (val: any) => {\n setChildQuantity(val);\n };\n const setDateOnChange = (selected: string) => {\n setDate(selected);\n };\n const setSelectedTimeOnChange = (selected: any) => {\n setSelectedTime(selected);\n };\n\n // Pricing type checks\n const isPerPerson = [EAddonPricingType.PER_PERSON, EAddonPricingType.PER_PERSON_PER_NIGHT].includes(addon.pricingType);\n const isPerAllPersons = [EAddonPricingType.PER_ALL_PERSONS, EAddonPricingType.PER_ALL_PERSONS_PER_NIGHT].includes(addon.pricingType);\n\n // Hide quantity if admin enabled and addon is per-person type\n const hidePerPersonQuantity = isPerPerson && addon.hideQuantity;\n\n // Default quantities when addon is per person\n useEffect(() => {\n if (!isPerPerson) return;\n const rows = basketContext.currentBasketRows;\n if (!rows || rows.length === 0) return;\n\n // Sum all adults & children from all reservations\n const totalAdults = rows.reduce((sum, r) => sum + r.getAdults(), 0);\n const totalChildren = rows.reduce((sum, r) => sum + r.getChildren(), 0);\n\n // Set adults qty always\n setAdultQuantity(totalAdults);\n\n // If child pricing exists → set children qty\n if (priceInfo?.childPrice) {\n setChildQuantity(totalChildren);\n } else {\n // Otherwise fallback to set quantity qty\n setQuantity(totalAdults);\n }\n }, [addon.code, isPerPerson, priceInfo?.childPrice, basketContext.currentBasketRows]);\n\n // --- Enable/Disable Helpers -------------------------------------------------\n const enableDateInput = (): boolean => {\n return (addonBasketRow?.getNumberOfAvailableNights?.() as number) > 1 && !addonBasketRow?.getAddon().hideDatePicker;\n };\n const enableQuantityInput = (): boolean => {\n return !!priceInfo?.price && priceInfo?.quantity > 1 && !hidePerPersonQuantity;\n };\n\n const enableAdultInput = (): boolean => !isPerAllPersons && !!priceInfo?.adultPrice && !hidePerPersonQuantity;\n const enableChildInput = (): boolean => !isPerAllPersons && !!priceInfo?.childPrice && !hidePerPersonQuantity;\n\n // --- Addon Configuration ----------------------------------------------------\n const addonConfigurations = [\n {\n name: 'Date',\n enabled: enableDateInput(),\n element: (\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={addon.selectorDates}\n value={selectedDate}\n onChange={setDateOnChange}\n keyName=\"value\"\n labelName=\"text\"\n className=\"u-flex align-items-center\"\n />\n ),\n },\n {\n name: 'Time',\n enabled: priceInfo?.selectorTimes?.length !== 0,\n element: (\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={priceInfo?.selectorTimes || []}\n value={selectedTime}\n onChange={setSelectedTimeOnChange}\n keyName=\"value\"\n labelName=\"text\"\n className=\"u-flex align-items-center\"\n />\n ),\n },\n {\n name: Translation.Step.Addon.Quantity,\n enabled: enableQuantityInput(),\n element: <NumberIncrement number={quantity} min={1} max={priceInfo.quantity} onChange={setQuantityOnChange} />,\n },\n {\n name: Translation.Step.Date.Adult_plural,\n enabled: enableAdultInput(),\n element: <NumberIncrement number={adultQuantity} min={0} max={priceInfo.quantity - childQuantity} onChange={setAdultsQuantityOnChange} />,\n },\n {\n name: Translation.Step.Date.Child_plural,\n enabled: enableChildInput(),\n element: <NumberIncrement number={childQuantity} min={0} max={priceInfo.quantity - adultQuantity} onChange={setChildQuantityOnChange} />,\n },\n ];\n\n const pricingTypeSuffix = (() => {\n switch (addon.pricingType) {\n case EAddonPricingType.PER_STAY:\n return t(Translation.Misc.QTY);\n case EAddonPricingType.PER_PERSON:\n return t(Translation.Misc.Person);\n case EAddonPricingType.PER_PERSON_OCCUPANCY_PER_NIGHT:\n case EAddonPricingType.PER_PERSON_PER_NIGHT:\n return t(Translation.Misc.PersonPerNight);\n case EAddonPricingType.PER_ADULT_OCCUPANCY_PER_NIGHT:\n case EAddonPricingType.PER_CHILD_OCCUPANCY_PER_NIGHT:\n return t(Translation.Misc.AdultPerNight);\n case EAddonPricingType.PER_NIGHT:\n case EAddonPricingType.PER_QUANTITY_NAME_PER_NIGHT:\n return t(Translation.Misc.Night);\n case EAddonPricingType.PER_ROOM_QUANTITY_PER_NIGHT:\n return t(Translation.Misc.PerRoomDay);\n }\n })();\n\n const addonCardImageStyle: any = {};\n if (addon.image) {\n addonCardImageStyle.backgroundImage = `url('${ImageProvider.resizeImage(addon.image, ImageSize.Original)}')`;\n } else {\n addonCardImageStyle.backgroundImage = `url('${hotel?.logo && ImageProvider.resizeImage(hotel?.logo as string, ImageSize.Original)}')`;\n addonCardImageStyle.backgroundSize = '50%';\n addonCardImageStyle.backgroundRepeat = 'no-repeat';\n }\n\n const hasFees = hotel?.fees && hotel.fees.filter((fee) => fee.appliesToAddons).length > 0;\n\n // Calculate promo code discount for this addon\n const { discountAmount, discountedUnitPrice, discountedAdultPrice, discountedChildPrice } = useMemo(() => {\n // Use TotalCalculator to get base price (without fees or discounts)\n const addonDto: Partial<BasketAddonDTO> = {\n code: addon.code,\n pricingType: addon.pricingType,\n price: priceInfo?.price ?? 0,\n adultPrice: priceInfo?.adultPrice,\n childPrice: priceInfo?.childPrice,\n quantity,\n adultQuantity,\n childQuantity,\n nights: addon.nights || 1,\n };\n\n const { addonTotal } = TotalCalculator.calculateBaseAddonTotal(addonDto, false);\n\n // For per-unit price preview, calculate what the total would be with at least 1 adult and 1 child.\n // This lets us show \"A$0 / Child\" when children=0 to indicate adding a child would be free.\n const previewAddonDto: Partial<BasketAddonDTO> = {\n ...addonDto,\n adultQuantity: Math.max(1, adultQuantity),\n childQuantity: Math.max(1, childQuantity),\n };\n const { addonTotal: previewAddonTotal } = TotalCalculator.calculateBaseAddonTotal(previewAddonDto, false);\n\n // When addon is already in basket, exclude it from the calculation to avoid double-counting.\n const otherAddonsInBasket = addonBasketRow ? basketContext.basketAddonRows.filter((row) => row.getID() !== addonBasketRow.getID()) : basketContext.basketAddonRows;\n\n // Calculate actual discount based on current UI state (for totals and actual discount amount).\n const discount = AddonDiscountCalculator.calculatePreviewDiscount(addonTotal, otherAddonsInBasket, basketContext.currentBasketRows, basketContext.promoCodeDetails);\n\n // Calculate preview discount with at least 1 of each person type (for per-unit price display).\n const previewDiscount = AddonDiscountCalculator.calculatePreviewDiscount(\n previewAddonTotal,\n otherAddonsInBasket,\n basketContext.currentBasketRows,\n basketContext.promoCodeDetails\n );\n\n // Helper to calculate discounted unit price\n const calcDiscountedPrice = (unitPrice: number | undefined, totalCost: number, availableDiscount: number): { price: number; discountUsed: number } => {\n if (!unitPrice || availableDiscount <= 0) {\n return { price: unitPrice ?? 0, discountUsed: 0 };\n }\n\n const promoDetails = basketContext.promoCodeDetails;\n if (promoDetails?.discountType === EPromoCodeDiscountType.FlatPercent) {\n const percentOff = promoDetails.discountAmount / 100;\n return {\n price: Math.round(unitPrice * (1 - percentOff) * 100) / 100,\n discountUsed: 0,\n };\n }\n\n // Fixed discount\n const discountUsed = Math.min(availableDiscount, totalCost);\n const perUnitDiscount = totalCost > 0 ? (discountUsed / totalCost) * unitPrice : 0;\n return {\n price: Math.max(0, unitPrice - perUnitDiscount),\n discountUsed,\n };\n };\n\n // Calculate discounted per-unit prices\n let discUnitPrice = priceInfo?.price ?? 0;\n let discAdultPrice = priceInfo?.adultPrice ?? 0;\n let discChildPrice = priceInfo?.childPrice ?? 0;\n\n if (previewDiscount > 0 && previewAddonTotal > 0) {\n const isPerNight = ADDON_PER_NIGHT_TYPES.includes(addon.pricingType);\n const nightsMultiplier = isPerNight ? addon.nights || 1 : 1;\n\n // Simple unit price (Per Person, Per Night, etc.)\n if (priceInfo?.price) {\n const effectiveQty = Math.max(1, quantity);\n const previewCost = priceInfo.price * effectiveQty * nightsMultiplier;\n const result = calcDiscountedPrice(priceInfo.price, previewCost, previewDiscount);\n discUnitPrice = result.price;\n }\n\n // Adult/child prices - sequential allocation (adults first, then children)\n const effectiveAdultQty = Math.max(1, adultQuantity);\n const effectiveChildQty = Math.max(1, childQuantity);\n const previewAdultCost = priceInfo?.adultPrice ? priceInfo.adultPrice * effectiveAdultQty * nightsMultiplier : 0;\n const previewChildCost = priceInfo?.childPrice ? priceInfo.childPrice * effectiveChildQty * nightsMultiplier : 0;\n\n // Allocate discount sequentially: adults first, then remaining to children\n const adultDiscountUsed = Math.min(previewDiscount, previewAdultCost);\n const remainingForChild = Math.max(0, previewDiscount - adultDiscountUsed);\n\n if (priceInfo?.adultPrice) {\n const result = calcDiscountedPrice(priceInfo.adultPrice, previewAdultCost, adultDiscountUsed);\n discAdultPrice = result.price;\n }\n if (priceInfo?.childPrice) {\n const result = calcDiscountedPrice(priceInfo.childPrice, previewChildCost, remainingForChild);\n discChildPrice = result.price;\n }\n }\n\n return {\n discountAmount: discount,\n discountedPrice: addonTotal - discount,\n discountedUnitPrice: discUnitPrice,\n discountedAdultPrice: discAdultPrice,\n discountedChildPrice: discChildPrice,\n };\n }, [\n priceInfo,\n quantity,\n adultQuantity,\n childQuantity,\n addon.pricingType,\n addon.code,\n addon.nights,\n basketContext.promoCodeDetails,\n basketContext.currentBasketRows,\n basketContext.basketAddonRows,\n addonBasketRow,\n ]);\n\n const hasDiscount = discountAmount > 0;\n\n return (\n <div className={classNames('u-flex u-flex-flex-start u-rounded addon-card-wrapper', className, classes)} style={{ backgroundColor: Color.White }}>\n <div className=\"addon-card-image\" style={addonCardImageStyle} />\n <div className=\"u-marg-heavy u-marg@m- u-w-100@xl\">\n <div className=\"u-flex\">\n <Headline bold>{addon.name}</Headline>\n {addonBasketRow ? <Check /> : <></>}\n </div>\n <Text color={Color.DarkGrey} type={TextType.Small} asDiv>\n <HtmlContentViewer content={addon.description} />\n </Text>\n <div className=\"addon-card-wrapper--price u-flex u-flex-align-flex-end\">\n <div className=\"u-w-100\">\n {addonConfigurations.map((input) => {\n if (!input.enabled) {\n return;\n }\n\n return (\n <div key={input.name} className=\"u-flex justify-content-start u-marg-bot u-marg-top\">\n <Text className=\"u-mw-100\" bold>\n {t(input.name)}\n </Text>\n {input.element}\n </div>\n );\n })}\n </div>\n <div className=\"addon-card-wrapper--price-action\">\n <div className=\"u-flex u-flex-direction-column u-flex-align-flex-end\" style={{ alignSelf: 'flex-end' }}>\n <Text type={TextType.Small} color={Color.Navy} inline>\n {t(Translation.Misc.From)}\n </Text>\n <div className=\"room-details--content-price flex-align-items-baseline flex-row\">\n {priceInfo?.price && (\n <div className=\"d-flex align-items-end flex-row\">\n {/* Show original price strikethrough if discounted */}\n {hasDiscount && (\n <Text type={TextType.Small} color={Color.DarkGrey} inline style={{ textDecoration: 'line-through' }} className=\"u-marg-right--light\">\n <Currency hideDecimals>{priceInfo.price}</Currency>\n </Text>\n )}\n <Headline size=\"large\" bold lineHeight=\"1em\">\n <Currency hideDecimals>{hasDiscount ? discountedUnitPrice : priceInfo.price}</Currency>\n </Headline>\n <Text type={TextType.Small} color={Color.DarkGrey} inline className=\"u-marg-left--light u-clear-font-weight\">\n / {pricingTypeSuffix}\n </Text>\n </div>\n )}\n {(!!priceInfo?.adultPrice || !!priceInfo?.childPrice) && (\n <h2 className=\"u-marg-none d-flex flex-wrap justify-content-end\">\n {!!priceInfo.adultPrice && (\n <div className=\"d-flex align-items-end flex-row\">\n {/* Show original price strikethrough if discounted */}\n {hasDiscount && discountedAdultPrice < priceInfo.adultPrice && (\n <Text\n type={TextType.Small}\n color={Color.DarkGrey}\n inline\n style={{ textDecoration: 'line-through' }}\n className=\"u-marg-right--light\"\n >\n <Currency>{priceInfo.adultPrice}</Currency>\n </Text>\n )}\n <Headline size=\"large\" bold lineHeight=\"1em\">\n <Currency>{hasDiscount ? discountedAdultPrice : priceInfo.adultPrice}</Currency>\n </Headline>\n <Text type={TextType.Small} color={Color.DarkGrey} inline className=\"u-marg-left--light u-clear-font-weight\">\n /{' '}\n {addon.pricingType === EAddonPricingType.PER_ALL_PERSONS_PER_NIGHT\n ? t(Translation.Misc.AdultPerNight)\n : t(Translation.Step.Date.Adult)}\n </Text>\n </div>\n )}\n {!!priceInfo.adultPrice && !!priceInfo.childPrice && <br />}\n {!!priceInfo.childPrice && (\n <div className=\"d-flex align-items-end flex-row\">\n {/* Show original price strikethrough if discounted */}\n {hasDiscount && discountedChildPrice < priceInfo.childPrice && (\n <Text\n type={TextType.Small}\n color={Color.DarkGrey}\n inline\n style={{ textDecoration: 'line-through' }}\n className=\"u-marg-right--light\"\n >\n <Currency>{priceInfo.childPrice}</Currency>\n </Text>\n )}\n <Headline size=\"large\" bold lineHeight=\"1em\">\n <Currency>{hasDiscount ? discountedChildPrice : priceInfo.childPrice}</Currency>\n </Headline>\n <Text type={TextType.Small} color={Color.DarkGrey} inline className=\"u-marg-left--light u-clear-font-weight\">\n /{' '}\n {addon.pricingType === EAddonPricingType.PER_ALL_PERSONS_PER_NIGHT\n ? t(Translation.Misc.ChildPerNight)\n : t(Translation.Step.Date.Child)}\n </Text>\n </div>\n )}\n </h2>\n )}\n </div>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small} color={Color.Grey} inline className=\"u-nowrap\">\n <TaxInclusionNotice hasTax={!(hotel?.enableCreditCardSurcharge || hasFees)} isAddon />\n </Text>\n </div>\n </div>\n <div className=\"u-marg-top--light u-flex justify-content-end u-w-100@l- flex-column flex-lg-row\">\n {addonBasketRow ? (\n <div className=\"u-marg-right--light@l u-marg-bottom--light@l-\">\n <BEButton onClick={onClickRemove} textColor={Color.White} backgroundColor={Color.Navy} wide>\n {t(Translation.Step.Addon.Remove)}\n </BEButton>\n </div>\n ) : (\n <></>\n )}\n <BEButton onClick={onClickAddToCartHandler} primary filled wide>\n {addonBasketRow ? t(Translation.Step.Addon.UpdateCart) : t(Translation.Step.Addon.AddToCart)}\n </BEButton>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default AddonCard;\n"]}
|
|
1
|
+
{"version":3,"file":"AddonCard.js","sourceRoot":"/","sources":["src/components/steps/addons/AddonCard.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { ADDON_PER_NIGHT_TYPES, BasketAddonDTO, EAddonPricingType, EPromoCodeDiscountType, TotalCalculator } from '@roomstay/core';\nimport classNames from 'classnames';\nimport Check from 'icons/Check';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport BEButton from '@/components/generic/BEButton';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport { HtmlContentViewer } from '@/components/generic/HtmlContentViewer';\nimport NumberIncrement from '@/components/generic/NumberIncrement';\nimport { IDefaultSelectOption, Select } from '@/components/generic/Select/Select';\nimport { TaxInclusionNotice } from '@/components/generic/TaxInclusionNotice/TaxInclusionNotice';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { AddAddonToCartEvent } from '@/events/actions/AddAddonToCartEvent';\nimport RoomstayEventManager from '@/events/RoomstayEventManager';\nimport { Addon, PriceInfo } from '@/models/Addon/Addon';\nimport ImageProvider, { ImageSize } from '@/providers/ImageProvider';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\nimport DataLayer from '@/util/DataLayer';\nimport { AddonDiscountCalculator } from '@/utils/AddonDiscountCalculator';\n\ninterface Props {\n addon: Addon;\n className?: string;\n}\n\nconst AddonCard = ({ addon, className }: Props) => {\n const { t } = useTranslation();\n\n const { hotel } = useCurrentHotel();\n const basketContext = React.useContext(BasketContext);\n\n const addonBasketRow = basketContext.getRowForAddon(addon);\n\n const [quantity, setQuantity] = useState(1);\n const [adultQuantity, setAdultQuantity] = useState(addonBasketRow ? addonBasketRow.getAdultQuantity() : 1);\n const [childQuantity, setChildQuantity] = useState(addonBasketRow ? addonBasketRow.getChildQuantity() : 0);\n\n const [priceInfo, setPriceInfo] = useState<PriceInfo>({ quantity: 1 });\n\n const [selectedDate, setSelectedDate] = useState(addonBasketRow ? addonBasketRow.getSelectedDate() : '');\n const [selectedTime, setSelectedTime] = useState(addonBasketRow ? addonBasketRow.getSelectedTime() : '');\n\n useEffect(() => {\n if (addonBasketRow) {\n setPriceInfo(addon.availability[addonBasketRow.getSelectedDate()] ?? addon.availability[addon.firstDate as string]);\n setSelectedDate(addonBasketRow.getSelectedDate() ?? addon.firstDate);\n setSelectedTime(addonBasketRow.getSelectedTime() ?? '');\n setQuantity(addonBasketRow.getQuantity());\n setAdultQuantity(addonBasketRow.getAdultQuantity());\n setChildQuantity(addonBasketRow.getChildQuantity());\n } else {\n setPriceInfo(addon.availability[addon.firstDate as string] ?? ([] as any));\n setSelectedDate(addon.firstDate as string);\n setSelectedTime(addon.availability[addon.firstDate as string]?.selectorTimes?.[0]?.value || '');\n }\n }, []);\n\n const setDate = (date: any) => {\n setPriceInfo(addon.availability[date]);\n setSelectedDate(date);\n setSelectedTime(addon.availability[date]?.selectorTimes?.[0]?.value || '');\n if (addon.availability[date].quantity < quantity) {\n setQuantity(addon.availability[date].quantity);\n }\n };\n\n const onClickAddToCartHandler = () => {\n basketContext.setAddonQuantities(\n addon,\n {\n quantity,\n adult: adultQuantity,\n child: childQuantity,\n },\n selectedDate,\n selectedTime\n );\n const basketAddonRow = basketContext.basketAddonRows.find((row) => {\n return row.getAddon().code === addon.code;\n });\n const selectedBasketRow = basketContext.currentBasketRows[0];\n if (basketAddonRow && selectedBasketRow) {\n DataLayer.instance.sendRoomAddonAddToCart(basketAddonRow, quantity, selectedBasketRow.getStartDate(), selectedBasketRow.getStartDate());\n RoomstayEventManager.raise(new AddAddonToCartEvent(basketAddonRow));\n }\n };\n\n const classes = classNames({\n '--active': !!basketContext.getRowForAddon(addon),\n });\n\n const onClickRemove = () => {\n const selectedAddon = basketContext.basketAddonRows.find((row) => {\n return row.getAddon().code === addon.code;\n });\n if (selectedAddon) basketContext.removeBasketAddonRow(selectedAddon);\n };\n\n const setQuantityOnChange = (val: any) => {\n setQuantity(val);\n };\n const setAdultsQuantityOnChange = (val: any) => {\n setAdultQuantity(val);\n };\n const setChildQuantityOnChange = (val: any) => {\n setChildQuantity(val);\n };\n const setDateOnChange = (selected: string) => {\n setDate(selected);\n };\n const setSelectedTimeOnChange = (selected: any) => {\n setSelectedTime(selected);\n };\n\n // Pricing type checks\n const isPerPerson = [EAddonPricingType.PER_PERSON, EAddonPricingType.PER_PERSON_PER_NIGHT].includes(addon.pricingType);\n const isPerAllPersons = [EAddonPricingType.PER_ALL_PERSONS, EAddonPricingType.PER_ALL_PERSONS_PER_NIGHT].includes(addon.pricingType);\n\n // Hide quantity if admin enabled and addon is per-person type\n const hidePerPersonQuantity = isPerPerson && addon.hideQuantity;\n\n // Default quantities when addon is per person\n useEffect(() => {\n if (!isPerPerson) return;\n const rows = basketContext.currentBasketRows;\n if (!rows || rows.length === 0) return;\n\n // Sum all adults & children from all reservations\n const totalAdults = rows.reduce((sum, r) => sum + r.getAdults(), 0);\n const totalChildren = rows.reduce((sum, r) => sum + r.getChildren(), 0);\n\n // Set adults qty always\n setAdultQuantity(totalAdults);\n\n // If child pricing exists → set children qty\n if (priceInfo?.childPrice) {\n setChildQuantity(totalChildren);\n } else {\n // Otherwise fallback to set quantity qty\n setQuantity(totalAdults);\n }\n }, [addon.code, isPerPerson, priceInfo?.childPrice, basketContext.currentBasketRows]);\n\n // --- Enable/Disable Helpers -------------------------------------------------\n const enableDateInput = (): boolean => {\n return (addonBasketRow?.getNumberOfAvailableNights?.() as number) > 1 && !addonBasketRow?.getAddon().hideDatePicker;\n };\n const enableQuantityInput = (): boolean => {\n return !!priceInfo?.price && priceInfo?.quantity > 1 && !hidePerPersonQuantity;\n };\n\n const enableAdultInput = (): boolean => !isPerAllPersons && !!priceInfo?.adultPrice && !hidePerPersonQuantity;\n const enableChildInput = (): boolean => !isPerAllPersons && !!priceInfo?.childPrice && !hidePerPersonQuantity;\n\n // --- Addon Configuration ----------------------------------------------------\n const addonConfigurations = [\n {\n name: 'Date',\n enabled: enableDateInput(),\n element: (\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={addon.selectorDates}\n value={selectedDate}\n onChange={setDateOnChange}\n keyName=\"value\"\n labelName=\"text\"\n className=\"u-flex align-items-center\"\n />\n ),\n },\n {\n name: 'Time',\n enabled: priceInfo?.selectorTimes?.length !== 0,\n element: (\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={priceInfo?.selectorTimes || []}\n value={selectedTime}\n onChange={setSelectedTimeOnChange}\n keyName=\"value\"\n labelName=\"text\"\n className=\"u-flex align-items-center\"\n />\n ),\n },\n {\n name: Translation.Step.Addon.Quantity,\n enabled: enableQuantityInput(),\n element: <NumberIncrement number={quantity} min={1} max={priceInfo.quantity} onChange={setQuantityOnChange} />,\n },\n {\n name: Translation.Step.Date.Adult_plural,\n enabled: enableAdultInput(),\n element: <NumberIncrement number={adultQuantity} min={0} max={priceInfo.quantity - childQuantity} onChange={setAdultsQuantityOnChange} />,\n },\n {\n name: Translation.Step.Date.Child_plural,\n enabled: enableChildInput(),\n element: <NumberIncrement number={childQuantity} min={0} max={priceInfo.quantity - adultQuantity} onChange={setChildQuantityOnChange} />,\n },\n ];\n\n const pricingTypeSuffix = (() => {\n switch (addon.pricingType) {\n case EAddonPricingType.PER_STAY:\n return t(Translation.Misc.QTY);\n case EAddonPricingType.PER_PERSON:\n return t(Translation.Misc.Person);\n case EAddonPricingType.PER_PERSON_OCCUPANCY_PER_NIGHT:\n case EAddonPricingType.PER_PERSON_PER_NIGHT:\n return t(Translation.Misc.PersonPerNight);\n case EAddonPricingType.PER_ADULT_OCCUPANCY_PER_NIGHT:\n case EAddonPricingType.PER_CHILD_OCCUPANCY_PER_NIGHT:\n return t(Translation.Misc.AdultPerNight);\n case EAddonPricingType.PER_NIGHT:\n case EAddonPricingType.PER_QUANTITY_NAME_PER_NIGHT:\n return t(Translation.Misc.Night);\n case EAddonPricingType.PER_ROOM_QUANTITY_PER_NIGHT:\n return t(Translation.Misc.PerRoomDay);\n }\n })();\n\n const addonCardImageStyle: any = {};\n if (addon.image) {\n addonCardImageStyle.backgroundImage = `url('${ImageProvider.resizeImage(addon.image, ImageSize.Original)}')`;\n } else {\n addonCardImageStyle.backgroundImage = `url('${hotel?.logo && ImageProvider.resizeImage(hotel?.logo as string, ImageSize.Original)}')`;\n addonCardImageStyle.backgroundSize = '50%';\n addonCardImageStyle.backgroundRepeat = 'no-repeat';\n }\n\n const hasFees = hotel?.fees && hotel.fees.filter((fee) => fee.appliesToAddons).length > 0;\n\n // Calculate promo code discount for this addon\n const { discountAmount, discountedUnitPrice, discountedAdultPrice, discountedChildPrice } = useMemo(() => {\n // Use TotalCalculator to get base price (without fees or discounts)\n const addonDto: Partial<BasketAddonDTO> = {\n code: addon.code,\n pricingType: addon.pricingType,\n price: priceInfo?.price ?? 0,\n adultPrice: priceInfo?.adultPrice,\n childPrice: priceInfo?.childPrice,\n quantity,\n adultQuantity,\n childQuantity,\n nights: addon.nights || 1,\n };\n\n const { addonTotal } = TotalCalculator.calculateBaseAddonTotal(addonDto, false);\n\n // For per-unit price preview, calculate what the total would be with at least 1 adult and 1 child.\n // This lets us show \"A$0 / Child\" when children=0 to indicate adding a child would be free.\n const previewAddonDto: Partial<BasketAddonDTO> = {\n ...addonDto,\n adultQuantity: Math.max(1, adultQuantity),\n childQuantity: Math.max(1, childQuantity),\n };\n const { addonTotal: previewAddonTotal } = TotalCalculator.calculateBaseAddonTotal(previewAddonDto, false);\n\n // When addon is already in basket, exclude it from the calculation to avoid double-counting.\n const otherAddonsInBasket = addonBasketRow ? basketContext.basketAddonRows.filter((row) => row.getID() !== addonBasketRow.getID()) : basketContext.basketAddonRows;\n\n // Calculate actual discount based on current UI state (for totals and actual discount amount).\n const discount = AddonDiscountCalculator.calculatePreviewDiscount(addonTotal, otherAddonsInBasket, basketContext.currentBasketRows, basketContext.promoCodeDetails);\n\n // Calculate preview discount with at least 1 of each person type (for per-unit price display).\n const previewDiscount = AddonDiscountCalculator.calculatePreviewDiscount(\n previewAddonTotal,\n otherAddonsInBasket,\n basketContext.currentBasketRows,\n basketContext.promoCodeDetails\n );\n\n // Helper to calculate discounted unit price\n const calcDiscountedPrice = (unitPrice: number | undefined, totalCost: number, availableDiscount: number): { price: number; discountUsed: number } => {\n if (!unitPrice || availableDiscount <= 0) {\n return { price: unitPrice ?? 0, discountUsed: 0 };\n }\n\n const promoDetails = basketContext.promoCodeDetails;\n if (promoDetails?.discountType === EPromoCodeDiscountType.FlatPercent) {\n const percentOff = promoDetails.discountAmount / 100;\n return {\n price: Math.round(unitPrice * (1 - percentOff) * 100) / 100,\n discountUsed: 0,\n };\n }\n\n // Fixed discount\n const discountUsed = Math.min(availableDiscount, totalCost);\n const perUnitDiscount = totalCost > 0 ? (discountUsed / totalCost) * unitPrice : 0;\n return {\n price: Math.max(0, unitPrice - perUnitDiscount),\n discountUsed,\n };\n };\n\n // Calculate discounted per-unit prices\n let discUnitPrice = priceInfo?.price ?? 0;\n let discAdultPrice = priceInfo?.adultPrice ?? 0;\n let discChildPrice = priceInfo?.childPrice ?? 0;\n\n if (previewDiscount > 0 && previewAddonTotal > 0) {\n const isPerNight = ADDON_PER_NIGHT_TYPES.includes(addon.pricingType);\n const nightsMultiplier = isPerNight ? addon.nights || 1 : 1;\n\n // Simple unit price (Per Person, Per Night, etc.)\n if (priceInfo?.price) {\n const effectiveQty = Math.max(1, quantity);\n const previewCost = priceInfo.price * effectiveQty * nightsMultiplier;\n const result = calcDiscountedPrice(priceInfo.price, previewCost, previewDiscount);\n discUnitPrice = result.price;\n }\n\n // Adult/child prices - sequential allocation (adults first, then children)\n const effectiveAdultQty = Math.max(1, adultQuantity);\n const effectiveChildQty = Math.max(1, childQuantity);\n const previewAdultCost = priceInfo?.adultPrice ? priceInfo.adultPrice * effectiveAdultQty * nightsMultiplier : 0;\n const previewChildCost = priceInfo?.childPrice ? priceInfo.childPrice * effectiveChildQty * nightsMultiplier : 0;\n\n // Allocate discount sequentially: adults first, then remaining to children\n const adultDiscountUsed = Math.min(previewDiscount, previewAdultCost);\n const remainingForChild = Math.max(0, previewDiscount - adultDiscountUsed);\n\n if (priceInfo?.adultPrice) {\n const result = calcDiscountedPrice(priceInfo.adultPrice, previewAdultCost, adultDiscountUsed);\n discAdultPrice = result.price;\n }\n if (priceInfo?.childPrice) {\n const result = calcDiscountedPrice(priceInfo.childPrice, previewChildCost, remainingForChild);\n discChildPrice = result.price;\n }\n }\n\n return {\n discountAmount: discount,\n discountedPrice: addonTotal - discount,\n discountedUnitPrice: discUnitPrice,\n discountedAdultPrice: discAdultPrice,\n discountedChildPrice: discChildPrice,\n };\n }, [\n priceInfo,\n quantity,\n adultQuantity,\n childQuantity,\n addon.pricingType,\n addon.code,\n addon.nights,\n basketContext.promoCodeDetails,\n basketContext.currentBasketRows,\n basketContext.basketAddonRows,\n addonBasketRow,\n ]);\n\n const hasDiscount = discountAmount > 0;\n\n return (\n <div className={classNames('u-flex u-flex-flex-start u-rounded addon-card-wrapper', className, classes)} style={{ backgroundColor: Color.White }}>\n <div className=\"addon-card-image\" style={addonCardImageStyle} />\n <div className=\"u-marg-heavy u-marg@m- u-w-100@xl\">\n <div className=\"u-flex\">\n <Headline bold>{addon.name}</Headline>\n {addonBasketRow ? <Check /> : <></>}\n </div>\n <Text color={Color.DarkGrey} type={TextType.Small} asDiv>\n <HtmlContentViewer content={addon.description} />\n </Text>\n <div className=\"addon-card-wrapper--price u-flex u-flex-align-flex-end\">\n <div className=\"u-w-100\">\n {addonConfigurations.map((input) => {\n if (!input.enabled) {\n return;\n }\n\n return (\n <div key={input.name} className=\"u-flex justify-content-start u-marg-bot u-marg-top\">\n <Text className=\"u-mw-100\" bold>\n {t(input.name)}\n </Text>\n {input.element}\n </div>\n );\n })}\n </div>\n <div className=\"addon-card-wrapper--price-action\">\n <div className=\"u-flex u-flex-direction-column u-flex-align-flex-end\" style={{ alignSelf: 'flex-end' }}>\n <Text type={TextType.Small} color={Color.Navy} inline>\n {t(Translation.Misc.From)}\n </Text>\n <div className=\"room-details--content-price flex-align-items-baseline flex-row\">\n {priceInfo?.price && (\n <div className=\"d-flex align-items-end flex-row\">\n {/* Show original price strikethrough if discounted */}\n {hasDiscount && (\n <Text type={TextType.Small} color={Color.DarkGrey} inline style={{ textDecoration: 'line-through' }} className=\"u-marg-right--light\">\n <Currency hideDecimals>{priceInfo.price}</Currency>\n </Text>\n )}\n <Headline size=\"large\" bold lineHeight=\"1em\">\n <Currency hideDecimals>{hasDiscount ? discountedUnitPrice : priceInfo.price}</Currency>\n </Headline>\n <Text type={TextType.Small} color={Color.DarkGrey} inline className=\"u-marg-left--light u-clear-font-weight\">\n / {pricingTypeSuffix}\n </Text>\n </div>\n )}\n {(!!priceInfo?.adultPrice || !!priceInfo?.childPrice) && (\n <h2 className=\"u-marg-none d-flex flex-wrap justify-content-end\">\n {!!priceInfo.adultPrice && (\n <div className=\"d-flex align-items-end flex-row\">\n {/* Show original price strikethrough if discounted */}\n {hasDiscount && discountedAdultPrice < priceInfo.adultPrice && (\n <Text\n type={TextType.Small}\n color={Color.DarkGrey}\n inline\n style={{ textDecoration: 'line-through' }}\n className=\"u-marg-right--light\"\n >\n <Currency>{priceInfo.adultPrice}</Currency>\n </Text>\n )}\n <Headline size=\"large\" bold lineHeight=\"1em\">\n <Currency>{hasDiscount ? discountedAdultPrice : priceInfo.adultPrice}</Currency>\n </Headline>\n <Text type={TextType.Small} color={Color.DarkGrey} inline className=\"u-marg-left--light u-clear-font-weight\">\n /{' '}\n {addon.pricingType === EAddonPricingType.PER_ALL_PERSONS_PER_NIGHT\n ? t(Translation.Misc.AdultPerNight)\n : t(Translation.Step.Date.Adult)}\n </Text>\n </div>\n )}\n {!!priceInfo.adultPrice && !!priceInfo.childPrice && <br />}\n {!!priceInfo.childPrice && (\n <div className=\"d-flex align-items-end flex-row\">\n {/* Show original price strikethrough if discounted */}\n {hasDiscount && discountedChildPrice < priceInfo.childPrice && (\n <Text\n type={TextType.Small}\n color={Color.DarkGrey}\n inline\n style={{ textDecoration: 'line-through' }}\n className=\"u-marg-right--light\"\n >\n <Currency>{priceInfo.childPrice}</Currency>\n </Text>\n )}\n <Headline size=\"large\" bold lineHeight=\"1em\">\n <Currency>{hasDiscount ? discountedChildPrice : priceInfo.childPrice}</Currency>\n </Headline>\n <Text type={TextType.Small} color={Color.DarkGrey} inline className=\"u-marg-left--light u-clear-font-weight\">\n /{' '}\n {addon.pricingType === EAddonPricingType.PER_ALL_PERSONS_PER_NIGHT\n ? t(Translation.Misc.ChildPerNight)\n : t(Translation.Step.Date.Child)}\n </Text>\n </div>\n )}\n </h2>\n )}\n </div>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small} color={Color.Grey} inline className=\"u-nowrap\">\n <TaxInclusionNotice hasTax={!(hotel?.enableCreditCardSurcharge || hasFees)} isAddon />\n </Text>\n </div>\n </div>\n <div className=\"u-marg-top--light u-flex justify-content-end u-w-100@l- flex-column flex-lg-row\">\n {addonBasketRow ? (\n <div className=\"u-marg-right--light@l u-marg-bottom--light@l-\">\n <BEButton onClick={onClickRemove} textColor={Color.White} backgroundColor={Color.Navy} wide>\n {t(Translation.Step.Addon.Remove)}\n </BEButton>\n </div>\n ) : (\n <></>\n )}\n <BEButton onClick={onClickAddToCartHandler} primary filled wide>\n {addonBasketRow ? t(Translation.Step.Addon.UpdateCart) : t(Translation.Step.Addon.AddToCart)}\n </BEButton>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default AddonCard;\n"]}
|
|
@@ -109,10 +109,10 @@ const CompanyContextWrapper = ({ configCompany: company, children }) => {
|
|
|
109
109
|
const allExternalMembershipHandlers = [
|
|
110
110
|
(0, Big4MemberHandler_1.big4MemberHandler)(selectedHotel),
|
|
111
111
|
(0, Top10MemberHandler_1.top10MemberHandler)(selectedHotel),
|
|
112
|
+
(0, MemberJungleMemberHandler_1.memberJungleMemberHandler)(selectedHotel),
|
|
112
113
|
(0, GdayMemberHandler_1.gdayMemberHandler)(selectedHotel),
|
|
113
114
|
(0, SalesforceMemberHandler_1.salesforceMemberHandler)(selectedHotel),
|
|
114
115
|
(0, RACMemberHandler_1.racMemberHandler)(selectedHotel),
|
|
115
|
-
(0, MemberJungleMemberHandler_1.memberJungleMemberHandler)(selectedHotel),
|
|
116
116
|
];
|
|
117
117
|
(0, react_1.useEffect)(() => {
|
|
118
118
|
raise(new events_1.SelectedHotelChangeEvent(selectedHotel));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompanyContextWrapper.js","sourceRoot":"/","sources":["src/contexts/CompanyContext/CompanyContextWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BookingEngineContext, CompanyContext, CompanyContextType, SignInUser } from '@frontend/contexts';\nimport { InitialHotelDetailsEvent, SelectedHotelChangeEvent } from '@frontend/events';\nimport { useEvent } from '@frontend/hooks';\nimport { EMembershipProvider, IHotelColorScheme } from '@roomstay/core';\nimport React, { ReactChild, useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport API from '@/api/BookingAPI';\nimport { MemberPortalWidget } from '@/engines/MemberPortalWidget/MemberPortalWidget';\nimport { APIError } from '@/errors/APIError';\nimport { MemberOnlyFenceSignUp } from '@/events/actions/MemberOnlyFence/MemberOnlyFenceSignUp';\nimport { big4MemberHandler } from '@/handlers/membership/Big4MemberHandler';\nimport { gdayMemberHandler } from '@/handlers/membership/GdayMemberHandler';\nimport { memberJungleMemberHandler } from '@/handlers/membership/MemberJungleMemberHandler';\nimport { racMemberHandler } from '@/handlers/membership/RACMemberHandler';\nimport { salesforceMemberHandler } from '@/handlers/membership/SalesforceMemberHandler';\nimport { top10MemberHandler } from '@/handlers/membership/Top10MemberHandler';\nimport { HotelDTO } from '@/models/Api/HotelDTO';\nimport BasketRow from '@/models/BasketRow';\nimport type { ConfigCompany } from '@/models/Client/Hotel/Company';\nimport type { ConfigHotel, Hotel, InitialHotelDetailsEventPayload } from '@/models/Client/Hotel/Hotel';\nimport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport { IPromotion } from '@/models/Promotion/IPromotion.type';\nimport Filter from '@/models/Room/Filters/Filter';\nimport StepHotel from '@/pages/steps/StepHotel/StepHotel';\nimport CurrencyProvider from '@/providers/CurrencyProvider';\nimport FilterProvider from '@/providers/FilterProvider';\nimport { Language } from '@/providers/LanguageProvider';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport StaticContextProvider from '@/providers/StaticContextProvider';\nimport AnalyticsEvents from '@/util/AnalyticsEvents/AnalyticsEvents';\nimport * as currencyHelper from '@/util/CurrencyHelper';\nimport DataLayer from '@/util/DataLayer';\nimport StepManager from '@/util/StepManager';\nimport TimeHelper from '@/util/TimeHelper';\n\ninterface CompanyContextWrapperProps {\n children: ReactChild;\n configCompany: ConfigCompany;\n}\n\nexport const CompanyContextWrapper = ({ configCompany: company, children }: CompanyContextWrapperProps) => {\n const beContext = useContext(BookingEngineContext);\n\n const getSelectedHotel = () => {\n for (const hotel of hotels) {\n if (selectedHotelID + '' === hotel.hotelID + '') {\n return hotel;\n }\n }\n };\n\n const [companyId, setCompanyId] = useState(company.companyId);\n const [name, setName] = useState(company.name);\n const [companyShort, setCompanyShort] = useState(company.companyShort);\n const [logo, setLogo] = useState(company.logo);\n const [colors, setColors] = useState(company.colors);\n const [hotels, setHotels] = useState<Hotel[]>(company.hotels as Hotel[]);\n const [logoLink, setLogoLink] = useState(company.logoLink);\n const [privacyPolicyUrl, setPrivacyPolicyUrl] = useState(company.privacyPolicyUrl);\n\n const [selectedHotelID, setSelectedHotelID] = useState<string>();\n\n const selectedHotel = useMemo(() => {\n for (const companyHotel of hotels) {\n if (selectedHotelID + '' === companyHotel.hotelID + '') {\n return companyHotel;\n }\n }\n }, [hotels, selectedHotelID]);\n\n const searchParams = new URLSearchParams(window.location.search);\n const currencyParam = searchParams.get('currency');\n\n const [currentCurrency, setCurrentCurrency] = useState<string>(currencyParam ?? getSelectedHotel()?.defaultCurrency ?? 'AUD');\n const [currentLanguage, setCurrentLanguage] = useState<Language>(getSelectedHotel()?.defaultLanguage ?? Language.en_us);\n\n const [memberOnlyModalPromotion, setMemberOnlyModalPromotion] = useState<IPromotion | null>(null);\n\n const [signedInUser, setSignedInUser] = useState<SignInUser | null>(null);\n\n const [memberProviderSigningIn, setMemberProviderSigningIn] = useState<EMembershipProvider | null>(null);\n\n const allExternalMembershipHandlers = [\n big4MemberHandler(selectedHotel),\n top10MemberHandler(selectedHotel),\n gdayMemberHandler(selectedHotel),\n salesforceMemberHandler(selectedHotel),\n racMemberHandler(selectedHotel),\n memberJungleMemberHandler(selectedHotel),\n ];\n\n useEffect(() => {\n raise(new SelectedHotelChangeEvent(selectedHotel));\n }, [selectedHotel]);\n\n const { raise } = useEvent();\n\n const getHotelFromArrayWithId = (id: string, arrayOfHotels: Hotel[] | ConfigHotel[]) => {\n for (const nextHotel of arrayOfHotels) {\n if (nextHotel.hotelID + '' === id + '') {\n return nextHotel;\n }\n }\n };\n const getHotelFromID = (id: string): Hotel => {\n return getHotelFromArrayWithId(id, hotels) as Hotel;\n };\n\n const updateHotel = (newHotel: Hotel, callback?: (hotel: Hotel) => Hotel) => {\n setHotels((oldHotels) => {\n let modified = false;\n const newHotelArray = oldHotels.map((mappingHotel) => {\n if (mappingHotel.hotelID + '' === newHotel.hotelID + '') {\n modified = true;\n\n const hotelDetails: InitialHotelDetailsEventPayload = {\n name: newHotel.name,\n hotelID: newHotel.hotelID,\n hotelUrl: newHotel.hotelUrl,\n currency: newHotel.defaultCurrency,\n language: newHotel.defaultLanguage,\n address: newHotel.address,\n };\n\n const event = new InitialHotelDetailsEvent(hotelDetails);\n raise(event);\n\n if (callback) {\n return { ...callback(mappingHotel) };\n }\n\n return { ...newHotel };\n }\n\n return { ...mappingHotel };\n });\n\n if (!modified) {\n newHotelArray.push(newHotel);\n if (callback) {\n // Fixed: Ensure the callback returns the hotel; otherwise, the UI may receive undefined.\n callback(newHotel);\n }\n }\n\n return newHotelArray;\n });\n };\n\n const signUserIn = async (user: SignInUser) => {\n raise(new MemberOnlyFenceSignUp(memberOnlyModalPromotion as IPromotion, user));\n\n DataLayer.instance.sendMemberSignUp();\n\n workingContext.closeMemberSignupModal();\n\n await beContext.sessionProvider.updateSession({ user: user, memberId: user.memberNumber });\n\n setSignedInUser(user);\n\n // Set external ID for analytics tracking\n if (user.memberNumber) {\n AnalyticsEvents.setExternalId(user.memberNumber);\n }\n\n if (user.saveState) {\n await beContext.storageProvider.setUser(user);\n }\n };\n\n const signUserOut = async () => {\n await beContext.sessionProvider.updateSession({ user: undefined, memberId: undefined });\n await beContext.storageProvider.setUser(undefined);\n setSignedInUser(null);\n };\n\n const getHotel = useCallback(\n (hotelId: string) =>\n new Promise<Hotel>(async (resolve, reject) => {\n const currentHotelVersion: Hotel | undefined = getHotelFromID(hotelId) as Hotel;\n const newHotel: Hotel = {\n ...currentHotelVersion,\n // Fixed: Specified Hotel not found\n // Ensure hotelID is set explicitly in case currentHotelVersion is undefined or missing it.\n hotelID: hotelId,\n };\n let details: HotelDTO | undefined;\n\n try {\n details = await API.Hotel.fetchData(currentLanguage, newHotel);\n } catch (ex) {\n if (ex instanceof APIError) {\n console.error(ex);\n return;\n } else {\n return reject(ex);\n }\n }\n\n if (!details) {\n return;\n }\n\n updateHotel(newHotel, (updatedHotel) => {\n updatedHotel.name = details.name;\n updatedHotel.address = details.address;\n\n updatedHotel.latitude = Number(details.latitude);\n updatedHotel.longitude = Number(details.longitude);\n updatedHotel.phone = details.phone;\n\n updatedHotel.checkInTime = TimeHelper.convert24To12hr(details.checkInTime);\n updatedHotel.checkOutTime = TimeHelper.convert24To12hr(details.checkOutTime);\n\n updatedHotel.paymentCardTypes = details.paymentCardTypes;\n updatedHotel.description = details.description;\n updatedHotel.locationDescription = details.locationDescription;\n updatedHotel.policies = details.policies;\n\n updatedHotel.hotelServices = details.hotelServices;\n updatedHotel.businessServices = details.businessServices;\n updatedHotel.rooms = details.rooms;\n\n updatedHotel.hasLoadedDetails = true;\n updatedHotel.dataSource = details.dataSource;\n\n updatedHotel.defaultCurrency = details.currencyCode;\n updatedHotel.cardProcessor = details.cardProcessor;\n updatedHotel.paymentMethods = details.paymentMethods;\n updatedHotel.planpay = details.planpay;\n updatedHotel.windcave = details.windcave;\n updatedHotel.hotelUrl = details.hotelUrl || updatedHotel.hotelUrl || '';\n updatedHotel.heroImage = details.heroImage || updatedHotel.heroImage || '';\n updatedHotel.images = details.images || [];\n\n updatedHotel.email = details.email;\n updatedHotel.roomGroups = details.roomGroups;\n updatedHotel.rmsUseDepositQuote = details.rmsUseDepositQuote;\n updatedHotel.checkAreaAvailabilityOnRoomStep = details.checkAreaAvailabilityOnRoomStep;\n updatedHotel.enableCreditCardSurcharge = details.enableCreditCardSurcharge;\n updatedHotel.integrations = details.integrations;\n updatedHotel.availableCountries = details.availableCountries;\n updatedHotel.preventCancellation = details.preventCancellation;\n updatedHotel.enableRoomUpsells = details.enableRoomUpsells;\n updatedHotel.enableRateUpsells = details.enableRateUpsells;\n\n if (updatedHotel.dataSource === HotelDataSource.Roomstay) {\n if (details.logo) {\n updatedHotel.logo = details.logo;\n }\n\n if (details.colors) {\n updatedHotel.colors = details.colors as IHotelColorScheme;\n }\n\n if (details.distanceUnitType) {\n updatedHotel.distanceUnitType = details.distanceUnitType;\n }\n\n if (details.weekdayStartsOn) {\n updatedHotel.startsWeekOnDay = details.weekdayStartsOn;\n }\n\n if (details.crossSellHotelIds) {\n updatedHotel.crossSellHotelIds = details.crossSellHotelIds;\n }\n\n if (details.stateFieldConfiguration) {\n updatedHotel.stateFieldConfiguration = details.stateFieldConfiguration;\n }\n }\n\n if (currentHotelVersion?.maxAdults) {\n //using HotelSpec maxAdults from frontend\n updatedHotel.maxAdults = currentHotelVersion.maxAdults;\n }\n\n if (details.maxAdults !== undefined) {\n updatedHotel.maxAdults = details.maxAdults;\n }\n\n if (details.maxChildren !== undefined) {\n updatedHotel.maxChildren = details.maxChildren;\n }\n\n if (details.maxInfants !== undefined) {\n updatedHotel.maxInfants = details.maxInfants;\n }\n\n if (details.rooms) {\n //dymanic maxOccupancy from rooms database\n const roomArray = Object.values(details.rooms);\n\n if (roomArray.length) {\n updatedHotel.maxOccupancy = roomArray.reduce((previousMax, current) => {\n return Math.max(previousMax, current.maxOccupancy);\n }, 0);\n }\n }\n\n updatedHotel.childConfiguration = details.childConfiguration;\n\n /**\n * Prioritized perks from roomstay-clients than roomstay-admin\n */\n updatedHotel.perks = updatedHotel.perks?.length ? updatedHotel.perks : details.perks;\n updatedHotel.perkTitle = updatedHotel.perkTitle ?? details.perkTitle;\n\n updatedHotel.countryPrefix = details.countryPrefix ?? updatedHotel.countryPrefix ?? '';\n updatedHotel.quoteImageDesktop = details.quoteImageDesktop ?? updatedHotel.quoteImageDesktop ?? '';\n updatedHotel.quoteImageMobile = details.quoteImageMobile ?? updatedHotel.quoteImageMobile ?? '';\n updatedHotel.memberOnlyImage = details.memberOnlyImage ?? updatedHotel.memberOnlyImage ?? '';\n if (details.memberOnlyRenderRateLast !== undefined) {\n updatedHotel.memberOnlyRenderRateLast = details.memberOnlyRenderRateLast;\n }\n updatedHotel.captureChildAge = details.captureChildAge;\n\n updatedHotel.fees = details.fees;\n updatedHotel.addDepositFeeToBookingTotal = details.addDepositFeeToBookingTotal;\n\n updatedHotel.company = details.company;\n\n updatedHotel.itineraryNote = details.itineraryNote;\n\n updatedHotel.minAdultAge = details.minAdultAge;\n updatedHotel.maxAdultAge = details.maxAdultAge;\n updatedHotel.countInfantsInOccupancy = details.countInfantsInOccupancy;\n updatedHotel.occupancyLimits = details.occupancyLimits;\n updatedHotel.preferProviderBookingId = details.preferProviderBookingId;\n updatedHotel.disableSavedPayments = details.disableSavedPayments;\n updatedHotel.showUnavailableRooms = details.showUnavailableRooms;\n updatedHotel.isRACMemberNoRequired = details.isRACMemberNoRequired;\n updatedHotel.countryCode = details.countryCode;\n updatedHotel.calendarHighlights = details.calendarHighlights;\n updatedHotel.addressRequirement = details.addressRequirement;\n updatedHotel.maxRoomsPerBooking = details.maxRoomsPerBooking;\n updatedHotel.bookingFlow = details.bookingFlow;\n updatedHotel.metaPixelId = details.metaPixelId;\n updatedHotel.enableAnalyticsDebug = details.enableAnalyticsDebug;\n\n resolve(updatedHotel);\n\n return updatedHotel;\n });\n }),\n []\n );\n\n useEffect(() => {\n setCompanyId(company.companyId);\n setName(company.name);\n setCompanyShort(company.companyShort);\n setLogo(company.logo);\n setColors(company.colors);\n setLogoLink(company.logoLink);\n setPrivacyPolicyUrl(company.privacyPolicyUrl);\n\n const configHotels = company.hotels.map((hotel: ConfigHotel) => {\n return { ...hotel, hasLoadedDetails: false, hotelID: `${hotel.hotelID}` } as Hotel;\n });\n setHotels(configHotels);\n\n if (company.selectedHotel) {\n const hotelId = typeof company.selectedHotel === 'string' ? company.selectedHotel : company.selectedHotel.hotelID + '';\n const targetHotel: ConfigHotel | undefined = getHotelFromArrayWithId(hotelId, configHotels);\n if (targetHotel) {\n setSelectedHotelID(hotelId);\n } else {\n // TODO: add centralized error logging\n console.log(`Unable to set selected hotel automatically. No Hotel found with ID: ${company.selectedHotel}`);\n }\n } else {\n /*\n We need to check if for some reason HotelStep isn't set as the first step,\n to automatically select a hotel, so engine doesn't fall over\n\n Possible TODO: We might need to do this on a new Step level, instead of here, as dynamically checking if StepHotel\n is first is probably not a great idea...\n */\n\n // Don't select hotel for MemberPortalWidget with groupWidgetConfig\n const isMemberPortalWithGroup = beContext.engine instanceof MemberPortalWidget && beContext.engine.getConfig().groupWidgetConfig;\n\n if (StepManager.getFirstStep() !== StepHotel && !isMemberPortalWithGroup) {\n setSelectedHotelID(configHotels[0].hotelID);\n console.log(`No selected hotel found - defaulting to ${configHotels[0].name}`);\n } else {\n RoomstayThemeEngine.registerStyles(company.colors);\n }\n }\n }, [company]);\n\n const onSelectedHotelIDChanged = React.useCallback(async () => {\n if (selectedHotelID) {\n const selectedHotel = await getHotel(selectedHotelID);\n\n if (selectedHotel) {\n currencyHelper.loadExchangeRates(selectedHotel.defaultCurrency ?? 'AUD');\n\n StaticContextProvider.MemberOnlyRateCodes = selectedHotel.memberOnlyRates ?? [];\n\n // Prep session based storage\n const sessionProvider = beContext.engine.getSessionProvider();\n await sessionProvider.setHotelID(selectedHotelID);\n\n // Prep local storage (non-session based)\n beContext.storageProvider.setHotelId(selectedHotelID);\n\n // Reload current user?\n const user = await beContext.storageProvider.getUser();\n\n if (user) {\n await signUserIn(user);\n }\n\n if (currencyParam && CurrencyProvider.getSymbol(currencyParam)) {\n setCurrentCurrency(currencyParam);\n } else {\n setCurrentCurrency(selectedHotel.defaultCurrency);\n }\n\n selectedHotel?.onLoad?.();\n }\n }\n }, [selectedHotelID]);\n\n useEffect(() => {\n onSelectedHotelIDChanged();\n }, [onSelectedHotelIDChanged]);\n\n useEffect(() => {\n const selectedHotel = getSelectedHotel();\n\n DataLayer.instance.setCurrencyCodes(currentCurrency, selectedHotel?.defaultCurrency ?? currentCurrency);\n }, [currentCurrency, selectedHotelID]);\n\n useEffect(() => {\n // Single-source GTM initialisation\n DataLayer.instance.initialiseGTM(company, selectedHotel);\n }, [company, selectedHotel]);\n\n // TODO: Add Hotel Details fetch\n // TODO: re-do fetch on language change\n\n const workingContext: CompanyContextType = {\n currentLanguage,\n currentCurrency,\n\n memberOnlyModalPromotion,\n\n companyId,\n name,\n companyShort,\n logo,\n logoLink,\n privacyPolicyUrl,\n\n colors,\n hotels,\n\n signedInUser,\n\n selectedHotelID: selectedHotelID as string,\n\n updateLowestPricePerNight: (hotel: string | Hotel, row: BasketRow) => {\n const targetHotel = getHotelFromID(typeof hotel === 'string' ? hotel : hotel.hotelID + '');\n\n if (targetHotel && row) {\n const updatePrice = (value: number, isLoading: boolean) => {\n updateHotel(targetHotel, (hotel) => ({\n ...hotel,\n lowestPrice: { value, isLoading },\n }));\n };\n\n const filters: Filter[] = Object.values(beContext.currentFilters).filter(Boolean) as Filter[];\n\n // Start loading with price = 0\n updatePrice(0, true);\n\n FilterProvider.getRoomList(row, filters, targetHotel.hotelID as string, signedInUser?.memberNumber)\n .then((availableRooms) => {\n const lowest =\n availableRooms?.reduce((min, room) => {\n const price = room.getLowestPrice();\n // Skip null, undefined, and 0 prices. Return the lowest positive price.\n return price != null && price > 0 ? Math.min(min, price) : min;\n }, Infinity) ?? Infinity;\n\n const finalLowest = isFinite(lowest) ? lowest : 0;\n updatePrice(finalLowest, false);\n })\n .catch(() => {\n updatePrice(0, false);\n });\n }\n },\n\n changeHotel: (hotel: string | Hotel | null) => {\n if (hotel === null) {\n setSelectedHotelID(undefined);\n return true;\n }\n\n const targetHotel = getHotelFromID(typeof hotel === 'string' ? hotel : hotel.hotelID + '');\n\n if (targetHotel) {\n setSelectedHotelID(targetHotel.hotelID);\n return true;\n } else {\n // TODO: add centralized error logging\n console.log(`Unable to set selected hotel automatically. No Hotel found with ID: ${company.selectedHotel}`);\n return false;\n }\n },\n\n closeMemberSignupModal: () => {\n setMemberProviderSigningIn(null);\n setMemberOnlyModalPromotion(null);\n },\n openMemberSignupModal: (provider?: EMembershipProvider) => {\n if (provider) {\n setMemberProviderSigningIn(provider);\n } else {\n const firstConfiguredHandler = allExternalMembershipHandlers.find((handler) => handler.isAvailable);\n\n if (firstConfiguredHandler) {\n // If any external handler is available, default to that\n setMemberProviderSigningIn(firstConfiguredHandler.provider);\n } else {\n setMemberProviderSigningIn(EMembershipProvider.Internal);\n }\n }\n },\n\n signUserIn,\n signUserOut,\n\n setCurrentCurrency,\n setCurrentLanguage,\n\n getHotel,\n selectedHotel,\n\n memberProviderSigningIn,\n\n isExternalMemberHotel: allExternalMembershipHandlers.some((handler) => handler.isAvailable),\n externalMembershipHandlers: allExternalMembershipHandlers.filter((handler) => handler.isAvailable),\n };\n\n return <CompanyContext.Provider value={workingContext}>{children}</CompanyContext.Provider>;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"CompanyContextWrapper.js","sourceRoot":"/","sources":["src/contexts/CompanyContext/CompanyContextWrapper.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA0G;AAC1G,6CAAsF;AACtF,2CAA2C;AAC3C,yCAAwE;AACxE,+CAAiG;AAEjG,kEAAmC;AACnC,wFAAqF;AACrF,gDAA6C;AAC7C,kGAA+F;AAC/F,+EAA4E;AAC5E,+EAA4E;AAC5E,+FAA4F;AAC5F,6EAA0E;AAC1E,2FAAwF;AACxF,iFAA8E;AAK9E,uFAA8E;AAG9E,kFAA0D;AAC1D,oFAA4D;AAC5D,gFAAwD;AACxD,mEAAwD;AACxD,0FAAkE;AAClE,8FAAsE;AACtE,6FAAqE;AACrE,sEAAwD;AACxD,iEAAyC;AACzC,qEAA6C;AAC7C,mEAA2C;AAOpC,MAAM,qBAAqB,GAAG,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAA8B,EAAE,EAAE;;IACtG,MAAM,SAAS,GAAG,IAAA,kBAAU,EAAC,+BAAoB,CAAC,CAAC;IAEnD,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC1B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,eAAe,GAAG,EAAE,KAAK,KAAK,CAAC,OAAO,GAAG,EAAE,EAAE,CAAC;gBAC9C,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9D,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACvE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAU,OAAO,CAAC,MAAiB,CAAC,CAAC;IACzE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAEnF,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,GAAU,CAAC;IAEjE,MAAM,aAAa,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC/B,KAAK,MAAM,YAAY,IAAI,MAAM,EAAE,CAAC;YAChC,IAAI,eAAe,GAAG,EAAE,KAAK,YAAY,CAAC,OAAO,GAAG,EAAE,EAAE,CAAC;gBACrD,OAAO,YAAY,CAAC;YACxB,CAAC;QACL,CAAC;IACL,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IAE9B,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAEnD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAS,MAAA,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,MAAA,gBAAgB,EAAE,0CAAE,eAAe,mCAAI,KAAK,CAAC,CAAC;IAC9H,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAW,MAAA,MAAA,gBAAgB,EAAE,0CAAE,eAAe,mCAAI,2BAAQ,CAAC,KAAK,CAAC,CAAC;IAExH,MAAM,CAAC,wBAAwB,EAAE,2BAA2B,CAAC,GAAG,IAAA,gBAAQ,EAAoB,IAAI,CAAC,CAAC;IAElG,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAoB,IAAI,CAAC,CAAC;IAE1E,MAAM,CAAC,uBAAuB,EAAE,0BAA0B,CAAC,GAAG,IAAA,gBAAQ,EAA6B,IAAI,CAAC,CAAC;IAEzG,MAAM,6BAA6B,GAAG;QAClC,IAAA,qCAAiB,EAAC,aAAa,CAAC;QAChC,IAAA,uCAAkB,EAAC,aAAa,CAAC;QACjC,IAAA,qDAAyB,EAAC,aAAa,CAAC;QACxC,IAAA,qCAAiB,EAAC,aAAa,CAAC;QAChC,IAAA,iDAAuB,EAAC,aAAa,CAAC;QACtC,IAAA,mCAAgB,EAAC,aAAa,CAAC;KAClC,CAAC;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,KAAK,CAAC,IAAI,iCAAwB,CAAC,aAAa,CAAC,CAAC,CAAC;IACvD,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,gBAAQ,GAAE,CAAC;IAE7B,MAAM,uBAAuB,GAAG,CAAC,EAAU,EAAE,aAAsC,EAAE,EAAE;QACnF,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;YACpC,IAAI,SAAS,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;gBACrC,OAAO,SAAS,CAAC;YACrB,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IACF,MAAM,cAAc,GAAG,CAAC,EAAU,EAAS,EAAE;QACzC,OAAO,uBAAuB,CAAC,EAAE,EAAE,MAAM,CAAU,CAAC;IACxD,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,QAAe,EAAE,QAAkC,EAAE,EAAE;QACxE,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE;YACpB,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;gBACjD,IAAI,YAAY,CAAC,OAAO,GAAG,EAAE,KAAK,QAAQ,CAAC,OAAO,GAAG,EAAE,EAAE,CAAC;oBACtD,QAAQ,GAAG,IAAI,CAAC;oBAEhB,MAAM,YAAY,GAAoC;wBAClD,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;wBACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;wBAC3B,QAAQ,EAAE,QAAQ,CAAC,eAAe;wBAClC,QAAQ,EAAE,QAAQ,CAAC,eAAe;wBAClC,OAAO,EAAE,QAAQ,CAAC,OAAO;qBAC5B,CAAC;oBAEF,MAAM,KAAK,GAAG,IAAI,iCAAwB,CAAC,YAAY,CAAC,CAAC;oBACzD,KAAK,CAAC,KAAK,CAAC,CAAC;oBAEb,IAAI,QAAQ,EAAE,CAAC;wBACX,yBAAY,QAAQ,CAAC,YAAY,CAAC,EAAG;oBACzC,CAAC;oBAED,yBAAY,QAAQ,EAAG;gBAC3B,CAAC;gBAED,yBAAY,YAAY,EAAG;YAC/B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC7B,IAAI,QAAQ,EAAE,CAAC;oBACX,yFAAyF;oBACzF,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACvB,CAAC;YACL,CAAC;YAED,OAAO,aAAa,CAAC;QACzB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAO,IAAgB,EAAE,EAAE;QAC1C,KAAK,CAAC,IAAI,6CAAqB,CAAC,wBAAsC,EAAE,IAAI,CAAC,CAAC,CAAC;QAE/E,mBAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAEtC,cAAc,CAAC,sBAAsB,EAAE,CAAC;QAExC,MAAM,SAAS,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAE3F,eAAe,CAAC,IAAI,CAAC,CAAC;QAEtB,yCAAyC;QACzC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,yBAAe,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC;IACL,CAAC,CAAA,CAAC;IAEF,MAAM,WAAW,GAAG,GAAS,EAAE;QAC3B,MAAM,SAAS,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QACxF,MAAM,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACnD,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAA,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAA,mBAAW,EACxB,CAAC,OAAe,EAAE,EAAE,CAChB,IAAI,OAAO,CAAQ,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;QACzC,MAAM,mBAAmB,GAAsB,cAAc,CAAC,OAAO,CAAU,CAAC;QAChF,MAAM,QAAQ,mCACP,mBAAmB;YACtB,mCAAmC;YACnC,2FAA2F;YAC3F,OAAO,EAAE,OAAO,GACnB,CAAC;QACF,IAAI,OAA6B,CAAC;QAElC,IAAI,CAAC;YACD,OAAO,GAAG,MAAM,oBAAG,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACV,IAAI,EAAE,YAAY,mBAAQ,EAAE,CAAC;gBACzB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAClB,OAAO;YACX,CAAC;iBAAM,CAAC;gBACJ,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;YACtB,CAAC;QACL,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO;QACX,CAAC;QAED,WAAW,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,EAAE;;YACnC,YAAY,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YACjC,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAEvC,YAAY,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjD,YAAY,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACnD,YAAY,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAEnC,YAAY,CAAC,WAAW,GAAG,oBAAU,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC3E,YAAY,CAAC,YAAY,GAAG,oBAAU,CAAC,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAE7E,YAAY,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;YACzD,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YAC/C,YAAY,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAC/D,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAEzC,YAAY,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;YACnD,YAAY,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;YACzD,YAAY,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAEnC,YAAY,CAAC,gBAAgB,GAAG,IAAI,CAAC;YACrC,YAAY,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YAE7C,YAAY,CAAC,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC;YACpD,YAAY,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;YACnD,YAAY,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;YACrD,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YACvC,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YACzC,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,IAAI,EAAE,CAAC;YACxE,YAAY,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS,IAAI,EAAE,CAAC;YAC3E,YAAY,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;YAE3C,YAAY,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YACnC,YAAY,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YAC7C,YAAY,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAC7D,YAAY,CAAC,+BAA+B,GAAG,OAAO,CAAC,+BAA+B,CAAC;YACvF,YAAY,CAAC,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAC;YAC3E,YAAY,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;YACjD,YAAY,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAC7D,YAAY,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAC/D,YAAY,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAC3D,YAAY,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAE3D,IAAI,YAAY,CAAC,UAAU,KAAK,uCAAe,CAAC,QAAQ,EAAE,CAAC;gBACvD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;oBACf,YAAY,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBACrC,CAAC;gBAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACjB,YAAY,CAAC,MAAM,GAAG,OAAO,CAAC,MAA2B,CAAC;gBAC9D,CAAC;gBAED,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;oBAC3B,YAAY,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;gBAC7D,CAAC;gBAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;oBAC1B,YAAY,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;gBAC3D,CAAC;gBAED,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;oBAC5B,YAAY,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;gBAC/D,CAAC;gBAED,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;oBAClC,YAAY,CAAC,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;gBAC3E,CAAC;YACL,CAAC;YAED,IAAI,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,SAAS,EAAE,CAAC;gBACjC,0CAA0C;gBAC1C,YAAY,CAAC,SAAS,GAAG,mBAAmB,CAAC,SAAS,CAAC;YAC3D,CAAC;YAED,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAClC,YAAY,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YAC/C,CAAC;YAED,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACpC,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YACnD,CAAC;YAED,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACnC,YAAY,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YACjD,CAAC;YAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,0CAA0C;gBAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAE/C,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;oBACnB,YAAY,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE;wBAClE,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;oBACvD,CAAC,EAAE,CAAC,CAAC,CAAC;gBACV,CAAC;YACL,CAAC;YAED,YAAY,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAE7D;;eAEG;YACH,YAAY,CAAC,KAAK,GAAG,CAAA,MAAA,YAAY,CAAC,KAAK,0CAAE,MAAM,EAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;YACrF,YAAY,CAAC,SAAS,GAAG,MAAA,YAAY,CAAC,SAAS,mCAAI,OAAO,CAAC,SAAS,CAAC;YAErE,YAAY,CAAC,aAAa,GAAG,MAAA,MAAA,OAAO,CAAC,aAAa,mCAAI,YAAY,CAAC,aAAa,mCAAI,EAAE,CAAC;YACvF,YAAY,CAAC,iBAAiB,GAAG,MAAA,MAAA,OAAO,CAAC,iBAAiB,mCAAI,YAAY,CAAC,iBAAiB,mCAAI,EAAE,CAAC;YACnG,YAAY,CAAC,gBAAgB,GAAG,MAAA,MAAA,OAAO,CAAC,gBAAgB,mCAAI,YAAY,CAAC,gBAAgB,mCAAI,EAAE,CAAC;YAChG,YAAY,CAAC,eAAe,GAAG,MAAA,MAAA,OAAO,CAAC,eAAe,mCAAI,YAAY,CAAC,eAAe,mCAAI,EAAE,CAAC;YAC7F,IAAI,OAAO,CAAC,wBAAwB,KAAK,SAAS,EAAE,CAAC;gBACjD,YAAY,CAAC,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC;YAC7E,CAAC;YACD,YAAY,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;YAEvD,YAAY,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YACjC,YAAY,CAAC,2BAA2B,GAAG,OAAO,CAAC,2BAA2B,CAAC;YAE/E,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAEvC,YAAY,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;YAEnD,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YAC/C,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YAC/C,YAAY,CAAC,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;YACvE,YAAY,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;YACvD,YAAY,CAAC,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;YACvE,YAAY,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;YACjE,YAAY,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;YACjE,YAAY,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;YACnE,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YAC/C,YAAY,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAC7D,YAAY,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAC7D,YAAY,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAC7D,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YAC/C,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YAC/C,YAAY,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;YAEjE,OAAO,CAAC,YAAY,CAAC,CAAC;YAEtB,OAAO,YAAY,CAAC;QACxB,CAAC,CAAC,CAAC;IACP,CAAC,CAAA,CAAC,EACN,EAAE,CACL,CAAC;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtB,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACtC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtB,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1B,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9B,mBAAmB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAE9C,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAkB,EAAE,EAAE;YAC3D,OAAO,gCAAK,KAAK,KAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,GAAW,CAAC;QACvF,CAAC,CAAC,CAAC;QACH,SAAS,CAAC,YAAY,CAAC,CAAC;QAExB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,GAAG,EAAE,CAAC;YACvH,MAAM,WAAW,GAA4B,uBAAuB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC5F,IAAI,WAAW,EAAE,CAAC;gBACd,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACJ,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CAAC,uEAAuE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;YAChH,CAAC;QACL,CAAC;aAAM,CAAC;YACJ;;;;;;QAMJ;YAEI,mEAAmE;YACnE,MAAM,uBAAuB,GAAG,SAAS,CAAC,MAAM,YAAY,uCAAkB,IAAI,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,iBAAiB,CAAC;YAEjI,IAAI,qBAAW,CAAC,YAAY,EAAE,KAAK,mBAAS,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBACvE,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,2CAA2C,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACnF,CAAC;iBAAM,CAAC;gBACJ,6BAAmB,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACvD,CAAC;QACL,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,wBAAwB,GAAG,eAAK,CAAC,WAAW,CAAC,GAAS,EAAE;;QAC1D,IAAI,eAAe,EAAE,CAAC;YAClB,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,CAAC;YAEtD,IAAI,aAAa,EAAE,CAAC;gBAChB,cAAc,CAAC,iBAAiB,CAAC,MAAA,aAAa,CAAC,eAAe,mCAAI,KAAK,CAAC,CAAC;gBAEzE,+BAAqB,CAAC,mBAAmB,GAAG,MAAA,aAAa,CAAC,eAAe,mCAAI,EAAE,CAAC;gBAEhF,6BAA6B;gBAC7B,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBAC9D,MAAM,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;gBAElD,yCAAyC;gBACzC,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;gBAEtD,uBAAuB;gBACvB,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;gBAEvD,IAAI,IAAI,EAAE,CAAC;oBACP,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;gBAED,IAAI,aAAa,IAAI,0BAAgB,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC7D,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBACJ,kBAAkB,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;gBACtD,CAAC;gBAED,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,MAAM,6DAAI,CAAC;YAC9B,CAAC;QACL,CAAC;IACL,CAAC,CAAA,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,wBAAwB,EAAE,CAAC;IAC/B,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAE/B,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACX,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;QAEzC,mBAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,eAAe,EAAE,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,eAAe,mCAAI,eAAe,CAAC,CAAC;IAC5G,CAAC,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC;IAEvC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,mCAAmC;QACnC,mBAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC7D,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IAE7B,gCAAgC;IAChC,uCAAuC;IAEvC,MAAM,cAAc,GAAuB;QACvC,eAAe;QACf,eAAe;QAEf,wBAAwB;QAExB,SAAS;QACT,IAAI;QACJ,YAAY;QACZ,IAAI;QACJ,QAAQ;QACR,gBAAgB;QAEhB,MAAM;QACN,MAAM;QAEN,YAAY;QAEZ,eAAe,EAAE,eAAyB;QAE1C,yBAAyB,EAAE,CAAC,KAAqB,EAAE,GAAc,EAAE,EAAE;YACjE,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;YAE3F,IAAI,WAAW,IAAI,GAAG,EAAE,CAAC;gBACrB,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,SAAkB,EAAE,EAAE;oBACtD,WAAW,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iCAC7B,KAAK,KACR,WAAW,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IACnC,CAAC,CAAC;gBACR,CAAC,CAAC;gBAEF,MAAM,OAAO,GAAa,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;gBAE9F,+BAA+B;gBAC/B,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBAErB,wBAAc,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,OAAiB,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,YAAY,CAAC;qBAC9F,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE;;oBACrB,MAAM,MAAM,GACR,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;wBACjC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;wBACpC,wEAAwE;wBACxE,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;oBACnE,CAAC,EAAE,QAAQ,CAAC,mCAAI,QAAQ,CAAC;oBAE7B,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClD,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBACpC,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,EAAE;oBACR,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC1B,CAAC,CAAC,CAAC;YACX,CAAC;QACL,CAAC;QAED,WAAW,EAAE,CAAC,KAA4B,EAAE,EAAE;YAC1C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,kBAAkB,CAAC,SAAS,CAAC,CAAC;gBAC9B,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;YAE3F,IAAI,WAAW,EAAE,CAAC;gBACd,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBACxC,OAAO,IAAI,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACJ,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CAAC,uEAAuE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;gBAC5G,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;QAED,sBAAsB,EAAE,GAAG,EAAE;YACzB,0BAA0B,CAAC,IAAI,CAAC,CAAC;YACjC,2BAA2B,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QACD,qBAAqB,EAAE,CAAC,QAA8B,EAAE,EAAE;YACtD,IAAI,QAAQ,EAAE,CAAC;gBACX,0BAA0B,CAAC,QAAQ,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACJ,MAAM,sBAAsB,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAEpG,IAAI,sBAAsB,EAAE,CAAC;oBACzB,wDAAwD;oBACxD,0BAA0B,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;gBAChE,CAAC;qBAAM,CAAC;oBACJ,0BAA0B,CAAC,0BAAmB,CAAC,QAAQ,CAAC,CAAC;gBAC7D,CAAC;YACL,CAAC;QACL,CAAC;QAED,UAAU;QACV,WAAW;QAEX,kBAAkB;QAClB,kBAAkB;QAElB,QAAQ;QACR,aAAa;QAEb,uBAAuB;QAEvB,qBAAqB,EAAE,6BAA6B,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;QAC3F,0BAA0B,EAAE,6BAA6B,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;KACrG,CAAC;IAEF,OAAO,8BAAC,yBAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,cAAc,IAAG,QAAQ,CAA2B,CAAC;AAChG,CAAC,CAAC;AA/fW,QAAA,qBAAqB,yBA+fhC","sourcesContent":["import { BookingEngineContext, CompanyContext, CompanyContextType, SignInUser } from '@frontend/contexts';\nimport { InitialHotelDetailsEvent, SelectedHotelChangeEvent } from '@frontend/events';\nimport { useEvent } from '@frontend/hooks';\nimport { EMembershipProvider, IHotelColorScheme } from '@roomstay/core';\nimport React, { ReactChild, useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport API from '@/api/BookingAPI';\nimport { MemberPortalWidget } from '@/engines/MemberPortalWidget/MemberPortalWidget';\nimport { APIError } from '@/errors/APIError';\nimport { MemberOnlyFenceSignUp } from '@/events/actions/MemberOnlyFence/MemberOnlyFenceSignUp';\nimport { big4MemberHandler } from '@/handlers/membership/Big4MemberHandler';\nimport { gdayMemberHandler } from '@/handlers/membership/GdayMemberHandler';\nimport { memberJungleMemberHandler } from '@/handlers/membership/MemberJungleMemberHandler';\nimport { racMemberHandler } from '@/handlers/membership/RACMemberHandler';\nimport { salesforceMemberHandler } from '@/handlers/membership/SalesforceMemberHandler';\nimport { top10MemberHandler } from '@/handlers/membership/Top10MemberHandler';\nimport { HotelDTO } from '@/models/Api/HotelDTO';\nimport BasketRow from '@/models/BasketRow';\nimport type { ConfigCompany } from '@/models/Client/Hotel/Company';\nimport type { ConfigHotel, Hotel, InitialHotelDetailsEventPayload } from '@/models/Client/Hotel/Hotel';\nimport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport { IPromotion } from '@/models/Promotion/IPromotion.type';\nimport Filter from '@/models/Room/Filters/Filter';\nimport StepHotel from '@/pages/steps/StepHotel/StepHotel';\nimport CurrencyProvider from '@/providers/CurrencyProvider';\nimport FilterProvider from '@/providers/FilterProvider';\nimport { Language } from '@/providers/LanguageProvider';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport StaticContextProvider from '@/providers/StaticContextProvider';\nimport AnalyticsEvents from '@/util/AnalyticsEvents/AnalyticsEvents';\nimport * as currencyHelper from '@/util/CurrencyHelper';\nimport DataLayer from '@/util/DataLayer';\nimport StepManager from '@/util/StepManager';\nimport TimeHelper from '@/util/TimeHelper';\n\ninterface CompanyContextWrapperProps {\n children: ReactChild;\n configCompany: ConfigCompany;\n}\n\nexport const CompanyContextWrapper = ({ configCompany: company, children }: CompanyContextWrapperProps) => {\n const beContext = useContext(BookingEngineContext);\n\n const getSelectedHotel = () => {\n for (const hotel of hotels) {\n if (selectedHotelID + '' === hotel.hotelID + '') {\n return hotel;\n }\n }\n };\n\n const [companyId, setCompanyId] = useState(company.companyId);\n const [name, setName] = useState(company.name);\n const [companyShort, setCompanyShort] = useState(company.companyShort);\n const [logo, setLogo] = useState(company.logo);\n const [colors, setColors] = useState(company.colors);\n const [hotels, setHotels] = useState<Hotel[]>(company.hotels as Hotel[]);\n const [logoLink, setLogoLink] = useState(company.logoLink);\n const [privacyPolicyUrl, setPrivacyPolicyUrl] = useState(company.privacyPolicyUrl);\n\n const [selectedHotelID, setSelectedHotelID] = useState<string>();\n\n const selectedHotel = useMemo(() => {\n for (const companyHotel of hotels) {\n if (selectedHotelID + '' === companyHotel.hotelID + '') {\n return companyHotel;\n }\n }\n }, [hotels, selectedHotelID]);\n\n const searchParams = new URLSearchParams(window.location.search);\n const currencyParam = searchParams.get('currency');\n\n const [currentCurrency, setCurrentCurrency] = useState<string>(currencyParam ?? getSelectedHotel()?.defaultCurrency ?? 'AUD');\n const [currentLanguage, setCurrentLanguage] = useState<Language>(getSelectedHotel()?.defaultLanguage ?? Language.en_us);\n\n const [memberOnlyModalPromotion, setMemberOnlyModalPromotion] = useState<IPromotion | null>(null);\n\n const [signedInUser, setSignedInUser] = useState<SignInUser | null>(null);\n\n const [memberProviderSigningIn, setMemberProviderSigningIn] = useState<EMembershipProvider | null>(null);\n\n const allExternalMembershipHandlers = [\n big4MemberHandler(selectedHotel),\n top10MemberHandler(selectedHotel),\n memberJungleMemberHandler(selectedHotel),\n gdayMemberHandler(selectedHotel),\n salesforceMemberHandler(selectedHotel),\n racMemberHandler(selectedHotel),\n ];\n\n useEffect(() => {\n raise(new SelectedHotelChangeEvent(selectedHotel));\n }, [selectedHotel]);\n\n const { raise } = useEvent();\n\n const getHotelFromArrayWithId = (id: string, arrayOfHotels: Hotel[] | ConfigHotel[]) => {\n for (const nextHotel of arrayOfHotels) {\n if (nextHotel.hotelID + '' === id + '') {\n return nextHotel;\n }\n }\n };\n const getHotelFromID = (id: string): Hotel => {\n return getHotelFromArrayWithId(id, hotels) as Hotel;\n };\n\n const updateHotel = (newHotel: Hotel, callback?: (hotel: Hotel) => Hotel) => {\n setHotels((oldHotels) => {\n let modified = false;\n const newHotelArray = oldHotels.map((mappingHotel) => {\n if (mappingHotel.hotelID + '' === newHotel.hotelID + '') {\n modified = true;\n\n const hotelDetails: InitialHotelDetailsEventPayload = {\n name: newHotel.name,\n hotelID: newHotel.hotelID,\n hotelUrl: newHotel.hotelUrl,\n currency: newHotel.defaultCurrency,\n language: newHotel.defaultLanguage,\n address: newHotel.address,\n };\n\n const event = new InitialHotelDetailsEvent(hotelDetails);\n raise(event);\n\n if (callback) {\n return { ...callback(mappingHotel) };\n }\n\n return { ...newHotel };\n }\n\n return { ...mappingHotel };\n });\n\n if (!modified) {\n newHotelArray.push(newHotel);\n if (callback) {\n // Fixed: Ensure the callback returns the hotel; otherwise, the UI may receive undefined.\n callback(newHotel);\n }\n }\n\n return newHotelArray;\n });\n };\n\n const signUserIn = async (user: SignInUser) => {\n raise(new MemberOnlyFenceSignUp(memberOnlyModalPromotion as IPromotion, user));\n\n DataLayer.instance.sendMemberSignUp();\n\n workingContext.closeMemberSignupModal();\n\n await beContext.sessionProvider.updateSession({ user: user, memberId: user.memberNumber });\n\n setSignedInUser(user);\n\n // Set external ID for analytics tracking\n if (user.memberNumber) {\n AnalyticsEvents.setExternalId(user.memberNumber);\n }\n\n if (user.saveState) {\n await beContext.storageProvider.setUser(user);\n }\n };\n\n const signUserOut = async () => {\n await beContext.sessionProvider.updateSession({ user: undefined, memberId: undefined });\n await beContext.storageProvider.setUser(undefined);\n setSignedInUser(null);\n };\n\n const getHotel = useCallback(\n (hotelId: string) =>\n new Promise<Hotel>(async (resolve, reject) => {\n const currentHotelVersion: Hotel | undefined = getHotelFromID(hotelId) as Hotel;\n const newHotel: Hotel = {\n ...currentHotelVersion,\n // Fixed: Specified Hotel not found\n // Ensure hotelID is set explicitly in case currentHotelVersion is undefined or missing it.\n hotelID: hotelId,\n };\n let details: HotelDTO | undefined;\n\n try {\n details = await API.Hotel.fetchData(currentLanguage, newHotel);\n } catch (ex) {\n if (ex instanceof APIError) {\n console.error(ex);\n return;\n } else {\n return reject(ex);\n }\n }\n\n if (!details) {\n return;\n }\n\n updateHotel(newHotel, (updatedHotel) => {\n updatedHotel.name = details.name;\n updatedHotel.address = details.address;\n\n updatedHotel.latitude = Number(details.latitude);\n updatedHotel.longitude = Number(details.longitude);\n updatedHotel.phone = details.phone;\n\n updatedHotel.checkInTime = TimeHelper.convert24To12hr(details.checkInTime);\n updatedHotel.checkOutTime = TimeHelper.convert24To12hr(details.checkOutTime);\n\n updatedHotel.paymentCardTypes = details.paymentCardTypes;\n updatedHotel.description = details.description;\n updatedHotel.locationDescription = details.locationDescription;\n updatedHotel.policies = details.policies;\n\n updatedHotel.hotelServices = details.hotelServices;\n updatedHotel.businessServices = details.businessServices;\n updatedHotel.rooms = details.rooms;\n\n updatedHotel.hasLoadedDetails = true;\n updatedHotel.dataSource = details.dataSource;\n\n updatedHotel.defaultCurrency = details.currencyCode;\n updatedHotel.cardProcessor = details.cardProcessor;\n updatedHotel.paymentMethods = details.paymentMethods;\n updatedHotel.planpay = details.planpay;\n updatedHotel.windcave = details.windcave;\n updatedHotel.hotelUrl = details.hotelUrl || updatedHotel.hotelUrl || '';\n updatedHotel.heroImage = details.heroImage || updatedHotel.heroImage || '';\n updatedHotel.images = details.images || [];\n\n updatedHotel.email = details.email;\n updatedHotel.roomGroups = details.roomGroups;\n updatedHotel.rmsUseDepositQuote = details.rmsUseDepositQuote;\n updatedHotel.checkAreaAvailabilityOnRoomStep = details.checkAreaAvailabilityOnRoomStep;\n updatedHotel.enableCreditCardSurcharge = details.enableCreditCardSurcharge;\n updatedHotel.integrations = details.integrations;\n updatedHotel.availableCountries = details.availableCountries;\n updatedHotel.preventCancellation = details.preventCancellation;\n updatedHotel.enableRoomUpsells = details.enableRoomUpsells;\n updatedHotel.enableRateUpsells = details.enableRateUpsells;\n\n if (updatedHotel.dataSource === HotelDataSource.Roomstay) {\n if (details.logo) {\n updatedHotel.logo = details.logo;\n }\n\n if (details.colors) {\n updatedHotel.colors = details.colors as IHotelColorScheme;\n }\n\n if (details.distanceUnitType) {\n updatedHotel.distanceUnitType = details.distanceUnitType;\n }\n\n if (details.weekdayStartsOn) {\n updatedHotel.startsWeekOnDay = details.weekdayStartsOn;\n }\n\n if (details.crossSellHotelIds) {\n updatedHotel.crossSellHotelIds = details.crossSellHotelIds;\n }\n\n if (details.stateFieldConfiguration) {\n updatedHotel.stateFieldConfiguration = details.stateFieldConfiguration;\n }\n }\n\n if (currentHotelVersion?.maxAdults) {\n //using HotelSpec maxAdults from frontend\n updatedHotel.maxAdults = currentHotelVersion.maxAdults;\n }\n\n if (details.maxAdults !== undefined) {\n updatedHotel.maxAdults = details.maxAdults;\n }\n\n if (details.maxChildren !== undefined) {\n updatedHotel.maxChildren = details.maxChildren;\n }\n\n if (details.maxInfants !== undefined) {\n updatedHotel.maxInfants = details.maxInfants;\n }\n\n if (details.rooms) {\n //dymanic maxOccupancy from rooms database\n const roomArray = Object.values(details.rooms);\n\n if (roomArray.length) {\n updatedHotel.maxOccupancy = roomArray.reduce((previousMax, current) => {\n return Math.max(previousMax, current.maxOccupancy);\n }, 0);\n }\n }\n\n updatedHotel.childConfiguration = details.childConfiguration;\n\n /**\n * Prioritized perks from roomstay-clients than roomstay-admin\n */\n updatedHotel.perks = updatedHotel.perks?.length ? updatedHotel.perks : details.perks;\n updatedHotel.perkTitle = updatedHotel.perkTitle ?? details.perkTitle;\n\n updatedHotel.countryPrefix = details.countryPrefix ?? updatedHotel.countryPrefix ?? '';\n updatedHotel.quoteImageDesktop = details.quoteImageDesktop ?? updatedHotel.quoteImageDesktop ?? '';\n updatedHotel.quoteImageMobile = details.quoteImageMobile ?? updatedHotel.quoteImageMobile ?? '';\n updatedHotel.memberOnlyImage = details.memberOnlyImage ?? updatedHotel.memberOnlyImage ?? '';\n if (details.memberOnlyRenderRateLast !== undefined) {\n updatedHotel.memberOnlyRenderRateLast = details.memberOnlyRenderRateLast;\n }\n updatedHotel.captureChildAge = details.captureChildAge;\n\n updatedHotel.fees = details.fees;\n updatedHotel.addDepositFeeToBookingTotal = details.addDepositFeeToBookingTotal;\n\n updatedHotel.company = details.company;\n\n updatedHotel.itineraryNote = details.itineraryNote;\n\n updatedHotel.minAdultAge = details.minAdultAge;\n updatedHotel.maxAdultAge = details.maxAdultAge;\n updatedHotel.countInfantsInOccupancy = details.countInfantsInOccupancy;\n updatedHotel.occupancyLimits = details.occupancyLimits;\n updatedHotel.preferProviderBookingId = details.preferProviderBookingId;\n updatedHotel.disableSavedPayments = details.disableSavedPayments;\n updatedHotel.showUnavailableRooms = details.showUnavailableRooms;\n updatedHotel.isRACMemberNoRequired = details.isRACMemberNoRequired;\n updatedHotel.countryCode = details.countryCode;\n updatedHotel.calendarHighlights = details.calendarHighlights;\n updatedHotel.addressRequirement = details.addressRequirement;\n updatedHotel.maxRoomsPerBooking = details.maxRoomsPerBooking;\n updatedHotel.bookingFlow = details.bookingFlow;\n updatedHotel.metaPixelId = details.metaPixelId;\n updatedHotel.enableAnalyticsDebug = details.enableAnalyticsDebug;\n\n resolve(updatedHotel);\n\n return updatedHotel;\n });\n }),\n []\n );\n\n useEffect(() => {\n setCompanyId(company.companyId);\n setName(company.name);\n setCompanyShort(company.companyShort);\n setLogo(company.logo);\n setColors(company.colors);\n setLogoLink(company.logoLink);\n setPrivacyPolicyUrl(company.privacyPolicyUrl);\n\n const configHotels = company.hotels.map((hotel: ConfigHotel) => {\n return { ...hotel, hasLoadedDetails: false, hotelID: `${hotel.hotelID}` } as Hotel;\n });\n setHotels(configHotels);\n\n if (company.selectedHotel) {\n const hotelId = typeof company.selectedHotel === 'string' ? company.selectedHotel : company.selectedHotel.hotelID + '';\n const targetHotel: ConfigHotel | undefined = getHotelFromArrayWithId(hotelId, configHotels);\n if (targetHotel) {\n setSelectedHotelID(hotelId);\n } else {\n // TODO: add centralized error logging\n console.log(`Unable to set selected hotel automatically. No Hotel found with ID: ${company.selectedHotel}`);\n }\n } else {\n /*\n We need to check if for some reason HotelStep isn't set as the first step,\n to automatically select a hotel, so engine doesn't fall over\n\n Possible TODO: We might need to do this on a new Step level, instead of here, as dynamically checking if StepHotel\n is first is probably not a great idea...\n */\n\n // Don't select hotel for MemberPortalWidget with groupWidgetConfig\n const isMemberPortalWithGroup = beContext.engine instanceof MemberPortalWidget && beContext.engine.getConfig().groupWidgetConfig;\n\n if (StepManager.getFirstStep() !== StepHotel && !isMemberPortalWithGroup) {\n setSelectedHotelID(configHotels[0].hotelID);\n console.log(`No selected hotel found - defaulting to ${configHotels[0].name}`);\n } else {\n RoomstayThemeEngine.registerStyles(company.colors);\n }\n }\n }, [company]);\n\n const onSelectedHotelIDChanged = React.useCallback(async () => {\n if (selectedHotelID) {\n const selectedHotel = await getHotel(selectedHotelID);\n\n if (selectedHotel) {\n currencyHelper.loadExchangeRates(selectedHotel.defaultCurrency ?? 'AUD');\n\n StaticContextProvider.MemberOnlyRateCodes = selectedHotel.memberOnlyRates ?? [];\n\n // Prep session based storage\n const sessionProvider = beContext.engine.getSessionProvider();\n await sessionProvider.setHotelID(selectedHotelID);\n\n // Prep local storage (non-session based)\n beContext.storageProvider.setHotelId(selectedHotelID);\n\n // Reload current user?\n const user = await beContext.storageProvider.getUser();\n\n if (user) {\n await signUserIn(user);\n }\n\n if (currencyParam && CurrencyProvider.getSymbol(currencyParam)) {\n setCurrentCurrency(currencyParam);\n } else {\n setCurrentCurrency(selectedHotel.defaultCurrency);\n }\n\n selectedHotel?.onLoad?.();\n }\n }\n }, [selectedHotelID]);\n\n useEffect(() => {\n onSelectedHotelIDChanged();\n }, [onSelectedHotelIDChanged]);\n\n useEffect(() => {\n const selectedHotel = getSelectedHotel();\n\n DataLayer.instance.setCurrencyCodes(currentCurrency, selectedHotel?.defaultCurrency ?? currentCurrency);\n }, [currentCurrency, selectedHotelID]);\n\n useEffect(() => {\n // Single-source GTM initialisation\n DataLayer.instance.initialiseGTM(company, selectedHotel);\n }, [company, selectedHotel]);\n\n // TODO: Add Hotel Details fetch\n // TODO: re-do fetch on language change\n\n const workingContext: CompanyContextType = {\n currentLanguage,\n currentCurrency,\n\n memberOnlyModalPromotion,\n\n companyId,\n name,\n companyShort,\n logo,\n logoLink,\n privacyPolicyUrl,\n\n colors,\n hotels,\n\n signedInUser,\n\n selectedHotelID: selectedHotelID as string,\n\n updateLowestPricePerNight: (hotel: string | Hotel, row: BasketRow) => {\n const targetHotel = getHotelFromID(typeof hotel === 'string' ? hotel : hotel.hotelID + '');\n\n if (targetHotel && row) {\n const updatePrice = (value: number, isLoading: boolean) => {\n updateHotel(targetHotel, (hotel) => ({\n ...hotel,\n lowestPrice: { value, isLoading },\n }));\n };\n\n const filters: Filter[] = Object.values(beContext.currentFilters).filter(Boolean) as Filter[];\n\n // Start loading with price = 0\n updatePrice(0, true);\n\n FilterProvider.getRoomList(row, filters, targetHotel.hotelID as string, signedInUser?.memberNumber)\n .then((availableRooms) => {\n const lowest =\n availableRooms?.reduce((min, room) => {\n const price = room.getLowestPrice();\n // Skip null, undefined, and 0 prices. Return the lowest positive price.\n return price != null && price > 0 ? Math.min(min, price) : min;\n }, Infinity) ?? Infinity;\n\n const finalLowest = isFinite(lowest) ? lowest : 0;\n updatePrice(finalLowest, false);\n })\n .catch(() => {\n updatePrice(0, false);\n });\n }\n },\n\n changeHotel: (hotel: string | Hotel | null) => {\n if (hotel === null) {\n setSelectedHotelID(undefined);\n return true;\n }\n\n const targetHotel = getHotelFromID(typeof hotel === 'string' ? hotel : hotel.hotelID + '');\n\n if (targetHotel) {\n setSelectedHotelID(targetHotel.hotelID);\n return true;\n } else {\n // TODO: add centralized error logging\n console.log(`Unable to set selected hotel automatically. No Hotel found with ID: ${company.selectedHotel}`);\n return false;\n }\n },\n\n closeMemberSignupModal: () => {\n setMemberProviderSigningIn(null);\n setMemberOnlyModalPromotion(null);\n },\n openMemberSignupModal: (provider?: EMembershipProvider) => {\n if (provider) {\n setMemberProviderSigningIn(provider);\n } else {\n const firstConfiguredHandler = allExternalMembershipHandlers.find((handler) => handler.isAvailable);\n\n if (firstConfiguredHandler) {\n // If any external handler is available, default to that\n setMemberProviderSigningIn(firstConfiguredHandler.provider);\n } else {\n setMemberProviderSigningIn(EMembershipProvider.Internal);\n }\n }\n },\n\n signUserIn,\n signUserOut,\n\n setCurrentCurrency,\n setCurrentLanguage,\n\n getHotel,\n selectedHotel,\n\n memberProviderSigningIn,\n\n isExternalMemberHotel: allExternalMembershipHandlers.some((handler) => handler.isAvailable),\n externalMembershipHandlers: allExternalMembershipHandlers.filter((handler) => handler.isAvailable),\n };\n\n return <CompanyContext.Provider value={workingContext}>{children}</CompanyContext.Provider>;\n};\n"]}
|
|
@@ -298,11 +298,13 @@ const ConfirmationStepContextWrapper = ({ children }) => {
|
|
|
298
298
|
data = yield BookingAPI_1.default.Reservation.bookNow(basketRows, userProfiles, payment, basketAddonRows, bookingComment || '', hotel === null || hotel === void 0 ? void 0 : hotel.hotelID, engineContext.sessionProvider.getCurrentSessionID().toString(), basketContext.pencilId, undefined, undefined, undefined, isExternalMemberHotel ? memberNumber : undefined, formPayload.giftCardPreauth, {
|
|
299
299
|
perRow: perRowExtraFields,
|
|
300
300
|
customFields: customFields,
|
|
301
|
+
eta: (formPayload === null || formPayload === void 0 ? void 0 : formPayload.eta) || undefined,
|
|
301
302
|
});
|
|
302
303
|
yield basketContext.booked(data, {
|
|
303
304
|
userProfiles,
|
|
304
305
|
payment,
|
|
305
306
|
comments: bookingComment || '',
|
|
307
|
+
eta: (formPayload === null || formPayload === void 0 ? void 0 : formPayload.eta) || undefined,
|
|
306
308
|
});
|
|
307
309
|
const validationResult = yield validateReservation(data);
|
|
308
310
|
if (validationResult) {
|
|
@@ -345,7 +347,7 @@ const ConfirmationStepContextWrapper = ({ children }) => {
|
|
|
345
347
|
Sentry.captureException('Failed to read reservations from GTM code: ' + JSON.stringify(ex));
|
|
346
348
|
}
|
|
347
349
|
basketContext.checkedOut(response);
|
|
348
|
-
raise(new CommittedBookingEvent_1.CommittedBookingEvent(resData, basketContext.currentBasketRows, hotel));
|
|
350
|
+
raise(new CommittedBookingEvent_1.CommittedBookingEvent(resData, basketContext.currentBasketRows, basketContext.basketAddonRows, hotel));
|
|
349
351
|
}
|
|
350
352
|
catch (error) {
|
|
351
353
|
if (error.paymentRequired) {
|
|
@@ -409,7 +411,10 @@ const ConfirmationStepContextWrapper = ({ children }) => {
|
|
|
409
411
|
return null;
|
|
410
412
|
}
|
|
411
413
|
try {
|
|
412
|
-
const data = yield BookingAPI_1.default.Reservation.bookNow(basketRows, resRequest.userProfiles, resRequest.payment, basketAddonRows,
|
|
414
|
+
const data = yield BookingAPI_1.default.Reservation.bookNow(basketRows, resRequest.userProfiles, resRequest.payment, basketAddonRows, resRequest.comments, hotel === null || hotel === void 0 ? void 0 : hotel.hotelID, engineContext.sessionProvider.getCurrentSessionID().toString(), basketContext.pencilId, undefined, true, roomstayId, isExternalMemberHotel ? memberNumber : undefined, undefined, {
|
|
415
|
+
perRow: [],
|
|
416
|
+
eta: (resRequest === null || resRequest === void 0 ? void 0 : resRequest.eta) || undefined,
|
|
417
|
+
});
|
|
413
418
|
yield basketContext.booked(data);
|
|
414
419
|
const validationResult = yield validateReservation(data);
|
|
415
420
|
if (validationResult) {
|