{"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>&nbsp;– {t('businessTravelInfoMsg')}&nbsp;</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":[]}