{"version":3,"file":"416.chunk.js","mappings":"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","sources":["webpack://oribasketbubble/../../../src/constants/index.ts","webpack://oribasketbubble/../../../src/utils/getConfiguration.ts","webpack://oribasketbubble/../../../src/utils/isMinibagVisibile.ts","webpack://oribasketbubble/../../../src/types/TestId.ts","webpack://oribasketbubble/../../../../src/components/Bubble/styles.ts","webpack://oribasketbubble/../../../../src/components/Bubble/Bubble.tsx","webpack://oribasketbubble/../../../src/hooks/useTranslations.ts","webpack://oribasketbubble/../../../../src/components/BubbleGroup/styles.ts","webpack://oribasketbubble/../../../../src/components/BubbleGroup/BubbleGroup.tsx","webpack://oribasketbubble/../../../src/constants/defaultTranslations.ts","webpack://oribasketbubble/../../../src/utils/getTranslationsProps.ts","webpack://oribasketbubble/../../../src/containers/BasketBubbleController.tsx","webpack://oribasketbubble/./src/App.tsx","webpack://oribasketbubble/./src/containers/ErrorBoundary.ts","webpack://oribasketbubble/./src/appRender.tsx"],"sourcesContent":["export * from './defaultTranslations';\n\nexport const APP_NAME = 'basket-bubble';\n\nexport const EMOTION_CACHE_KEY = `${APP_NAME}-emotion-cache-key`;\n\nexport const IDENTITY_CLIENT_ID = 'SPADev';\n\n// Bubble settings\nexport const bubbleDuration = 2000;\nexport const bubbleHeight = 94;\n","import { parseSpaConfig } from '@ori-appshell/config';\nimport { getDebugLogger, getInfoLogger, normalizeSlashChars } from '@ori/checkout-utils';\nimport type { RequiredConfigProps, ToIndexed } from '@ori/checkout-utils';\n\nimport { APP_NAME } from '../constants';\nimport type { AppConfiguration, NormalizeConfigurationMethod } from '../types';\n\nconst logDebug = getDebugLogger(APP_NAME);\nconst logInfo = getInfoLogger(APP_NAME);\n\n// Required props for parseSpaConfig method.\nconst requiredProps: RequiredConfigProps = ['currentLanguage', 'staticApiUrl', 'tenant'];\n\n/**\n * Normalizes some values in the raw parsed config.\n * @param parsedConfig Original config data returned by the parseSpaConfig method.\n * @returns Final normalized configuration.\n */\nexport const normalizeConfigData: NormalizeConfigurationMethod = (parsedConfig) => {\n const result: AppConfiguration = {\n ...parsedConfig,\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 = parseSpaConfig>(config, requiredProps);\n logDebug('parsed configuration', parsedConfig);\n\n return parsedConfig;\n};\n","// This might be outdated after recent changes - TODO\nexport const isMinibagVisible = () => {\n const element = document.querySelector('[data-testid=Checkout-shopping-mini-bag-fading-wrapper]');\n if (!element) {\n return false;\n }\n\n return window.getComputedStyle(element).visibility === 'visible';\n};\n","export enum TestId {\n // One particular add-to-basket notification bubble popup (multiple can be displayed at a time)\n Popup = 'popup',\n}\n","import { SHADOW_LEVEL3, styled } from '@ori-ui/mui';\n\nimport { bubbleHeight } from '../../constants';\n\nexport const BubbleWrapper = styled('div')(({ theme }) => ({\n background: theme.palette.common.white,\n border: `2px solid ${theme.palette.grey[100]}`,\n borderRadius: theme.spacing(2),\n boxShadow: SHADOW_LEVEL3,\n display: 'flex',\n height: bubbleHeight,\n marginBottom: theme.spacing(2),\n padding: theme.spacing(1),\n pointerEvents: 'auto',\n position: 'relative',\n width: theme.spacing(64),\n userSelect: 'none',\n}));\n\nexport const ImageWrapper = styled('div')(({ theme }) => ({\n borderRadius: theme.spacing(1, 0, 0, 1),\n flex: theme.spacing(0, 0, 16),\n marginRight: theme.spacing(2),\n overflow: 'hidden',\n position: 'relative',\n}));\n\nexport const Details = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flexStart',\n width: 216,\n});\n\nexport const Name = styled('div')(({ theme }) => ({\n color: theme.palette.text.primary,\n fontSize: theme.typography.body1.fontSize,\n fontWeight: 700,\n overflow: 'hidden',\n paddingTop: theme.spacing(2),\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n width: '100%',\n}));\n\nexport const Shade = styled('div')(({ theme }) => ({\n color: theme.palette.grey.A400,\n fontSize: theme.typography.caption.fontSize,\n}));\n\nexport const Shopping = styled('div')({\n alignItems: 'center',\n display: 'flex',\n marginTop: 'auto',\n});\n\nexport const Quantity = styled('div')(({ theme }) => ({\n color: theme.palette.text.secondary,\n flexGrow: 1,\n fontSize: theme.typography.caption.fontSize,\n}));\n\nexport const Price = styled('div')(({ theme }) => ({\n color: theme.palette.text.primary,\n fontSize: theme.typography.body1.fontSize,\n fontWeight: 700,\n marginLeft: 'auto',\n}));\n\nexport const Points = styled('div')(({ theme }) => ({\n background: theme.palette.offer.dark,\n borderRadius: '50%',\n bottom: theme.spacing(2),\n color: theme.palette.common.white,\n fontSize: theme.typography.body1.fontSize,\n fontWeight: 'bold',\n height: theme.spacing(7),\n lineHeight: theme.spacing(7),\n position: 'absolute',\n right: theme.spacing(2),\n textAlign: 'center',\n width: theme.spacing(7),\n}));\n","import { LastAddedItemMethod } from '@ori-events/basket-updated';\nimport { useTheme } from '@ori-ui/mui';\nimport { CheckoutImage } from '@ori/checkout-ui';\nimport useTestId from '@ori/testid-generator';\nimport type { MouseEvent, FC } from 'react';\n\nimport { useTranslations } from '../../hooks/useTranslations';\nimport { TestId } from '../../types';\nimport { BubbleWrapper, Details, ImageWrapper, Name, Points, Price, Quantity, Shade, Shopping } from './styles';\nimport { type BubbleProps } from './types';\n\nfunction ignoreClickEvent(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n}\n\nexport const Bubble: FC = ({ code, image, methodType, name, points, price, quantity }) => {\n const { getTestId } = useTestId();\n const theme = useTheme();\n const { formatMessage } = useTranslations();\n const { BUY_FOR_MONEY, BUY_FOR_POINTS } = LastAddedItemMethod;\n\n return (\n \n \n
\n {name}\n {code}\n \n \n {formatMessage('quantity')}: {quantity}\n \n {methodType === BUY_FOR_MONEY && {price}}\n {methodType === BUY_FOR_POINTS && {points}}\n \n
\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 { 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","import { styled } from '@ori-ui/mui';\n\nimport { bubbleHeight } from '../../constants';\n\nconst topNavHeightStyle = 'var(--top-nav-height, 0)';\n\nexport const BasketBubbleWrapper = styled('div')(({ theme }) => ({\n boxSizing: 'border-box',\n width: theme.spacing(64),\n marginTop: 10,\n pointerEvents: 'none',\n position: 'fixed',\n top: 0,\n right: 15,\n transform: `translate(0, ${topNavHeightStyle})`,\n transition: `transform var(--top-nav-height-animation), 0.3s ease-in-out`,\n zIndex: 10000,\n\n [theme.breakpoints.up('sm')]: {\n right: 30,\n },\n\n '& *': {\n boxSizing: 'border-box',\n },\n}));\n\nexport const AnimationWrapper = styled('div')<{\n ownerState: { state: string };\n}>(({ ownerState }) => ({\n transition: 'opacity 750ms',\n opacity: 0,\n\n ...(ownerState.state === 'entered' && {\n opacity: 1,\n }),\n\n ...(ownerState.state === 'exiting' && {\n opacity: 0,\n transition: 'margin-top 300ms 950ms, opacity 1250ms',\n marginTop: -(bubbleHeight + 10),\n }),\n}));\n","import type { LastAddedItemMethod } from '@ori-events/basket-updated';\nimport * as BasketUpdatedEvent from '@ori-events/basket-updated';\nimport * as ToggleMenuFlyoutEvent from '@ori-events/toggle-menu-flyout';\nimport { type FC } from 'react';\nimport { createRef, useEffect, useState } from 'react';\nimport { Transition, TransitionGroup } from 'react-transition-group';\nimport { v4 } from 'uuid';\n\nimport { bubbleDuration } from '../../constants';\nimport { isMinibagVisible } from '../../utils';\nimport { Bubble, type BubbleInstanceProps } from '../Bubble';\nimport { AnimationWrapper, BasketBubbleWrapper } from './styles';\n\nexport const BubbleGroup: FC = () => {\n const [bubbles, setBubbles] = useState([]);\n\n const removeBasketBubble = (bubbleId: string) => {\n setBubbles((currentBubbles) => currentBubbles.filter((currentBubble) => currentBubble.id !== bubbleId));\n };\n\n const onToggleMenuFlyout = ((event: ToggleMenuFlyoutEvent.Event) => {\n const { menuType } = event.detail;\n if (menuType === ToggleMenuFlyoutEvent.MenuTypes.Minibag && isMinibagVisible()) {\n // hide all bubbles when minibag is being opened\n setBubbles([]);\n }\n }) as EventListener;\n\n const onBasketUpdate = ((event: BasketUpdatedEvent.Event) => {\n // don't show bubble if not add-to-basket update or if minibag is visible\n if (!event.detail.lastAddedItem || isMinibagVisible()) {\n return;\n }\n\n const { itemCode, method } = event.detail.lastAddedItem;\n const { shoppingBagItems, offers } = event.detail.shoppingBag;\n const offersItems = offers.reduce(\n (acc: BasketUpdatedEvent.ShoppingBagItem[], offer: BasketUpdatedEvent.ShoppingBagOffer) => [\n ...acc,\n ...offer.items,\n ],\n [],\n );\n\n // proper typing for method -- TODO\n const methodType = method as unknown as LastAddedItemMethod;\n\n const item =\n methodType === BasketUpdatedEvent.LastAddedItemMethod.BUY_FOR_MONEY\n ? shoppingBagItems.find((product) => product.itemCode === itemCode)\n : offersItems.find((product) => product.itemCode === itemCode);\n\n if (!item) {\n return;\n }\n\n const bubble: BubbleInstanceProps = {\n id: v4(),\n code: item.itemCode,\n name: item.itemDescription,\n price: item.totalPrice,\n quantity: item.requestedQuantity,\n image: item.itemImageSrc,\n points: item.totalRedeemedPoints,\n methodType,\n nodeRef: createRef(),\n };\n setBubbles((currentBubbles) => [...currentBubbles, bubble]);\n setTimeout(() => removeBasketBubble(bubble.id), bubbleDuration);\n }) as EventListener;\n\n useEffect(() => {\n window.addEventListener(BasketUpdatedEvent.Name, onBasketUpdate);\n window.addEventListener(ToggleMenuFlyoutEvent.Name, onToggleMenuFlyout);\n\n return () => {\n window.removeEventListener(BasketUpdatedEvent.Name, onBasketUpdate);\n window.removeEventListener(ToggleMenuFlyoutEvent.Name, onToggleMenuFlyout);\n };\n });\n\n const timeoutSettings = {\n appear: 0,\n enter: 0,\n exit: 1250,\n };\n\n return (\n \n \n {bubbles.map(({ id, nodeRef, ...bubble }) => (\n \n {(state) => {\n const bubbleOwnerState = { state };\n\n return (\n \n \n \n );\n }}\n \n ))}\n \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 quantity: 'Quantity',\n};\n\nexport const translationsNamespace = 'basket-bubble';\n","import { getErrorLogger } from '@ori/checkout-utils';\nimport { type TranslationsContext } from '@ori/i18n';\n\nimport { defaultTranslations, translationsNamespace, APP_NAME } from '../constants';\nimport type { AppConfiguration } from '../types';\n\nconst logError = getErrorLogger(APP_NAME);\n\nexport const getTranslationsProps = ({ currentLanguage, staticApiUrl, tenant, translations }: AppConfiguration) => {\n const result: TranslationsContext = {\n clientFetchConfiguration: {\n baseUrl: staticApiUrl,\n onError: (error) => {\n logError('Error occured while loading translations.', String(error));\n },\n tenant,\n },\n currentLanguage,\n defaultTranslationsWithNamespaces: {\n [translationsNamespace]: defaultTranslations,\n },\n translationsWithNamespaces: translations ? { [translationsNamespace]: translations } : undefined,\n };\n\n return result;\n};\n","import type { ParsedConfigData } from '@ori/checkout-utils';\nimport { TranslationsNamespaceProvider, TranslationsProvider } from '@ori/i18n';\nimport { Team, TestIdProvider } from '@ori/testid-generator';\nimport { StrictMode, Suspense, type FC } from 'react';\n\nimport { BubbleGroup } from '../components';\nimport { APP_NAME, translationsNamespace } from '../constants';\nimport type { AppConfiguration } from '../types';\nimport { getTranslationsProps, normalizeConfigData } from '../utils';\n\nexport const BasketBubbleController: FC = (configuration) => {\n const usedConfiguration = normalizeConfigData(configuration as ParsedConfigData);\n const translationProps = getTranslationsProps(usedConfiguration);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { type AppConfiguration, BasketBubbleController } from '@ori/basket-bubble-lib';\nimport type { ParsedConfigData } from '@ori/checkout-utils';\nimport { type FC } from 'react';\n\nexport const App: FC> = (configuration) => (\n \n);\n","import { getErrorLogger } from '@ori/checkout-utils';\nimport { Component, type ReactNode } from 'react';\n\nimport { APP_NAME } from '../constants';\n\ninterface ErrorBoundaryProps {\n children: JSX.Element;\n}\n\ninterface ErrorBoundaryState {\n error?: Error;\n}\n\nconst logError = getErrorLogger(APP_NAME);\n\nexport class ErrorBoundary extends Component {\n override readonly state: ErrorBoundaryState = {};\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { error };\n }\n\n override render(): ReactNode {\n const { error }: ErrorBoundaryState = this.state;\n\n if (error) {\n logError(error);\n\n return null;\n }\n\n const { children }: ErrorBoundaryProps = this.props;\n\n return children;\n }\n}\n","import { ThemeProvider } from '@ori-ui/mui';\nimport { getConfiguration } from '@ori/basket-bubble-lib';\nimport { getDebugLogger } from '@ori/checkout-utils';\nimport { createRoot } from 'react-dom/client';\n\nimport { App } from './App';\nimport { APP_NAME, EMOTION_CACHE_KEY } from './constants';\nimport { ErrorBoundary } from './containers/ErrorBoundary';\n\nconst logDebug = getDebugLogger(APP_NAME);\n\n/**\n * React app renderer that is used when app is used as a standalone app\n */\nexport async function render(rootElement: HTMLElement) {\n const { config = '' } = rootElement.dataset;\n const appConfig = getConfiguration(config);\n\n if (process.env.NODE_ENV !== 'production' && process.env.REACT_APP_USE_REQUESTLY === '1') {\n logDebug('USING REQUESTLY');\n }\n\n createRoot(rootElement).render(\n \n \n \n \n ,\n );\n}\n"],"names":["APP_NAME","concat","logDebug","getDebugLogger","logInfo","getInfoLogger","requiredProps","getConfiguration","config","parsedConfig","parseSpaConfig","isMinibagVisible","element","document","querySelector","window","getComputedStyle","visibility","TestId","BubbleWrapper","styled","_ref","theme","background","palette","common","white","border","grey","borderRadius","spacing","boxShadow","SHADOW_LEVEL3","display","height","marginBottom","padding","pointerEvents","position","width","userSelect","ImageWrapper","_ref2","flex","marginRight","overflow","Details","flexDirection","justifyContent","Name","_ref3","color","text","primary","fontSize","typography","body1","fontWeight","paddingTop","textOverflow","whiteSpace","Shade","_ref4","A400","caption","Shopping","alignItems","marginTop","Quantity","_ref5","secondary","flexGrow","Price","_ref6","marginLeft","Points","_ref7","offer","dark","bottom","lineHeight","right","textAlign","ignoreClickEvent","event","preventDefault","stopPropagation","Bubble","code","image","methodType","name","points","price","quantity","getTestId","useTestId","useTheme","formatMessage","useTranslationsFromNamespace","BUY_FOR_MONEY","LastAddedItemMethod","BUY_FOR_POINTS","_jsxs","Popup","onClick","children","_jsx","CheckoutImage","component","src","alt","BasketBubbleWrapper","_defineProperty","boxSizing","top","transform","transition","zIndex","breakpoints","up","AnimationWrapper","ownerState","_objectSpread","opacity","state","BubbleGroup","_useState","useState","_useState2","_slicedToArray","bubbles","setBubbles","onToggleMenuFlyout","detail","menuType","ToggleMenuFlyoutEvent","Minibag","onBasketUpdate","lastAddedItem","_event$detail$lastAdd","itemCode","method","_event$detail$shoppin","shoppingBag","shoppingBagItems","offersItems","offers","reduce","acc","_toConsumableArray","items","item","BasketUpdatedEvent","find","product","bubble","id","v4","itemDescription","totalPrice","requestedQuantity","itemImageSrc","totalRedeemedPoints","nodeRef","createRef","currentBubbles","setTimeout","bubbleId","filter","currentBubble","useEffect","addEventListener","removeEventListener","timeoutSettings","appear","enter","exit","TransitionGroup","map","_objectWithoutProperties","_excluded","Transition","timeout","bubbleOwnerState","ref","defaultTranslations","translationsNamespace","logError","getErrorLogger","BasketBubbleController","configuration","result","currentLanguage","staticApiUrl","tenant","translations","usedConfiguration","normalizeSlashChars","translationProps","clientFetchConfiguration","baseUrl","onError","error","String","defaultTranslationsWithNamespaces","translationsWithNamespaces","undefined","StrictMode","Suspense","fallback","TestIdProvider","project","team","Team","Checkout","TranslationsProvider","TranslationsNamespaceProvider","namespace","App","ErrorBoundary","_Component","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","_inherits","_createClass","key","value","this","props","Component","async","render","rootElement","_rootElement$dataset$","dataset","appConfig","createRoot","ThemeProvider","enableCacheProvider","cacheKey","EMOTION_CACHE_KEY"],"sourceRoot":""}