{"version":3,"file":"9979.chunk.js","mappings":"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","sources":["webpack://oricheckoutclientapp/../../../src/hooks/useTranslations.ts","webpack://oricheckoutclientapp/../../../src/types/ShoppingStep.ts","webpack://oricheckoutclientapp/../../../../src/components/AccountBalanceDialog/styles.ts","webpack://oricheckoutclientapp/../../src/constants-generated.ts","webpack://oricheckoutclientapp/../../src/logger.ts","webpack://oricheckoutclientapp/../../../../src/components/AccountBalanceDialog/useAccountBalanceDialog.ts","webpack://oricheckoutclientapp/../../../src/api/useGetCurrentPeriod.ts","webpack://oricheckoutclientapp/../../../../src/components/AccountBalanceDialog/AccountBalanceDialog.tsx","webpack://oricheckoutclientapp/../../../../src/components/VoucherFormContent/styles.ts","webpack://oricheckoutclientapp/../../../../src/components/VoucherFormContent/VoucherFormContent.tsx","webpack://oricheckoutclientapp/../../../../src/components/VouchersDialog/styles.ts","webpack://oricheckoutclientapp/../../../src/constants/index.ts","webpack://oricheckoutclientapp/../../../src/types/MetaHierarchy.ts","webpack://oricheckoutclientapp/../../../src/utils/dispatchUserActionEvent.ts","webpack://oricheckoutclientapp/../../../src/utils/addVoucher.ts","webpack://oricheckoutclientapp/../../../../src/components/VouchersDialog/useVoucherDialog.ts","webpack://oricheckoutclientapp/../../../../src/components/VouchersDialog/VouchersDialog.tsx","webpack://oricheckoutclientapp/../../../src/utils/splitPromoCode.ts","webpack://oricheckoutclientapp/../../../../src/components/AdditionalInfo/AdditionalInfo.tsx","webpack://oricheckoutclientapp/../../../../src/components/AdditionalInfo/useAdditionalInfo.ts","webpack://oricheckoutclientapp/../../../../src/components/CashbackAndBonus/styles.ts","webpack://oricheckoutclientapp/../../../../src/components/CashbackAndBonus/CashbackAndBonus.tsx","webpack://oricheckoutclientapp/../../../src/types/OrderState.ts","webpack://oricheckoutclientapp/../../../src/utils/openLogin.ts","webpack://oricheckoutclientapp/../../../src/components/FormattedMessage.tsx","webpack://oricheckoutclientapp/../../../../src/components/LoadingScreen/styles.ts","webpack://oricheckoutclientapp/../../../../src/components/LoadingScreen/LoadingScreen.tsx","webpack://oricheckoutclientapp/../../../../src/components/Continue/styles.ts","webpack://oricheckoutclientapp/../../../src/models/TranslationKey.ts","webpack://oricheckoutclientapp/../../../src/types/ApiError.ts","webpack://oricheckoutclientapp/../../../../src/components/Continue/useContinue.ts","webpack://oricheckoutclientapp/../../../src/hooks/useFinaliseOrderFallback.ts","webpack://oricheckoutclientapp/../../../src/utils/clearShoppingContextCache.ts","webpack://oricheckoutclientapp/../../../../src/components/Continue/Continue.tsx","webpack://oricheckoutclientapp/../../../../src/components/StickyPanel/StickyPanel.tsx","webpack://oricheckoutclientapp/../../../../src/components/TermsAndConditionsConsent/TermsAndConditionsDialog.tsx","webpack://oricheckoutclientapp/../../../../src/components/TermsAndConditionsConsent/TermsLink.tsx","webpack://oricheckoutclientapp/../../../../src/components/TermsAndConditionsConsent/TermsAndConditionsConsent.tsx","webpack://oricheckoutclientapp/../../../src/hooks/useTermsAndConditionsConsent.ts","webpack://oricheckoutclientapp/../../../../src/components/Summary/useSummary.ts","webpack://oricheckoutclientapp/../../../src/utils/getOrderQuantity.ts","webpack://oricheckoutclientapp/../../../src/utils/removeVoucher.ts","webpack://oricheckoutclientapp/../../../../src/components/Summary/Summary.tsx","webpack://oricheckoutclientapp/../../src/App.tsx"],"sourcesContent":["/* istanbul ignore file */\n\n/**\n * DO NOT EDIT!\n * This file was autogenerated by npm script `localizations-codegen`.\n * Changes may cause incorrect behavior and will be lost when the file is regenerated.\n *\n * Run `npx localizations-codegen` to regenerate.\n */\nimport { useTranslationsFromNamespace, type UseTranslationsFromNamespaceResult } from '@ori/i18n';\n\nimport type { DefaultTranslations } from '../constants/defaultTranslations';\n\n/**\n * A hook for accessing translations within a specific namespace along with a formatting function.\n *\n * @returns The translations within the specified namespace and a formatting function.\n */\nexport const useTranslations: () => UseTranslationsFromNamespaceResult = () =>\n useTranslationsFromNamespace();\n","export enum ShoppingStep {\n Basket,\n Offers,\n Checkout,\n}\n","import { Typography, styled } from '@ori-ui/mui';\n\nconst maxDialogContentWidth = 330;\n\nexport const BalanceContent = styled('div')(({ theme }) => ({\n [theme.breakpoints.up('sm')]: {\n maxWidth: maxDialogContentWidth,\n },\n}));\n\nexport const BalanceWrapper = styled('div')(({ theme }) => ({\n borderBottom: `1px solid ${theme.palette.grey[200]}`,\n paddingBottom: theme.spacing(3),\n marginBottom: theme.spacing(3),\n '&:last-child': {\n borderBottom: 'none',\n paddingBottom: 0,\n marginBottom: 0,\n },\n}));\n\nexport const BalanceTitle = styled(Typography)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nexport const BalanceLine = styled('div')({\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n});\n\nexport const BalanceItem = styled(Typography)({\n fontWeight: 'bold',\n});\n\nexport const BalanceDescription = styled('div')(({ theme }) => ({\n backgroundColor: theme.palette.grey[100],\n borderRadius: theme.spacing(1),\n padding: theme.spacing(3),\n marginTop: theme.spacing(3),\n fontSize: theme.typography.caption.fontSize,\n}));\n","/* istanbul ignore file */\n//\n// DO NOT EDIT!\n// This file was autogenerated by Eddie.\n// Changes may cause incorrect behavior and will be lost when the file is regenerated.\n//\n// Run `npx eddie update workspace` to regenerate.\n//\n\nexport const APP_NAME = 'checkout-summary';\nexport const PACKAGE_NAME = '@ori/checkout-summary';\nexport const TEAM_NAME = 'Checkout';\n\nexport const EMOTION_CACHE_KEY = `${APP_NAME}-emotion-cache-key`;\n\nexport const APP_ROOT_ELEMENT_ID = `${APP_NAME}-root`;\n","import { getDebugLogger, getWarningLogger } from '@ori/checkout-utils';\nimport { Logger } from '@ori/logger';\n\nimport { APP_NAME, PACKAGE_NAME, TEAM_NAME } from './constants';\n\nexport const mainLogger = new Logger(PACKAGE_NAME, { teamName: TEAM_NAME });\n\nexport const logDebug = getDebugLogger(APP_NAME);\nexport const logWarning = getWarningLogger(APP_NAME);\n","import { DateFormat, formatDate, useCulture } from '@ori/culture';\nimport { useShoppingContext } from '@ori/shopping-context';\n\nimport { useGetCurrentPeriod } from '../../api';\nimport { useTranslations } from '../../hooks';\n\ninterface Line {\n label: string;\n value: string;\n}\n\ninterface BalanceSection {\n description?: string;\n lines: Line[];\n title: string;\n}\n\nexport function useAccountBalanceDialog() {\n const { formatMessage } = useTranslations();\n const { culture, timeZone } = useCulture();\n const {\n isLoaded,\n shoppingContext: {\n shoppingBag: {\n balanceBefore: { credit = '', discount = '', groupBp = '', personalBp = '' } = {},\n isAccountBalanceVisible,\n } = {},\n showBp,\n } = {},\n } = useShoppingContext();\n const { currentPeriod, isCurrentPeriodLoading } = useGetCurrentPeriod({ isActive: Boolean(personalBp || groupBp) });\n\n const periodCode = currentPeriod?.period?.periodCode;\n const validTo = currentPeriod?.period?.valid?.to;\n const validToFormatted = validTo instanceof Date ? formatDate(validTo, DateFormat.ShortDate, culture, timeZone) : '';\n const periodNumber = periodCode == null ? '' : periodCode.toString().slice(-2);\n\n const balanceSections: BalanceSection[] = [];\n if (!isLoaded || isCurrentPeriodLoading) {\n return [];\n }\n\n if (credit) {\n balanceSections.push({\n title: formatMessage('credit'),\n lines: [\n {\n label: formatMessage('availableToUseNow'),\n value: credit,\n },\n ],\n });\n }\n\n if (isAccountBalanceVisible && discount) {\n balanceSections.push({\n title: formatMessage('wallet'),\n description: formatMessage('walletIsAutoAppliedAndCanCoverUpToXOfYourOrder'),\n lines: [\n {\n label: formatMessage('availableToUseNow'),\n value: discount,\n },\n ],\n });\n }\n\n if (showBp && (personalBp || groupBp)) {\n const bpLines: Line[] = [];\n\n if (personalBp) {\n bpLines.push({\n label: formatMessage('personal'),\n value: `${personalBp} ${formatMessage('bp')}`,\n });\n }\n\n if (groupBp) {\n bpLines.push({\n label: formatMessage('group'),\n value: `${groupBp} ${formatMessage('bp')}`,\n });\n }\n\n balanceSections.push({\n title: formatMessage('bonusPoints'),\n description: formatMessage('bonusPointsFromPlacedOrdersInCampaign', {\n 0: periodNumber,\n 1: validToFormatted,\n }),\n lines: bpLines,\n });\n }\n\n return balanceSections;\n}\n","import { errorHandlingSwrOptions } from '@ori/checkout-utils';\nimport { useGetPeriodsCurrentPeriod } from '@ori/global-api-client-react';\n\nimport { logDebug } from '../logger';\n\ninterface UseGetCurrentPeriodParams {\n isActive?: boolean;\n}\n\nexport const useGetCurrentPeriod = ({ isActive = true }: UseGetCurrentPeriodParams) => {\n const swrOptions = {\n enabled: isActive,\n onSuccess: () => {\n logDebug('useGetCurrentPeriod() hook finished successfully');\n },\n ...errorHandlingSwrOptions,\n };\n\n const { data: currentPeriod, isValidating: isCurrentPeriodLoading } = useGetPeriodsCurrentPeriod(undefined, {\n swr: swrOptions,\n });\n\n return {\n currentPeriod,\n isCurrentPeriodLoading,\n };\n};\n","import { Dialog } from '@ori-ui/components';\nimport { Typography } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\n\nimport { TestId } from '../../types';\nimport { BalanceContent, BalanceDescription, BalanceItem, BalanceLine, BalanceTitle, BalanceWrapper } from './styles';\nimport { useAccountBalanceDialog } from './useAccountBalanceDialog';\n\nexport interface AccountBalanceDialogProps {\n isBalanceDialogOpen: boolean;\n toggleBalanceDialog: () => void;\n}\n\nexport const AccountBalanceDialog: FC = ({ isBalanceDialogOpen, toggleBalanceDialog }) => {\n const { getTestIdProps } = useTestId();\n const balanceSections = useAccountBalanceDialog();\n\n return (\n \n \n {balanceSections.map(({ description, title, lines }) => (\n \n {title}\n {lines.map(({ label, value }) => (\n \n {label}\n {value}\n \n ))}\n {description ? (\n \n {description}\n \n ) : null}\n \n ))}\n \n \n );\n};\n","import { CheckHeavy, ErrorCircleFilled } from '@ori-ui/icons';\nimport { Button, styled } from '@ori-ui/mui';\n\nexport const AddButton = styled(Button)(({ theme }) => ({\n display: 'flex',\n alignItems: 'end',\n marginTop: theme.spacing(6),\n}));\n\nexport const CheckIcon = styled(CheckHeavy)({\n width: 26,\n height: 26,\n});\n\nexport const ExclamationMark = styled(ErrorCircleFilled)(({ theme }) => ({\n width: 28,\n height: 28,\n marginLeft: theme.spacing(2),\n color: theme.palette.error.main,\n}));\n\nexport const HelperTextWrapper = styled('div')({\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n});\n","import { TextField, Typography } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\nimport { useMemo } from 'react';\nimport { useFormContext, useFormState } from 'react-hook-form';\n\nimport { useTranslations } from '../../hooks';\nimport { TestId } from '../../types';\nimport type { VoucherFormProps } from '../VouchersDialog';\nimport { AddButton, CheckIcon, ExclamationMark, HelperTextWrapper } from './styles';\n\nexport interface VouchersDialogProps {\n error: string | undefined;\n isVoucherApplied: boolean;\n}\n\nexport const VoucherFormContent: FC = ({ error, isVoucherApplied }) => {\n const { getTestIdProps } = useTestId();\n const { formatMessage } = useTranslations();\n\n const { register } = useFormContext();\n const { errors } = useFormState();\n const hasError = Boolean(errors.voucherCode) || Boolean(error);\n const helperText = errors.voucherCode?.message?.toString() ?? error;\n\n const voucherCodeInput = useMemo(\n () => (error ? : null),\n [error, getTestIdProps],\n );\n\n return (\n <>\n \n \n {isVoucherApplied ? : null}\n \n {isVoucherApplied ? formatMessage('applied') : formatMessage('add')}\n \n \n \n );\n};\n","import { styled } from '@ori-ui/mui';\n\nexport const VouchersForm = styled('form')({\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n justifyContent: 'space-between',\n});\n","export * from '../constants-generated';\nexport * from './defaultTranslations';\n\nexport const DIALOG_CLOSE_TIMEOUT = 2000;\nexport const VOUCHER_CODE_INPUT_NAME = 'voucherCode';\n\nexport const PLACE_ORDER_FALLBACK_TIMEOUT = 10000;\n","/**\n * Restricts values of the user-action event metaHierarchy items on the Order summary component level.\n */\nexport enum MetaHierarchy {\n /** User clicked the login button in checkout summary section. */\n Login = 'checkout_login',\n\n /** User clicked the Bonus Points / Wallet button in checkout summary section. */\n SelectAccountBalance = 'checkout_account_balance_select',\n\n /** The specified voucher code was successfully applied. */\n VoucherApplied = 'checkout_voucher_apply',\n}\n","import { getUserActionEventDispatcher } from '@ori/checkout-utils';\n\nimport { APP_NAME } from '../constants';\nimport type { MetaHierarchy } from '../types';\n\ntype MetaHierarchyItem = MetaHierarchy | string;\n\n/**\n * Triggers user-action event for analytics.\n * @param metaHierarchy Array of predefined items describing current user action.\n */\nexport function dispatchUserActionEvent(metaHierarchy: MetaHierarchyItem[]) {\n const dispatchUserAction = getUserActionEventDispatcher(APP_NAME);\n dispatchUserAction(metaHierarchy);\n}\n","import * as AddVoucherEvent from '@ori-events/add-voucher';\nimport * as AddVoucherFailedEvent from '@ori-events/add-voucher-failed';\nimport * as BasketUpdatedEvent from '@ori-events/basket-updated';\n\nexport const addVoucher = async (voucherCode: string) =>\n new Promise((resolve, reject) => {\n function handleResolve() {\n window.removeEventListener(BasketUpdatedEvent.Name, handleResolve as EventListener);\n window.removeEventListener(AddVoucherFailedEvent.Name, handleReject as EventListener);\n resolve();\n }\n\n function handleReject(event: AddVoucherFailedEvent.Event) {\n window.removeEventListener(AddVoucherFailedEvent.Name, handleReject as EventListener);\n window.removeEventListener(BasketUpdatedEvent.Name, handleResolve as EventListener);\n reject(event.detail.localizedMessage);\n }\n\n window.addEventListener(BasketUpdatedEvent.Name, handleResolve as EventListener);\n window.addEventListener(AddVoucherFailedEvent.Name, handleReject as EventListener);\n\n const eventToTrigger = new CustomEvent(AddVoucherEvent.Name, {\n detail: { voucherCode },\n });\n\n window.dispatchEvent(eventToTrigger);\n });\n","import * as RequestClearShoppingCache from '@ori-events/request-clear-shopping-cache';\nimport * as RequestShoppingContextEvent from '@ori-events/request-shopping-context';\nimport { NOT_LOGGED_IN_USER_ID } from '@ori/auth';\nimport { getLoggers, setReferralInfo } from '@ori/checkout-utils';\nimport { useEnvironment } from '@ori/environment';\nimport type { AxiosError } from '@ori/global-api-client-react';\nimport {\n GlobalShoppingReferralDtoReferralType,\n createShoppingSessionReferral,\n useApiClient,\n} from '@ori/global-api-client-react';\nimport {\n getTenantApplicationsShareAndEarnPersonalCodeCustomer,\n useApiClient as useStaticApiClient,\n} from '@ori/static-api-client-react';\nimport type { FormEvent } from 'react';\nimport { useCallback, useRef, useState } from 'react';\n\nimport { APP_NAME, DIALOG_CLOSE_TIMEOUT, VOUCHER_CODE_INPUT_NAME } from '../../constants';\nimport { mainLogger } from '../../logger';\nimport { MetaHierarchy, type ReferralApiErrorData } from '../../types';\nimport { addVoucher, dispatchUserActionEvent, splitPromoCode } from '../../utils';\n\ninterface UseVoucherDialogProps {\n customerId: number;\n isVouchersDialogOpen: boolean;\n onClose: () => void;\n sessionId: string;\n}\n\ninterface UseVoucherDialog {\n handleDialogClose: () => void;\n handleSubmit: (event: FormEvent) => Promise;\n error: string | undefined;\n isVoucherApplied: boolean;\n}\n\nconst { logWarning } = getLoggers(APP_NAME);\n\nexport function useVoucherDialog({\n customerId,\n isVouchersDialogOpen,\n onClose,\n sessionId,\n}: UseVoucherDialogProps): UseVoucherDialog {\n const { tenant } = useEnvironment();\n const [error, setError] = useState();\n const [isVoucherApplied, setIsVoucherApplied] = useState(false);\n const timerRef = useRef();\n const apiClient = useApiClient();\n const staticApiClient = useStaticApiClient();\n\n const handleDialogClose = useCallback(() => {\n clearTimeout(timerRef.current);\n timerRef.current = undefined;\n onClose();\n setIsVoucherApplied(false);\n setError('');\n }, [onClose, setIsVoucherApplied]);\n\n const voucherApplied = useCallback(\n (code: string) => {\n setIsVoucherApplied(true);\n setError('');\n if (isVouchersDialogOpen) {\n timerRef.current = setTimeout(handleDialogClose, DIALOG_CLOSE_TIMEOUT);\n }\n // analytics - voucher was successfully applied\n // TODO: there should be 3 additional params - voucher or referral code, voucher promotion, voucher code\n dispatchUserActionEvent([MetaHierarchy.VoucherApplied, code]);\n },\n [handleDialogClose, isVouchersDialogOpen, setIsVoucherApplied],\n );\n\n const addVoucherCode = useCallback(\n async (voucherCode: string) => {\n try {\n await addVoucher(voucherCode);\n voucherApplied(voucherCode);\n\n return true;\n } catch (actionError: unknown) {\n if (actionError instanceof Error) {\n mainLogger.error(actionError, { action: 'addVoucherCode' });\n } else if (actionError !== '') {\n const newError = new Error(String(actionError));\n setError(String(actionError));\n mainLogger.error(newError, { action: 'addVoucherCode' });\n }\n\n return false;\n }\n },\n [voucherApplied],\n );\n\n const handleSubmit = useCallback(\n async (event: FormEvent) => {\n event.preventDefault();\n\n if (timerRef.current) {\n return;\n }\n const voucherCodeInput = event.currentTarget.elements.namedItem(VOUCHER_CODE_INPUT_NAME);\n if (!voucherCodeInput) {\n logWarning('Cannot find voucherCode input element in vouchers dialog form.');\n }\n const promoCode = (voucherCodeInput as HTMLInputElement).value;\n const { referral, voucher } = splitPromoCode(promoCode);\n\n if (customerId !== NOT_LOGGED_IN_USER_ID) {\n await addVoucherCode(voucher ?? promoCode);\n\n return;\n }\n\n try {\n const referralResponse = await getTenantApplicationsShareAndEarnPersonalCodeCustomer(\n staticApiClient,\n tenant,\n referral,\n );\n\n try {\n await createShoppingSessionReferral(apiClient, sessionId, {\n customerId: referralResponse.data.customerId,\n referralType: GlobalShoppingReferralDtoReferralType.Pbs,\n });\n setReferralInfo(tenant, referral);\n\n if (voucher) {\n await addVoucher(voucher);\n }\n\n voucherApplied(promoCode);\n const clearCache = new CustomEvent(RequestClearShoppingCache.Name);\n window.dispatchEvent(clearCache);\n // setTimeout is set so the shopping context is requested after caches are cleared\n setTimeout(() => {\n const eventToTrigger = new CustomEvent(RequestShoppingContextEvent.Name);\n window.dispatchEvent(eventToTrigger);\n }, DIALOG_CLOSE_TIMEOUT);\n } catch (postReferralError: unknown) {\n const apiError = postReferralError as AxiosError;\n if (apiError.response?.data.Message) {\n setError(apiError.response.data.Message);\n }\n\n if (postReferralError instanceof Error) {\n mainLogger.error(postReferralError, { action: 'handleSubmit' });\n } else if (postReferralError !== '') {\n const newError = new Error(String(postReferralError));\n setError(String(postReferralError));\n mainLogger.error(newError, { action: 'handleSubmit' });\n }\n }\n } catch (referralError) {\n const isReferralVoucherAdded = await addVoucherCode(referral);\n\n if (isReferralVoucherAdded && voucher) {\n await addVoucherCode(voucher);\n }\n }\n },\n [addVoucherCode, apiClient, customerId, sessionId, staticApiClient, tenant, voucherApplied],\n );\n\n return {\n handleDialogClose,\n handleSubmit,\n error,\n isVoucherApplied,\n };\n}\n","import { zodResolver } from '@hookform/resolvers/zod';\nimport { Dialog } from '@ori-ui/components';\nimport type { FC } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { z } from 'zod';\n\nimport { useTranslations } from '../../hooks';\nimport { VoucherFormContent } from '../VoucherFormContent/VoucherFormContent';\nimport { VouchersForm } from './styles';\nimport { useVoucherDialog } from './useVoucherDialog';\n\nexport interface VouchersDialogProps {\n customerId: number;\n isVouchersDialogOpen: boolean;\n onClose: () => void;\n sessionId: string;\n}\n\nexport type VoucherFormProps = {\n voucherCode: string;\n};\n\nexport const VouchersDialog: FC = ({ customerId, isVouchersDialogOpen, onClose, sessionId }) => {\n const { formatMessage } = useTranslations();\n const { handleDialogClose, handleSubmit, error, isVoucherApplied } = useVoucherDialog({\n customerId,\n isVouchersDialogOpen,\n onClose,\n sessionId,\n });\n\n const voucherValidationSchema = z.object({\n voucherCode: z\n .string()\n .min(1, formatMessage('voucherCodeIsRequired'))\n .max(50, formatMessage('voucherCodeIsTooLong')),\n });\n\n const form = useForm({\n mode: 'onChange',\n defaultValues: {\n voucherCode: '',\n },\n resolver: zodResolver(voucherValidationSchema),\n });\n\n return (\n \n \n \n \n \n \n \n );\n};\n","export type VoucherCodes = {\n referral: string;\n voucher?: string;\n};\n\nexport const splitPromoCode = (promoCode: string): VoucherCodes => {\n const parts = promoCode.split('-');\n\n if (parts.length === 3 && parts[0]?.length === 2) {\n return {\n referral: `${parts[0]}-${parts[1]}`,\n voucher: parts[2],\n };\n }\n\n return {\n referral: promoCode,\n voucher: undefined,\n };\n};\n","import { ArrowRightThin } from '@ori-ui/icons';\nimport { useShoppingContext } from '@ori/shopping-context';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\n\nimport { useTranslations } from '../../hooks';\nimport { TestId } from '../../types';\nimport { AccountBalanceDialog } from '../AccountBalanceDialog';\nimport { VouchersDialog } from '../VouchersDialog';\nimport { Root, AdditionalItem, Separator, AccountBalanceItem, AccountBalanceTitle } from './styles';\nimport { useAdditionalInfo } from './useAdditionalInfo';\n\ninterface AdditionalInfoProps {\n customerId: number;\n sessionId: string;\n}\n\nexport const AdditionalInfo: FC = ({ customerId, sessionId }) => {\n const { getTestId } = useTestId();\n const { formatMessage } = useTranslations();\n const {\n shoppingContext: {\n isAnonymous,\n shoppingBag: {\n balanceBefore: { credit = '', discount = '', groupBp = '', personalBp = '' } = {},\n isAccountBalanceVisible,\n } = {},\n showBp,\n } = {},\n } = useShoppingContext();\n const {\n isVouchersDialogOpen,\n isBalanceDialogOpen,\n onAccountBalanceClick,\n toggleVouchersDialog,\n toggleBalanceDialog,\n } = useAdditionalInfo();\n\n const isBpVisible = Boolean(showBp && (personalBp || groupBp));\n const isWalletVisible = Boolean(isAccountBalanceVisible && discount);\n const isCreditAvailable = Boolean(credit);\n const isAccountBalanceItemVisible = !isAnonymous && (isCreditAvailable || isBpVisible || isWalletVisible);\n\n return (\n <>\n \n \n {formatMessage('addVoucher')}\n \n \n {isAccountBalanceItemVisible ? (\n <>\n \n \n \n {isCreditAvailable ? {formatMessage('credit')} : null}\n {isBpVisible ? {formatMessage('bonusPoints')} : null}\n {isWalletVisible ? {formatMessage('wallet')} : null}\n \n \n \n \n ) : null}\n \n \n \n \n );\n};\n","import { useCallback, useState } from 'react';\n\nimport { MetaHierarchy } from '../../types';\nimport { dispatchUserActionEvent } from '../../utils';\n\ninterface UseAdditionalInfo {\n isVouchersDialogOpen: boolean;\n isBalanceDialogOpen: boolean;\n toggleVouchersDialog: () => void;\n toggleBalanceDialog: () => void;\n onAccountBalanceClick: () => void;\n}\n\nexport function useAdditionalInfo(): UseAdditionalInfo {\n const [isVouchersDialogOpen, setIsVouchersDialogOpen] = useState(false);\n const [isBalanceDialogOpen, setIsBalanceDialogOpen] = useState(false);\n\n const toggleVouchersDialog = useCallback(() => {\n setIsVouchersDialogOpen((prevState) => !prevState);\n }, [setIsVouchersDialogOpen]);\n\n const toggleBalanceDialog = useCallback(() => {\n setIsBalanceDialogOpen((prevState) => !prevState);\n }, [setIsBalanceDialogOpen]);\n\n const onAccountBalanceClick = useCallback(() => {\n toggleBalanceDialog();\n // analytics\n dispatchUserActionEvent([MetaHierarchy.SelectAccountBalance]);\n }, [toggleBalanceDialog]);\n\n return {\n isVouchersDialogOpen,\n isBalanceDialogOpen,\n toggleVouchersDialog,\n toggleBalanceDialog,\n onAccountBalanceClick,\n };\n}\n","import { styled, Typography } from '@ori-ui/mui';\n\nexport const Root = styled('div')(({ theme }) => ({\n paddingTop: theme.spacing(2),\n}));\n\nexport const Earned = styled(Typography)(({ theme }) => ({\n color: theme.palette.primary.dark,\n fontWeight: 'bold',\n}));\n","import { Typography } from '@ori-ui/mui';\nimport { FormattedMessage } from '@ori/i18n';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\n\nimport { useTranslations } from '../../hooks';\nimport { TestId } from '../../types';\nimport { Line } from '../Summary/styles';\nimport { Earned, Root } from './styles';\n\ninterface CashbackAndBonusProps {\n cashbackEarned: string;\n showBp: boolean;\n totalBp: string;\n}\n\nexport const CashbackAndBonus: FC = ({ cashbackEarned, showBp, totalBp }) => {\n const { getTestId } = useTestId();\n const { formatMessage } = useTranslations();\n\n return (\n \n {cashbackEarned ? (\n \n {formatMessage('toOriflameWallet')}\n +{cashbackEarned}\n \n ) : null}\n {showBp ? (\n \n {formatMessage('bonusPoints')}\n \n +\n \n \n \n ) : null}\n \n );\n};\n","export enum OrderState {\n None,\n Pending,\n Failed,\n Succeeded,\n}\n","import * as OpenLogin from '@ori-events/open-login';\n\nexport const openLogin = () => {\n window.dispatchEvent(new CustomEvent(OpenLogin.Name));\n};\n","/* istanbul ignore file */\n\n/**\n * DO NOT EDIT!\n * This file was autogenerated by npm script `localizations-codegen`.\n * Changes may cause incorrect behavior and will be lost when the file is regenerated.\n *\n * Run `npx localizations-codegen` to regenerate.\n */\nimport { FormattedMessage as NotTypedFormattedMessage, type FormattedMessageProps } from '@ori/i18n';\n\nimport type { DefaultTranslations } from '../constants/defaultTranslations';\n\n/**\n * Renders a formatted internationalized message using the provided translation data.\n *\n * @returns The FormattedMessage typed with keys within the specified namespace.\n */\nexport const FormattedMessage = (props: FormattedMessageProps) => (\n {...props} />\n);\n","import { alpha, Backdrop, CircularProgress, styled, Typography } from '@ori-ui/mui';\n\nexport const WhiteBackdrop = styled(Backdrop)(({ theme }) => ({\n background: alpha(theme.palette.common.white, 0.9),\n zIndex: theme.zIndex.drawer + 1,\n}));\n\nexport const ContentWrapper = styled('div')(({ theme }) => ({\n position: 'absolute',\n top: 'calc(50% - 50px)',\n left: 0,\n transform: 'translateY(-50%)',\n textAlign: 'center',\n width: `calc(100% - ${theme.spacing(6)})`,\n padding: theme.spacing(0, 3),\n zIndex: theme.zIndex.drawer + 1,\n\n [theme.breakpoints.up('sm')]: {\n width: `calc(100% - ${theme.spacing(12)})`,\n padding: theme.spacing(0, 6),\n },\n}));\n\nexport const LoadingIcon = styled(CircularProgress)({\n width: 80,\n height: 80,\n});\n\nexport const LoadingTitle = styled('div')(({ theme }) => ({\n margin: theme.spacing(6, 0, 3),\n minHeight: 54,\n width: '100%',\n position: 'relative',\n\n [theme.breakpoints.up('sm')]: {\n minHeight: 62,\n },\n}));\n\nexport const TitleMessage = styled(Typography)({\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n});\n","import { Modal } from '@ori-ui/components';\nimport { Fade, Typography } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\n\nimport { useTranslations } from '../../hooks';\nimport { TestId } from '../../types';\nimport { ContentWrapper, LoadingIcon, LoadingTitle, WhiteBackdrop, TitleMessage } from './styles';\n\ninterface LoadingScreenProps {\n isFallbackRunning: boolean;\n shouldShowLoadingScreen: boolean;\n}\n\nexport const LoadingScreen: FC = ({ isFallbackRunning, shouldShowLoadingScreen }) => {\n const { formatMessage } = useTranslations();\n const { getTestIdProps } = useTestId();\n\n return (\n \n \n \n \n \n {formatMessage('pleaseWaitAsItsTakingLongerThanExpected')}\n \n \n {formatMessage('weAreProcessingYourOrder')}\n \n \n {formatMessage('thisMayTakeAMoment')}\n \n \n );\n};\n","import { ErrorCircle, InfoCircle } from '@ori-ui/icons';\nimport { Button, styled, Typography } from '@ori-ui/mui';\n\nexport const ContinueButton = styled(Button)(({ theme }) => ({\n width: '100%',\n marginTop: theme.spacing(3),\n\n [theme.breakpoints.down('lg')]: {\n width: 300,\n },\n}));\n\nexport const OkButton = styled(Button)(({ theme }) => ({\n width: '100%',\n marginTop: theme.spacing(6),\n}));\n\nexport const ErrorIcon = styled(ErrorCircle)({\n width: 80,\n height: 80,\n});\n\nexport const InfoIcon = styled(InfoCircle)({\n width: 80,\n height: 80,\n});\n\nexport const ErrorMessage = styled(Typography)(({ theme }) => ({\n maxWidth: 330,\n margin: theme.spacing(3, 0),\n}));\n","/* istanbul ignore file */\n/**\n * DO NOT EDIT!\n * This file was autogenerated by npm script `localizations-codegen`.\n * Changes may cause incorrect behavior and will be lost when the file is regenerated.\n *\n * Run `npx localizations-codegen` to regenerate.\n */\n\nexport enum TranslationKey {\n accountBalance = 'accountBalance',\n add = 'add',\n addCodeHere = 'addCodeHere',\n addVoucher = 'addVoucher',\n applied = 'applied',\n atLeastOneProductMustBeOrdered = 'atLeastOneProductMustBeOrdered',\n atpIsDepletedByOtherProcess = 'atpIsDepletedByOtherProcess',\n availableToUseNow = 'availableToUseNow',\n bonusPoints = 'bonusPoints',\n bonusPointsFromPlacedOrdersInCampaign = 'bonusPointsFromPlacedOrdersInCampaign',\n bp = 'bp',\n bpCount = 'bpCount',\n byClickingFinaliseOrder = 'byClickingFinaliseOrder',\n cannotOrderSubscriptionBecauseYourDeliveryIsNotOriflameCertifiedOffice = 'cannotOrderSubscriptionBecauseYourDeliveryIsNotOriflameCertifiedOffice',\n cannotOrderSubscriptionBecauseYourLeaderIsNotAuthorized = 'cannotOrderSubscriptionBecauseYourLeaderIsNotAuthorized',\n continue = 'continue',\n credibilityCheckFailed = 'credibilityCheckFailed',\n credit = 'credit',\n creditIsNotAllowedForCustomersOrder = 'creditIsNotAllowedForCustomersOrder',\n currentActionIsDisabledDuringMaintenance = 'currentActionIsDisabledDuringMaintenance',\n deliveryAddressIsNotAllowedForACustomer = 'deliveryAddressIsNotAllowedForACustomer',\n deliveryAddressIsRequired = 'deliveryAddressIsRequired',\n deliveryAddressOfACustomerIsNotFound = 'deliveryAddressOfACustomerIsNotFound',\n deliveryChannelIsNotAllowedForACustomer = 'deliveryChannelIsNotAllowedForACustomer',\n discount = 'discount',\n endConsumerOrderIsAlreadyDroppedOnDifferentOrder = 'endConsumerOrderIsAlreadyDroppedOnDifferentOrder',\n errorCode = 'errorCode',\n finaliseOrder = 'finaliseOrder',\n financeAccountWasAlreadyConsumed = 'financeAccountWasAlreadyConsumed',\n group = 'group',\n homeDelivery = 'homeDelivery',\n homeDeliveryAddressDoesntMatchZipTree = 'homeDeliveryAddressDoesntMatchZipTree',\n insufficientPrepaymentForPharmacyOrdering = 'insufficientPrepaymentForPharmacyOrdering',\n invalidShoppingOperation = 'invalidShoppingOperation',\n items = 'items',\n logIn = 'logIn',\n meanwhileHaveBeenChangeCataloguesOrRules = 'meanwhileHaveBeenChangeCataloguesOrRules',\n meanwhileHaveBeenPlacedOtherOrder = 'meanwhileHaveBeenPlacedOtherOrder',\n ok = 'ok',\n orderSummary = 'orderSummary',\n paidWithOriflameWallet = 'paidWithOriflameWallet',\n paymentFee = 'paymentFee',\n paymentMethodIsNotAllowed = 'paymentMethodIsNotAllowed',\n personal = 'personal',\n pickUpPointDelivery = 'pickUpPointDelivery',\n placingOrderForTestingShoppingSessionIsNotAllowed = 'placingOrderForTestingShoppingSessionIsNotAllowed',\n placingOrderWithoutFinishedRegistrationIsNotAllowed = 'placingOrderWithoutFinishedRegistrationIsNotAllowed',\n pleaseWaitAsItsTakingLongerThanExpected = 'pleaseWaitAsItsTakingLongerThanExpected',\n prepaid = 'prepaid',\n productDimensionCanNotFitToTheShoppingBox = 'productDimensionCanNotFitToTheShoppingBox',\n productWeightIsOverSmartboxLimit = 'productWeightIsOverSmartboxLimit',\n registerToContinue = 'registerToContinue',\n registrationFee = 'registrationFee',\n renewalFee = 'renewalFee',\n servicesAlreadyDroppedOnDifferentOrder = 'servicesAlreadyDroppedOnDifferentOrder',\n subtotal = 'subtotal',\n thisMayTakeAMoment = 'thisMayTakeAMoment',\n ticketQuantityIsDepletedByOtherProcess = 'ticketQuantityIsDepletedByOtherProcess',\n toOrderThisSubscriptionYouNeed = 'toOrderThisSubscriptionYouNeed',\n toOriflameWallet = 'toOriflameWallet',\n toPay = 'toPay',\n unableToContinue = 'unableToContinue',\n unauthorizedAccess = 'unauthorizedAccess',\n underOrderAmountLimit = 'underOrderAmountLimit',\n voucherCode = 'voucherCode',\n voucherCodeIsRequired = 'voucherCodeIsRequired',\n voucherCodeIsTooLong = 'voucherCodeIsTooLong',\n voucherIsDepletedByOtherProcess = 'voucherIsDepletedByOtherProcess',\n wallet = 'wallet',\n walletIsAutoAppliedAndCanCoverUpToXOfYourOrder = 'walletIsAutoAppliedAndCanCoverUpToXOfYourOrder',\n weAreProcessingYourOrder = 'weAreProcessingYourOrder',\n yourOrderIsSaved = 'yourOrderIsSaved',\n yourOrderIsSavedPaymentRedirect = 'yourOrderIsSavedPaymentRedirect',\n}\n","import { TranslationKey } from '../models/TranslationKey';\n\nexport enum ErrorCode {\n deliveryChannelIsNotAllowedForACustomer = '200',\n deliveryAddressIsRequired = '201',\n deliveryAddressOfACustomerIsNotFound = '202',\n deliveryAddressIsNotAllowedForACustomer = '203',\n homeDeliveryAddressDoesntMatchZipTree = '204',\n productDimensionCanNotFitToTheShoppingBox = '205',\n productWeightIsOverSmartboxLimit = '206',\n paymentMethodIsNotAllowed = '210',\n creditIsNotAllowedForCustomersOrder = '211',\n credibilityCheckFailed = '212',\n insufficientPrepaymentForPharmacyOrdering = '213',\n cannotOrderSubscriptionBecauseYourLeaderIsNotAuthorized = '220',\n cannotOrderSubscriptionBecauseYourDeliveryIsNotOriflameCertifiedOffice = '221',\n toOrderThisSubscriptionYouNeed = '222',\n placingOrderForTestingShoppingSessionIsNotAllowed = '223',\n placingOrderWithoutFinishedRegistrationIsNotAllowed = '224',\n invalidShoppingOperation = '230',\n meanwhileHaveBeenPlacedOtherOrder = '231',\n meanwhileHaveBeenChangeCataloguesOrRules = '232',\n atpIsDepletedByOtherProcess = '233',\n ticketQuantityIsDepletedByOtherProcess = '234',\n voucherIsDepletedByOtherProcess = '235',\n endConsumerOrderIsAlreadyDroppedOnDifferentOrder = '236',\n servicesAlreadyDroppedOnDifferentOrder = '237',\n financeAccountWasAlreadyConsumed = '238',\n atLeastOneProductMustBeOrdered = '240',\n underOrderAmountLimit = '241',\n unauthorizedAccess = '299',\n currentActionIsDisabledDuringMaintenance = '322',\n}\n\nexport const ErrorCodeTranslationMap: Record = {\n [ErrorCode.deliveryChannelIsNotAllowedForACustomer]: TranslationKey.deliveryChannelIsNotAllowedForACustomer,\n [ErrorCode.deliveryAddressIsRequired]: TranslationKey.deliveryAddressIsRequired,\n [ErrorCode.deliveryAddressOfACustomerIsNotFound]: TranslationKey.deliveryAddressOfACustomerIsNotFound,\n [ErrorCode.deliveryAddressIsNotAllowedForACustomer]: TranslationKey.deliveryAddressIsNotAllowedForACustomer,\n [ErrorCode.homeDeliveryAddressDoesntMatchZipTree]: TranslationKey.homeDeliveryAddressDoesntMatchZipTree,\n [ErrorCode.productDimensionCanNotFitToTheShoppingBox]: TranslationKey.productDimensionCanNotFitToTheShoppingBox,\n [ErrorCode.productWeightIsOverSmartboxLimit]: TranslationKey.productWeightIsOverSmartboxLimit,\n [ErrorCode.paymentMethodIsNotAllowed]: TranslationKey.paymentMethodIsNotAllowed,\n [ErrorCode.creditIsNotAllowedForCustomersOrder]: TranslationKey.creditIsNotAllowedForCustomersOrder,\n [ErrorCode.credibilityCheckFailed]: TranslationKey.credibilityCheckFailed,\n [ErrorCode.insufficientPrepaymentForPharmacyOrdering]: TranslationKey.insufficientPrepaymentForPharmacyOrdering,\n [ErrorCode.cannotOrderSubscriptionBecauseYourLeaderIsNotAuthorized]:\n TranslationKey.cannotOrderSubscriptionBecauseYourLeaderIsNotAuthorized,\n [ErrorCode.cannotOrderSubscriptionBecauseYourDeliveryIsNotOriflameCertifiedOffice]:\n TranslationKey.cannotOrderSubscriptionBecauseYourDeliveryIsNotOriflameCertifiedOffice,\n [ErrorCode.toOrderThisSubscriptionYouNeed]: TranslationKey.toOrderThisSubscriptionYouNeed,\n [ErrorCode.placingOrderForTestingShoppingSessionIsNotAllowed]:\n TranslationKey.placingOrderForTestingShoppingSessionIsNotAllowed,\n [ErrorCode.placingOrderWithoutFinishedRegistrationIsNotAllowed]:\n TranslationKey.placingOrderWithoutFinishedRegistrationIsNotAllowed,\n [ErrorCode.invalidShoppingOperation]: TranslationKey.invalidShoppingOperation,\n [ErrorCode.meanwhileHaveBeenPlacedOtherOrder]: TranslationKey.meanwhileHaveBeenPlacedOtherOrder,\n [ErrorCode.meanwhileHaveBeenChangeCataloguesOrRules]: TranslationKey.meanwhileHaveBeenChangeCataloguesOrRules,\n [ErrorCode.atpIsDepletedByOtherProcess]: TranslationKey.atpIsDepletedByOtherProcess,\n [ErrorCode.ticketQuantityIsDepletedByOtherProcess]: TranslationKey.ticketQuantityIsDepletedByOtherProcess,\n [ErrorCode.voucherIsDepletedByOtherProcess]: TranslationKey.voucherIsDepletedByOtherProcess,\n [ErrorCode.endConsumerOrderIsAlreadyDroppedOnDifferentOrder]:\n TranslationKey.endConsumerOrderIsAlreadyDroppedOnDifferentOrder,\n [ErrorCode.servicesAlreadyDroppedOnDifferentOrder]: TranslationKey.servicesAlreadyDroppedOnDifferentOrder,\n [ErrorCode.financeAccountWasAlreadyConsumed]: TranslationKey.financeAccountWasAlreadyConsumed,\n [ErrorCode.atLeastOneProductMustBeOrdered]: TranslationKey.atLeastOneProductMustBeOrdered,\n [ErrorCode.underOrderAmountLimit]: TranslationKey.underOrderAmountLimit,\n [ErrorCode.unauthorizedAccess]: TranslationKey.unauthorizedAccess,\n [ErrorCode.currentActionIsDisabledDuringMaintenance]: TranslationKey.currentActionIsDisabledDuringMaintenance,\n};\n\nexport interface ApiErrorData {\n Errors: Array<{\n Code: string;\n }>;\n}\n\nexport interface ReferralApiErrorData {\n Message: string;\n}\n","import type { UnitDataCollectionOffer } from '@ori-events/basket-updated';\nimport * as RequestClearShoppingCache from '@ori-events/request-clear-shopping-cache';\nimport * as RequestShoppingContextEvent from '@ori-events/request-shopping-context';\nimport { errorNotificationTimeOut, showErrorNotification } from '@ori/checkout-utils';\nimport type { AxiosError } from '@ori/global-api-client-react';\nimport { useApiClient, createShoppingSessionOrder } from '@ori/global-api-client-react';\nimport { useSessionId, useShoppingContext } from '@ori/shopping-context';\nimport type { Dispatch, SetStateAction } from 'react';\nimport { useState } from 'react';\n\nimport { PLACE_ORDER_FALLBACK_TIMEOUT } from '../../constants';\nimport { useFinaliseOrderFallback } from '../../hooks';\nimport type { TranslationKey } from '../../models/TranslationKey';\nimport type { ApiErrorData, ErrorCode } from '../../types';\nimport { ErrorCodeTranslationMap, OrderState, ShoppingStep } from '../../types';\nimport { clearShoppingContextCache } from '../../utils';\n\ninterface UseContinue {\n isOnlinePaymentMethod?: boolean;\n isOrderReviewSkipped?: boolean;\n selectedStep: ShoppingStep;\n setCurrentStep: (newStep: ShoppingStep) => void;\n setIsRegistrationVisible: Dispatch>;\n}\n\nexport function useContinue({\n isOnlinePaymentMethod,\n isOrderReviewSkipped,\n selectedStep,\n setIsRegistrationVisible,\n setCurrentStep,\n}: UseContinue) {\n const { shoppingContext: { unitDataCollection = [] } = {} } = useShoppingContext();\n const sessionId = useSessionId();\n const offers = unitDataCollection.filter((x) => x.unitName === 'Offers') as UnitDataCollectionOffer[];\n const [orderState, setOrderState] = useState(OrderState.None);\n const [errorCode, setErrorCode] = useState(undefined);\n const [dialogMessage, setDialogMessage] = useState(undefined);\n const [isFallbackRunning, setIsFallbackRunning] = useState(false);\n const apiClient = useApiClient();\n\n const clearCacheEvent = new CustomEvent(RequestClearShoppingCache.Name);\n const shoppingContextRequestEvent = new CustomEvent(RequestShoppingContextEvent.Name);\n\n const { timer } = useFinaliseOrderFallback({\n isFallbackRunning,\n setIsFallbackRunning,\n setOrderState,\n isOrderReviewSkipped,\n });\n\n function handleClose() {\n setErrorCode(undefined);\n setDialogMessage(undefined);\n window.dispatchEvent(clearCacheEvent);\n setTimeout(() => {\n window.dispatchEvent(shoppingContextRequestEvent);\n });\n }\n\n function onContinueClick() {\n if (selectedStep === ShoppingStep.Basket && offers.length) {\n setCurrentStep(ShoppingStep.Offers);\n } else {\n setCurrentStep(ShoppingStep.Checkout);\n }\n }\n\n function onRegisterClick() {\n setIsRegistrationVisible(true);\n }\n\n async function onFinaliseOrderClick() {\n setOrderState(OrderState.Pending);\n try {\n const result = await createShoppingSessionOrder(apiClient, sessionId);\n clearShoppingContextCache();\n setOrderState(OrderState.Succeeded);\n const onlinePaymentId = result.data.onlinePaymentId ?? 0;\n if (isOrderReviewSkipped && isOnlinePaymentMethod) {\n // go to payment process page with generated form submited on window onload for redirecting to payment provider with correct data\n const paymentProcessUrl = `/finance/payment/ProcessPayment?onlinePaymentId=${onlinePaymentId}&clientApp=1`;\n window.location.replace(paymentProcessUrl);\n } else {\n // go to confirmation page\n const confirmationPageUrl = `/shopping/order-confirm?orderId=${result.data.orderId}&onlinePaymentId=${onlinePaymentId}`;\n window.location.replace(confirmationPageUrl);\n }\n } catch (error) {\n const apiError = error as AxiosError;\n const apiErrorCode = apiError.response?.data.Errors[0]?.Code ?? undefined;\n if (apiError.code === 'ERR_NETWORK') {\n timer.current = PLACE_ORDER_FALLBACK_TIMEOUT;\n setIsFallbackRunning(true);\n } else if (apiErrorCode) {\n setErrorCode(apiErrorCode);\n setDialogMessage(ErrorCodeTranslationMap[apiErrorCode as ErrorCode]);\n setOrderState(OrderState.Failed);\n } else {\n showErrorNotification('genericError');\n setOrderState(OrderState.Failed);\n window.dispatchEvent(clearCacheEvent);\n setTimeout(() => {\n window.dispatchEvent(shoppingContextRequestEvent);\n }, errorNotificationTimeOut);\n }\n }\n }\n\n return {\n errorCode,\n dialogMessage,\n handleClose,\n isFallbackRunning,\n onContinueClick,\n onFinaliseOrderClick,\n onRegisterClick,\n orderState,\n };\n}\n","import { NOT_LOGGED_IN_USER_ID } from '@ori/auth';\nimport { showErrorNotification } from '@ori/checkout-utils';\nimport type { AxiosError } from '@ori/global-api-client-react';\nimport { getOrders, getShoppingSession, useApiClient } from '@ori/global-api-client-react';\nimport { useSessionId, useShoppingContext } from '@ori/shopping-context';\nimport type { SetStateAction, Dispatch } from 'react';\nimport { useEffect, useRef, useCallback } from 'react';\n\nimport { PLACE_ORDER_FALLBACK_TIMEOUT } from '../constants';\nimport { logDebug } from '../logger';\nimport { OrderState } from '../types';\n\ninterface UseFinaliseOrderFallback {\n isFallbackRunning: boolean;\n setIsFallbackRunning: Dispatch>;\n setOrderState: Dispatch>;\n isOrderReviewSkipped?: boolean;\n}\n\nexport const useFinaliseOrderFallback = ({\n isFallbackRunning,\n setIsFallbackRunning,\n setOrderState,\n isOrderReviewSkipped,\n}: UseFinaliseOrderFallback) => {\n const sessionId = useSessionId();\n const { shoppingContext: { customerId = NOT_LOGGED_IN_USER_ID } = {} } = useShoppingContext();\n const shouldRequestSession = useRef(true);\n const timer = useRef(PLACE_ORDER_FALLBACK_TIMEOUT);\n const timerInterval = useRef();\n const apiClient = useApiClient();\n\n const timerFallback = useCallback(() => {\n // (5a) Interval is cleared to avoid unnecessary requests\n clearInterval(timerInterval.current);\n // (6a) Timer is reset to original value for possible future fallback usage\n timer.current = PLACE_ORDER_FALLBACK_TIMEOUT;\n // (7a) Generic error is displayed, order state is set to failed to enable finalize order button and fallback is stopped\n showErrorNotification('genericError');\n setOrderState(OrderState.Failed);\n setIsFallbackRunning(false);\n }, [setIsFallbackRunning, setOrderState]);\n\n const getSession = useCallback(async () => {\n try {\n logDebug('getShoppingSession requested with remaining timer:', timer.current);\n await getShoppingSession(apiClient, sessionId);\n // (3a) If shopping session exists, interval will continue with reduced timer\n } catch (error) {\n const apiError = error as AxiosError;\n logDebug('error catcher');\n // (3b) If shopping session doesn't exist, it means order has been placer already and we can continue as if original place order request would pass\n if (apiError.status === 404) {\n // (4b) Interval is cleared, because it's no longer needed\n clearInterval(timerInterval.current);\n // (5b) Order data are fetched based on original sessionId\n const {\n data: {\n collection: [order],\n },\n } = await getOrders(apiClient, { customerId, top: 1, searchPhrase: sessionId });\n // Any new requests are avoided by shouldRequestSession ref since session doesn't exist already\n shouldRequestSession.current = false;\n // (6b) Redirect is applied based on order data and configuration\n if (isOrderReviewSkipped) {\n // go to payment process page with generated form submited on window onload for redirecting to payment provider with correct data\n logDebug('redirect to payment process');\n const paymentProcessUrl = `/finance/payment/ProcessPayment?onlinePaymentId=${order?.onlinePaymentId}`;\n window.location.replace(paymentProcessUrl);\n } else {\n // go to confirmation page\n logDebug('redirect to confirmation page');\n const confirmationPageUrl = `/shopping/order-confirm?orderId=${order?.orderId}&onlinePaymentId=${order?.onlinePaymentId}`;\n window.location.replace(confirmationPageUrl);\n }\n }\n }\n }, [apiClient, customerId, isOrderReviewSkipped, sessionId]);\n\n const timerFunction = useCallback(() => {\n if (timer.current > 0) {\n // (2) Check if session exists and reduce timer by 1000ms\n void getSession();\n timer.current -= 1000;\n logDebug('timer.current:', timer.current);\n }\n }, [getSession]);\n\n useEffect(() => {\n if (shouldRequestSession.current && timer.current > 0 && isFallbackRunning) {\n // (1) Start of the interval for timerFunction after gateway timed out during place order request\n timerInterval.current = setInterval(timerFunction, 1000);\n\n setTimeout(() => {\n // (4a) Session was active during whole interval, so fallback will be applied\n timerFallback();\n }, PLACE_ORDER_FALLBACK_TIMEOUT);\n }\n }, [getSession, isFallbackRunning, timerFallback, timerFunction]);\n\n return {\n timer,\n };\n};\n","import { SCHEDULED_CLEANUP_KEY } from '@ori/basket-provider-lib';\n\nimport { logDebug, logWarning } from '../logger';\n\nexport function clearShoppingContextCache() {\n if (typeof window !== 'object' || !window.localStorage) {\n logWarning(`localStorage is not supported. Can't set shopping context cache cleanup flag.`);\n\n return;\n }\n\n window.localStorage.setItem(SCHEDULED_CLEANUP_KEY, '1');\n logDebug('Scheduled shopping context cache cleanup for next page load.');\n}\n","import { FeedbackDialog } from '@ori-ui/components';\nimport { styled, Tooltip, Typography } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport { useCallback } from 'react';\nimport type { Dispatch, SetStateAction, FC } from 'react';\n\nimport { useTranslations } from '../../hooks';\nimport { MetaHierarchy, OrderState, ShoppingStep, TestId } from '../../types';\nimport { dispatchUserActionEvent, openLogin } from '../../utils';\nimport { FormattedMessage } from '../FormattedMessage';\nimport { LoadingScreen } from '../LoadingScreen';\nimport { ContinueButton, ErrorIcon, ErrorMessage, InfoIcon, OkButton } from './styles';\nimport { useContinue } from './useContinue';\n\nconst ErrorMessageHolder = styled(Typography)(({ theme }) => ({\n color: theme.palette.grey[400],\n}));\n\ninterface ContinueProps {\n continueButtonTooltip: string | undefined;\n isAnonymous: boolean;\n isOnlinePaymentMethod?: boolean;\n isOrderReviewSkipped?: boolean;\n selectedStep: ShoppingStep;\n setCurrentStep: (newStep: ShoppingStep) => void;\n setIsRegistrationVisible: Dispatch>;\n}\n\nexport const Continue: FC = ({\n continueButtonTooltip,\n isAnonymous,\n isOnlinePaymentMethod,\n isOrderReviewSkipped,\n selectedStep,\n setCurrentStep,\n setIsRegistrationVisible,\n}) => {\n const { formatMessage } = useTranslations();\n const { getTestIdProps } = useTestId();\n const {\n errorCode,\n dialogMessage,\n handleClose,\n isFallbackRunning,\n onContinueClick,\n onFinaliseOrderClick,\n onRegisterClick,\n orderState,\n } = useContinue({\n isOnlinePaymentMethod,\n isOrderReviewSkipped,\n selectedStep,\n setIsRegistrationVisible,\n setCurrentStep,\n });\n\n const onLoginClick = useCallback(() => {\n openLogin();\n // analytics\n dispatchUserActionEvent([MetaHierarchy.Login]);\n }, []);\n\n if (isAnonymous) {\n return (\n <>\n \n {formatMessage('logIn')}\n \n \n {formatMessage('registerToContinue')}\n \n \n );\n }\n\n return (\n <>\n \n {dialogMessage === undefined ? null : (\n : }\n color={errorCode ? 'error' : 'info'}\n onClose={handleClose}\n >\n <>\n {errorCode ? (\n \n \n \n ) : null}\n \n \n \n {errorCode ? (\n <>\n \n : {errorCode}\n \n \n \n \n \n ) : null}\n \n \n )}\n \n
\n {selectedStep === ShoppingStep.Checkout ? (\n \n {formatMessage('finaliseOrder')}\n \n ) : (\n \n {formatMessage('continue')}\n \n )}\n
\n \n \n );\n};\n","import useTestId from '@ori/testid-generator';\nimport type { Dispatch, FC, SetStateAction } from 'react';\n\nimport { useTranslations } from '../../hooks';\nimport { TestId, type ShoppingStep } from '../../types';\nimport { Continue } from '../Continue';\nimport { Root, PayInfo } from './styles';\n\ninterface StickyPanelProps {\n isAnonymous: boolean;\n continueButtonTooltip: string | undefined;\n selectedStep: ShoppingStep;\n setCurrentStep: (newStep: ShoppingStep) => void;\n setIsRegistrationVisible: Dispatch>;\n toPay: string;\n}\n\nexport const StickyPanel: FC = ({\n continueButtonTooltip,\n isAnonymous,\n selectedStep,\n setCurrentStep,\n setIsRegistrationVisible,\n toPay,\n}) => {\n const { formatMessage } = useTranslations();\n const { getTestIdProps } = useTestId();\n\n return (\n \n \n {formatMessage('toPay')}: {toPay}\n \n \n \n );\n};\n","/* eslint-disable react/no-danger -- X */\nimport { Dialog } from '@ori-ui/components';\nimport { errorHandlingSwrOptions } from '@ori/checkout-utils';\nimport { useEnvironment } from '@ori/environment';\nimport { useGetTenantTermHtml } from '@ori/static-api-client-react';\nimport { useCallback, type FC } from 'react';\n\nimport { logDebug } from '../../logger';\n\nexport interface TermsAndConditionsDialogProps {\n isOpen: boolean;\n onClose: (termId?: string) => void;\n termId: string;\n}\n\nexport const TermsAndConditionsDialog: FC = ({ isOpen, onClose, termId }) => {\n const { tenant } = useEnvironment();\n const handleClose = useCallback(() => onClose(undefined), [onClose]);\n\n const swrOptions = {\n ...errorHandlingSwrOptions,\n enabled: true,\n onSuccess: () => logDebug('useGetTenantTermHtml() hook finished successfully.'),\n };\n\n const { data: term } = useGetTenantTermHtml(tenant, termId, {\n swr: swrOptions,\n });\n\n if (!term) {\n return null;\n }\n\n const { body } = term;\n\n return (\n \n {body ?
: undefined}\n \n );\n};\n","/* eslint-disable jsx-a11y/anchor-is-valid -- X */\nimport { Link } from '@ori-ui/mui';\nimport type { FC, PropsWithChildren } from 'react';\n\nexport interface TermsLinkProps {\n onClick?: () => void;\n}\n\nexport const TermsLink: FC> = ({ children, onClick }) => (\n theme.typography.pxToRem(12),\n lineHeight: 1.75,\n }}\n onClick={onClick}\n >\n {children}\n \n);\n","import { styled, Typography } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { FC, ReactNode } from 'react';\n\nimport { useTermsAndConditionsConsent } from '../../hooks';\nimport { type TermsAndConditionsConsentProps, TestId } from '../../types';\nimport { FormattedMessage } from '../FormattedMessage';\nimport { TermsAndConditionsDialog } from './TermsAndConditionsDialog';\nimport { TermsLink } from './TermsLink';\n\nconst Root = styled(Typography)(({ theme }) => ({\n marginTop: theme.spacing(4),\n textAlign: 'center',\n fontSize: theme.typography.pxToRem(12),\n lineHeight: 1.75,\n}));\n\nexport const TermsAndConditionsConsent: FC = (\n props: TermsAndConditionsConsentProps,\n) => {\n const { getTestIdProps } = useTestId();\n const {\n privacyPolicyTermId,\n termsAndConditionsDialogProps,\n termsAndConditionsTermId,\n togglePrivacyPolicyDialog,\n toggleTermsAndConditionsDialog,\n } = useTermsAndConditionsConsent(props);\n\n const termsAndConditions = (children: ReactNode) =>\n termsAndConditionsTermId ? (\n {children}\n ) : (\n {children}\n );\n\n const privacyPolicy = (children: ReactNode) =>\n privacyPolicyTermId ? {children} : null;\n\n return (\n <>\n \n \n \n {Boolean(termsAndConditionsTermId) || Boolean(privacyPolicyTermId) ? (\n \n ) : null}\n \n );\n};\n","import { errorHandlingSwrOptions } from '@ori/checkout-utils';\nimport { GlobalCustomersRequiredTermDtoType, useGetCustomerRequiredTerms } from '@ori/global-api-client-react';\nimport { useState, useCallback } from 'react';\n\nimport { logDebug } from '../logger';\nimport type { TermsAndConditionsConsentProps } from '../types';\n\nexport const useTermsAndConditionsConsent = (props: TermsAndConditionsConsentProps) => {\n const { customerId } = props;\n const [isTermsAndConditionsDialogOpen, setIsTermsAndConditionsDialogOpen] = useState(false);\n const [termId, setTermId] = useState('');\n\n logDebug('useTermsAndConditionsConsent() hook called.');\n\n const swrOptions = {\n ...errorHandlingSwrOptions,\n enabled: true,\n onSuccess: () => logDebug('useGetCustomerRequiredTerms() hook finished successfully.'),\n };\n\n const { data: requiredTerms } = useGetCustomerRequiredTerms(customerId, undefined, undefined, {\n swr: swrOptions,\n });\n\n const termsAndConditionsTermId = requiredTerms?.collection.find(\n (terms) => terms.type === GlobalCustomersRequiredTermDtoType.TermsAndConditions,\n )?.termId;\n\n const privacyPolicyTermId = requiredTerms?.collection.find(\n (terms) => terms.type === GlobalCustomersRequiredTermDtoType.PrivacyPolicy,\n )?.termId;\n\n const toggleDialog = useCallback((consentTermId?: string) => {\n if (consentTermId) {\n setTermId(consentTermId);\n }\n setIsTermsAndConditionsDialogOpen((prevState) => !prevState);\n }, []);\n\n const toggleTermsAndConditionsDialog = useCallback(() => {\n toggleDialog(termsAndConditionsTermId);\n }, [termsAndConditionsTermId, toggleDialog]);\n\n const togglePrivacyPolicyDialog = useCallback(() => {\n toggleDialog(privacyPolicyTermId);\n }, [privacyPolicyTermId, toggleDialog]);\n\n const termsAndConditionsDialogProps = {\n isOpen: isTermsAndConditionsDialogOpen,\n onClose: toggleDialog,\n termId,\n };\n\n return {\n privacyPolicyTermId,\n termsAndConditionsDialogProps,\n termsAndConditionsTermId,\n togglePrivacyPolicyDialog,\n toggleTermsAndConditionsDialog,\n };\n};\n","import type * as BasketUpdated from '@ori-events/basket-updated';\nimport * as RequestClearShoppingCache from '@ori-events/request-clear-shopping-cache';\nimport * as RequestShoppingContextEvent from '@ori-events/request-shopping-context';\nimport { removeReferralInfo, showErrorNotification } from '@ori/checkout-utils';\nimport { useCallback } from 'react';\n\nimport { mainLogger } from '../../logger';\nimport { TranslationKey } from '../../models/TranslationKey';\nimport type { ShoppingStep } from '../../types';\nimport { getOrderQuantity, removeVoucher } from '../../utils';\n\ntype UseSummary = {\n selectedStep: ShoppingStep;\n shoppingContext: BasketUpdated.Data;\n};\n\ninterface Fee {\n name: TranslationKey;\n value: string;\n}\n\nexport function useSummary({ shoppingContext }: UseSummary) {\n const {\n customerId,\n sessionId,\n shoppingBag: {\n addedItems = [],\n offers = [],\n paymentFee,\n registrationFee,\n renewalFee,\n shoppingBagItems = [],\n subscriptions = [],\n vouchers: shoppingBagVouchers = [],\n } = {},\n } = shoppingContext;\n\n const orderItemsQuantity = getOrderQuantity({ addedItems, offers, shoppingBagItems, subscriptions });\n\n const fees: Fee[] = [];\n\n if (renewalFee) {\n fees.push({ name: TranslationKey.renewalFee, value: renewalFee });\n }\n if (registrationFee) {\n fees.push({ name: TranslationKey.registrationFee, value: registrationFee });\n }\n if (paymentFee) {\n fees.push({ name: TranslationKey.paymentFee, value: paymentFee });\n }\n\n const vouchers = shoppingBagVouchers.map((voucher) => ({\n code: voucher.itemCode,\n name: voucher.itemDescription,\n value: voucher.discountAmount,\n }));\n\n const handleRemoveVoucher = useCallback(async (name: string) => {\n try {\n await removeVoucher(name);\n removeReferralInfo(name);\n const clearCache = new CustomEvent(RequestClearShoppingCache.Name);\n window.dispatchEvent(clearCache);\n // setTimeout is set so the shopping context is requested after caches are cleared\n setTimeout(() => {\n const eventToTrigger = new CustomEvent(RequestShoppingContextEvent.Name);\n window.dispatchEvent(eventToTrigger);\n });\n } catch (error: unknown) {\n if (error instanceof Error) {\n showErrorNotification('genericError');\n mainLogger.error(error, { action: 'handleRemoveVoucher' });\n }\n }\n }, []);\n\n const termsAndConditionsProps = {\n customerId,\n };\n\n const additionalInfoProps = {\n customerId,\n sessionId: sessionId ?? '',\n };\n\n return {\n additionalInfoProps,\n fees,\n handleRemoveVoucher,\n orderItemsQuantity,\n termsAndConditionsProps,\n vouchers,\n };\n}\n","import type { ShoppingBagItem, ShoppingBagOffer, ShoppingBagSubscriptions } from '@ori-events/basket-updated';\n\ninterface GetOrderQuantity {\n addedItems: ShoppingBagItem[];\n offers: ShoppingBagOffer[];\n shoppingBagItems: ShoppingBagItem[];\n subscriptions: ShoppingBagSubscriptions[];\n}\n\nexport function getOrderQuantity({ addedItems, offers, shoppingBagItems, subscriptions }: GetOrderQuantity) {\n return (\n addedItems.reduce((total, item) => total + (item.isAvailable ? item.requestedQuantity : 0), 0) +\n shoppingBagItems.reduce((total, item) => total + (item.isAvailable ? item.requestedQuantity : 0), 0) +\n subscriptions.reduce(\n (total, subscription) =>\n total +\n subscription.packages.reduce(\n (subTotal, subscriptionPackage) =>\n subTotal +\n subscriptionPackage.items.reduce(\n (itemTotal, subscriptionPackageItem) =>\n itemTotal + (subscriptionPackageItem.isAvailable ? subscriptionPackageItem.requestedQuantity : 0),\n 0,\n ),\n 0,\n ),\n 0,\n ) +\n offers.reduce(\n (total, offer) =>\n total +\n offer.items.reduce(\n (subTotal, offerItem) => subTotal + (offerItem.isAvailable ? offerItem.requestedQuantity : 0),\n 0,\n ),\n 0,\n )\n );\n}\n","import * as BasketUpdatedEvent from '@ori-events/basket-updated';\nimport * as RemoveVoucherEvent from '@ori-events/remove-voucher';\nimport * as RemoveVoucherFailedEvent from '@ori-events/remove-voucher-failed';\n\nexport const removeVoucher = async (voucherCode: string) =>\n new Promise((resolve, reject) => {\n function handleResolve() {\n window.removeEventListener(BasketUpdatedEvent.Name, handleResolve as EventListener);\n window.removeEventListener(RemoveVoucherFailedEvent.Name, handleReject as EventListener);\n resolve();\n }\n\n function handleReject(event: RemoveVoucherFailedEvent.Event) {\n window.removeEventListener(RemoveVoucherFailedEvent.Name, handleReject as EventListener);\n window.removeEventListener(BasketUpdatedEvent.Name, handleResolve as EventListener);\n reject(event.detail.localizedMessage);\n }\n\n window.addEventListener(BasketUpdatedEvent.Name, handleResolve as EventListener);\n window.addEventListener(RemoveVoucherFailedEvent.Name, handleReject as EventListener);\n\n const eventToTrigger = new CustomEvent(RemoveVoucherEvent.Name, {\n detail: { voucherCode },\n });\n\n window.dispatchEvent(eventToTrigger);\n });\n","/* eslint-disable react/jsx-no-bind -- x */\nimport type * as BasketUpdated from '@ori-events/basket-updated';\nimport { Typography } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport { type Dispatch, type FC, type SetStateAction } from 'react';\n\nimport { useTranslations } from '../../hooks';\nimport { ShoppingStep, TestId } from '../../types';\nimport { AdditionalInfo } from '../AdditionalInfo';\nimport { CashbackAndBonus } from '../CashbackAndBonus';\nimport { Continue } from '../Continue';\nimport { StickyPanel } from '../StickyPanel';\nimport { TermsAndConditionsConsent } from '../TermsAndConditionsConsent';\nimport {\n ContinueWrapper,\n Root,\n SummaryLine,\n SummaryTitle,\n SummaryWrapper,\n ToPayLine,\n TrashIcon,\n VoucherItem,\n} from './styles';\nimport { useSummary } from './useSummary';\n\ntype SummaryProps = {\n continueButtonTooltip: string | undefined;\n isOnlinePaymentMethod?: boolean;\n isOrderReviewSkipped: boolean;\n selectedStep: ShoppingStep;\n setCurrentStep: (newStep: ShoppingStep) => void;\n setIsRegistrationVisible: Dispatch>;\n shoppingContext: BasketUpdated.Data;\n};\n\nexport const Summary: FC = ({\n continueButtonTooltip,\n isOnlinePaymentMethod,\n isOrderReviewSkipped,\n selectedStep,\n setCurrentStep,\n setIsRegistrationVisible,\n shoppingContext,\n}) => {\n const { getTestIdProps } = useTestId();\n const { formatMessage } = useTranslations();\n const { additionalInfoProps, fees, handleRemoveVoucher, orderItemsQuantity, termsAndConditionsProps, vouchers } =\n useSummary({ selectedStep, shoppingContext });\n const { isAnonymous, shoppingBag, showBp } = shoppingContext;\n const isLastStep = selectedStep === ShoppingStep.Checkout;\n\n const ownerState = { isLastStep };\n\n return (\n \n \n \n {formatMessage('orderSummary')}\n \n \n \n {formatMessage('subtotal')} ({orderItemsQuantity} {formatMessage('items')})\n \n {shoppingBag.totalPriceWithoutFees}\n \n {fees.map(({ name, value }) => (\n \n {formatMessage(name)}\n {value}\n \n ))}\n \n \n \n {formatMessage(shoppingBag.isHomeDelivery ? 'homeDelivery' : 'pickUpPointDelivery')}\n {shoppingBag.deliveryDate ? ` (${shoppingBag.deliveryDate})` : null}\n \n \n {shoppingBag.deliveryFee}\n \n {shoppingBag.discounts.map(({ amount, description }) => (\n \n {description === '' ? formatMessage('discount') : description}\n {amount}\n \n ))}\n {shoppingBag.walletPayment ? (\n \n {formatMessage('paidWithOriflameWallet')}\n {shoppingBag.walletPayment}\n \n ) : null}\n {vouchers.map(({ code, name, value }) => (\n \n \n {name} handleRemoveVoucher(code)} />\n \n {value}\n \n ))}\n {shoppingBag.prepaid ? (\n \n {formatMessage('prepaid')}\n {shoppingBag.prepaid}\n \n ) : null}\n \n {formatMessage('toPay')}\n {shoppingBag.debt}\n \n {!isAnonymous && (shoppingBag.cashbackEarned || showBp) ? (\n \n ) : null}\n {isLastStep ? : null}\n \n \n \n \n {isLastStep ? null : (\n \n )}\n \n \n );\n};\n","import { TranslationsNamespaceProvider } from '@ori/i18n';\nimport { ErrorBoundary, LoggerProvider } from '@ori/logger';\nimport { useShoppingContext } from '@ori/shopping-context';\nimport useTestId from '@ori/testid-generator';\nimport type { Dispatch, FC, SetStateAction } from 'react';\n\nimport { Summary } from './components/Summary';\nimport { SummarySkeleton } from './components/skeleton';\nimport { APP_NAME, translationsNamespace } from './constants';\nimport { mainLogger } from './logger';\nimport type { ShoppingStep } from './types';\nimport { TestId } from './types';\n\ntype AppProps = {\n continueButtonTooltip: string | undefined;\n isOnlinePaymentMethod?: boolean;\n isOrderReviewSkipped: boolean;\n selectedStep: ShoppingStep;\n setCurrentStep: (newStep: ShoppingStep) => void;\n setIsRegistrationVisible: Dispatch>;\n};\n\nexport const App: FC = (props) => {\n const { getTestId } = useTestId();\n const { isLoading, isLoaded, shoppingContext } = useShoppingContext();\n\n return (\n \n \n \n {isLoading || !isLoaded || !shoppingContext ? (\n \n ) : (\n \n )}\n \n \n \n );\n};\n"],"names":["useTranslations","useTranslationsFromNamespace","ShoppingStep","BalanceContent","styled","theme","breakpoints","up","maxWidth","BalanceWrapper","borderBottom","palette","grey","paddingBottom","spacing","marginBottom","BalanceTitle","Typography","BalanceLine","display","justifyContent","width","BalanceItem","fontWeight","BalanceDescription","backgroundColor","borderRadius","padding","marginTop","fontSize","typography","caption","APP_NAME","PACKAGE_NAME","TEAM_NAME","EMOTION_CACHE_KEY","APP_ROOT_ELEMENT_ID","mainLogger","Logger","teamName","logDebug","getDebugLogger","logWarning","getWarningLogger","useAccountBalanceDialog","formatMessage","culture","timeZone","useCulture","isLoaded","shoppingContext","shoppingBag","balanceBefore","credit","discount","groupBp","personalBp","isAccountBalanceVisible","showBp","useShoppingContext","currentPeriod","isCurrentPeriodLoading","useGetCurrentPeriod","isActive","swrOptions","enabled","onSuccess","errorHandlingSwrOptions","data","isValidating","useGetPeriodsCurrentPeriod","undefined","swr","Boolean","periodCode","period","validTo","valid","to","validToFormatted","Date","formatDate","DateFormat","ShortDate","periodNumber","toString","slice","balanceSections","push","title","lines","label","value","description","bpLines","AccountBalanceDialog","isBalanceDialogOpen","toggleBalanceDialog","getTestIdProps","useTestId","_jsx","Dialog","open","disablePortal","onClose","TestId","children","map","_jsxs","variant","AddButton","Button","alignItems","CheckIcon","CheckHeavy","height","ExclamationMark","ErrorCircleFilled","marginLeft","color","error","main","HelperTextWrapper","textOverflow","overflow","whiteSpace","VoucherFormContent","isVoucherApplied","register","useFormContext","errors","useFormState","hasError","voucherCode","helperText","message","voucherCodeInput","useMemo","VouchersExclamationMark","_Fragment","TextField","fullWidth","id","name","placeholder","FormHelperTextProps","component","InputProps","endAdornment","VouchersInput","type","disabled","AddVoucherButton","noWrap","VouchersForm","flexDirection","DIALOG_CLOSE_TIMEOUT","VOUCHER_CODE_INPUT_NAME","PLACE_ORDER_FALLBACK_TIMEOUT","MetaHierarchy","dispatchUserActionEvent","metaHierarchy","getUserActionEventDispatcher","dispatchUserAction","addVoucher","async","Promise","resolve","reject","handleResolve","window","removeEventListener","BasketUpdatedEvent","AddVoucherFailedEvent","handleReject","event","detail","localizedMessage","addEventListener","eventToTrigger","CustomEvent","AddVoucherEvent","dispatchEvent","getLoggers","VouchersDialog","customerId","isVouchersDialogOpen","sessionId","handleDialogClose","handleSubmit","tenant","useEnvironment","setError","useState","setIsVoucherApplied","timerRef","useRef","apiClient","useApiClient","staticApiClient","useStaticApiClient","useCallback","clearTimeout","current","voucherApplied","code","setTimeout","VoucherApplied","addVoucherCode","actionError","Error","action","newError","String","preventDefault","currentTarget","elements","namedItem","promoCode","referral","voucher","parts","split","length","splitPromoCode","NOT_LOGGED_IN_USER_ID","referralResponse","getTenantApplicationsShareAndEarnPersonalCodeCustomer","createShoppingSessionReferral","referralType","GlobalShoppingReferralDtoReferralType","Pbs","setReferralInfo","clearCache","RequestClearShoppingCache","RequestShoppingContextEvent","postReferralError","apiError","response","Message","referralError","useVoucherDialog","voucherValidationSchema","z","object","string","min","max","form","useForm","mode","defaultValues","resolver","zodResolver","FormProvider","onSubmit","AdditionalInfo","getTestId","isAnonymous","onAccountBalanceClick","toggleVouchersDialog","setIsVouchersDialogOpen","setIsBalanceDialogOpen","prevState","SelectAccountBalance","useAdditionalInfo","isBpVisible","isWalletVisible","isCreditAvailable","isAccountBalanceItemVisible","Root","AdditionalItem","onClick","ArrowRightThin","Separator","AccountBalanceTitle","AccountBalanceItem","paddingTop","Earned","primary","dark","CashbackAndBonus","cashbackEarned","totalBp","Line","FormattedMessage","values","OrderState","props","NotTypedFormattedMessage","WhiteBackdrop","Backdrop","background","alpha","common","white","zIndex","drawer","ContentWrapper","position","top","left","transform","textAlign","LoadingIcon","CircularProgress","LoadingTitle","margin","minHeight","TitleMessage","LoadingScreen","isFallbackRunning","shouldShowLoadingScreen","Modal","slots","backdrop","Fade","in","ContinueButton","down","OkButton","ErrorIcon","ErrorCircle","InfoIcon","InfoCircle","ErrorMessage","TranslationKey","ErrorCode","ErrorCodeTranslationMap","deliveryChannelIsNotAllowedForACustomer","deliveryAddressIsRequired","deliveryAddressOfACustomerIsNotFound","deliveryAddressIsNotAllowedForACustomer","homeDeliveryAddressDoesntMatchZipTree","productDimensionCanNotFitToTheShoppingBox","productWeightIsOverSmartboxLimit","paymentMethodIsNotAllowed","creditIsNotAllowedForCustomersOrder","credibilityCheckFailed","insufficientPrepaymentForPharmacyOrdering","cannotOrderSubscriptionBecauseYourLeaderIsNotAuthorized","cannotOrderSubscriptionBecauseYourDeliveryIsNotOriflameCertifiedOffice","toOrderThisSubscriptionYouNeed","placingOrderForTestingShoppingSessionIsNotAllowed","placingOrderWithoutFinishedRegistrationIsNotAllowed","invalidShoppingOperation","meanwhileHaveBeenPlacedOtherOrder","meanwhileHaveBeenChangeCataloguesOrRules","atpIsDepletedByOtherProcess","ticketQuantityIsDepletedByOtherProcess","voucherIsDepletedByOtherProcess","endConsumerOrderIsAlreadyDroppedOnDifferentOrder","servicesAlreadyDroppedOnDifferentOrder","financeAccountWasAlreadyConsumed","atLeastOneProductMustBeOrdered","underOrderAmountLimit","unauthorizedAccess","currentActionIsDisabledDuringMaintenance","useContinue","isOnlinePaymentMethod","isOrderReviewSkipped","selectedStep","setIsRegistrationVisible","setCurrentStep","unitDataCollection","useSessionId","offers","filter","x","unitName","orderState","setOrderState","None","errorCode","setErrorCode","dialogMessage","setDialogMessage","setIsFallbackRunning","clearCacheEvent","shoppingContextRequestEvent","timer","useFinaliseOrderFallback","shouldRequestSession","timerInterval","timerFallback","clearInterval","showErrorNotification","Failed","getSession","getShoppingSession","status","collection","order","getOrders","searchPhrase","paymentProcessUrl","onlinePaymentId","location","replace","confirmationPageUrl","orderId","timerFunction","useEffect","setInterval","handleClose","onContinueClick","Basket","Offers","Checkout","onFinaliseOrderClick","Pending","result","createShoppingSessionOrder","localStorage","setItem","SCHEDULED_CLEANUP_KEY","Succeeded","apiErrorCode","Errors","Code","errorNotificationTimeOut","onRegisterClick","ErrorMessageHolder","Continue","continueButtonTooltip","onLoginClick","OpenLogin","Login","LoginButton","RegisterButton","FeedbackDialog","hideCloseButton","icon","Tooltip","placement","FinaliseOrderButton","StickyPanel","toPay","PayInfo","ToPay","TermsAndConditionsDialog","isOpen","termId","term","useGetTenantTermHtml","body","dangerouslySetInnerHTML","__html","TermsLink","Link","sx","verticalAlign","pxToRem","lineHeight","TermsAndConditionsConsent","privacyPolicyTermId","termsAndConditionsDialogProps","termsAndConditionsTermId","togglePrivacyPolicyDialog","toggleTermsAndConditionsDialog","isTermsAndConditionsDialogOpen","setIsTermsAndConditionsDialogOpen","setTermId","requiredTerms","useGetCustomerRequiredTerms","find","terms","GlobalCustomersRequiredTermDtoType","TermsAndConditions","PrivacyPolicy","toggleDialog","consentTermId","useTermsAndConditionsConsent","termsAndConditions","privacyPolicy","useSummary","addedItems","paymentFee","registrationFee","renewalFee","shoppingBagItems","subscriptions","vouchers","shoppingBagVouchers","orderItemsQuantity","reduce","total","item","isAvailable","requestedQuantity","subscription","packages","subTotal","subscriptionPackage","items","itemTotal","subscriptionPackageItem","offer","offerItem","getOrderQuantity","fees","itemCode","itemDescription","discountAmount","additionalInfoProps","handleRemoveVoucher","RemoveVoucherFailedEvent","RemoveVoucherEvent","removeVoucher","removeReferralInfo","termsAndConditionsProps","Summary","isLastStep","ownerState","SummaryWrapper","SummaryTitle","Title","SummaryLine","Subtotal","totalPriceWithoutFees","Fee","Delivery","isHomeDelivery","deliveryDate","deliveryFee","discounts","amount","Discount","walletPayment","WalletPayment","Voucher","VoucherItem","TrashIcon","prepaid","Prepaid","ToPayLine","debt","ContinueWrapper","App","isLoading","LoggerProvider","logger","ErrorBoundary","areaName","TranslationsNamespaceProvider","namespace","translationsNamespace","SummarySkeleton"],"sourceRoot":""}