{"version":3,"file":"static/chunks/159-2d6c9ed4b10d7307.js","mappings":"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","sources":["webpack://_N_E/./components/osc-search-form/search-form.utils.ts","webpack://_N_E/../../libs/osc/dialog/src/lib/dialog.tsx","webpack://_N_E/../../libs/osc/dialog/src/lib/dialog-alert.tsx","webpack://_N_E/../../libs/osc/dialog/src/lib/dialog-action-buttons.tsx","webpack://_N_E/../../libs/osc/dialog/src/lib/dialog-action.tsx","webpack://_N_E/../../libs/osc/dialog/src/index.ts","webpack://_N_E/../../libs/osc/smb-profile-switcher/src/lib/osc-smb-multi-business-modal.tsx","webpack://_N_E/../../libs/osc/smb-profile-switcher/src/lib/gql/queries.ts","webpack://_N_E/../../libs/osc/smb-profile-switcher/src/lib/hooks/useSmbMultiBusinessToggle.tsx","webpack://_N_E/../../libs/osc/smb-profile-switcher/src/lib/osc-smb-profile-switcher.tsx","webpack://_N_E/../../libs/osc/smb-profile-switcher/src/index.ts"],"sourcesContent":["import { RatePlanCodes } from '../../constants/rate-plan-codes';\nimport type { QueryParameters } from '../../constants';\nimport type { FormDataValues } from '@dx-ui/osc-shop-form';\n\nexport const mapRatesToSearchForm = (queryParamsObj: QueryParameters | undefined) => ({\n aarpRate: queryParamsObj?.token.includes(RatePlanCodes.AARP),\n corpAccount: queryParamsObj?.corporateCode,\n employeeRate: queryParamsObj?.employeeRate,\n friendsAndFamilyRate: queryParamsObj?.friendsAndFamilyRate,\n gvmtRates: queryParamsObj?.token.includes(RatePlanCodes.GOVERNMENT_MILITARY),\n groupCode: queryParamsObj?.groupCode,\n ownerVIPRate: queryParamsObj?.ownerVIPRate,\n promoCode: queryParamsObj?.promoCode,\n seniorRate: queryParamsObj?.token.includes(RatePlanCodes.SENIOR),\n travelAgents: queryParamsObj?.travelAgentRate,\n aaaRate: queryParamsObj?.token.includes(RatePlanCodes.AAA),\n redeemPts: queryParamsObj?.token.includes(RatePlanCodes.USE_POINTS) || queryParamsObj?.redeemPts,\n ownerHGVRate: queryParamsObj?.ownerHGVRate,\n});\n\nexport const mapRatesToSearchUriBuilder = (\n queryParamsObj: QueryParameters | undefined,\n usePoints = false\n) => ({\n aarp: queryParamsObj?.token.includes(RatePlanCodes.AARP),\n corpAccount: queryParamsObj?.corporateCode,\n employeeRate: queryParamsObj?.employeeRate,\n friendsAndFamilyRate: queryParamsObj?.friendsAndFamilyRate,\n government: queryParamsObj?.token.includes(RatePlanCodes.GOVERNMENT_MILITARY),\n groupCode: queryParamsObj?.groupCode,\n ownerVIPRate: queryParamsObj?.ownerVIPRate,\n offerId: queryParamsObj?.offerId,\n promoCode: queryParamsObj?.promoCode,\n pnd: queryParamsObj?.pnd,\n senior: queryParamsObj?.token.includes(RatePlanCodes.SENIOR),\n travelAgents: queryParamsObj?.travelAgentRate,\n tripleA: queryParamsObj?.token.includes(RatePlanCodes.AAA),\n usePoints: queryParamsObj?.token.includes(RatePlanCodes.USE_POINTS) || usePoints,\n ownerHGVRate: queryParamsObj?.ownerHGVRate,\n});\n\nexport const isNoRatesOrRedeemPtsSelected = (formData: FormDataValues) => {\n const specialRates = formData?.specialRates;\n //no special rate applied\n if (specialRates && Object.values(specialRates).filter(Boolean).length === 0) return true;\n //or only one special rate applied and that rate is usePoints\n else if (\n specialRates &&\n Object.values(specialRates).filter(Boolean).length < 2 &&\n specialRates.redeemPts\n )\n return true;\n return false;\n};\n","import type * as React from 'react';\nimport type { DialogOverlayProps } from '@reach/dialog';\nimport { DialogContent, DialogOverlay } from '@reach/dialog';\nimport cx from 'classnames';\nimport { ControlClose } from '@dx-ui/osc-controls';\nimport { useTranslation } from 'next-i18next';\n\nexport type Dialog = {\n /** aria label for the modal */\n ariaLabel: string;\n /** The size of the modal */\n size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl' | 'full' | 'container';\n title?: string;\n className?: React.HTMLAttributes<HTMLDivElement>['className'];\n contentClassName?: React.HTMLAttributes<HTMLDivElement>['className'];\n bottomContent?: React.ReactNode;\n /** Hides the close button and prevents the modal from closing when the user clicks outside the modal or presses the Escape key */\n preventCloseOnDismiss?: boolean;\n} & DialogOverlayProps;\n\n/**\n * Used to present content above the page and sets focus on first interactive element, which is the Close button if a title is provided.\n */\nexport const Dialog: React.FC<React.PropsWithChildren<Dialog>> = ({\n ariaLabel,\n children,\n contentClassName,\n //Reach UI definition is wrong. This will be fixed when v2 dialog fully ships\n\n onDismiss,\n title,\n className,\n size = 'md',\n bottomContent,\n preventCloseOnDismiss,\n ...rest\n}) => {\n const showCloseButton = onDismiss && !preventCloseOnDismiss;\n\n return (\n <DialogOverlay\n allowPinchZoom={true}\n className=\"dialog-overlay overflow-hidden\"\n {...(!preventCloseOnDismiss && { onDismiss })}\n {...rest}\n >\n <div className=\"h-full overflow-auto sm:py-4 lg:py-12\">\n <DialogContent\n className={cx(\n 'dialog-content my-0 flex flex-col',\n {\n 'max-w-sm': size === 'sm',\n 'max-w-md': size === 'md',\n 'max-w-lg': size === 'lg',\n 'max-w-xl': size === 'xl',\n 'max-w-2xl': size === '2xl',\n 'max-w-3xl': size === '3xl',\n 'max-w-4xl': size === '4xl',\n 'max-w-5xl': size === '5xl',\n 'max-w-6xl': size === '6xl',\n 'max-w-full': size === 'full',\n 'w-full lg:max-w-[min(90%,calc(1440px-5rem))]': size === 'container',\n },\n contentClassName\n )}\n aria-label={ariaLabel}\n >\n {title && (\n <div className=\"relative mb-2 border-b border-border pb-3.5\">\n <h2\n className=\"mx-4 text-center font-bold brand-ou:text-primary brand-wa:text-xl brand-wa:font-light brand-wa:text-text brand-wa:md:text-2xl\"\n aria-label={ariaLabel}\n aria-live=\"polite\"\n data-osc-product=\"osc-dialog-title\"\n >\n {title}\n </h2>\n {showCloseButton ? <CloseButton onDismiss={onDismiss} /> : null}\n </div>\n )}\n {!title && showCloseButton ? (\n <div className=\"relative py-1\">\n {showCloseButton ? <CloseButton onDismiss={onDismiss} /> : null}\n </div>\n ) : null}\n <div className={cx('p-1', className)}>{children}</div>\n {bottomContent}\n </DialogContent>\n </div>\n </DialogOverlay>\n );\n};\n\nfunction CloseButton({ onDismiss }: Pick<Dialog, 'onDismiss'>) {\n const { t } = useTranslation('osc-dialog');\n return (\n <ControlClose onClick={onDismiss} className=\"absolute -end-2 -top-1.5\" label={t('close')} />\n );\n}\n\nexport default Dialog;\n","import type * as React from 'react';\nimport { useTranslation } from 'next-i18next';\nimport cx from 'classnames';\nimport { Dialog } from './dialog';\n\nexport type DialogAlertProps = Omit<Dialog, 'showModalCTAs' | 'onCloseAndReset' | 'onDismiss'> & {\n /**\n * the text of the cancel button\n */\n cancel?: string | null;\n /**\n * the text of the confirm button\n */\n confirm?: string | null;\n /**\n * bolded heading text\n */\n heading?: string | null;\n /**\n * callback for when the cancel button is clicked.\n * If this is not provided, the cancel button will not show.\n */\n onCancel?: React.DOMAttributes<HTMLButtonElement>['onClick'];\n /**\n * callback for when the confirm button is clicked.\n */\n onConfirm: NonNullable<React.DOMAttributes<HTMLButtonElement>['onClick']>;\n /**\n * whether or not to stack the buttons vertically\n */\n stackedButtons?: boolean;\n};\n\n/**\n * A dialog meant for a user to confirm an action. Escape will not close this dialog.\n */\nconst DialogAlert: React.FC<React.PropsWithChildren<DialogAlertProps>> = ({\n children,\n cancel,\n confirm,\n heading,\n onCancel,\n onConfirm,\n stackedButtons = true,\n ...rest\n}) => {\n const { t } = useTranslation('osc-dialog');\n const cancelText = cancel ?? t('cancel');\n const confirmText = confirm ?? t('ok');\n return (\n <Dialog size=\"sm\" {...rest}>\n <div className=\"text-center\">\n {heading ? <h2 className=\"mb-3 text-xl font-bold leading-tight\">{heading}</h2> : null}\n {children}\n </div>\n <div\n className={cx('flex items-center justify-center pt-4', {\n 'space-x-2': !stackedButtons,\n 'flex-col space-y-2': stackedButtons,\n })}\n >\n <button type=\"button\" className=\"btn btn-lg btn-primary w-full\" onClick={onConfirm}>\n {confirmText}\n </button>\n {onCancel ? (\n <button\n type=\"button\"\n className=\"btn btn-lg btn-primary-outline w-full\"\n onClick={onCancel}\n >\n {cancelText}\n </button>\n ) : null}\n </div>\n </Dialog>\n );\n};\n\nexport { DialogAlert };\nexport default DialogAlert;\n","import { useTranslation } from 'next-i18next';\nimport cx from 'classnames';\nimport { forwardRef } from 'react';\n\ntype ActionButton = {\n adaDescription?: string;\n label?: string;\n} & React.ComponentPropsWithRef<'button'>;\n\ntype EnablableActionButton = ActionButton & { isEnabled?: boolean };\n\nexport type ActionButtonProps = {\n buttonOptions?: {\n cancel?: ActionButton;\n confirm?: ActionButton;\n reset?: EnablableActionButton;\n };\n /** called when done button is activated */\n onConfirm?: (event: React.MouseEvent | React.KeyboardEvent) => void;\n onReset?: () => void;\n onDismiss?: (event: React.MouseEvent | React.KeyboardEvent) => void;\n};\n\nconst Button = forwardRef<HTMLButtonElement, ActionButton>(\n ({ label, adaDescription, className, ...rest }, forwardedRef) => {\n return (\n <button {...rest} className={cx('btn btn-lg', className)} ref={forwardedRef} type=\"button\">\n {label}\n {adaDescription ? <span className=\"sr-only\">{adaDescription}</span> : null}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\nexport function ActionButtons({\n buttonOptions = {},\n onReset,\n onConfirm,\n onDismiss,\n}: ActionButtonProps) {\n const { t } = useTranslation('osc-dialog');\n const { cancel, confirm, reset } = buttonOptions;\n const resetBtnEnabled = reset?.isEnabled && reset?.label;\n\n const buttons = [\n {\n ...confirm,\n onClick: onConfirm,\n label: confirm?.label ? confirm.label : t('done'),\n className: 'btn-primary',\n 'data-testid': 'shop-modal-done-cta',\n ref: confirm?.ref,\n },\n {\n ...cancel,\n onClick: onDismiss,\n label: cancel?.label ? cancel.label : t('cancel'),\n className: 'btn-primary-outline',\n ref: cancel?.ref,\n },\n ].map((props) => <Button {...props} key={props.label} />);\n\n return (\n <div\n className={cx(\n 'mb:pb-0 sticky bottom-0 flex flex-col gap-4 bg-bg px-1 pt-2 md:flex-row md:rtl:flex-row',\n {\n 'md:justify-between': resetBtnEnabled,\n 'md:justify-end': !resetBtnEnabled,\n }\n )}\n >\n {resetBtnEnabled ? (\n <div className=\"md:self-center\">\n <button\n className=\"btn btn-xl btn-primary-link w-full rounded-none\"\n data-testid=\"shop-modal-reset-cta\"\n onClick={() => onReset?.()}\n ref={reset?.ref}\n type=\"button\"\n >\n {reset?.label}\n {reset?.adaDescription ? (\n <span className=\"sr-only\" aria-live=\"assertive\" role=\"alert\">\n {reset?.adaDescription}\n </span>\n ) : null}\n </button>\n </div>\n ) : null}\n <div className=\"flex flex-col gap-3 md:flex-row \">{buttons}</div>\n </div>\n );\n}\n","import Dialog from './dialog';\nimport { ActionButtons, type ActionButtonProps } from './dialog-action-buttons';\n\nexport type ActionDialogProps = Omit<Dialog, 'onDismiss'> & ActionButtonProps;\n\n/**\n * A dialog with two buttons for the user to take an action to cancel or accept.\n */\nexport function ActionDialog(props: ActionDialogProps) {\n const { buttonOptions, onReset, onConfirm, onDismiss, ...dialogProps } = props;\n const bottomContent = (\n <ActionButtons\n buttonOptions={buttonOptions}\n onReset={onReset}\n onConfirm={onConfirm}\n onDismiss={onDismiss}\n />\n );\n return <Dialog {...dialogProps} onDismiss={onDismiss} bottomContent={bottomContent} />;\n}\n","export * from './lib/dialog';\nexport * from './lib/dialog-alert';\nexport * from './lib/dialog-action';\nexport * from './lib/dialog-action-buttons';\n","import { useTranslation } from 'next-i18next';\nimport { Dialog } from '@dx-ui/osc-dialog';\nimport { useSMBProgramIdLocalStorage } from '@dx-ui/utilities-use-smb-context-local-storage';\nimport { useAuth } from '@dx-ui/framework-auth-provider';\nimport { useState } from 'react';\n\n/**\n * SMB Multi-Business modal. Displays multiple businesses from programAccountSummary and sets localStorage value `smbProgramId` for selected program.\n *\n * Use the `<SMBMultiBusinessModal/>` component inside of the `SMBMultiBusinessModalProvider` in order to show the multi-business modal\n * to shop for select business.\n * @param props\n */\nexport function SMBMultiBusinessModal({\n onAccept,\n onCancel,\n}: {\n onAccept?: (selectedProgramId: number | null) => void;\n onCancel?: () => void;\n}) {\n const { t, ready } = useTranslation('osc-smb-profile-switcher');\n const { smbProgramId, setSMBProgramId } = useSMBProgramIdLocalStorage();\n const { guestInfo, isLoading } = useAuth();\n const programAccountSummary = guestInfo?.hhonors?.programAccountSummary || [];\n const firstAccountId = guestInfo?.hhonors?.programAccountSummary?.[0]?.accountId || null;\n const preselectedBusiness = smbProgramId ?? firstAccountId;\n const [selectedProgramId, setSelectedProgramId] = useState(preselectedBusiness);\n\n function handleCancel() {\n setSelectedProgramId(preselectedBusiness);\n onCancel?.();\n }\n\n if (isLoading || !ready) {\n return null;\n }\n\n const handleAccept = () => {\n setSMBProgramId(selectedProgramId);\n onAccept?.(selectedProgramId);\n };\n\n return (\n <Dialog\n ariaLabel={t('multiBusinessModal.header')}\n title={t('multiBusinessModal.header')}\n size=\"sm\"\n onDismiss={handleCancel}\n >\n <fieldset>\n <legend className=\"sr-only\">{t('multiBusinessModal.header')}</legend>\n {programAccountSummary.map((programAccount, index) => {\n const accountName = programAccount.accountName || '';\n const businessOption = `businessOption${index + 1}`;\n return (\n <label key={programAccount.accountName} className=\"flex items-center py-2 font-bold\">\n <input\n type=\"radio\"\n name=\"businessOption\"\n value={businessOption}\n checked={programAccount.accountId === selectedProgramId}\n onChange={() =>\n programAccount.accountId && setSelectedProgramId(programAccount.accountId)\n }\n className=\"form-radio me-2 cursor-pointer self-center sm:self-auto\"\n />\n {accountName}\n </label>\n );\n })}\n </fieldset>\n <div className=\"mt-3\">\n <button\n type=\"button\"\n className=\"btn btn-xl btn-primary w-full whitespace-normal\"\n onClick={handleAccept}\n >\n {t('multiBusinessModal.ok')}\n </button>\n <button\n type=\"button\"\n className=\"btn btn-xl btn-primary-outline mt-2 w-full whitespace-normal\"\n onClick={handleCancel}\n >\n {t('multiBusinessModal.cancel')}\n </button>\n </div>\n </Dialog>\n );\n}\n","import type * as Types from './types';\n\nimport {\n useQuery,\n type QueryClient,\n type FetchQueryOptions,\n type UseQueryOptions,\n} from '@tanstack/react-query';\nimport type { DXError } from '@dx-ui/types-graphql';\n\nexport const GetSmbMultiBusinessToggleDocument = {\n operationName: 'featureToggles',\n operationString: `query featureToggles {\n featureToggles(names: [\"smbMultiBusiness\"]) {\n enabled\n name\n }\n}`,\n originalOpName: 'getSmbMultiBusinessToggle',\n};\nexport function useGetSmbMultiBusinessToggleQuery<\n TData = Types.GetSmbMultiBusinessToggleQuery,\n TError = DXError\n>(\n variables?: Types.GetSmbMultiBusinessToggleQueryVariables,\n options?: Omit<UseQueryOptions<Types.GetSmbMultiBusinessToggleQuery, TError, TData>, 'queryKey'>\n) {\n return useQuery<Types.GetSmbMultiBusinessToggleQuery, TError, TData>({\n queryKey: [GetSmbMultiBusinessToggleDocument, variables],\n ...options,\n });\n}\nexport function serverSideGetSmbMultiBusinessToggleQuery(\n queryClient: QueryClient,\n variables?: Types.GetSmbMultiBusinessToggleQueryVariables,\n options?: FetchQueryOptions<Types.GetSmbMultiBusinessToggleQuery>\n) {\n return queryClient.fetchQuery<Types.GetSmbMultiBusinessToggleQuery>({\n queryKey: [GetSmbMultiBusinessToggleDocument, variables],\n ...options,\n });\n}\n","import { getIsFeatureToggleEnabled } from '@dx-ui/utilities-feature-toggles-configs';\nimport { useGetSmbMultiBusinessToggleQuery } from '../gql/queries';\nimport { CDN_STALE_TIME } from '@dx-ui/framework-react-query';\n\nexport function useSMBMultiBusinessToggle() {\n const { data, isLoading } = useGetSmbMultiBusinessToggleQuery(undefined, {\n staleTime: CDN_STALE_TIME,\n });\n\n return {\n isLoading,\n smbMultiBusinessEnabled: getIsFeatureToggleEnabled({\n featureToggleData: data,\n name: 'smbMultiBusiness',\n }),\n };\n}\n","import { Trans, useTranslation } from 'next-i18next';\nimport { useAuth } from '@dx-ui/framework-auth-provider';\nimport type { SMBContextType } from '@dx-ui/utilities-use-smb-context-local-storage';\nimport {\n useSMBContextLocalStorage,\n useSMBProgramIdLocalStorage,\n} from '@dx-ui/utilities-use-smb-context-local-storage';\nimport cx from 'classnames';\nimport { useIsClient } from 'usehooks-ts';\nimport set from 'lodash/set';\nimport { SMBMultiBusinessModal } from './osc-smb-multi-business-modal';\nimport { useSMBMultiBusinessToggle } from './hooks/useSmbMultiBusinessToggle';\nimport { useEffect, useRef, useState } from 'react';\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\n\ntype SMBProfileSwitcherProps = {\n isSmbChecked: boolean;\n onInputChange?: () => void;\n onChangeBusiness?: () => void;\n} & React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * SMB Profiler Switcher. Reads localStorage context value `smbContext` for initial state. Toggle subscribes to localStorage as it may be updated by other logic (session timeout, etc)\n *\n * @param props\n */\nexport function SMBProfileSwitcher({\n className,\n onInputChange,\n isSmbChecked,\n onChangeBusiness,\n}: SMBProfileSwitcherProps) {\n const { t, ready: isTranslationNSReady } = useTranslation('osc-smb-profile-switcher');\n const { smbContext, setSMBContext } = useSMBContextLocalStorage(true);\n const { guestInfo, isLoading } = useAuth();\n const isClient = useIsClient();\n const { isLoading: toggleDataLoading, smbMultiBusinessEnabled } = useSMBMultiBusinessToggle();\n const { isSMBProgramIdSet, smbProgramId, setSMBProgramId } = useSMBProgramIdLocalStorage();\n const isInBusinessContext = smbContext === 'business';\n const hasMultipleBusinesses = (guestInfo?.hhonors?.programAccountSummary?.length || 0) > 1;\n const shouldShowMultiBusinessOption = smbMultiBusinessEnabled && hasMultipleBusinesses;\n const isInBusinessButNoProgramIdSet = isInBusinessContext && !isSMBProgramIdSet;\n const travelForBusinessChecked = shouldShowMultiBusinessOption\n ? isInBusinessContext && isSMBProgramIdSet\n : isInBusinessContext;\n const showChangeBusinessBtn =\n shouldShowMultiBusinessOption && isInBusinessContext && isSMBProgramIdSet;\n const searchParams = new URLSearchParams(isBrowser ? window.location.search : undefined);\n\n const [modalState, setModalState] = useState<{\n isVisible: boolean;\n onAccept: ((selectedProgramId: number | null) => void) | undefined;\n onCancel: (() => void) | undefined;\n }>({ isVisible: false, onAccept: undefined, onCancel: undefined });\n\n async function focusOnCTA({ ctaId }: { ctaId: string }) {\n const ctaElement: Promise<HTMLElement> = new Promise((resolve) => {\n const intervalId = window.setInterval(() => {\n const elem = document.querySelector(`#${ctaId}`);\n if (elem) {\n clearInterval(intervalId);\n resolve(elem as HTMLElement);\n }\n }, 50);\n });\n await ctaElement.then((elm) => elm.focus());\n }\n\n const hideMultiBusinessModal = () =>\n setModalState({ onAccept: undefined, onCancel: undefined, isVisible: false });\n\n const handleChangeBusiness = () =>\n Promise.resolve()\n .then(() => onChangeBusiness?.())\n .then((callback?: (() => void) | void) => {\n setModalState({\n isVisible: true,\n onAccept: (selectedProgramId) => {\n hideMultiBusinessModal();\n void focusOnCTA({ ctaId: 'changeBusinessCTA' });\n if (selectedProgramId !== smbProgramId) {\n callback?.();\n }\n },\n onCancel: () => {\n hideMultiBusinessModal();\n },\n });\n })\n .catch(console.error); // eslint-disable-line no-console\n\n const handleInputChange = async () => {\n const nextContext = smbContext === 'personal' ? 'business' : 'personal';\n const switchingToBusiness = nextContext === 'business';\n const shouldShowMultiBusinessModal = shouldShowMultiBusinessOption && switchingToBusiness;\n await Promise.resolve()\n .then(() => {\n if (shouldShowMultiBusinessModal) {\n return new Promise((resolve, reject) => {\n setModalState({\n isVisible: true,\n onAccept: () => {\n hideMultiBusinessModal();\n resolve({});\n },\n onCancel: () => {\n hideMultiBusinessModal();\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n reject();\n },\n });\n });\n }\n })\n .then(() => onInputChange?.())\n .then((callback?: ((context: SMBContextType) => void) | void) => {\n if (window?.digitalData && window?._satellite) {\n set(\n window.digitalData,\n 'user[0].profile[0].attributes.profileStatus',\n switchingToBusiness ? 'business_travel' : nextContext\n );\n set(window.digitalData, 'click.clickID', 'profile_switch_btn');\n window._satellite?.track?.('global_click');\n } else {\n console.warn('digitalData or _satellite not found'); // eslint-disable-line no-console\n }\n callback?.(nextContext);\n setSMBContext(nextContext);\n if (nextContext === 'personal' && isSMBProgramIdSet) {\n setSMBProgramId(null);\n }\n void focusOnCTA({ ctaId: 'profileSwitch' });\n })\n .catch((err) => {\n console.error(err); // eslint-disable-line no-console\n });\n };\n const firstBusinessName = guestInfo?.hhonors?.programAccountSummary[0]?.accountName || '';\n const selectedBusinessName =\n guestInfo?.hhonors?.programAccountSummary.find(\n (programAccount) => programAccount.accountId === smbProgramId\n )?.accountName || '';\n const businessName = shouldShowMultiBusinessOption ? selectedBusinessName : firstBusinessName;\n const SMBContext = travelForBusinessChecked ? businessName : t('personalTravel');\n const initializedMultiBusinessModal = useRef(false);\n const programAccountIdParam = isNaN(Number(searchParams.get('programAccountId')))\n ? undefined\n : Number(searchParams.get('programAccountId'));\n const hasSetProgramId = useRef(false);\n\n useEffect(() => {\n if (\n shouldShowMultiBusinessOption &&\n isInBusinessButNoProgramIdSet &&\n isSmbChecked &&\n !initializedMultiBusinessModal.current\n ) {\n initializedMultiBusinessModal.current = true;\n setModalState({\n isVisible: true,\n onAccept: () => {\n hideMultiBusinessModal();\n },\n onCancel: async () => {\n hideMultiBusinessModal();\n await Promise.resolve()\n .then(() => onInputChange?.())\n .then((callback?: ((context: SMBContextType) => void) | void) => {\n const url = new URL(window.location.href);\n url.searchParams.delete('smbRate');\n const newUrl = url.toString();\n window.history.replaceState(\n { ...window.history.state, as: newUrl, url: newUrl },\n '',\n newUrl\n );\n callback?.('personal');\n setSMBContext('personal');\n })\n .catch((err) => {\n console.error(err); // eslint-disable-line no-console\n });\n },\n });\n }\n }, [\n isInBusinessButNoProgramIdSet,\n onInputChange,\n setSMBContext,\n shouldShowMultiBusinessOption,\n isSmbChecked,\n ]);\n\n useEffect(() => {\n if (programAccountIdParam) {\n if (shouldShowMultiBusinessOption && !hasSetProgramId.current) {\n hasSetProgramId.current = true;\n if (!isInBusinessContext) {\n setSMBContext('business');\n }\n setSMBProgramId(programAccountIdParam);\n }\n if (isSMBProgramIdSet) {\n const url = new URL(window.location.href);\n url.searchParams.delete('programAccountId');\n const newUrl = url.toString();\n window.history.replaceState(\n { ...window.history.state, as: newUrl, url: newUrl },\n '',\n newUrl\n );\n }\n }\n }, [\n isInBusinessContext,\n isSMBProgramIdSet,\n programAccountIdParam,\n setSMBContext,\n setSMBProgramId,\n shouldShowMultiBusinessOption,\n ]);\n\n if (\n isLoading ||\n !isClient ||\n !smbContext ||\n !guestInfo?.hhonors?.isSMBMember ||\n !isTranslationNSReady ||\n toggleDataLoading\n )\n return null;\n\n return (\n <>\n <div className={cx('bg-bg-alt flex flex-col flex-wrap items-start px-4 py-2.5', className)}>\n <label className=\"flex cursor-pointer items-center text-lg font-bold\">\n <span className=\"first-letter:capitalize\">{t('businessTravel')}</span>\n <div className=\"relative mx-2 inline-flex\">\n <input\n id=\"profileSwitch\"\n aria-describedby=\"currentlyBookingFor\"\n className=\"peer sr-only\"\n type=\"checkbox\"\n onChange={handleInputChange}\n checked={travelForBusinessChecked}\n />\n <div className=\"peer-checked:bg-hilton peer-focus:ring-hilton peer-checked:after:border-bg after:border-bg-disabled after:bg-bg peer h-6 w-12 rounded-full bg-[#878787] ring-offset-1 after:absolute after:top-[2px] after:size-5 after:rounded-full after:border after:transition-all after:content-[''] peer-focus:outline-none peer-focus:ring-2 motion-reduce:transition-none ltr:after:left-[4px] peer-checked:ltr:after:translate-x-full rtl:after:right-[4px] peer-checked:rtl:after:-translate-x-full\" />\n </div>\n </label>\n <div className=\"flex text-sm\">\n <span className=\"relative self-center\">\n <span id=\"currentlyBookingFor\" aria-hidden=\"true\">\n <Trans\n t={t}\n i18nKey=\"youAreCurrentlyBookingFor\"\n values={{ SMBContext }}\n components={{ b: <strong /> }}\n />\n {travelForBusinessChecked ? (\n <span> – {t('businessTravelInfoMsg')} </span>\n ) : null}\n </span>\n {showChangeBusinessBtn ? (\n <button\n id=\"changeBusinessCTA\"\n aria-describedby=\"currentlyBookingFor\"\n className=\"btn-primary-link\"\n type=\"button\"\n onClick={handleChangeBusiness}\n >\n {t('changeBusiness')}\n </button>\n ) : null}\n </span>\n </div>\n </div>\n {modalState.isVisible ? (\n <SMBMultiBusinessModal onAccept={modalState.onAccept} onCancel={modalState.onCancel} />\n ) : null}\n </>\n );\n}\n\nexport type { SMBProfileSwitcherProps };\nexport default SMBProfileSwitcher;\n","export * from './lib/osc-smb-profile-switcher';\nexport * from './lib/osc-smb-multi-business-modal';\nexport * from './lib/gql/queries';\nexport * from './lib/gql/types';\n"],"names":["mapRatesToSearchForm","queryParamsObj","aarpRate","token","includes","RatePlanCodes","AARP","corpAccount","corporateCode","employeeRate","friendsAndFamilyRate","gvmtRates","GOVERNMENT_MILITARY","groupCode","ownerVIPRate","promoCode","seniorRate","SENIOR","travelAgents","travelAgentRate","aaaRate","AAA","redeemPts","USE_POINTS","ownerHGVRate","usePoints","aarp","government","offerId","pnd","senior","Dialog","ariaLabel","children","contentClassName","onDismiss","title","className","size","bottomContent","preventCloseOnDismiss","rest","showCloseButton","DialogOverlay","allowPinchZoom","div","DialogContent","cx","aria-label","h2","aria-live","data-osc-product","CloseButton","useTranslation","t","ControlClose","onClick","label","SMBMultiBusinessModal","guestInfo","onAccept","onCancel","ready","useSMBProgramIdLocalStorage","smbProgramId","setSMBProgramId","useAuth","isLoading","programAccountSummary","hhonors","firstAccountId","accountId","preselectedBusiness","useState","selectedProgramId","setSelectedProgramId","handleCancel","fieldset","legend","map","programAccount","index","accountName","input","type","name","value","businessOption","checked","onChange","button","handleAccept","forwardRef","forwardedRef","adaDescription","span","displayName","GetSmbMultiBusinessToggleDocument","operationName","operationString","originalOpName","SMBProfileSwitcher","useGetSmbMultiBusinessToggleQuery","onInputChange","isSmbChecked","onChangeBusiness","useSMBContextLocalStorage","smbContext","setSMBContext","isClient","useIsClient","useSMBMultiBusinessToggle","data","variables","undefined","staleTime","CDN_STALE_TIME","useQuery","queryKey","options","smbMultiBusinessEnabled","getIsFeatureToggleEnabled","featureToggleData","isSMBProgramIdSet","isInBusinessContext","hasMultipleBusinesses","length","shouldShowMultiBusinessOption","isInBusinessButNoProgramIdSet","travelForBusinessChecked","showChangeBusinessBtn","searchParams","URLSearchParams","isBrowser","window","location","search","isVisible","modalState","setModalState","focusOnCTA","ctaId","ctaElement","Promise","resolve","intervalId","setInterval","elem","document","querySelector","clearInterval","then","elm","focus","hideMultiBusinessModal","handleInputChange","nextContext","switchingToBusiness","shouldShowMultiBusinessModal","reject","callback","digitalData","_satellite","set","track","console","warn","catch","err","error","firstBusinessName","selectedBusinessName","find","businessName","SMBContext","initializedMultiBusinessModal","useRef","programAccountIdParam","isNaN","Number","get","hasSetProgramId","useEffect","current","url","URL","href","delete","newUrl","toString","history","replaceState","state","as","isSMBMember","isTranslationNSReady","toggleDataLoading","id","aria-describedby","aria-hidden","Trans","i18nKey","values","components","b","strong","handleChangeBusiness"],"sourceRoot":"","ignoreList":[]}