{"version":3,"file":"519.chunk.js","mappings":"4RAAaA,EAAuB,CAClCC,SAAU,YCOCC,EAAiB,CAC5BC,OAAQ,I,UCWJC,GAAgBC,EAAAA,EAAAA,GAAO,MAAPA,EAAc,SAAAC,GAAA,IAAGC,EAAKD,EAALC,MAAK,MAAQ,CAClDC,QAAS,OACTC,SAAU,WACVC,MAAOH,EAAMI,QAAQ,IACrBC,OCxB0B,GDyB1BC,aAAcN,EAAMI,QAAQ,GAC5BG,QAASP,EAAMI,QAAQ,GACvBI,OAAQ,aAAFC,OAAeT,EAAMU,QAAQC,KAAK,MACxCC,aAAcZ,EAAMI,QAAQ,GAC5BS,WAAYb,EAAMU,QAAQI,OAAOC,MACjCC,UAAWC,EAAAA,GACZ,IAEKC,GAAepB,EAAAA,EAAAA,GAAO,MAAPA,EAAc,SAAAqB,GAAA,IAAGnB,EAAKmB,EAALnB,MAAK,MAAQ,CACjDoB,KAAMpB,EAAMI,QAAQ,EAAG,EAAG,IAC1BD,MAAOH,EAAMI,QAAQ,IACrBC,OAAQL,EAAMI,QAAQ,IACtBiB,YAAarB,EAAMI,QAAQ,GAC3BkB,SAAU,SACVV,aAAcZ,EAAMI,QAAQ,EAAG,EAAG,EAAG,GACrCS,WAAYb,EAAMU,QAAQC,KAAK,KAC/BT,SAAU,WACX,IAEKqB,GAAQzB,EAAAA,EAAAA,GAAO,MAAPA,CAAc,CAC1BK,MAAO,OACPqB,SAAU,OACVnB,OAAQ,OACRoB,UAAW,OACXC,UAAW,YAGPC,GAAmB7B,EAAAA,EAAAA,GAAO8B,EAAAA,EAAP9B,EAAiB,SAAA+B,GAAQ,MAAQ,CACxD3B,SAAU,WACV4B,IAAK,MACLC,KAAM,MACN5B,MAAO,MACPE,OAAQ,OACR2B,UAAW,wBACXC,MAPgDJ,EAAL7B,MAO9BU,QAAQC,KAAK,KAC3B,IAEKuB,GAAUpC,EAAAA,EAAAA,GAAO,MAAPA,CAAc,CAC5BG,QAAS,OACTkC,cAAe,SACfC,eAAgB,YAChBjC,MAAO,MAGHkC,GAAOvC,EAAAA,EAAAA,GAAO,MAAPA,EAAc,SAAAwC,GAAA,IAAGtC,EAAKsC,EAALtC,MAAK,MAAQ,CACzCG,MAAO,OACPoC,WAAYvC,EAAMI,QAAQ,GAC1BkB,SAAU,SACVW,MAAOjC,EAAMU,QAAQ8B,KAAKC,QAC1BC,SAAU1C,EAAM2C,WAAWC,QAAQ,IACnCC,WAAY,IACZC,aAAc,WACdC,WAAY,SACb,IAEKC,GAAQlD,EAAAA,EAAAA,GAAO,MAAPA,EAAc,SAAAmD,GAAA,IAAGjD,EAAKiD,EAALjD,MAAK,MAAQ,CAC1CiC,MAAOjC,EAAMU,QAAQC,KAAKuC,KAC1BR,SAAU1C,EAAM2C,WAAWC,QAAQ,IACpC,IAEKO,GAAWrD,EAAAA,EAAAA,GAAO,MAAPA,CAAc,CAC7BG,QAAS,OACTmD,WAAY,SACZC,UAAW,SAGPC,GAAWxD,EAAAA,EAAAA,GAAO,MAAPA,EAAc,SAAAyD,GAAA,IAAGvD,EAAKuD,EAALvD,MAAK,MAAQ,CAC7CwD,SAAU,EACVvB,MAAOjC,EAAMU,QAAQ8B,KAAKiB,UAC1Bf,SAAU1C,EAAM2C,WAAWC,QAAQ,IACpC,IAEKc,GAAQ5D,EAAAA,EAAAA,GAAO,MAAPA,EAAc,SAAA6D,GAAA,IAAG3D,EAAK2D,EAAL3D,MAAK,MAAQ,CAC1C4D,WAAY,OACZ3B,MAAOjC,EAAMU,QAAQ8B,KAAKC,QAC1BC,SAAU1C,EAAM2C,WAAWC,QAAQ,IACnCC,WAAY,IACb,IAEKgB,GAAS/D,EAAAA,EAAAA,GAAO,MAAPA,EAAc,SAAAgE,GAAA,IAAG9D,EAAK8D,EAAL9D,MAAK,MAAQ,CAC3CE,SAAU,WACV6D,MAAO/D,EAAMI,QAAQ,GACrB4D,OAAQhE,EAAMI,QAAQ,GACtBD,MAAOH,EAAMI,QAAQ,GACrBC,OAAQL,EAAMI,QAAQ,GACtBQ,aAAc,MACdC,WAAYb,EAAMU,QAAQuD,MAAMC,KAChCjC,MAAOjC,EAAMU,QAAQI,OAAOC,MAC5B2B,SAAU1C,EAAM2C,WAAWC,QAAQ,IACnCC,WAAY,OACZsB,WAAYnE,EAAMI,QAAQ,GAC1BgE,UAAW,SACZ,IAEYC,EAA2B,SAAHC,GAQ/B,IAPJC,EAAID,EAAJC,KACAC,EAAIF,EAAJE,KACA9E,EAAQ4E,EAAR5E,SACA+E,EAAKH,EAALG,MACAC,EAAKJ,EAALI,MACAC,EAAML,EAANK,OACAC,EAAUN,EAAVM,WAEQC,GAAcC,EAAAA,EAAAA,KAAdD,UACRE,GAAoBC,EAAAA,EAAAA,KAAbC,GAA6BC,EAAAA,EAAAA,GAAAH,EAAA,GAApB,GACRI,EAAkCC,EAAAA,GAAAA,cAAnBC,EAAmBD,EAAAA,GAAAA,eAE1C,OACEE,EAAAA,EAAAA,MAACzF,EAAa,CAAC,cAAagF,EAAU,SAASU,SAAA,EAC7CC,EAAAA,EAAAA,KAACtE,EAAY,CAAAqE,SACVb,GACCc,EAAAA,EAAAA,KAACjE,EAAK,CACJkE,IAAKf,EACLgB,IAAI,aAGNF,EAAAA,EAAAA,KAAC7D,EAAgB,OAGrB2D,EAAAA,EAAAA,MAACpD,EAAO,CAAAqD,SAAA,EACNC,EAAAA,EAAAA,KAACnD,EAAI,CAAAkD,SAAEhB,KACPiB,EAAAA,EAAAA,KAACxC,EAAK,CAAAuC,SAAEf,KACRc,EAAAA,EAAAA,MAACnC,EAAQ,CAAAoC,SAAA,EACPD,EAAAA,EAAAA,MAAChC,EAAQ,CAAAiC,SAAA,CACNN,EAAUU,EAAAA,UAAuB,KAAGjG,KAEtCkF,IAAeO,IAAiBK,EAAAA,EAAAA,KAAC9B,EAAK,CAAA6B,SAAEd,IACxCG,IAAeS,IAAkBG,EAAAA,EAAAA,KAAC3B,EAAM,CAAA0B,SAAEZ,YAKrD,E,4DE7JaiB,EAAmB,WAC9B,IAAMC,EAAUC,SAASC,cAAc,2DACvC,QAAKF,GAIkD,YAAhDG,OAAOC,iBAAiBJ,GAASK,UAC1C,E,8kBCWA,IAGMC,GAAsBrG,EAAAA,EAAAA,GAAO,MAAPA,EAEzB,SAAAC,GAAA,IAAAqG,EAAGpG,EAAKD,EAALC,MAAOqG,EAAUtG,EAAVsG,WAAU,OAAAC,EAAAA,EAAA,CACrBC,UAAW,aACXpG,MAAOH,EAAMI,QAAQ,IACrBiD,UAAW,OACXmD,cAAe,OACftG,SAAU,QACV4B,IAAK,EACLiC,MAAO,OACP/B,UAAW,gBAAFvB,OAbe,2BAaoB,KAC5CgG,WAAY,+DACRJ,EAAWK,cAAgB,CAC7B1E,UAAW,gBAAFvB,OAfgB,wCAesB,KAC/CgG,WAAY,6EACb,IAAAL,EAAA,CACDO,OAAQ,MAAKC,EAAAA,EAAAA,GAAAR,EAEZpG,EAAM6G,YAAYC,GAAG,MAAQ,CAC5B/C,MAAO,UACR6C,EAAAA,EAAAA,GAAAR,EAED,MAAO,CACLG,UAAW,eACZH,GAAA,IAGGW,GAAmBjH,EAAAA,EAAAA,GAAO,MAAPA,EAEtB,SAAAqB,GAAA,IAAGkF,EAAUlF,EAAVkF,WAAU,OAAAC,EAAAA,EAAA,CACdG,WAAY,gBACZO,QAAS,GAEgB,YAArBX,EAAWY,OAAuB,CACpCD,QAAS,IAGc,YAArBX,EAAWY,OAAuB,CACpCD,QAAS,EACTP,WAAY,yCACZpD,UAAW,IAAF5C,OAAMyG,IAAiB,OACjC,IAOUC,EAAqC,SAAHtF,GAAyB,IAAnB6E,EAAY7E,EAAZ6E,aACnDU,GAA8BC,EAAAA,EAAAA,UAAgC,IAAGC,GAAApC,EAAAA,EAAAA,GAAAkC,EAAA,GAA1DG,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAQpBG,EAAsB,SAACC,GACNA,EAAMC,OAAnBC,WACSC,EAAAA,GAAAA,SAA2CjC,KAE1D4B,EAAW,GAEf,EAEMM,EAAkB,SAACJ,GAEvB,GAAKA,EAAMC,OAAOI,gBAAiBnC,IAAnC,CAIA,IAAAoC,EAA6BN,EAAMC,OAAOI,cAAlCE,EAAQD,EAARC,SAAUC,EAAMF,EAANE,OAClBC,EAAqCT,EAAMC,OAAOS,YAA1CC,EAAgBF,EAAhBE,iBACFC,EAD0BH,EAANI,OACCC,QACzB,SAACC,EAA2CxE,GAA0C,SAAAxD,QAAAiI,EAAAA,EAAAA,GACjFD,IAAGC,EAAAA,EAAAA,GACHzE,EAAM0E,OAAK,GAEhB,IAII/D,EAAasD,EAEbU,EACJhE,IAAeiE,EAAAA,GAAAA,cACXR,EAAiBS,MAAK,SAACC,GAAO,OAAKA,EAAQd,WAAaA,CAAQ,IAChEK,EAAYQ,MAAK,SAACC,GAAO,OAAKA,EAAQd,WAAaA,CAAQ,IAEjE,GAAKW,EAAL,CAIA,IAAMI,EAA8B,CAClCC,IAAIC,EAAAA,EAAAA,KACJ1E,KAAMoE,EAAKX,SACX1D,KAAMqE,EAAKO,gBACX1E,MAAOmE,EAAKQ,WACZ1J,SAAUkJ,EAAKS,kBACf3E,MAAOkE,EAAKU,aACZ3E,OAAQiE,EAAKW,oBACb3E,WAAAA,GAEF4C,GAAW,SAACgC,GAAc,SAAA/I,QAAAiI,EAAAA,EAAAA,GAASc,GAAc,CAAER,GAAM,IACzDS,YAAW,kBArDeC,EAqDUV,EAAOC,QApD3CzB,GAAW,SAACgC,GAAc,OACxBA,EAAeG,QAAO,SAACC,GAAa,OAAKA,EAAcX,KAAOS,CAAQ,GAAC,IAFhD,IAACA,CAqDoB,GF5HpB,IE+G1B,CAtBA,CAoCF,GAEAG,EAAAA,EAAAA,YAAU,WAIR,OAHA7D,OAAO8D,iBAAiBjB,EAAAA,GAAyBf,GACjD9B,OAAO8D,iBAAiBjC,EAAAA,GAA4BJ,GAE7C,WACLzB,OAAO+D,oBAAoBlB,EAAAA,GAAyBf,GACpD9B,OAAO+D,oBAAoBlC,EAAAA,GAA4BJ,EACzD,CACF,IAEA,IAAMpB,EAAa,CAAEK,aAAAA,GAErB,OACElB,EAAAA,EAAAA,KAACW,EAAmB,CAACE,WAAYA,EAAWd,UAC1CC,EAAAA,EAAAA,KAACwE,EAAAA,EAAe,CAAAzE,SACbgC,EAAQ0C,KAAI,SAAA3H,GAAA,IAAG2G,EAAE3G,EAAF2G,GAAOD,GAAMkB,EAAAA,EAAAA,GAAA5H,EAAA6H,GAAA,OAC3B3E,EAAAA,EAAAA,KAAC4E,EAAAA,GAAU,CAETC,QAAS,CACPC,OAAQ,EACRC,MAAO,EACPC,KAAM,MACNjF,SAED,SAAC0B,GACA,IAAMwD,EAAmB,CAAExD,MAAAA,GAE3B,OACEzB,EAAAA,EAAAA,KAACuB,EAAgB,CAEfV,WAAYoE,EAAiBlF,UAE7BmF,EAAAA,EAAAA,eAACrG,EAAMiC,EAAAA,EAAA,GACD0C,GAAM,IACV2B,IAAK1B,MALFA,EASX,GArBKA,EAsBM,OAKvB,EC7Ja2B,EAAqB,SAAH7K,GAA+C,IAAzCH,EAAMG,EAANH,OAAQ+F,EAAY5F,EAAZ4F,aAAce,EAAY3G,EAAZ2G,aACzD,IAAK9G,EACH,MAAM,IAAIiL,MAAM,0BAalB,OAVAC,EAAAA,GAAAA,KAAa,CACXC,IAAK,UACLC,UAAW,CACTC,QAAS,CACPC,YAAavF,IAGjBwF,aAAc,QAId3F,EAAAA,EAAAA,KAAC4F,EAAAA,EAAa,CACZC,qBAAmB,EACnBC,SAAS,gBAAe/F,UAExBC,EAAAA,EAAAA,KAAC+F,EAAAA,EAAe,CAACC,KAAMV,EAAAA,GAAQvF,UAC7BC,EAAAA,EAAAA,KAACiG,EAAAA,EAAc,CACbC,KAAK,WACLC,QAAQ,gBAAepG,UAEvBC,EAAAA,EAAAA,KAAC2B,EAAW,CAACT,aAAcA,SAKrC,EClCakF,EAAmB,SAAC/F,GAC/B,IAAIgG,EAAgClM,EAMpC,MAJI,WAAYkG,EAAQiG,UACtBD,EAZmB,SAACE,GACtB,IAAKA,EACH,MAAM,IAAIlB,MAAM,uBAGlB,OAAOmB,KAAKC,MAAMF,EACpB,CAMkBG,CAAerG,EAAQiG,QAAQC,SAGxCF,CACT,ECXMM,GAAiBC,E,QAAAA,GAAqB,I,iQCFrC,IAAMC,EAASC,eAAOC,EAA0B7F,GACrD,IAAA8F,EAIIZ,EAAiBW,GAHLE,EAAuBD,EAArC7G,aACA+G,EAAaF,EAAbE,cACGC,GAAWzC,EAAAA,EAAAA,GAAAsC,EAAArC,GAGVxE,EACJ8G,QAAAA,QDJgCH,eAClCM,GAEA,IAAMC,EAAM,IAAIC,IAAI,sCAAuCF,GACrDG,EAASC,OAAOD,OAAOtN,GAU7B,OARIsN,EAAOE,OAAS,GAClBF,EAAOG,SAAQ,SAACvC,GACdkC,EAAIM,aAAaC,OAAO,OAAQzC,EAClC,WAGqBwB,EAAekB,IAAkCR,EAAIS,aAApEC,IAGV,CCVWC,CAAqBd,QAAAA,EAAiB1G,OAAOyH,SAASC,QAE/DC,EAAAA,QACEnI,EAAAA,EAAAA,KAACoF,E,qWAAGtE,CAAA,CACFX,aAAcA,EACde,aAAcA,GACViG,IAENJ,EAEJ,C","sources":["webpack://oribasketbubble/./src/models/Localizations.ts","webpack://oribasketbubble/./src/models/AppConfiguration.ts","webpack://oribasketbubble/./src/components/Bubble.tsx","webpack://oribasketbubble/./src/components/constants/bubbleProps.ts","webpack://oribasketbubble/./src/helpers/minibagVisibility.ts","webpack://oribasketbubble/./src/components/BubbleGroup.tsx","webpack://oribasketbubble/./src/App.tsx","webpack://oribasketbubble/./src/helpers/getConfiguration.ts","webpack://oribasketbubble/./src/providers/translationsProvider.ts","webpack://oribasketbubble/./src/AppRender.tsx"],"sourcesContent":["export const DEFAULT_TRANSLATIONS = {\n quantity: 'Quantity',\n};\n\nexport type Translations = Partial;\n","import type { Translations } from './Localizations';\n\nexport interface AppConfiguration {\n tenant: string;\n onlineBaseUrl?: string;\n translations?: Translations;\n}\n\nexport const DEFAULT_CONFIG = {\n tenant: '',\n};\n","import { LastAddedItemMethod } from '@ori-events/basket-updated';\nimport { Products } from '@ori-ui/icons';\nimport { SHADOW_LEVEL3, styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { DEFAULT_TRANSLATIONS as translations } from '../models';\nimport { bubbleHeight } from './constants';\n\nexport interface BubbleProps {\n code: string;\n quantity: number;\n name: string;\n price: string | null;\n image: string;\n points: number | null;\n methodType: LastAddedItemMethod;\n}\n\nconst BubbleWrapper = styled('div')(({ theme }) => ({\n display: 'flex',\n position: 'relative',\n width: theme.spacing(64),\n height: bubbleHeight,\n marginBottom: theme.spacing(2),\n padding: theme.spacing(1),\n border: `2px solid ${theme.palette.grey[100]}`,\n borderRadius: theme.spacing(2),\n background: theme.palette.common.white,\n boxShadow: SHADOW_LEVEL3,\n}));\n\nconst ImageWrapper = styled('div')(({ theme }) => ({\n flex: theme.spacing(0, 0, 16),\n width: theme.spacing(16),\n height: theme.spacing(16),\n marginRight: theme.spacing(2),\n overflow: 'hidden',\n borderRadius: theme.spacing(1, 0, 0, 1),\n background: theme.palette.grey[100],\n position: 'relative',\n}));\n\nconst Image = styled('img')({\n width: '100%',\n maxWidth: '100%',\n height: '100%',\n maxHeight: '100%',\n objectFit: 'contain',\n});\n\nconst ImagePlaceholder = styled(Products)(({ theme }) => ({\n position: 'absolute',\n top: '50%',\n left: '50%',\n width: '50%',\n height: 'auto',\n transform: 'translate(-50%, -50%)',\n color: theme.palette.grey[200],\n}));\n\nconst Details = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flexStart',\n width: 216,\n});\n\nconst Name = styled('div')(({ theme }) => ({\n width: '100%',\n paddingTop: theme.spacing(2),\n overflow: 'hidden',\n color: theme.palette.text.primary,\n fontSize: theme.typography.pxToRem(14),\n fontWeight: 700,\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n}));\n\nconst Shade = styled('div')(({ theme }) => ({\n color: theme.palette.grey.A400,\n fontSize: theme.typography.pxToRem(12),\n}));\n\nconst Shopping = styled('div')({\n display: 'flex',\n alignItems: 'center',\n marginTop: 'auto',\n});\n\nconst Quantity = styled('div')(({ theme }) => ({\n flexGrow: 1,\n color: theme.palette.text.secondary,\n fontSize: theme.typography.pxToRem(12),\n}));\n\nconst Price = styled('div')(({ theme }) => ({\n marginLeft: 'auto',\n color: theme.palette.text.primary,\n fontSize: theme.typography.pxToRem(14),\n fontWeight: 700,\n}));\n\nconst Points = styled('div')(({ theme }) => ({\n position: 'absolute',\n right: theme.spacing(2),\n bottom: theme.spacing(2),\n width: theme.spacing(7),\n height: theme.spacing(7),\n borderRadius: '50%',\n background: theme.palette.offer.dark,\n color: theme.palette.common.white,\n fontSize: theme.typography.pxToRem(14),\n fontWeight: 'bold',\n lineHeight: theme.spacing(7),\n textAlign: 'center',\n}));\n\nexport const Bubble: VFC = ({\n name,\n code,\n quantity,\n price,\n image,\n points,\n methodType,\n}) => {\n const { getTestId } = useTestId();\n const [translate] = useTranslation();\n const { BUY_FOR_MONEY, BUY_FOR_POINTS } = LastAddedItemMethod;\n\n return (\n \n \n {image ? (\n \n ) : (\n \n )}\n \n
\n {name}\n {code}\n \n \n {translate(translations.quantity)}: {quantity}\n \n {methodType === BUY_FOR_MONEY && {price}}\n {methodType === BUY_FOR_POINTS && {points}}\n \n
\n
\n );\n};\n","export const bubbleHeight = 94;\nexport const bubbleDuration = 5000;\n","export 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","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 { styled } from '@ori-ui/mui';\nimport type { VFC } from 'react';\nimport { useEffect, useState } from 'react';\nimport { Transition, TransitionGroup } from 'react-transition-group';\nimport { v4 } from 'uuid';\n\nimport { isMinibagVisible } from '../helpers';\nimport type { BubbleProps } from './Bubble';\nimport { Bubble } from './Bubble';\nimport { bubbleHeight, bubbleDuration } from './constants';\n\ninterface BubbleInstanceProps extends BubbleProps {\n id: string;\n}\n\nconst topNavHeightStyle = 'var(--top-nav-height, 0)';\nconst toolbarPositionStyle = 'var(--ecatalogue-toolbar-position, 0)';\n\nconst BasketBubbleWrapper = styled('div')<{\n ownerState: { isECatalogue: boolean };\n}>(({ theme, ownerState }) => ({\n boxSizing: 'border-box',\n width: theme.spacing(64),\n marginTop: '10px',\n pointerEvents: 'none',\n position: 'fixed',\n top: 0,\n right: '15px',\n transform: `translate(0, ${topNavHeightStyle})`,\n transition: `transform var(--top-nav-height-animation), 0.3s ease-in-out`,\n ...(ownerState.isECatalogue && {\n transform: `translate(0, ${toolbarPositionStyle})`,\n transition: `transform var(--ecatalogue-toolbar-position-animation), 0.3s ease-in-out`,\n }),\n zIndex: 10000,\n\n [theme.breakpoints.up('sm')]: {\n right: '30px',\n },\n\n '& *': {\n boxSizing: 'border-box',\n },\n}));\n\nconst 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}px`,\n }),\n}));\n\ninterface BubbleGroupProps {\n isECatalogue: boolean;\n}\n\nexport const BubbleGroup: VFC = ({ isECatalogue }) => {\n const [bubbles, setBubbles] = useState([]);\n\n const removeBasketBubble = (bubbleId: string) => {\n setBubbles((currentBubbles) =>\n currentBubbles.filter((currentBubble) => currentBubble.id !== bubbleId),\n );\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 };\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 ownerState = { isECatalogue };\n\n return (\n \n \n {bubbles.map(({ id, ...bubble }) => (\n \n {(state) => {\n const bubbleOwnerState = { state };\n\n return (\n \n \n \n );\n }}\n \n ))}\n \n \n );\n};\n","import { ThemeProvider } from '@ori-ui/mui';\nimport { TestIdProvider } from '@ori/testid-generator';\nimport i18next from 'i18next';\nimport type { VFC } from 'react';\nimport { I18nextProvider } from 'react-i18next';\n\nimport { BubbleGroup } from './components';\nimport type { TranslationsProviderResponse } from './providers';\n\ninterface AppProps {\n tenant: string;\n isECatalogue: boolean;\n translations: TranslationsProviderResponse;\n}\n\nexport const App: VFC = ({ tenant, translations, isECatalogue }) => {\n if (!tenant) {\n throw new Error('Missing config values!');\n }\n\n i18next.init({\n lng: 'default',\n resources: {\n default: {\n translation: translations,\n },\n },\n keySeparator: '::',\n });\n\n return (\n \n \n \n \n \n \n \n );\n};\n","import type { AppConfiguration } from '../models';\nimport { DEFAULT_CONFIG } from '../models';\n\nconst parseSpaConfig = (config: string) => {\n if (!config) {\n throw new Error('No config provided!');\n }\n\n return JSON.parse(config) as AppConfiguration;\n};\n\nexport const getConfiguration = (element: HTMLElement): AppConfiguration => {\n let finalConfig: AppConfiguration = DEFAULT_CONFIG;\n\n if ('config' in element.dataset) {\n finalConfig = parseSpaConfig(element.dataset.config as string);\n }\n\n return finalConfig;\n};\n","import { createAxiosWithCache } from '@ori-appshell/shared';\n\nimport { DEFAULT_TRANSLATIONS } from '../models';\n\nexport interface TranslationsProviderResponse {\n [key: string]: string;\n}\n\nconst axiosWithCache = createAxiosWithCache(15);\n\nexport const translationsProvider = async (\n baseUrl: string,\n): Promise => {\n const url = new URL('/system/ajax/Localization/Translate', baseUrl);\n const values = Object.values(DEFAULT_TRANSLATIONS);\n\n if (values.length > 0) {\n values.forEach((key: string) => {\n url.searchParams.append('keys', key);\n });\n }\n\n const { data } = await axiosWithCache.get(url.toString());\n\n return data;\n};\n","import ReactDOM from 'react-dom';\n\nimport { App } from './App';\nimport { getConfiguration } from './helpers/getConfiguration';\nimport { translationsProvider } from './providers';\n\nexport const render = async (rootElement: HTMLElement, isECatalogue: boolean): Promise => {\n const {\n translations: translationsFromDataset,\n onlineBaseUrl,\n ...otherConfig\n } = getConfiguration(rootElement);\n\n const translations =\n translationsFromDataset ??\n (await translationsProvider(onlineBaseUrl ?? window.location.origin));\n\n ReactDOM.render(\n ,\n rootElement,\n );\n};\n"],"names":["DEFAULT_TRANSLATIONS","quantity","DEFAULT_CONFIG","tenant","BubbleWrapper","styled","_ref","theme","display","position","width","spacing","height","marginBottom","padding","border","concat","palette","grey","borderRadius","background","common","white","boxShadow","SHADOW_LEVEL3","ImageWrapper","_ref2","flex","marginRight","overflow","Image","maxWidth","maxHeight","objectFit","ImagePlaceholder","Products","_ref3","top","left","transform","color","Details","flexDirection","justifyContent","Name","_ref4","paddingTop","text","primary","fontSize","typography","pxToRem","fontWeight","textOverflow","whiteSpace","Shade","_ref5","A400","Shopping","alignItems","marginTop","Quantity","_ref6","flexGrow","secondary","Price","_ref7","marginLeft","Points","_ref8","right","bottom","offer","dark","lineHeight","textAlign","Bubble","_ref9","name","code","price","image","points","methodType","getTestId","useTestId","_useTranslation","useTranslation","translate","_slicedToArray","BUY_FOR_MONEY","LastAddedItemMethod","BUY_FOR_POINTS","_jsxs","children","_jsx","src","alt","translations","isMinibagVisible","element","document","querySelector","window","getComputedStyle","visibility","BasketBubbleWrapper","_objectSpread2","ownerState","_objectSpread","boxSizing","pointerEvents","transition","isECatalogue","zIndex","_defineProperty","breakpoints","up","AnimationWrapper","opacity","state","bubbleHeight","BubbleGroup","_useState","useState","_useState2","bubbles","setBubbles","onToggleMenuFlyout","event","detail","menuType","ToggleMenuFlyoutEvent","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","currentBubbles","setTimeout","bubbleId","filter","currentBubble","useEffect","addEventListener","removeEventListener","TransitionGroup","map","_objectWithoutProperties","_excluded","Transition","timeout","appear","enter","exit","bubbleOwnerState","_createElement","key","App","Error","i18next","lng","resources","default","translation","keySeparator","ThemeProvider","enableCacheProvider","cacheKey","I18nextProvider","i18n","TestIdProvider","team","project","getConfiguration","finalConfig","dataset","config","JSON","parse","parseSpaConfig","axiosWithCache","createAxiosWithCache","render","async","rootElement","_getConfiguration","translationsFromDataset","onlineBaseUrl","otherConfig","baseUrl","url","URL","values","Object","length","forEach","searchParams","append","get","toString","data","translationsProvider","location","origin","ReactDOM"],"sourceRoot":""}