{"version":3,"file":"749.chunk.js","mappings":"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","sources":["webpack://oriloyaltydialog/../../../src/constants/index.ts","webpack://oriloyaltydialog/../../../src/utils/getConfiguration.ts","webpack://oriloyaltydialog/../../../src/contexts/appContext.ts","webpack://oriloyaltydialog/../../../src/hooks/useLoyaltyDialog.ts","webpack://oriloyaltydialog/../../../src/components/BuyForPointsButton.tsx","webpack://oriloyaltydialog/../../../src/hooks/useTranslations.ts","webpack://oriloyaltydialog/../../../src/components/FormattedMessage.tsx","webpack://oriloyaltydialog/../../../src/components/DialogContent.tsx","webpack://oriloyaltydialog/../../../src/components/DialogHeader.tsx","webpack://oriloyaltydialog/../../../src/components/LoyaltyDialog.tsx","webpack://oriloyaltydialog/../../../src/constants/defaultTranslations.ts","webpack://oriloyaltydialog/../../../src/utils/getTranslationsProps.ts","webpack://oriloyaltydialog/../../../src/containers/LoyaltyDialogController.tsx","webpack://oriloyaltydialog/./src/App.tsx","webpack://oriloyaltydialog/./src/containers/ErrorBoundary.ts","webpack://oriloyaltydialog/./src/appRender.tsx"],"sourcesContent":["export * from './defaultTranslations';\n\nexport const APP_NAME = 'loyalty-dialog';\n\nexport const EMOTION_CACHE_KEY = `${APP_NAME}-emotion-cache-key`;\n\nexport const IDENTITY_CLIENT_ID = 'SPADev';\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","import type * as ShowLoyaltyDialog from '@ori-events/show-loyalty-dialog';\nimport { useContext, createContext } from 'react';\n\nconst DEFAULT_CONTEXT_DATA = {\n catalogueItemId: '0',\n choiceId: 0,\n consultantPrice: 0,\n itemCode: '0',\n loyaltyPoints: 0,\n loyaltyPrice: 0,\n productName: 'none',\n quantity: 0,\n};\n\nexport const appContext = createContext(DEFAULT_CONTEXT_DATA);\n\nexport const AppContextProvider = appContext.Provider;\n\nexport const useAppContext = () => useContext(appContext);\n","import * as AddToBasket from '@ori-events/add-to-basket';\nimport * as LoyaltyDialogResult from '@ori-events/loyalty-dialog-result';\nimport * as ShowLoyaltyDialog from '@ori-events/show-loyalty-dialog';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport const useLoyaltyDialog = () => {\n const [data, setData] = useState();\n\n const handleLoyaltyDialogResult = useCallback(\n (result: LoyaltyDialogResult.Result) => {\n if (data) {\n const event = new CustomEvent(LoyaltyDialogResult.Name, {\n detail: {\n ...data,\n result,\n },\n });\n window.dispatchEvent(event);\n // unmountDialog\n setData(undefined);\n }\n },\n [data],\n );\n\n const handleClose = useCallback(\n () => handleLoyaltyDialogResult(LoyaltyDialogResult.LoyaltyDialogResults.CLOSE),\n [handleLoyaltyDialogResult],\n );\n\n const handleBuyForPoints = useCallback(\n () => handleLoyaltyDialogResult(AddToBasket.Method.BUY_FOR_POINTS),\n [handleLoyaltyDialogResult],\n );\n\n const handleBuyForMoney = useCallback(\n () => handleLoyaltyDialogResult(AddToBasket.Method.BUY_FOR_MONEY),\n [handleLoyaltyDialogResult],\n );\n\n useEffect(() => {\n const showLoyaltyDialogCallback = ((event: ShowLoyaltyDialog.Event) => {\n setData(event.detail);\n }) as EventListener;\n\n window.addEventListener(ShowLoyaltyDialog.Name, showLoyaltyDialogCallback);\n\n return () => window.removeEventListener(ShowLoyaltyDialog.Name, showLoyaltyDialogCallback);\n }, []);\n\n return {\n data,\n handleBuyForMoney,\n handleBuyForPoints,\n handleClose,\n };\n};\n","/* eslint-disable no-negated-condition -- needed */\nimport type { ButtonProps } from '@ori-ui/mui';\nimport { Button } from '@ori-ui/mui';\nimport { useFormatCurrency } from '@ori/culture-provider';\nimport { forwardRef } from 'react';\n\nimport { useAppContext } from '../contexts';\nimport { useTranslations } from '../hooks/useTranslations';\n\nexport const BuyForPointsButton = forwardRef((props, ref) => {\n const { loyaltyPrice, loyaltyPoints } = useAppContext();\n const { formatMessage } = useTranslations();\n const plusLoyaltyPrice = ` + ${useFormatCurrency(loyaltyPrice ?? 0)}`;\n\n return (\n \n {formatMessage('pointsCount', { 0: loyaltyPoints ?? 0 })}\n {loyaltyPrice !== 0 ? plusLoyaltyPrice : null}\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","/* 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 { styled, Typography } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { FC, ReactNode } from 'react';\n\nimport { FormattedMessage } from './FormattedMessage';\n\ninterface DialogContentProps {\n actions: ReactNode;\n}\n\nconst Content = styled('div')(({ theme }) => ({\n boxSizing: 'border-box',\n padding: theme.spacing(6, 3),\n background: theme.palette.background.paper,\n}));\n\nconst Text = styled(Typography)(({ theme }) => ({\n padding: theme.spacing(6, 0),\n}));\n\nconst Actions = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n textAlign: 'center',\n});\n\nexport const DialogContent: FC = ({ actions }) => {\n const { getTestId } = useTestId();\n\n return (\n \n \n \n \n \n \n
\n \n \n {Boolean(actions) && {actions}}\n
\n );\n};\n\nexport default DialogContent;\n","import { styled, Typography } from '@ori-ui/mui';\nimport type { FC } from 'react';\n\ninterface DialogHeaderProps {\n points: number | null;\n}\n\nconst Header = styled('div')(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: '120px',\n backgroundColor: theme.palette.purple[100],\n fontSize: '30px',\n marginTop: theme.spacing(1),\n}));\n\nconst Points = styled(Typography)(({ theme }) => ({\n width: theme.typography.pxToRem(74),\n height: theme.typography.pxToRem(74),\n borderRadius: '50%',\n backgroundColor: theme.palette.offer.dark,\n color: theme.palette.offer.contrastText,\n lineHeight: theme.typography.pxToRem(74),\n}));\n\nexport const DialogHeader: FC = ({ points }) => (\n
\n \n {points}\n \n
\n);\n\nexport default DialogHeader;\n","import { Dialog } from '@ori-ui/components';\nimport { Button, Grid } from '@ori-ui/mui';\nimport { FormatCurrency } from '@ori/culture-provider';\nimport { type FC } from 'react';\n\nimport { AppContextProvider } from '../contexts';\nimport { useLoyaltyDialog } from '../hooks';\nimport { BuyForPointsButton } from './BuyForPointsButton';\nimport { DialogContent } from './DialogContent';\nimport { DialogHeader } from './DialogHeader';\n\nexport const LoyaltyDialog: FC = () => {\n const { data, handleBuyForMoney, handleBuyForPoints, handleClose } = useLoyaltyDialog();\n\n if (!data) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n \n \n \n {data.consultantPrice ?? 0}\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 chooseHowYouWantToPayForIt: 'Choose how you want to pay for it:',\n congratulations: 'Congratulations!',\n pointsCount: '{0} P',\n youHaveLoyaltyPointsThatYouCanUseOnThisProduct: 'You have loyalty points that you can use on this product.',\n};\n\nexport const translationsNamespace = 'loyalty-dialog';\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 { ClientCultureContextProvider } from '@ori/culture-provider';\nimport { TranslationsNamespaceProvider, TranslationsProvider } from '@ori/i18n';\nimport { Team, TestIdProvider } from '@ori/testid-generator';\nimport { StrictMode, Suspense, type FC } from 'react';\n\nimport { LoyaltyDialog } from '../components';\nimport { APP_NAME, translationsNamespace } from '../constants';\nimport type { AppConfiguration } from '../types';\nimport { getTranslationsProps, normalizeConfigData } from '../utils';\n\nexport const LoyaltyDialogController: FC = (configuration) => {\n const usedConfiguration = normalizeConfigData(configuration as ParsedConfigData);\n const translationProps = getTranslationsProps(usedConfiguration);\n const { staticApiUrl: host, tenant } = usedConfiguration;\n const cultureProviderProps = { host, tenant };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import type { ParsedConfigData } from '@ori/checkout-utils';\nimport { type AppConfiguration, LoyaltyDialogController } from '@ori/loyalty-dialog-lib';\nimport { type FC } from 'react';\n\n// Cutting out optional translations still possibly serialized on the root element.\nexport const App: FC> = ({ translations, ...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 { LogLevel, getLogger } from '@ori/checkout-utils';\nimport { getConfiguration } from '@ori/loyalty-dialog-lib';\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 = getLogger(APP_NAME, LogLevel.Debug);\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","DEFAULT_CONTEXT_DATA","catalogueItemId","choiceId","consultantPrice","itemCode","loyaltyPoints","loyaltyPrice","productName","quantity","appContext","createContext","AppContextProvider","Provider","BuyForPointsButton","forwardRef","props","ref","_useAppContext","useContext","formatMessage","useTranslationsFromNamespace","plusLoyaltyPrice","useFormatCurrency","_jsxs","Button","_objectSpread","fullWidth","variant","color","children","FormattedMessage","_jsx","NotTypedFormattedMessage","Content","styled","_ref","theme","boxSizing","padding","spacing","background","palette","paper","Text","Typography","_ref2","Actions","display","flexDirection","textAlign","DialogContent","_ref3","actions","getTestId","useTestId","align","id","Boolean","Header","alignItems","justifyContent","height","backgroundColor","purple","fontSize","marginTop","Points","width","typography","pxToRem","borderRadius","offer","dark","contrastText","lineHeight","DialogHeader","points","LoyaltyDialog","_data$consultantPrice","_useLoyaltyDialog","_useState","useState","_useState2","_slicedToArray","data","setData","handleLoyaltyDialogResult","useCallback","result","event","CustomEvent","LoyaltyDialogResult","detail","window","dispatchEvent","undefined","handleClose","CLOSE","handleBuyForPoints","AddToBasket","BUY_FOR_POINTS","handleBuyForMoney","BUY_FOR_MONEY","useEffect","showLoyaltyDialogCallback","addEventListener","ShowLoyaltyDialog","removeEventListener","useLoyaltyDialog","value","Dialog","open","onClose","Grid","container","direction","item","onClick","FormatCurrency","defaultTranslations","chooseHowYouWantToPayForIt","congratulations","pointsCount","youHaveLoyaltyPointsThatYouCanUseOnThisProduct","translationsNamespace","logError","getErrorLogger","LoyaltyDialogController","configuration","usedConfiguration","staticApiUrl","normalizeSlashChars","translationProps","currentLanguage","tenant","translations","clientFetchConfiguration","baseUrl","onError","error","String","defaultTranslationsWithNamespaces","_defineProperty","translationsWithNamespaces","getTranslationsProps","cultureProviderProps","host","StrictMode","Suspense","fallback","TestIdProvider","project","team","Team","Checkout","ClientCultureContextProvider","TranslationsProvider","TranslationsNamespaceProvider","namespace","App","_objectWithoutProperties","_excluded","ErrorBoundary","_Component","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","_inherits","_createClass","key","this","state","Component","getLogger","LogLevel","Debug","async","render","rootElement","_rootElement$dataset$","dataset","appConfig","createRoot","ThemeProvider","enableCacheProvider","cacheKey","EMOTION_CACHE_KEY"],"sourceRoot":""}