{"version":3,"file":"928.chunk.js","mappings":"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","sources":["webpack://oriminishoppingbag/../../../src/constants/index.ts","webpack://oriminishoppingbag/../../../src/utils/getConfiguration.ts","webpack://oriminishoppingbag/../../../src/utils/isECatalogue.ts","webpack://oriminishoppingbag/../../../src/contexts/apiConfigurationContext.ts","webpack://oriminishoppingbag/../../../src/hooks/useMiniBag.ts","webpack://oriminishoppingbag/../../../src/hooks/useBreakpointIndex.ts","webpack://oriminishoppingbag/../../../src/components/FormattedMessage.tsx","webpack://oriminishoppingbag/../../../../src/components/MainButton/styles.ts","webpack://oriminishoppingbag/../../../../src/components/MainButton/MainButton.tsx","webpack://oriminishoppingbag/../../../src/utils/getSharedContent.ts","webpack://oriminishoppingbag/../../../src/utils/showErrorNotification.ts","webpack://oriminishoppingbag/../../../src/utils/triggerShareItemClickEvent.ts","webpack://oriminishoppingbag/../../../src/hooks/useBasketSharing.ts","webpack://oriminishoppingbag/../../../src/hooks/useTranslations.ts","webpack://oriminishoppingbag/../../../src/constants/styles.ts","webpack://oriminishoppingbag/../../../../src/components/Loader/styles.ts","webpack://oriminishoppingbag/../../../../src/components/Loader/Loader.tsx","webpack://oriminishoppingbag/../../../../src/components/ShareButton/styles.ts","webpack://oriminishoppingbag/../../../../src/components/ShareButton/ShareButton.tsx","webpack://oriminishoppingbag/../../../../src/components/SharingWrapper/styles.ts","webpack://oriminishoppingbag/../../../../src/components/SharingWrapper/SharingWrapper.tsx","webpack://oriminishoppingbag/../../../../src/components/Footer/styles.ts","webpack://oriminishoppingbag/../../../../src/components/Footer/Footer.tsx","webpack://oriminishoppingbag/../../../../src/components/Header/styles.ts","webpack://oriminishoppingbag/../../../../src/components/Header/Header.tsx","webpack://oriminishoppingbag/../../../src/hooks/useQuantityPicker.ts","webpack://oriminishoppingbag/../../../../src/components/QuantityPicker/styles.ts","webpack://oriminishoppingbag/../../../../src/components/QuantityPicker/QuantityPicker.tsx","webpack://oriminishoppingbag/../../../../src/components/RemoveButton/styles.ts","webpack://oriminishoppingbag/../../../../src/components/RemoveButton/RemoveButton.tsx","webpack://oriminishoppingbag/../../../../src/components/Shade/styles.ts","webpack://oriminishoppingbag/../../../../src/components/Shade/ShadeElement.tsx","webpack://oriminishoppingbag/../../../../src/components/Shade/Shade.tsx","webpack://oriminishoppingbag/../../../../src/components/Item/styles.ts","webpack://oriminishoppingbag/../../../../src/components/Item/Item.tsx","webpack://oriminishoppingbag/../../../src/utils/removeBasketItem.ts","webpack://oriminishoppingbag/../../../src/utils/updateBasketItem.ts","webpack://oriminishoppingbag/../../../../src/components/LoadingOverlay/styles.ts","webpack://oriminishoppingbag/../../../../src/components/LoadingOverlay/LoadingOverlay.tsx","webpack://oriminishoppingbag/../../../../src/components/MiniBag/styles.ts","webpack://oriminishoppingbag/../../../../src/components/MiniBag/MiniBag.tsx","webpack://oriminishoppingbag/../../../../src/components/MiniBagWrapper/styles.ts","webpack://oriminishoppingbag/../../../../src/components/MiniBagWrapper/MiniBagWrapper.tsx","webpack://oriminishoppingbag/../../../src/constants/defaultTranslations.ts","webpack://oriminishoppingbag/../../../src/utils/getTranslationsProps.ts","webpack://oriminishoppingbag/../../../src/hooks/useGetApiConfigurationData.ts","webpack://oriminishoppingbag/../../../src/containers/ApiConfigurationProvider.tsx","webpack://oriminishoppingbag/../../../src/containers/ApiProvider.tsx","webpack://oriminishoppingbag/../../../src/containers/MiniShoppingBagController.tsx","webpack://oriminishoppingbag/./src/App.tsx","webpack://oriminishoppingbag/./src/containers/ErrorBoundary.ts","webpack://oriminishoppingbag/./src/appRender.tsx"],"sourcesContent":["import type { TriggerActionEventName } from '@ori/shopping-context';\n\nexport * from './defaultTranslations';\nexport * from './styles';\n\nexport const APP_NAME = 'mini-shopping-bag';\nexport const EMOTION_CACHE_KEY = `${APP_NAME}-emotion-cache-key`;\n\n// event actions monitored by loading state of the shopping context provider\nexport const eventNames: TriggerActionEventName[] = ['add-to-basket', 'remove-basket-item', 'update-basket-item'];\n","import { getDebugLogger, getInfoLogger, normalizeSlashChars } from '@ori/checkout-utils';\nimport { parseClientAppConfig } from '@ori/client-app-config';\n\nimport { APP_NAME } from '../constants';\nimport type { ClientAppConfig } from '../types';\n\nconst logDebug = getDebugLogger(APP_NAME);\nconst logInfo = getInfoLogger(APP_NAME);\n\n/**\n * Normalizes some values in the raw parsed config.\n * @param parsedConfig Original config data returned by the parseClientAppConfig method.\n * @returns Final normalized configuration.\n */\nexport const normalizeConfigData = (parsedConfig: ClientAppConfig) => {\n const result: ClientAppConfig = {\n ...parsedConfig,\n useOpenedMinibagOnDesktop: Boolean(parsedConfig.useOpenedMinibagOnDesktop),\n staticApiUrl: normalizeSlashChars(parsedConfig.staticApiUrl, false, false),\n };\n logInfo('normalized configuration', result);\n\n return result;\n};\n\n/**\n * Parses the configuration.\n * @param config Config data serialized in a string in JSON format.\n * Usually taken from data-config HTML attribute of the component's root element.\n * @returns Normalized component configuration.\n */\nexport const getConfiguration = (config: string) => {\n const parsedConfig = parseClientAppConfig(config, ['currentLanguage', 'staticApiUrl', 'tenant']);\n logDebug('parsed configuration', parsedConfig);\n\n return parsedConfig;\n};\n","export const E_CATALOGUE_ROOT_ELEMENT_ID = 'catalogue-ipaper-root';\n\ntype PartialNextJsInfo = {\n page: string;\n query: {\n catalogueCode?: string[];\n };\n};\n\n/**\n * Legacy determination if in eCatalogue / iPaper page.\n * TODO: Remove ASAP.\n * @deprecated\n */\nexport function isECatalogue() {\n // Old agreed integration was to have this root element in page rendered from server.\n const isRootElement = Boolean(document.getElementById(E_CATALOGUE_ROOT_ELEMENT_ID));\n if (isRootElement) {\n return true;\n }\n\n // The above might not be rendered yet in page after migration to AppShell.\n // Let's try examining the NextJS serialized data then.\n // There should be serialized data similar to this:\n // \"page\": \"/internal/[tenant]/[language]/catalogue/[...catalogueCode]\",\n // \"query\": {\n // \"tenant\": \"hu\",\n // \"language\": \"hu-HU\",\n // \"catalogueCode\": [\"digital-catalogue-current\"]\n // },\n try {\n const element = document.getElementById('__NEXT_DATA__');\n if (!element) {\n return false;\n }\n\n const data = JSON.parse(element.innerText) as PartialNextJsInfo;\n const {\n page,\n query: { catalogueCode },\n } = data;\n\n return page.includes('/internal/[tenant]/[language]/catalogue/[...catalogueCode]') && catalogueCode !== undefined;\n } catch (error) {\n return false;\n }\n}\n","import { useContext, createContext } from 'react';\n\nimport type { ApiConfigurationProps } from '../types';\n\nexport const apiConfigurationContext = createContext({\n apiConfiguration: undefined,\n isApiConfigurationLoading: false,\n});\n\nexport const ApiConfigurationContextProvider = apiConfigurationContext.Provider;\n\nexport const useApiConfiguration = () => useContext(apiConfigurationContext);\n","/* eslint-disable node/callback-return -- TODO: fix later */\nimport * as ToggleMenuFlyout from '@ori-events/toggle-menu-flyout';\nimport { getDebugLogger } from '@ori/checkout-utils';\nimport { useShoppingContext } from '@ori/shopping-context';\nimport type { DebouncedFunc } from 'lodash';\nimport debounce from 'lodash.debounce';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport type { MiniBagProps } from '../components/MiniBag';\nimport type { MiniBagWrapperProps } from '../components/MiniBagWrapper';\nimport { APP_NAME } from '../constants';\nimport { useApiConfiguration } from '../contexts';\nimport { useBreakpointIndex } from './useBreakpointIndex';\n\ntype ToggleMenuCallbackResult = DebouncedFunc<() => void> | undefined;\n\nconst logDebug = getDebugLogger(APP_NAME);\n\nexport const useMiniBag = ({ useOpenedMinibagOnDesktop }: MiniBagWrapperProps) => {\n const breakpointIndex = useBreakpointIndex();\n const { isLoading, isLoaded, shoppingContext } = useShoppingContext();\n const { isApiConfigurationLoading } = useApiConfiguration();\n const { apiConfiguration: { isBasketSharingEnabled = false } = {} } = useApiConfiguration();\n const { isAnonymous = false, shoppingBag: { shoppingBagItems = [] } = {} } = shoppingContext ?? {};\n const items = shoppingBagItems.filter((item) => item.itemType !== 'U');\n const [isVisible, setIsVisible] = useState(false);\n const [lastCallback, setLastCallback] = useState(undefined);\n const setCallback = useCallback(\n (callback: ToggleMenuCallbackResult) =>\n setLastCallback((oldCallback) => {\n if (oldCallback) {\n logDebug('cancelling old callback ...');\n oldCallback.cancel();\n }\n logDebug('setting up toggle menu callback:', callback);\n callback?.();\n\n return callback;\n }),\n [],\n );\n\n logDebug('Rendering ...\\n\\t current state:', {\n shoppingContext,\n breakpointIndex,\n isVisible,\n lastCallback,\n useOpenedMinibagOnDesktop,\n });\n\n const isOpenedMinibagOnDesktop = useOpenedMinibagOnDesktop && breakpointIndex === 2;\n const isOtherPageSmallScreen = !useOpenedMinibagOnDesktop && breakpointIndex === 0;\n\n const debouncedHide = useCallback(\n () =>\n debounce(() => {\n setCallback(undefined);\n setIsVisible(false);\n }, 500),\n [setCallback, setIsVisible],\n );\n\n const toggleMenuCallback = useCallback<(data: ToggleMenuFlyout.Event) => DebouncedFunc<() => void> | undefined>(\n (data: ToggleMenuFlyout.Event) => {\n logDebug('toggleMenuCallback - event:', data);\n\n if (isOpenedMinibagOnDesktop || isOtherPageSmallScreen) {\n logDebug('toggleMenuCallback: ignored in this breakpoint');\n\n return undefined;\n }\n\n if (data.detail.menuType !== ToggleMenuFlyout.MenuTypes.Minibag) {\n logDebug('toggleMenuCallback: toggle-menu-flyout event for another component, closing ...');\n setIsVisible(false);\n\n return undefined;\n }\n\n if (typeof data.detail.shouldOpen === 'undefined') {\n logDebug(\n 'toggleMenuCallback: toggle-menu-flyout event without shouldOpen property set,',\n 'toggling visibility ...',\n );\n setIsVisible((previousState) => !previousState);\n\n return undefined;\n }\n\n if (data.detail.shouldOpen) {\n logDebug('toggleMenuCallback: toggle-menu-flyout event with shouldOpen === true, opening ...');\n setIsVisible(true);\n\n return undefined;\n }\n\n logDebug(\n 'toggleMenuCallback: toggle-menu-flyout event with shouldOpen === false',\n 'closing scheduled after 500 ms ...',\n );\n\n return debouncedHide();\n },\n [debouncedHide, isOpenedMinibagOnDesktop, isOtherPageSmallScreen, setIsVisible],\n );\n\n useEffect(() => {\n // always show in eCatalog \"desktop\" mode\n if (isOpenedMinibagOnDesktop) {\n logDebug('useOpenedMinibagOnDesktop - always shown: opening ...');\n setIsVisible(true);\n }\n // always hide in other pages small screen\n if (isOtherPageSmallScreen) {\n logDebug('other pages and small breakpoint - always hidden: closing ...');\n setIsVisible(false);\n }\n\n const toggleMenuFlyoutHandler = ((data: ToggleMenuFlyout.Event) =>\n setCallback(toggleMenuCallback(data))) as EventListener;\n\n window.addEventListener(ToggleMenuFlyout.Name, toggleMenuFlyoutHandler);\n\n return () => window.removeEventListener(ToggleMenuFlyout.Name, toggleMenuFlyoutHandler);\n }, [\n breakpointIndex,\n isOpenedMinibagOnDesktop,\n isOtherPageSmallScreen,\n lastCallback,\n setCallback,\n setIsVisible,\n toggleMenuCallback,\n useOpenedMinibagOnDesktop,\n ]);\n\n const handleOverlayClick = () => {\n if (!isOpenedMinibagOnDesktop) {\n setIsVisible(false);\n }\n };\n\n const onMouseEnter = useCallback(() => {\n if (useOpenedMinibagOnDesktop || isOtherPageSmallScreen) {\n logDebug('mouseenter: ignored in this breakpoint');\n\n return;\n }\n logDebug('mouseenter');\n setCallback(undefined);\n }, [useOpenedMinibagOnDesktop, isOtherPageSmallScreen, setCallback]);\n\n const onMouseLeave = useCallback(() => {\n if (useOpenedMinibagOnDesktop || isOtherPageSmallScreen) {\n logDebug('mouseleave: ignored in this breakpoint');\n\n return;\n }\n logDebug('mouseleave: hiding ...');\n setIsVisible(false);\n }, [useOpenedMinibagOnDesktop, isOtherPageSmallScreen, setIsVisible]);\n\n const ownerState = { breakpointIndex, isVisible, useOpenedMinibagOnDesktop };\n\n const minibagProps: MiniBagProps = {\n breakpointIndex,\n isBasketSharingEnabled: isBasketSharingEnabled && isLoaded && isAnonymous,\n isDataLoaded: isLoaded,\n useOpenedMinibagOnDesktop,\n isLoading: isLoading || isApiConfigurationLoading,\n items,\n onMouseEnter,\n onMouseLeave,\n };\n\n return {\n isOpenedMinibagOnDesktop,\n isVisible,\n handleOverlayClick,\n minibagProps,\n ownerState,\n };\n};\n","import { useMediaQuery, useTheme } from '@ori-ui/mui';\n\n/**\n * The breakpoint where eCatalogue / iPaper layout\n * logic changes from mobile to desktop.\n */\nexport const E_CATALOGUE_BREAKPOINT = 1024;\n\n/**\n * @returns Zero-based breakpoint index as one of the following:\n * 0 - Small screen for pages other than eCatalogue / iPaper\n * Based on the 'sm' theme size. Minibag is not displayed\n * in this case outside of eCatalogue, and is displayed as a popup\n * in eCatalogue.\n * 1 - Middle breakpoint. Minibag is displayed in a popup for all pages.\n * Size is based on the E_CATALOGUE_BREAKPOINT constant.\n * 2 - Large breakpoint. Minibag is displayed as popup outside of eCatalogue,\n * and in fixed position appearing as page content in eCatalogue\n * (\"desktop\" mode). Size is based on the E_CATALOGUE_BREAKPOINT constant.\n */\nexport const useBreakpointIndex = () => {\n const theme = useTheme();\n const isSmallScreen = useMediaQuery(theme.breakpoints.down('sm'), { noSsr: true });\n const isMiddleScreen = useMediaQuery(theme.breakpoints.down(E_CATALOGUE_BREAKPOINT), {\n noSsr: true,\n });\n\n let breakpointIndex = 0;\n\n if (isSmallScreen) {\n breakpointIndex = 0;\n } else if (isMiddleScreen) {\n breakpointIndex = 1;\n } else {\n breakpointIndex = 2;\n }\n\n return breakpointIndex;\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 { Typography, styled, Link } from '@ori-ui/mui';\n\nexport const Root = styled(Link)(({ theme }) => ({\n background: theme.palette.primary.main,\n border: '2px solid',\n borderColor: theme.palette.primary.main,\n borderRadius: '999px', // TODO: ?\n boxSizing: 'border-box',\n color: theme.palette.background.paper,\n cursor: 'pointer',\n display: 'block',\n fontWeight: 'bold',\n height: 45,\n margin: theme.spacing(1),\n maxWidth: '100%',\n position: 'relative',\n textAlign: 'center',\n textDecoration: 'none',\n textTransform: 'uppercase',\n transition: 'box-shadow 0.15s, transform 0.15s',\n verticalAlign: 'middle',\n whiteSpace: 'nowrap',\n '&:hover': {\n boxShadow: '0 3px 8px 0 rgba(51, 51, 51, 0.1)',\n color: theme.palette.background.paper,\n transform: 'scale(1.01)', // TODO: ?\n },\n}));\n\nexport const Label = styled(Typography)(({ theme }) => ({\n fontWeight: 'bold',\n lineHeight: `${theme.spacing(8)}`,\n}));\n","import useTestId from '@ori/testid-generator';\nimport type { FC, PropsWithChildren } from 'react';\n\nimport { useApiConfiguration } from '../../contexts';\nimport { Label, Root } from './styles';\n\nexport const MainButton: FC = ({ children }) => {\n const { apiConfiguration: { goToBasketUrl } = {} } = useApiConfiguration();\n const { getTestId } = useTestId();\n\n return (\n \n \n \n );\n};\n","/* eslint-disable @typescript-eslint/naming-convention -- HTTP header names */\nimport { axios } from '@ori/axios';\nimport { getDebugLogger } from '@ori/checkout-utils';\nimport type { SharingProps } from '@ori/sharing-panel';\n\nimport { APP_NAME } from '../constants';\n\nconst logDebug = getDebugLogger(APP_NAME);\n\nexport const getSharedContent = async () => {\n // TODO: API for this?\n const contentInfoUrl = '/system/ajax/CustomerOrderDetail/GetBasketLink';\n logDebug('Loading shared content ...');\n const response = await axios.get(`${window.location.origin}${contentInfoUrl}`, {\n headers: {\n 'Cache-Control': 'no-cache',\n 'Access-Control-Allow-Origin': '*',\n 'Service-Worker-Allowed': '/',\n Pragma: 'no-cache',\n Expires: '0',\n },\n });\n const { data } = response;\n const message = data.message.replaceAll('\\n\\n, ', ', \\n\\n').replaceAll(/\\n{3}/g, '\\n\\n');\n const result = { ...data, message };\n logDebug('getSharedContent() data:', result);\n\n return result;\n};\n","import { Name, translationKeys } from '@ori-events/show-error-notification';\nimport type { Data, TranslationKey } from '@ori-events/show-error-notification';\n\nexport { translationKeys };\nexport type { TranslationKey };\n\nexport const errorNotificationTimeOut = 3000;\n\nexport const showErrorNotification = (message?: TranslationKey) =>\n window.dispatchEvent(\n new CustomEvent(Name, {\n detail: {\n message,\n notificationOptions: { delay: errorNotificationTimeOut },\n },\n }),\n );\n","import * as ShareItemClickEvent from '@ori-events/share-item-click';\nimport { getDebugLogger } from '@ori/checkout-utils';\n\nimport { APP_NAME } from '../constants';\n\nconst logDebug = getDebugLogger(APP_NAME);\n\nexport const triggerShareItemClickEvent = (detail: ShareItemClickEvent.Data) => {\n const customEvent = new CustomEvent(ShareItemClickEvent.Name, {\n detail,\n });\n logDebug(`Triggering custom event for analytics:`, customEvent);\n window.dispatchEvent(customEvent);\n};\n","import { ContentType, Placement } from '@ori/analytics-data';\nimport { getDebugLogger } from '@ori/checkout-utils';\nimport type { CopyLinkPanelProps, SharedContent, SharingPanelProps, VendorType } from '@ori/sharing-panel';\nimport { share, SharingCapability } from '@ori/sharing-panel';\nimport { useCallback, useState } from 'react';\n\nimport { type ShareButtonProps } from '../components/ShareButton';\nimport type { SharingWrapperProps } from '../components/SharingWrapper/types';\nimport { APP_NAME } from '../constants';\nimport { getSharedContent, showErrorNotification, translationKeys, triggerShareItemClickEvent } from '../utils';\nimport { useTranslations } from './useTranslations';\n\nconst logDebug = getDebugLogger(APP_NAME);\n\nexport const useBasketSharing = ({ isSharingButtonActive }: SharingWrapperProps) => {\n const [isPanelOpen, setIsPanelOpen] = useState(false);\n const [isCopyLinkOpen, setIsCopyLinkOpen] = useState(false);\n const [sharedContent, setSharedContent] = useState>({});\n const [link, setLink] = useState('');\n const isPopupOpen = isPanelOpen || isCopyLinkOpen;\n\n const { formatMessage } = useTranslations();\n\n const onShareButtonClick = useCallback(async () => {\n logDebug('onShareButtonClick()');\n try {\n const data = await getSharedContent();\n setSharedContent(data);\n setIsPanelOpen(true);\n } catch (error: unknown) {\n showErrorNotification(translationKeys.genericError);\n }\n }, []);\n\n const onClose = useCallback(() => {\n logDebug('Closing sharing wrapper ...');\n setIsPanelOpen(false);\n setIsCopyLinkOpen(false);\n }, []);\n\n const onError = useCallback(() => {\n onClose();\n showErrorNotification(translationKeys.genericError);\n }, [onClose]);\n\n const onCopyLink = useCallback((vendor: VendorType, finalSharedLink: string) => {\n logDebug('onCopyLink()', { finalSharedLink, vendor });\n setLink(finalSharedLink);\n setIsCopyLinkOpen(true);\n }, []);\n\n const onShareIconClick = useCallback(\n async (vendor: VendorType) => {\n logDebug('onShareIconClick handler called.');\n // close sharing popup\n onClose();\n // always monitor user intentions even when the checks later will fail\n triggerShareItemClickEvent({\n contentType: ContentType.ProductList,\n method: vendor,\n placement: Placement.Minibag,\n });\n // start the sharing process\n void share({ onCopyLink, onError, sharedContent, vendor });\n },\n [onClose, onCopyLink, onError, sharedContent],\n );\n\n const shareButtonProps: ShareButtonProps = {\n isSharingButtonActive,\n onClick: onShareButtonClick,\n };\n\n const { ShareUrlAndText } = SharingCapability;\n const panelProps: SharingPanelProps = {\n // sharing capabilities filter so far hard-coded here\n capabilities: [ShareUrlAndText],\n captionText: formatMessage('shareWithBrandPartner'),\n isCopyLinkIconDisplayed: true,\n onError,\n onShareIconClick,\n };\n\n const copyLinkPopupProps = { header: formatMessage('copyLink') } as const;\n const sharePopupProps = { size: 'small' } as const;\n const popupProps = {\n disableEnforceFocus: true,\n disableTransition: true,\n onClose,\n open: isPopupOpen,\n ownerState: { isCopyLinkOpen },\n ...(isCopyLinkOpen ? copyLinkPopupProps : sharePopupProps),\n } as const;\n\n const copyLinkProps: CopyLinkPanelProps = {\n buttonText: formatMessage('copy'),\n copiedText: formatMessage('linkCopied'),\n link,\n };\n\n return {\n copyLinkProps,\n isCopyLinkOpen,\n isPanelOpen,\n isPopupOpen,\n panelProps,\n popupProps,\n shareButtonProps,\n };\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 { 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 const basePositionStyles = {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n} as const;\n\nexport const centeredFlexStyles = {\n alignItems: 'center',\n display: 'flex',\n height: '100%',\n justifyContent: 'center',\n width: '100%',\n} as const;\n","import { keyframes } from '@emotion/react';\nimport { OriflameSpinner } from '@ori-ui/icons';\nimport { styled } from '@ori-ui/mui';\n\nimport { centeredFlexStyles } from '../../constants';\n\nconst spin = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`;\n\nexport const Root = styled('div')(centeredFlexStyles);\n\nexport const Spinner = styled(OriflameSpinner)({\n animation: `${spin} 1s linear infinite`,\n});\n","import type { FC } from 'react';\n\nimport { Root, Spinner } from './styles';\n\nexport const Loader: FC = () => (\n \n \n \n);\n","import { styled, Button } from '@ori-ui/mui';\n\nexport const Root = styled(Button)(({ theme }) => ({\n width: `calc(100% - ${theme.spacing(2)})`,\n margin: theme.spacing(1),\n}));\n","import { Share } from '@ori-ui/icons';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\n\nimport { FormattedMessage } from '../FormattedMessage';\nimport { Root } from './styles';\nimport type { ShareButtonProps } from './types';\n\nexport const ShareButton: FC = ({ isSharingButtonActive, onClick }) => {\n const { getTestId } = useTestId();\n\n return (\n \n \n \n \n );\n};\n","import { Dialog, dialogClasses } from '@ori-ui/components';\nimport { styled } from '@ori-ui/mui';\n\nexport const SharingPopup = styled(Dialog)<{\n ownerState: { isCopyLinkOpen: boolean };\n}>(({ ownerState: { isCopyLinkOpen }, theme }) => ({\n ...(isCopyLinkOpen && {\n [`&.${dialogClasses.header}`]: {\n paddingBottom: theme.spacing(6),\n },\n [`&.${dialogClasses.content}`]: {\n maxWidth: 540,\n },\n }),\n}));\n","import { getDebugLogger } from '@ori/checkout-utils';\nimport { lazy, Suspense } from 'react';\nimport type { FC } from 'react';\n\nimport { APP_NAME } from '../../constants';\nimport { useBasketSharing } from '../../hooks';\nimport { Loader } from '../Loader';\nimport { ShareButton } from '../ShareButton';\nimport { SharingPopup } from './styles';\nimport type { SharingWrapperProps } from './types';\n\nconst logDebug = getDebugLogger(APP_NAME);\n\nconst CopyLinkPanel = lazy(async () => import('./CopyLinkPanel'));\nconst SharingPanel = lazy(async () => import('./SharingPanel'));\n\nexport const SharingWrapper: FC = (props) => {\n const { copyLinkProps, isCopyLinkOpen, isPanelOpen, isPopupOpen, panelProps, popupProps, shareButtonProps } =\n useBasketSharing(props);\n\n logDebug('Rendering SharingWrapper.tsx, popupProps:', popupProps);\n\n return (\n <>\n \n {isPopupOpen ? (\n \n {isPanelOpen ? (\n }>\n \n \n ) : null}\n {isCopyLinkOpen ? (\n }>\n \n \n ) : null}\n \n ) : null}\n \n );\n};\n","import { styled } from '@ori-ui/mui';\n\nexport const Root = styled('div')(({ theme }) => ({\n background: 'linear-gradient(to top, #fff 20%, rgba(255,255,255,0.9) 30%)',\n bottom: 0,\n boxSizing: 'border-box',\n justifySelf: 'flex-end',\n padding: theme.spacing(3),\n position: 'absolute',\n width: '100%',\n zIndex: 2,\n}));\n","import type { FC } from 'react';\n\nimport { FormattedMessage } from '../FormattedMessage';\nimport { MainButton } from '../MainButton';\nimport { SharingWrapper } from '../SharingWrapper';\nimport { Root } from './styles';\nimport type { FooterProps } from './types';\n\nexport const Footer: FC = ({ isBasketSharingEnabled, isSharingButtonActive }) => (\n \n \n \n \n {isBasketSharingEnabled ? : null}\n \n);\n","import { styled } from '@ori-ui/mui';\n\nexport const Root = styled('div')(({ theme }) => ({\n height: 65,\n position: 'absolute',\n zIndex: 2,\n display: 'flex',\n padding: theme.spacing(0, 4),\n boxSizing: 'border-box',\n alignItems: 'center',\n width: '100%',\n background: 'linear-gradient(to bottom, #fff 20%, rgba(255,255,255,0.9) 30%)',\n color: theme.palette.text.secondary,\n}));\n\nexport const BasketLink = styled('a')(({ theme }) => ({\n color: theme.palette.text.primary,\n textDecoration: 'none',\n}));\n","import { Typography } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\n\nimport { useApiConfiguration } from '../../contexts';\nimport { FormattedMessage } from '../FormattedMessage';\nimport { BasketLink, Root } from './styles';\nimport type { HeaderProps } from './types';\n\nexport const Header: FC = ({ quantity }) => {\n const { apiConfiguration: { goToBasketUrl } = {} } = useApiConfiguration();\n const { getTestId } = useTestId();\n\n return (\n \n \n \n ({quantity.toString()})\n \n \n \n );\n};\n","import { getDebugLogger } from '@ori/checkout-utils';\nimport type { FocusEventHandler, KeyboardEventHandler } from 'react';\nimport { useReducer, useCallback, useRef } from 'react';\n\nimport { APP_NAME } from '../constants';\nimport type { CounterValue, HandleQuantityChangeOptions } from '../types';\n\ninterface UseQuantityPickerOptions {\n canBeDeleted: boolean;\n initialQuantity: number;\n itemCode: string;\n lineNumber: number;\n maxQuantity: number;\n onQuantityChange: (options: HandleQuantityChangeOptions) => Promise;\n}\n\nenum ChangeOrigin {\n BlurHandler = 'handleBlur',\n ChangeHandler = 'handleChange',\n KeyDownHandler = 'handleKeyDown',\n}\n\nconst KEY_ENTER = 'Enter';\n\nconst logDebug = getDebugLogger(APP_NAME);\n\nexport const useQuantityPicker = ({\n canBeDeleted,\n initialQuantity,\n itemCode,\n lineNumber,\n maxQuantity,\n onQuantityChange,\n}: UseQuantityPickerOptions) => {\n const inputRef = useRef(null);\n const isInputFocused = useRef(false);\n const isServerUpdate = useRef(false);\n const [, forceUpdate] = useReducer((x: number) => x + 1, 0);\n const value = useRef(initialQuantity);\n const setValue = useCallback(\n (newValue: CounterValue) => {\n if (newValue === value.current) {\n logDebug('QuantityPicker.setValue() same value as previous, no change:', newValue);\n } else {\n value.current = newValue;\n logDebug('QuantityPicker.setValue() new value was set:', newValue);\n forceUpdate();\n }\n },\n [value],\n );\n\n const changeQuantity = useCallback(\n (inputValue: CounterValue, changeOrigin?: ChangeOrigin) => {\n logDebug(\n 'QuantityPicker.changeQuantity(), inputValue',\n inputValue,\n ', initialQuantity',\n initialQuantity,\n ', maxQuantity',\n maxQuantity,\n ', change origin:',\n changeOrigin,\n );\n\n // ignore '-' value completely - server doesn't accept negative values\n if (inputValue === '-') {\n return;\n }\n\n // non-numeric values\n if (inputValue === '' || Number.isNaN(inputValue)) {\n if (changeOrigin === ChangeOrigin.BlurHandler) {\n // for blur event, let's set some correct numeric value\n setValue(initialQuantity);\n } else {\n // in the middle of the editting process here, just set the local state\n // so that user sees the editted value\n setValue(inputValue);\n }\n\n return;\n }\n\n // checks for min and max quantity\n let currentValue = inputValue;\n\n // just for the case - negative value could be pasted from clipboard for example\n if (currentValue < 0) {\n currentValue = 0;\n logDebug('Current value was set to 0 as negative quantities are not accepted by server.');\n }\n\n if (currentValue < 1 && !canBeDeleted) {\n currentValue = 1;\n logDebug('Current value was set to 1 as the item cannot be deleted.');\n }\n\n if (currentValue > maxQuantity) {\n currentValue = maxQuantity;\n logDebug(`Current value was limited to max quantity ${maxQuantity}.`);\n }\n\n // skip calling updates on server when same as initial quantity\n // skip server updates when the user is edditting the input value directly ATM\n // (the change in handleKeyDown is called only for specific key(s) like Enter,\n // so it should call server for those cases, but the focus still stays in the input)\n if (\n currentValue === initialQuantity ||\n (isInputFocused.current && changeOrigin !== ChangeOrigin.KeyDownHandler)\n ) {\n // just set local state so that user sees the edit updates\n setValue(currentValue);\n\n return;\n }\n\n // call server updates - this might return updated value of this item's quantity\n // depending on the checkout rule engine;\n // server operation indication is needed for correct derived value state logic\n isServerUpdate.current = true;\n logDebug('Server update flag was set to true.');\n\n const resetFlag = () => {\n isServerUpdate.current = false;\n logDebug('Server update flag was set to false.');\n };\n\n // set local state so that user sees the edit updates;\n // set here so that the isServerUpdate is set up in advance\n setValue(currentValue);\n\n void onQuantityChange({\n itemCode,\n lineNumber,\n quantity: currentValue,\n previousQuantity: initialQuantity,\n }).then(resetFlag);\n },\n [canBeDeleted, initialQuantity, itemCode, lineNumber, maxQuantity, onQuantityChange, setValue],\n );\n\n // Derived value state after server data updates from shopping rule engine. Stays here for merchandising cases:\n // 1. Quantity of item was increased by previous update of another item's amount.\n // 2. Increasing item quantity over limit increases the qty of another item and original item's qty stays the same.\n if (initialQuantity !== value.current && (!isInputFocused.current || isServerUpdate.current)) {\n logDebug(`Setting value to match initialQuantity ${initialQuantity}, value was ${value.current} ...`);\n setValue(initialQuantity);\n }\n\n const handleFocus = ((event) => {\n isInputFocused.current = true;\n const { target } = event;\n const input = target as HTMLInputElement;\n const { value: currentValue } = input;\n logDebug('QuantityPicker.handleFocus(), currentValue', currentValue);\n // selecting whole text value on focus was requested\n input.setSelectionRange(0, currentValue.length);\n }) as FocusEventHandler;\n\n const handleBlur = ((event) => {\n isInputFocused.current = false;\n const { target } = event;\n const input = target as HTMLInputElement;\n const { value: currentValue } = input;\n if (currentValue === '' || currentValue === '-') {\n changeQuantity(currentValue, ChangeOrigin.BlurHandler);\n } else {\n changeQuantity(Number.parseInt(currentValue, 10), ChangeOrigin.BlurHandler);\n }\n }) as FocusEventHandler;\n\n const handleKeyDown = ((event) => {\n const { key, target } = event;\n logDebug('QuantityPicker.handleKeyDown() key', key);\n if (typeof target !== 'object' || key !== KEY_ENTER) {\n return;\n }\n\n const input = target as HTMLInputElement;\n const { value: currentValue } = input;\n const numericValue = Number(currentValue);\n logDebug('QuantityPicker.handleKeyDown() currentValue', currentValue, 'numericValue', numericValue);\n if (currentValue === '' || Number.isNaN(numericValue)) {\n return;\n }\n changeQuantity(numericValue, ChangeOrigin.KeyDownHandler);\n }) as KeyboardEventHandler;\n\n const handleChange = useCallback(\n (inputValue: CounterValue) => changeQuantity(inputValue, ChangeOrigin.ChangeHandler),\n [changeQuantity],\n );\n\n return {\n inputRef,\n isInputFocused: isInputFocused.current,\n isServerUpdate: isServerUpdate.current,\n handleBlur,\n handleChange,\n handleFocus,\n handleKeyDown,\n setValue,\n value: value.current,\n };\n};\n","import { styled } from '@ori-ui/mui';\n\nexport const Root = styled('div')(({ theme }) => ({\n alignItems: 'center',\n alignSelf: 'flex-end',\n display: 'flex',\n position: 'relative',\n width: 125,\n\n [theme.breakpoints.up('md')]: {\n alignSelf: 'center',\n flexShrink: 0,\n },\n}));\n","/* eslint-disable @typescript-eslint/naming-convention -- x */\nimport type { IconButtonProps } from '@ori-ui/components';\nimport { Counter } from '@ori-ui/components';\nimport type { InputProps } from '@ori-ui/mui';\nimport type { FC } from 'react';\n\nimport { useQuantityPicker } from '../../hooks/useQuantityPicker';\nimport { Root } from './styles';\nimport type { QuantityPickerProps } from './types';\n\nexport const QuantityPicker: FC = ({\n 'data-testid': testId,\n canBeDeleted,\n canBeModified,\n canBeReduced,\n initialQuantity,\n itemCode,\n lineNumber,\n maxQuantity,\n onQuantityChange,\n}) => {\n const { inputRef, handleBlur, handleChange, handleFocus, handleKeyDown, value } = useQuantityPicker({\n canBeDeleted,\n initialQuantity,\n itemCode,\n lineNumber,\n maxQuantity,\n onQuantityChange,\n });\n\n return (\n \n \n }\n disabled={!canBeModified}\n IncreaseIconButtonProps={\n {\n 'data-testid': `${testId}-increase`,\n } as Partial\n }\n InputProps={\n {\n type: 'tel',\n inputRef,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n } as Partial\n }\n maxValue={maxQuantity}\n minValue={canBeReduced ? 0 : initialQuantity}\n value={value}\n onChange={handleChange}\n />\n \n );\n};\n","import { IconButton } from '@ori-ui/components';\nimport { Add } from '@ori-ui/icons';\nimport { styled } from '@ori-ui/mui';\n\nexport const Root = styled(IconButton)(({ theme }) => ({\n alignItems: 'center',\n display: 'flex',\n fontSize: theme.typography.pxToRem(14),\n color: theme.palette.common.black,\n height: 20,\n justifyContent: 'center',\n left: theme.spacing(-2),\n position: 'absolute',\n top: theme.spacing(1),\n width: 20,\n zIndex: 1,\n}));\n\nexport const Icon = styled(Add)(({ theme }) => ({\n fontSize: theme.typography.pxToRem(14),\n transform: 'rotate(45deg)',\n}));\n","import type { FC } from 'react';\n\nimport { Icon, Root } from './styles';\nimport type { RemoveButtonProps } from './types';\n\nexport const RemoveButton: FC = ({ 'data-testid': testId, onClick }) => (\n \n \n \n);\n","import { styled, type Theme } from '@ori-ui/mui';\n\nexport const getLinearGradient = (colors: string[]) =>\n `linear-gradient(to right, ${colors[0]}, ${colors[0]} 50%, ${colors[1]} 50%)`;\n\nexport const shadeElementStyles = (theme: Theme) =>\n ({\n borderRadius: '50%',\n display: 'inline-block',\n height: 7,\n margin: theme.spacing(1, 1, 1.2, 0),\n width: 7,\n }) as const;\n\nexport const ColorShadeElement = styled('div')<{ ownerState: { background: string } }>(\n ({ theme, ownerState: { background } }) => ({\n ...shadeElementStyles(theme),\n background,\n }),\n);\n\nexport const ImageShadeElement = styled('img')(({ theme }) => shadeElementStyles(theme));\n\nexport const Root = styled('div')(({ theme }) => ({\n color: theme.palette.grey.A400,\n display: 'flex',\n alignItems: 'center',\n}));\n","import type { FC } from 'react';\n\nimport { ColorShadeElement, getLinearGradient, ImageShadeElement } from './styles';\nimport type { ShadeElementProps } from './types';\n\nexport const ShadeElement: FC = ({ colorHexCode, colorImageSrc }) => {\n const colorHexCodes = colorHexCode?.split(',').filter((hexCode) => Boolean(hexCode));\n\n if (colorHexCodes && colorHexCodes.length > 0) {\n const background = colorHexCodes.length > 1 ? getLinearGradient(colorHexCodes) : (colorHexCodes[0] as string);\n const ownerState = { background };\n\n return ;\n }\n\n // TODO: This should be preferred?\n if (colorImageSrc) {\n return (\n \n );\n }\n\n return null;\n};\n","import { Typography } from '@ori-ui/mui';\nimport type { FC } from 'react';\nimport { memo } from 'react';\n\nimport { ShadeElement } from './ShadeElement';\nimport { Root } from './styles';\nimport type { ShadeProps } from './types';\n\nexport const Shade: FC = memo(({ 'data-testid': testId, colorName, ...shadeElementProps }) => (\n \n \n {colorName}\n \n));\n","import { DiscountTagFilled } from '@ori-ui/icons';\nimport { Link, Typography, styled } from '@ori-ui/mui';\n\nexport const Root = styled('li')(({ theme }) => ({\n padding: theme.spacing(3, 0),\n position: 'relative',\n boxSizing: 'border-box',\n margin: theme.spacing(0, 3),\n '& + li': {\n borderTop: `2px solid ${theme.palette.grey[100]}`,\n },\n}));\n\nexport const StyledMiniBagWrapper = styled('div')({\n display: 'flex',\n color: '#999',\n textDecoration: 'none',\n});\n\nexport const ImgLink = styled('a')(({ theme }) => ({\n padding: theme.spacing(3, 0),\n marginRight: theme.spacing(2),\n borderRadius: 5,\n position: 'relative',\n overflow: 'hidden',\n}));\n\nexport const StyledItemDescription = styled('div')({\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n textDecoration: 'none',\n maxWidth: 'calc(100% - 90px)',\n});\n\nexport const StyledItemInfoLink = styled(Link)(({ theme }) => ({\n display: 'flex',\n textDecoration: 'none',\n maxHeight: 40,\n overflow: 'hidden',\n}));\n\nexport const StyledName = styled(Typography)({\n maxWidth: 'calc(100% - 38px)',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n});\n\nexport const Discount = styled('div')(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n flexShrink: 0,\n width: 25,\n height: 25,\n marginLeft: 'auto',\n border: '0',\n color: theme.palette.offer.contrastText,\n borderRadius: '50%',\n backgroundColor: theme.palette.offer.main,\n}));\n\nexport const DiscountIcon = styled(DiscountTagFilled)(({ theme }) => ({\n fontSize: theme.typography.pxToRem(15),\n}));\n\nexport const StyledItemDetails = styled('div')({\n display: 'flex',\n marginTop: 'auto',\n textDecoration: 'none',\n});\n\nexport const StyledQuantityBlock = styled(Typography)({\n marginRight: 'auto',\n alignSelf: 'flex-end',\n});\n\nexport const StyledPriceBlock = styled('div')({\n marginLeft: 'auto',\n marginTop: 'auto',\n});\n\nexport const StyledPrice = styled(Typography)(({ theme }) => ({\n fontWeight: 'bold',\n color: theme.palette.text.secondary,\n whiteSpace: 'nowrap',\n}));\n\nexport const StyledPriceOld = styled(Typography)(({ theme }) => ({\n textAlign: 'right',\n textDecoration: 'line-through',\n fontSize: theme.typography.pxToRem(12),\n color: theme.palette.text.disabled,\n}));\n\nexport const ItemShadeWrapper = styled('div')(({ theme }) => ({\n display: 'flex',\n gap: theme.spacing(2),\n}));\n","import type { ShoppingBagItem } from '@ori-events/basket-updated';\nimport { Typography, useTheme } from '@ori-ui/mui';\nimport { Placement } from '@ori/analytics-data';\nimport { CheckoutImage } from '@ori/checkout-ui';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\nimport { useCallback } from 'react';\n\nimport type { HandleQuantityChangeOptions } from '../../types';\nimport { removeBasketItem, showErrorNotification, updateBasketItem } from '../../utils';\nimport { FormattedMessage } from '../FormattedMessage';\nimport { QuantityPicker } from '../QuantityPicker';\nimport { RemoveButton } from '../RemoveButton';\nimport { Shade } from '../Shade';\nimport {\n Discount,\n DiscountIcon,\n ImgLink,\n ItemShadeWrapper,\n Root,\n StyledItemDescription,\n StyledItemDetails,\n StyledItemInfoLink,\n StyledMiniBagWrapper,\n StyledName,\n StyledPrice,\n StyledPriceBlock,\n StyledPriceOld,\n StyledQuantityBlock,\n} from './styles';\n\nexport const Item: FC = ({\n itemCode,\n itemDescription,\n itemImageSrc,\n itemDetailPath,\n itemType,\n requestedQuantity,\n totalOriginalPrice,\n totalPrice,\n canBeDeleted,\n lineNumber,\n canBeModified,\n canBeReduced,\n maxQuantity,\n colorHexCode,\n colorImageSrc,\n itemColor,\n}) => {\n const { getTestId } = useTestId();\n const theme = useTheme();\n\n const removeItemHandler = useCallback(async () => {\n try {\n // setState({\n // isLoading: true,\n // });\n await removeBasketItem({\n itemCode,\n lineNumber,\n placement: Placement.Minibag,\n previousQuantity: requestedQuantity,\n });\n } catch (error: unknown) {\n // loading state & error already solved in shopping context\n // logError(error);\n // setState({\n // isLoading: false,\n // });\n }\n }, [itemCode, lineNumber, requestedQuantity]);\n\n const handleQuantityChange = useCallback(\n async ({\n itemCode: code,\n lineNumber: line,\n quantity: currentQuantity,\n previousQuantity,\n }: HandleQuantityChangeOptions) => {\n if (currentQuantity === 0) {\n try {\n await removeItemHandler();\n } catch (error) {\n showErrorNotification('genericError');\n }\n } else {\n try {\n await updateBasketItem({\n itemCode: code,\n lineNumber: line,\n placement: Placement.Minibag,\n previousQuantity,\n quantity: currentQuantity,\n });\n } catch (error) {\n showErrorNotification('genericError');\n }\n }\n },\n [removeItemHandler],\n );\n\n const partialId = `${lineNumber}-${itemCode}-${itemType}`;\n\n return (\n \n {canBeDeleted ? (\n \n ) : null}\n \n \n \n \n {itemDescription}\n {totalOriginalPrice ? (\n \n \n \n ) : null}\n \n \n \n {itemCode}\n \n {(colorHexCode || colorImageSrc) && itemColor ? (\n \n ) : null}\n \n \n {!canBeReduced && !canBeModified ? (\n \n :{requestedQuantity}\n \n ) : (\n \n )}\n \n {totalOriginalPrice ? {totalOriginalPrice} : null}\n {totalPrice}\n \n \n \n \n \n );\n};\n","import * as BasketUpdated from '@ori-events/basket-updated';\nimport * as RemoveBasketItem from '@ori-events/remove-basket-item';\nimport type { Placement } from '@ori/analytics-data';\n\ninterface RemoveBasketItemData extends RemoveBasketItem.Data {\n previousQuantity?: number;\n itemCode: string;\n placement: Placement;\n}\n\nexport const removeBasketItem = async (detail: RemoveBasketItemData) =>\n new Promise((resolve) => {\n const handleResolve = (() => {\n window.removeEventListener(BasketUpdated.Name, handleResolve);\n resolve();\n }) as EventListener;\n\n window.addEventListener(BasketUpdated.Name, handleResolve);\n\n const event = new CustomEvent(RemoveBasketItem.Name, {\n detail,\n });\n window.dispatchEvent(event);\n });\n","import * as BasketUpdated from '@ori-events/basket-updated';\nimport * as UpdateBasketItem from '@ori-events/update-basket-item';\nimport * as UpdateBasketItemFailed from '@ori-events/update-basket-item-failed';\nimport type { Placement, UpdateBasketItemAnalyticsData } from '@ori/analytics-data';\n\ninterface UpdateBasketItemData extends UpdateBasketItem.Data, UpdateBasketItemAnalyticsData {}\n\ninterface UpdateBasketItemOptions {\n itemCode: string;\n lineNumber: number;\n placement: Placement;\n previousQuantity: number;\n quantity: number;\n}\n\nexport const updateBasketItem = async ({\n itemCode,\n lineNumber,\n placement,\n previousQuantity,\n quantity,\n}: UpdateBasketItemOptions) =>\n new Promise((resolve, reject) => {\n const listener = ((event: BasketUpdated.Event | UpdateBasketItemFailed.Event) => {\n window.removeEventListener(BasketUpdated.Name, listener);\n window.removeEventListener(UpdateBasketItemFailed.Name, listener);\n\n const { detail } = event;\n if (UpdateBasketItemFailed.isUpdateBasketItemErrorResponse(detail)) {\n reject(new Error(`update-basket-item error: ${detail.message}`));\n } else {\n resolve();\n }\n }) as EventListener;\n\n window.addEventListener(BasketUpdated.Name, listener);\n window.addEventListener(UpdateBasketItemFailed.Name, listener);\n\n const eventToTrigger = new CustomEvent(UpdateBasketItem.Name, {\n detail: {\n lineNumber,\n quantity,\n previousQuantity,\n newQuantity: quantity,\n itemCode,\n placement,\n },\n });\n window.dispatchEvent(eventToTrigger);\n });\n","import { styled, alpha } from '@ori-ui/mui';\n\nimport { centeredFlexStyles } from '../../constants';\nimport type { LoadingOverlayProps } from './types';\n\nexport const Root = styled('div')<{ ownerState: LoadingOverlayProps }>(\n ({ ownerState: { isBasketSharingEnabled }, theme }) => ({\n ...centeredFlexStyles,\n position: 'absolute',\n top: theme.spacing(13),\n bottom: theme.spacing(9),\n width: '100%',\n height: `calc(100% - ${theme.spacing(28 + (isBasketSharingEnabled ? 11 : 0))})`, // 100% - (header + footer height)\n background: alpha(theme.palette.common.white, 0.5),\n zIndex: 999,\n }),\n);\n","import type { FC } from 'react';\n\nimport { Loader } from '../Loader';\nimport { Root } from './styles';\nimport type { LoadingOverlayProps } from './types';\n\nexport const LoadingOverlay: FC = (props) => (\n \n \n \n);\n","import { List, styled, ScopedCssBaseline } from '@ori-ui/mui';\n\nimport { basePositionStyles } from '../../constants';\n\nexport const minibagWidthStyle = 'var(--minibag-desktop-width, 400px)';\n\nexport const Root = styled('div')<{ ownerState: { breakpointIndex: number; useOpenedMinibagOnDesktop: boolean } }>(\n ({ theme, ownerState }) => ({\n ...basePositionStyles,\n background: theme.palette.background.paper,\n boxShadow: theme.shadows[2],\n boxSizing: 'border-box',\n display: 'flex',\n flexDirection: 'column',\n left: 'auto',\n maxWidth: 'calc(100vw - 40px)',\n width: ownerState.useOpenedMinibagOnDesktop && ownerState.breakpointIndex === 2 ? minibagWidthStyle : '400px',\n zIndex: 1,\n }),\n);\n\nexport const ItemsWrapper = styled(ScopedCssBaseline)(({ theme }) => ({\n position: 'relative',\n display: 'block',\n boxSizing: 'border-box',\n overflow: 'hidden',\n flex: 1,\n background: theme.palette.background.paper,\n}));\n\nexport const EmptyBag = styled('div')(({ theme }) => ({\n position: 'inherit',\n top: '40%',\n textAlign: 'center',\n color: theme.palette.text.secondary,\n}));\n\nexport const Items = styled(List)<{ ownerState: { isBasketSharingEnabled: boolean | undefined } }>(\n ({ theme, ownerState: { isBasketSharingEnabled } }) => ({\n boxSizing: 'border-box',\n listStyleType: 'none',\n maxHeight: '100%',\n overflow: 'auto',\n paddingTop: theme.spacing(13),\n paddingBottom: theme.spacing(isBasketSharingEnabled ? 26 : 15),\n overscrollBehavior: 'contain',\n }),\n);\n","import type { ShoppingBagItem } from '@ori-events/basket-updated';\nimport { Typography } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\n\nimport { Footer } from '../Footer';\nimport { FormattedMessage } from '../FormattedMessage';\nimport { Header } from '../Header';\nimport { Item } from '../Item';\nimport { LoadingOverlay } from '../LoadingOverlay';\nimport { EmptyBag, Items, ItemsWrapper, Root } from './styles';\nimport type { MiniBagProps } from './types';\n\nexport const MiniBag: FC = ({\n breakpointIndex,\n isBasketSharingEnabled,\n items,\n isDataLoaded,\n isLoading,\n onMouseEnter,\n onMouseLeave,\n useOpenedMinibagOnDesktop,\n}) => {\n const quantity = items.reduce((total, current) => total + current.requestedQuantity, 0);\n const { getTestIdProps } = useTestId();\n const ownerState = { breakpointIndex, useOpenedMinibagOnDesktop };\n const itemsOwnerState = { isBasketSharingEnabled };\n const rootProps = { onMouseEnter, onMouseLeave, ownerState, ...getTestIdProps('content') };\n const isSharingButtonActive = items.length > 0;\n const footerProps = { isBasketSharingEnabled, isSharingButtonActive };\n\n return (\n \n
\n {isLoading || !isDataLoaded ? : null}\n \n {items.length > 0 && (\n \n {items.map((item: ShoppingBagItem) => (\n \n ))}\n \n )}\n {isDataLoaded && items.length === 0 ? (\n \n \n \n \n \n - -\n \n \n ) : null}\n \n