{"version":3,"file":"452.chunk.js","mappings":"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","sources":["webpack://oriloyaltydialog/../../../src/constants/index.ts","webpack://oriloyaltydialog/../../src/logger.ts","webpack://oriloyaltydialog/../../src/constants-generated.ts","webpack://oriloyaltydialog/../../../src/utils/getConfiguration.ts","webpack://oriloyaltydialog/../../../src/contexts/appContext.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/hooks/useLoyaltyDialog.ts","webpack://oriloyaltydialog/../../../src/constants/defaultTranslations.ts","webpack://oriloyaltydialog/../../../src/containers/ApiProvider.tsx","webpack://oriloyaltydialog/../../../src/containers/LoyaltyDialogController.tsx","webpack://oriloyaltydialog/../../../src/utils/getTranslationsProps.ts","webpack://oriloyaltydialog/./src/App.tsx","webpack://oriloyaltydialog/./src/logger.ts","webpack://oriloyaltydialog/./src/appRender.tsx"],"sourcesContent":["export * from './defaultTranslations';\nexport { TEAM_NAME } from '../constants-generated';\n\nexport const APP_NAME = 'loyalty-dialog';\nexport const PACKAGE_NAME = '@ori/loyalty-dialog';\n\nexport const EMOTION_CACHE_KEY = `${APP_NAME}-emotion-cache-key`;\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// 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 = 'loyalty-dialog-lib';\nexport const PACKAGE_NAME = '@ori/loyalty-dialog-lib';\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 { normalizeSlashChars } from '@ori/checkout-utils';\nimport { parseClientAppConfig } from '@ori/client-app-config';\n\nimport { logDebug, logInfo } from '../logger';\nimport type { ClientAppConfig, NormalizeConfigurationMethod } from '../types';\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: ClientAppConfig = {\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 = parseClientAppConfig(config, ['currentLanguage', 'staticApiUrl', 'tenant']);\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","/* eslint-disable no-negated-condition -- needed */\nimport type { ButtonProps } from '@ori-ui/mui';\nimport { Button } from '@ori-ui/mui';\nimport { useFormatCurrency } from '@ori/culture';\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: '3rem',\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';\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 \n {data.consultantPrice ?? 0}\n \n \n \n }\n />\n \n \n \n );\n};\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","/* 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 { basicSwrOptions } from '@ori/checkout-utils';\nimport { SWRConfig } from '@ori/fetching';\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\ninterface ApiProviderProps {\n currentLanguage: string;\n staticApiUrl: string;\n tenant: string;\n}\n\nexport const ApiProvider: FC> = ({\n children,\n currentLanguage: language,\n staticApiUrl,\n tenant,\n}) => {\n const staticClientProps = { baseUrl: staticApiUrl, language, tenant, timeout };\n\n return (\n \n {children}\n \n );\n};\n","import { ClientCultureProvider } from '@ori/culture';\nimport { TranslationsNamespaceProvider, TranslationsProvider } from '@ori/i18n';\nimport { ErrorBoundary, LoggerProvider } from '@ori/logger';\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 { mainLogger } from '../logger';\nimport type { ClientAppConfig } from '../types';\nimport { getTranslationsProps, normalizeConfigData } from '../utils';\nimport { ApiProvider } from './ApiProvider';\n\nexport const LoyaltyDialogController: FC = (configuration) => {\n const usedConfiguration = normalizeConfigData(configuration);\n const translationProps = getTranslationsProps(usedConfiguration);\n const { currentLanguage, staticApiUrl, tenant } = usedConfiguration;\n const apiProviderProps = { currentLanguage, staticApiUrl, tenant };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { type TranslationsContext } from '@ori/i18n';\n\nimport { defaultTranslations, translationsNamespace } from '../constants';\nimport { mainLogger } from '../logger';\nimport type { ClientAppConfig } from '../types';\n\nexport const getTranslationsProps = ({ currentLanguage, staticApiUrl, tenant, translations }: ClientAppConfig) => {\n const result: TranslationsContext = {\n clientFetchConfiguration: {\n baseUrl: staticApiUrl,\n onError: (error) => {\n mainLogger.error(error as Error, { action: 'Loading translations.' });\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 ClientAppConfig, 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 { getDebugLogger } 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);\n","import { ThemeProvider } from '@ori-ui/mui';\nimport { ApplicationInsights, ErrorBoundary, getClientApplicationInsightsConfig, LoggerProvider } from '@ori/logger';\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 { logDebug, mainLogger } from './logger';\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 clientAppConfig = getConfiguration(config);\n\n if (process.env.NODE_ENV !== 'production' && process.env.REACT_APP_USE_REQUESTLY === '1') {\n logDebug('USING REQUESTLY');\n }\n\n // Initialize Application Insights in production\n if (process.env.NODE_ENV === 'production') {\n ApplicationInsights.initialize(getClientApplicationInsightsConfig());\n }\n\n createRoot(rootElement).render(\n \n \n \n \n \n \n ,\n );\n}\n"],"names":["APP_NAME","mainLogger","Logger","teamName","logDebug","getDebugLogger","logInfo","getInfoLogger","getConfiguration","config","parsedConfig","parseClientAppConfig","DEFAULT_CONTEXT_DATA","catalogueItemId","choiceId","consultantPrice","itemCode","loyaltyPoints","loyaltyPrice","productName","quantity","appContext","createContext","AppContextProvider","Provider","BuyForPointsButton","forwardRef","props","ref","useContext","formatMessage","useTranslationsFromNamespace","plusLoyaltyPrice","useFormatCurrency","_jsxs","Button","fullWidth","variant","color","children","FormattedMessage","_jsx","NotTypedFormattedMessage","Content","styled","theme","boxSizing","padding","spacing","background","palette","paper","Text","Typography","Actions","display","flexDirection","textAlign","DialogContent","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","handleBuyForMoney","handleBuyForPoints","handleClose","useLoyaltyDialog","setData","useState","handleLoyaltyDialogResult","useCallback","result","event","CustomEvent","LoyaltyDialogResult","detail","window","dispatchEvent","undefined","CLOSE","AddToBasket","BUY_FOR_POINTS","BUY_FOR_MONEY","useEffect","showLoyaltyDialogCallback","addEventListener","ShowLoyaltyDialog","removeEventListener","value","Dialog","open","onClose","_Fragment","Grid","container","direction","item","onClick","FormatCurrency","defaultTranslations","chooseHowYouWantToPayForIt","congratulations","pointsCount","youHaveLoyaltyPointsThatYouCanUseOnThisProduct","translationsNamespace","swrConfig","focusThrottleInterval","suspense","basicSwrOptions","ApiProvider","currentLanguage","language","staticApiUrl","tenant","staticClientProps","baseUrl","timeout","SWRConfig","StaticApiClientProvider","LoyaltyDialogController","configuration","usedConfiguration","normalizeSlashChars","normalizeConfigData","translationProps","getTranslationsProps","translations","clientFetchConfiguration","onError","error","action","defaultTranslationsWithNamespaces","translationsWithNamespaces","apiProviderProps","StrictMode","LoggerProvider","logger","ErrorBoundary","areaName","Suspense","fallback","TestIdProvider","project","team","Team","Checkout","TranslationsProvider","TranslationsNamespaceProvider","namespace","ClientCultureProvider","App","PACKAGE_NAME","TEAM_NAME","async","render","rootElement","dataset","clientAppConfig","ApplicationInsights","initialize","getClientApplicationInsightsConfig","createRoot","ThemeProvider","enableCacheProvider","cacheKey","EMOTION_CACHE_KEY"],"sourceRoot":""}