{"version":3,"file":"61.chunk.js","mappings":"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","sources":["webpack://oriminishoppingbagapp/../../../src/containers/ApiProvider.tsx","webpack://oriminishoppingbagapp/../../../src/constants/defaultTranslations.ts","webpack://oriminishoppingbagapp/../../../src/contexts/miniBagConfigurationContext.ts","webpack://oriminishoppingbagapp/../../src/constants-generated.ts","webpack://oriminishoppingbagapp/../../src/logger.ts","webpack://oriminishoppingbagapp/../../../src/hooks/useTranslations.ts","webpack://oriminishoppingbagapp/../../../src/hooks/useMiniBag.ts","webpack://oriminishoppingbagapp/../../../src/hooks/useBreakpointIndex.ts","webpack://oriminishoppingbagapp/../../../src/components/FormattedMessage.tsx","webpack://oriminishoppingbagapp/../../../src/utils/showErrorNotification.ts","webpack://oriminishoppingbagapp/../../../src/utils/triggerShareItemClickEvent.ts","webpack://oriminishoppingbagapp/../../../src/hooks/useBasketSharing.ts","webpack://oriminishoppingbagapp/../../../src/utils/getSharedContent.ts","webpack://oriminishoppingbagapp/../../../src/constants/styles.ts","webpack://oriminishoppingbagapp/../../../../src/components/Loader/styles.ts","webpack://oriminishoppingbagapp/../../../../src/components/Loader/Loader.tsx","webpack://oriminishoppingbagapp/../../../../src/components/SharingWrapper/SharingWrapper.tsx","webpack://oriminishoppingbagapp/../../../../src/components/Footer/styles.ts","webpack://oriminishoppingbagapp/../../../../src/components/Footer/Footer.tsx","webpack://oriminishoppingbagapp/../../../../src/components/Header/styles.ts","webpack://oriminishoppingbagapp/../../../../src/components/Header/Header.tsx","webpack://oriminishoppingbagapp/../../../../src/components/LoadingOverlay/styles.ts","webpack://oriminishoppingbagapp/../../../../src/components/LoadingOverlay/LoadingOverlay.tsx","webpack://oriminishoppingbagapp/../../../src/utils/mapShoppingBagItem.ts","webpack://oriminishoppingbagapp/../../../src/utils/updateBasketItem.ts","webpack://oriminishoppingbagapp/../../../../src/components/SectionItem/useControlledQuantityPicker.ts","webpack://oriminishoppingbagapp/../../../src/utils/removeBasketItem.ts","webpack://oriminishoppingbagapp/../../../../src/components/SectionItem/useRemoveHandler.ts","webpack://oriminishoppingbagapp/../../../../src/components/SectionItem/SectionItem.tsx","webpack://oriminishoppingbagapp/../../../../src/components/SectionItem/useSectionItem.ts","webpack://oriminishoppingbagapp/../../../../src/components/MiniBag/styles.ts","webpack://oriminishoppingbagapp/../../../../src/components/MiniBag/MiniBag.tsx","webpack://oriminishoppingbagapp/../../../../src/components/MiniBagWrapper/styles.ts","webpack://oriminishoppingbagapp/../../../../src/components/MiniBagWrapper/MiniBagWrapper.tsx","webpack://oriminishoppingbagapp/../../../src/constants/index.ts","webpack://oriminishoppingbagapp/../../../src/containers/MiniBagConfigurationProvider.tsx","webpack://oriminishoppingbagapp/../../../src/hooks/useGetMiniBagConfigurationData.ts","webpack://oriminishoppingbagapp/../../../src/containers/MiniShoppingBagController.tsx","webpack://oriminishoppingbagapp/../../../src/utils/getTranslationsProps.ts","webpack://oriminishoppingbagapp/./src/App.tsx","webpack://oriminishoppingbagapp/./src/logger.ts","webpack://oriminishoppingbagapp/./src/appRender.tsx"],"sourcesContent":["import { basicSwrOptions } from '@ori/checkout-utils';\nimport { useServiceUrls } from '@ori/configuration-manager';\nimport { useEnvironment } from '@ori/environment';\nimport { SWRConfig } from '@ori/fetching';\nimport { useLanguage } from '@ori/i18n';\nimport { ApiClientProvider as StaticApiClientProvider } from '@ori/static-api-client-react';\nimport type { FC, PropsWithChildren } from 'react';\n\n// TO-DO: Maybe move these into @ori/checkout-utils?\nconst timeout = 10000;\nconst swrConfig = {\n focusThrottleInterval: 300000,\n suspense: false,\n ...basicSwrOptions,\n};\n\nexport const ApiProvider: FC = ({ children }) => {\n const { language } = useLanguage();\n const { tenant } = useEnvironment();\n const { staticApiUrl } = useServiceUrls(['staticApi']);\n const staticClientProps = { baseUrl: staticApiUrl, language, tenant, timeout };\n\n return (\n \n {children}\n \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 type { TranslationKey } from '../models/TranslationKey';\n\nexport type DefaultTranslations = Record;\n\nexport const defaultTranslations: DefaultTranslations = {\n basket: 'basket',\n cataloguePrice: 'Catalogue price',\n copy: 'Copy',\n copyLink: 'Copy Link',\n delete: 'Delete',\n emptyBag: 'Empty bag',\n emptyBagMessage: 'Looking pretty empty in your bag',\n goToBasket: 'Go to basket',\n linkCopied: 'Link copied!',\n qty: 'qty',\n quantity: 'Quantity',\n regularPrice: 'Regular price',\n shareWithBrandPartner: 'Share basket with brand partner',\n shareYourBasket: 'share your basket',\n superdeal: 'superdeal',\n unitPrice: 'Unit price',\n};\n\nexport const translationsNamespace = 'mini-shopping-bag';\n","import { useContext, createContext } from 'react';\n\nimport type { MiniBagConfigurationProps } from '../types';\n\nexport const miniBagConfigurationContext = createContext({\n miniBagConfiguration: undefined,\n isMiniBagConfigurationLoading: false,\n});\n\nexport const MiniBagConfigurationContextProvider = miniBagConfigurationContext.Provider;\n\nexport const useMiniBagConfiguration = () => useContext(miniBagConfigurationContext);\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 = 'mini-shopping-bag';\nexport const PACKAGE_NAME = '@ori/mini-shopping-bag';\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, getInfoLogger } 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 logInfo = getInfoLogger(APP_NAME);\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","/* eslint-disable node/callback-return -- TODO: fix later */\nimport * as ToggleMenuFlyout from '@ori-events/toggle-menu-flyout';\nimport { basketItemDefaultTranslations, type BasketItemTranslations } from '@ori/basket-item';\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 { translationsNamespace } from '../constants';\nimport { useMiniBagConfiguration } from '../contexts';\nimport { logDebug } from '../logger';\nimport type { MiniBagWrapperProps } from '../types';\nimport { useBreakpointIndex } from './useBreakpointIndex';\nimport { useTranslations } from './useTranslations';\n\ntype ToggleMenuCallbackResult = DebouncedFunc<() => void> | undefined;\n\nexport const useMiniBag = ({ useOpenedMinibagOnDesktop }: MiniBagWrapperProps) => {\n const { translations } = useTranslations();\n const breakpointIndex = useBreakpointIndex();\n const { isLoading, isLoaded, shoppingContext } = useShoppingContext();\n const { isMiniBagConfigurationLoading, miniBagConfiguration: { isBasketSharingEnabled = false } = {} } =\n useMiniBagConfiguration();\n const {\n isAnonymous = false,\n isConsultant = false,\n showBp: showBpGlobally = false,\n shoppingBag: { shoppingBagItems = [] } = {},\n } = shoppingContext ?? {};\n const { isDiscounted = false } = shoppingContext?.shoppingBag ?? {};\n const basketItemTranslations: BasketItemTranslations = {\n ...basketItemDefaultTranslations,\n ...translations,\n };\n const basketItemTranslationsNamespace = translationsNamespace;\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, isOpenedMinibagOnDesktop, isVisible, useOpenedMinibagOnDesktop };\n\n const minibagProps: MiniBagProps = {\n breakpointIndex,\n isBasketSharingEnabled: isBasketSharingEnabled && isLoaded && isAnonymous,\n isDataLoaded: isLoaded,\n useOpenedMinibagOnDesktop,\n isLoading: isLoading || isMiniBagConfigurationLoading,\n items,\n isConsultant,\n showBpGlobally,\n isDiscounted,\n basketItemTranslations,\n basketItemTranslationsNamespace,\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 { 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';\n\nimport { logDebug } from '../logger';\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 type { CopyLinkPanelProps, SharedContent, SharingPanelProps, VendorType } from '@ori/sharing-panel';\nimport { share, SharingCapability } from '@ori/sharing-panel';\nimport { useCallback, useState } from 'react';\n\nimport type { SharingWrapperProps } from '../components/SharingWrapper/types';\nimport { logDebug, mainLogger } from '../logger';\nimport { getSharedContent, showErrorNotification, translationKeys, triggerShareItemClickEvent } from '../utils';\nimport { useTranslations } from './useTranslations';\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 mainLogger.error(error as Error, { action: 'onShareButtonClick' });\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 { 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 isSharingButtonActive,\n onShareButtonClick,\n panelProps,\n popupProps,\n };\n};\n","/* eslint-disable @typescript-eslint/naming-convention -- HTTP header names */\nimport { axios } from '@ori/axios';\nimport type { SharingProps } from '@ori/sharing-panel';\n\nimport { logDebug } from '../logger';\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","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 { Dialog, dialogClasses } from '@ori-ui/components';\nimport { Share } from '@ori-ui/icons';\nimport { Button, styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport { lazy, Suspense } from 'react';\nimport type { FC } from 'react';\n\nimport { useBasketSharing } from '../../hooks';\nimport { logDebug } from '../../logger';\nimport { FormattedMessage } from '../FormattedMessage';\nimport { Loader } from '../Loader';\nimport type { SharingWrapperProps } from './types';\n\nconst CopyLinkPanel = lazy(async () => import('./CopyLinkPanel'));\nconst SharingPanel = lazy(async () => import('./SharingPanel'));\n\nconst 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\nexport const SharingWrapper: FC = (props) => {\n const { getTestId } = useTestId();\n const {\n copyLinkProps,\n isCopyLinkOpen,\n isPanelOpen,\n isPopupOpen,\n isSharingButtonActive,\n onShareButtonClick,\n panelProps,\n popupProps,\n } = useBasketSharing(props);\n\n logDebug('Rendering SharingWrapper.tsx, popupProps:', popupProps);\n\n return (\n <>\n }\n disabled={!isSharingButtonActive}\n sx={{ marginTop: 3 }}\n onClick={onShareButtonClick}\n >\n \n \n {isPopupOpen ? (\n \n <>\n {isPanelOpen ? (\n }>\n \n \n ) : null}\n {isCopyLinkOpen ? (\n }>\n \n \n ) : null}\n \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 { Button } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport { useCallback, type FC } from 'react';\n\nimport { useMiniBagConfiguration } from '../../contexts';\nimport { FormattedMessage } from '../FormattedMessage';\nimport { SharingWrapper } from '../SharingWrapper';\nimport { Root } from './styles';\nimport type { FooterProps } from './types';\n\nexport const Footer: FC = ({ isBasketSharingEnabled, isSharingButtonActive }) => {\n const { getTestId } = useTestId();\n const { miniBagConfiguration: { goToBasketUrl } = {} } = useMiniBagConfiguration();\n const handleButtonClick = useCallback(() => {\n window.location.href = goToBasketUrl ?? '';\n }, [goToBasketUrl]);\n\n return (\n \n \n \n \n {isBasketSharingEnabled ? : null}\n \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 { useMiniBagConfiguration } from '../../contexts';\nimport { FormattedMessage } from '../FormattedMessage';\nimport { BasketLink, Root } from './styles';\nimport type { HeaderProps } from './types';\n\nexport const Header: FC = ({ quantity }) => {\n const { miniBagConfiguration: { goToBasketUrl } = {} } = useMiniBagConfiguration();\n const { getTestId } = useTestId();\n\n return (\n \n \n \n ({quantity.toString()})\n \n \n \n );\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 type { ShoppingBagItem } from '@ori-events/basket-updated';\nimport type { BasketItemProps, BasketItemTranslations, ShadeProps } from '@ori/basket-item';\nimport { isNullableStringAGreaterThanB, stringEmptyToUndefined } from '@ori/checkout-utils';\nimport { isNonNullable } from '@ori/ts-utils';\n\ninterface CommonProps {\n testId: string;\n initialQuantity: number;\n isBrandPartner?: boolean;\n isDiscounted?: boolean;\n basketItemTranslations: Partial;\n basketItemTranslationsNamespace: string;\n}\n\ninterface MapShoppingBagItemProps {\n item: ShoppingBagItem;\n commonProps: CommonProps;\n}\n\nfunction determineIfIsOfferItem(item: ShoppingBagItem, commonProps: CommonProps, flagLabelClass: string): boolean {\n return (\n isNullableStringAGreaterThanB(item.basicCataloguePrice, item.price) ||\n flagLabelClass.includes('offer') ||\n Boolean(commonProps.isDiscounted)\n );\n}\n\nexport function mapShoppingBagItem(props: MapShoppingBagItemProps): BasketItemProps {\n const { item, commonProps } = props;\n const flag = isNonNullable(item.productFlag)\n ? {\n label: item.productFlag.label,\n labelClass: item.productFlag.labelClass,\n tooltip: item.productFlag.tooltip,\n }\n : undefined;\n const flagLabelClass = flag?.labelClass ?? 'no';\n const theItemIsOfferItem: boolean = determineIfIsOfferItem(item, commonProps, flagLabelClass);\n\n const shade: ShadeProps | null | undefined =\n stringEmptyToUndefined(item.colorHexCode) === undefined && stringEmptyToUndefined(item.colorImageSrc) === undefined\n ? undefined\n : {\n hexColors: item.colorHexCode?.split(',').filter((hexCode) => Boolean(hexCode)) ?? undefined,\n imageUrl: item.colorImageSrc ?? undefined,\n shadeName: stringEmptyToUndefined(item.itemColor),\n };\n\n return {\n basicCataloguePrice: stringEmptyToUndefined(item.basicCataloguePrice),\n bp: item.bp,\n brand: stringEmptyToUndefined(item.itemBrand),\n bundleItems: undefined,\n buttons: undefined,\n bv: undefined,\n cataloguePrice: stringEmptyToUndefined(item.price),\n code: item.itemCode,\n flags: flag === undefined ? undefined : [flag],\n image: stringEmptyToUndefined(item.itemImageSrc),\n isAvailable: item.isAvailable,\n isOfferColor: theItemIsOfferItem,\n isSmall: true,\n lineNumber: item.lineNumber,\n maxQuantity: item.maxQuantity,\n minQuantity: item.canBeDeleted ? (item.canBeReduced ? 0 : commonProps.initialQuantity) : 1,\n name: item.itemDescription,\n points: stringEmptyToUndefined(item.points),\n priceName: commonProps.isBrandPartner ? 'cataloguePrice' : 'regularPrice',\n quantity: item.quantity,\n quantityPickerDisabled: !item.isAvailable || !item.canBeModified,\n shade,\n showBp: false,\n testId: commonProps.testId,\n totalPrice: item.totalPrice,\n translations: commonProps.basketItemTranslations,\n translationsNamespace: commonProps.basketItemTranslationsNamespace,\n type: item.itemType,\n unitPrice: stringEmptyToUndefined(item.unitPrice),\n url: stringEmptyToUndefined(item.itemDetailPath),\n };\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 type { QuantityPickerChangeSource, QuantityPickerValue } from '@ori-ui/components';\nimport { Placement } from '@ori/analytics-data';\nimport { useLogger } from '@ori/logger';\nimport { useCallback, useMemo } from 'react';\n\nimport { logDebug } from '../../logger';\nimport { showErrorNotification, updateBasketItem } from '../../utils';\n\nexport interface ControlledQuantityPickerProps {\n canBeDeleted: boolean;\n canBeReduced: boolean;\n initialQuantity: number;\n itemCode: string;\n lineNumber: number;\n maxQuantity: number;\n quantity: number;\n removeItemHandler: () => Promise;\n}\n\ninterface HandleQuantityChangeOptions {\n itemCode: string;\n lineNumber: number;\n previousQuantity: number;\n quantity: number;\n}\n\nexport const useControlledQuantityPicker = ({\n canBeDeleted,\n canBeReduced,\n initialQuantity,\n itemCode,\n lineNumber,\n maxQuantity,\n quantity,\n removeItemHandler,\n}: ControlledQuantityPickerProps) => {\n const logger = useLogger('useControlledQuantityPicker');\n const minQuantity = useMemo(\n () => (canBeDeleted ? (canBeReduced ? 0 : initialQuantity) : 1),\n [canBeDeleted, canBeReduced, initialQuantity],\n );\n\n /**\n * This handler is called when the quantity is changed\n */\n const updateQuantityHandler = useCallback(\n async ({\n itemCode: code,\n lineNumber: line,\n quantity: currentQuantity,\n previousQuantity,\n }: HandleQuantityChangeOptions) => {\n logDebug(\n `updateQuantityHandler triggered for ${code} in line ${line} with quantity ${currentQuantity} and previous quantity was ${previousQuantity}.`,\n );\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 if (error instanceof Error) {\n logger.error(error);\n } else {\n const newError: Error = new Error('updateQuantityHandler Error', { cause: error });\n logger.error(newError);\n }\n }\n },\n [logger],\n );\n\n /**\n * This handler is called when the quantity is changed.\n */\n const quantityChangeHandler = useCallback(\n async (inputValue: QuantityPickerValue) => {\n logDebug(\n `quantityChangeHandler triggered for ${itemCode} in line ${lineNumber} with input value ${inputValue} and quantity is ${quantity}.`,\n );\n // we do all checks one more time even this is done in the component\n // do not trigger anything if the input value is not a number and equal or greater than 0\n if (typeof inputValue !== 'number' || (typeof inputValue === 'number' && inputValue < 0)) {\n return;\n }\n let currentValue = inputValue;\n // remove item if the quantity is 0\n if (currentValue === 0) {\n void removeItemHandler();\n\n return;\n }\n // check min value\n if (currentValue < minQuantity) {\n currentValue = minQuantity;\n logDebug(`Current value was limited to min quantity ${minQuantity}.`);\n }\n // check max value\n if (currentValue > maxQuantity) {\n currentValue = maxQuantity;\n logDebug(`Current value was limited to min quantity ${minQuantity}.`);\n }\n // there was no change in quantity\n if (currentValue === quantity) {\n return;\n }\n\n await updateQuantityHandler({\n itemCode,\n lineNumber,\n quantity: currentValue,\n previousQuantity: initialQuantity,\n });\n },\n [\n initialQuantity,\n itemCode,\n lineNumber,\n maxQuantity,\n minQuantity,\n quantity,\n removeItemHandler,\n updateQuantityHandler,\n ],\n );\n\n /**\n * This is the callback that is passed to the QuantityPicker component.\n */\n const onQuantityChange = useCallback(\n (inputValue: QuantityPickerValue, id: string, source: QuantityPickerChangeSource) => {\n logDebug(`QuantityPicker.changeQuantity() -> inputValue: ${inputValue}, id: ${id}, source: ${source}`);\n quantityChangeHandler(inputValue).catch((error) => {\n if (error instanceof Error) {\n logger.error(error);\n } else {\n const newError: Error = new Error('onQuantityChange Error', { cause: error });\n logger.error(newError);\n }\n showErrorNotification();\n });\n },\n [quantityChangeHandler, logger],\n );\n\n return {\n onQuantityChange,\n quantityChangeHandler,\n updateQuantityHandler,\n };\n};\n","import * as BasketUpdated from '@ori-events/basket-updated';\nimport * as RemoveBasketItem from '@ori-events/remove-basket-item';\nimport type { RemoveBasketItemAnalyticsData } from '@ori/analytics-data';\n\ntype RemoveBasketItemData = RemoveBasketItem.Data & RemoveBasketItemAnalyticsData;\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, { detail });\n window.dispatchEvent(event);\n });\n","import { Placement } from '@ori/analytics-data';\nimport { useLogger } from '@ori/logger';\nimport { useCallback } from 'react';\n\nimport { removeBasketItem } from '../../utils';\n\ninterface RemoveProps {\n itemCode: string;\n lineNumber: number;\n outOfStock: boolean;\n requestedQuantity: number;\n}\n\nexport const useRemoveHandler = ({ itemCode, lineNumber, outOfStock, requestedQuantity }: RemoveProps) => {\n const logger = useLogger('useRemoveHandler');\n\n const removeItemHandler = useCallback(async () => {\n const previousQuantity = requestedQuantity;\n try {\n await removeBasketItem({ itemCode, lineNumber, outOfStock, placement: Placement.Minibag, previousQuantity });\n } catch (error) {\n logger.error(error as Error);\n }\n }, [itemCode, lineNumber, logger, outOfStock, requestedQuantity]);\n\n return {\n removeItemHandler,\n };\n};\n","import type { ShoppingBagItem } from '@ori-events/basket-updated';\nimport { BasketItem } from '@ori/basket-item';\nimport type { FC } from 'react';\n\nimport { type SectionMiniBagProps, useSectionItem } from './useSectionItem';\n\ninterface SectionItemProps {\n item: ShoppingBagItem;\n sectionMiniBagProps: SectionMiniBagProps;\n}\n\nexport const SectionItem: FC = ({ item, sectionMiniBagProps }) => {\n const { basketItem } = useSectionItem({ item, sectionMiniBagProps });\n\n return ;\n};\n","import type { ShoppingBagItem } from '@ori-events/basket-updated';\nimport type { BasketItemProps, BasketItemTranslations } from '@ori/basket-item';\nimport useTestId from '@ori/testid-generator';\nimport { useEffect, useMemo, useState } from 'react';\n\nimport { useTranslations } from '../../hooks';\nimport { logDebug } from '../../logger';\nimport { mapShoppingBagItem } from '../../utils';\nimport { useControlledQuantityPicker } from './useControlledQuantityPicker';\nimport { useRemoveHandler } from './useRemoveHandler';\n\nexport interface SectionMiniBagProps {\n isConsultant: boolean;\n isDiscounted: boolean;\n basketItemTranslations: Partial;\n basketItemTranslationsNamespace: string;\n}\n\ninterface SectionItemHookProps {\n item: ShoppingBagItem;\n sectionMiniBagProps: SectionMiniBagProps;\n}\n\nexport const useSectionItem = (props: SectionItemHookProps) => {\n const { item, sectionMiniBagProps } = props;\n const { formatMessage } = useTranslations();\n const { getTestId } = useTestId();\n const { basketItemTranslations, basketItemTranslationsNamespace, isConsultant, isDiscounted } = sectionMiniBagProps;\n const [initialQuantity, setInitialQuantity] = useState(-1);\n const {\n canBeDeleted,\n canBeReduced,\n itemCode,\n itemDescription,\n itemType,\n lineNumber,\n maxQuantity,\n quantity,\n requestedQuantity,\n } = item;\n\n const partialId = `${lineNumber}-${itemCode}-${itemType}`;\n logDebug(`Ⓜ️ ${partialId}`);\n\n // delete button\n const { removeItemHandler } = useRemoveHandler({\n itemCode,\n lineNumber,\n outOfStock: requestedQuantity > quantity,\n requestedQuantity,\n });\n\n // quantity stuff\n const { onQuantityChange } = useControlledQuantityPicker({\n canBeDeleted,\n canBeReduced,\n initialQuantity,\n itemCode,\n lineNumber,\n maxQuantity,\n quantity,\n removeItemHandler,\n });\n\n useEffect(() => {\n setInitialQuantity((prev) => (prev === -1 ? quantity : prev));\n }, [quantity]);\n\n // map item to basket item\n const basketItem: BasketItemProps = useMemo(() => {\n const data = mapShoppingBagItem({\n item,\n commonProps: {\n testId: `${getTestId('item')}-${partialId}`,\n isBrandPartner: isConsultant,\n isDiscounted,\n basketItemTranslations,\n basketItemTranslationsNamespace,\n initialQuantity,\n },\n });\n\n data.buttons = {\n remove: {\n text: formatMessage('delete'),\n title: `${formatMessage('delete')} ${itemDescription}`,\n visible: true,\n onClick: removeItemHandler,\n },\n };\n data.onQuantityChange = onQuantityChange;\n\n return data;\n }, [\n basketItemTranslations,\n basketItemTranslationsNamespace,\n formatMessage,\n getTestId,\n initialQuantity,\n isConsultant,\n isDiscounted,\n item,\n itemDescription,\n onQuantityChange,\n partialId,\n removeItemHandler,\n ]);\n\n return {\n basketItem,\n };\n};\n","import { 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('div')<{ ownerState: { isBasketSharingEnabled: boolean | undefined } }>(\n ({ theme, ownerState: { isBasketSharingEnabled } }) => ({\n boxSizing: 'border-box',\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 { BasketSection } from '@ori/basket-item';\nimport useTestId from '@ori/testid-generator';\nimport { useMemo, type FC } from 'react';\n\nimport { Footer } from '../Footer';\nimport { FormattedMessage } from '../FormattedMessage';\nimport { Header } from '../Header';\nimport { LoadingOverlay } from '../LoadingOverlay';\nimport { SectionItem } from '../SectionItem';\nimport { EmptyBag, Items, ItemsWrapper, Root } from './styles';\nimport type { MiniBagProps } from './types';\n\nexport const MiniBag: FC = ({\n breakpointIndex,\n isBasketSharingEnabled,\n items,\n isConsultant,\n isDiscounted,\n isDataLoaded,\n isLoading,\n basketItemTranslations,\n basketItemTranslationsNamespace,\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 const sectionMiniBagProps = useMemo(\n () => ({ basketItemTranslations, basketItemTranslationsNamespace, isConsultant, isDiscounted }),\n [basketItemTranslations, basketItemTranslationsNamespace, isConsultant, isDiscounted],\n );\n\n return (\n \n
\n {isLoading || !isDataLoaded ? : null}\n \n {items.length > 0 && (\n \n \n {items.map((item: ShoppingBagItem) => (\n \n ))}\n \n \n )}\n {isDataLoaded && items.length === 0 ? (\n \n \n \n \n \n - -\n \n \n ) : null}\n \n