{"version":3,"file":"941.chunk.js","mappings":"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","sources":["webpack://oriproductinfodialogspa/../../../src/constants/defaultTranslations.ts","webpack://oriproductinfodialogspa/../../../../src/components/Dialog/styles.ts","webpack://oriproductinfodialogspa/../../../../src/components/Dialog/Dialog.tsx","webpack://oriproductinfodialogspa/../../../../src/components/ErrorInfo/styles.ts","webpack://oriproductinfodialogspa/../../../../src/components/ErrorInfo/ErrorInfo.tsx","webpack://oriproductinfodialogspa/../../../../src/components/ErrorInfo/constants.ts","webpack://oriproductinfodialogspa/../../../../src/components/Loading/Loading.tsx","webpack://oriproductinfodialogspa/../../../src/utils/getNonDiscontinuedAndCannotBeSold.ts","webpack://oriproductinfodialogspa/../../../src/containers/DialogContainer.tsx","webpack://oriproductinfodialogspa/../../../src/containers/ErrorBoundary.tsx","webpack://oriproductinfodialogspa/../../../src/containers/ProductInfoDialog.tsx","webpack://oriproductinfodialogspa/../../../src/queries/getProductsQuery.ts","webpack://oriproductinfodialogspa/../../../src/api/mappers.ts","webpack://oriproductinfodialogspa/../../../src/utils/isDeletedShade.ts","webpack://oriproductinfodialogspa/../../../../src/hooks/internal/useSWRFetch.ts","webpack://oriproductinfodialogspa/../../../src/hooks/useGetProductInfoDialogProducts.ts","webpack://oriproductinfodialogspa/../../../../src/api/getProductInfoDialogProducts/getProductInfoDialogProducts.ts","webpack://oriproductinfodialogspa/../../../src/hooks/useGetProductInfoDialogShowMrpStatement.ts","webpack://oriproductinfodialogspa/../../../src/api/getProductInfoDialogShowMrpStatement.ts","webpack://oriproductinfodialogspa/../../../src/hooks/useProductInfoDialog.tsx","webpack://oriproductinfodialogspa/../../src/event.ts","webpack://oriproductinfodialogspa/../../../../src/hooks/internal/useCloseEvents.ts","webpack://oriproductinfodialogspa/../../../src/containers/ProductInfoDialogController.tsx","webpack://oriproductinfodialogspa/../../../../src/hooks/internal/useOpenEvent.ts","webpack://oriproductinfodialogspa/../../../src/utils/shouldShowIsDiscontinuedErrorInfo.ts","webpack://oriproductinfodialogspa/./src/App.tsx","webpack://oriproductinfodialogspa/./src/containers/ErrorBoundary.ts","webpack://oriproductinfodialogspa/./src/appRender.tsx","webpack://oriproductinfodialogspa/../../../src/constants/dialogMode.ts","webpack://oriproductinfodialogspa/../../../../src/hooks/internal/useIsDesktop.ts","webpack://oriproductinfodialogspa/../../../src/hooks/useTranslations.ts","webpack://oriproductinfodialogspa/../../../src/utils/getInitialProduct.ts"],"sourcesContent":["/* 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 buy: 'Buy',\n choose: 'Choose',\n goBack: 'Go back',\n lowestPrice: 'Our lowest price, the last 30 days before current price, was',\n mrpStatement: 'Inclusive of all taxes',\n productIsDiscontinued: 'Product is discontinued',\n productIsDiscontinuedDescription: 'The product you are looking for has been discontinued and is no longer for sale.',\n productNotFound: 'Product not found',\n productNotFoundDescription: 'We are experiencing technical difficulties and the product cannot be found.',\n replace: 'Replace',\n replaceWith: 'Replace with',\n reserve: 'Reserve',\n save: 'Save',\n subscribe: 'Subscribe',\n};\n\nexport const translationsNamespace = 'product-info-dialog';\n","import { Dialog, dialogBaseClasses } from '@ori-ui/components';\nimport { paperClasses, styled } from '@ori-ui/mui';\n\nimport type { DialogProps } from './types';\n\nexport const Root = styled(Dialog, { shouldForwardProp: (propName) => propName !== 'zIndex' })<\n Pick & { isInfo?: boolean }\n>`\n z-index: ${({ zIndex }) => zIndex};\n\n button {\n z-index: ${({ zIndex }) => (typeof zIndex === 'number' ? zIndex + 1 : undefined)};\n }\n\n & .${dialogBaseClasses.closeButton} {\n z-index: 10;\n }\n\n & .${paperClasses.root} {\n ${({ theme }) => theme.breakpoints.up('sm')} {\n width: ${(props) => (props.isInfo ? '390px' : '720px')};\n max-width: 95vw;\n }\n\n ${({ theme }) => theme.breakpoints.up('md')} {\n height: ${(props) => (props.isInfo ? 'auto' : '450px')};\n overflow: visible;\n width: ${(props) => (props.isInfo ? '390px' : '900px')};\n max-width: 80vw;\n }\n\n ${({ theme }) => theme.breakpoints.up('lg')} {\n max-width: 75vw;\n }\n }\n`;\n","import { Root } from './styles';\nimport type { DialogProps } from './types';\n\nexport const Dialog = ({ children, container, header, id, onClose, open, zIndex, isInfo = false }: DialogProps) => (\n \n {children}\n \n);\n","import { styled } from '@ori-ui/mui';\n\nexport const Root = styled('div')(({ theme }) => ({\n display: 'flex',\n width: '100%',\n flexDirection: 'column',\n alignItems: 'center',\n gap: theme.spacing(3),\n padding: theme.spacing(6, 3),\n [theme.breakpoints.up('sm')]: {\n padding: theme.spacing(6),\n },\n}));\n\nexport const IconContainer = styled('div')(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: 80,\n justifySelf: 'stretch',\n color: theme.palette.error.dark,\n}));\n\nexport const ButtonContainer = styled('div')(({ theme }) => ({\n marginTop: theme.spacing(3),\n width: '100%',\n}));\n","import { ErrorCircle } from '@ori-ui/icons';\nimport { Button, Typography } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\n\nimport { ERROR_INFO } from './constants';\nimport { ButtonContainer, IconContainer, Root } from './styles';\nimport type { ErrorInfoProps } from './types';\n\nexport const ErrorInfo = ({ title, description, buttonTitle, handleButtonClick }: ErrorInfoProps) => {\n const { getTestId } = useTestId();\n\n return (\n \n \n \n \n \n {title}\n \n \n {description}\n \n \n \n {buttonTitle}\n \n \n \n );\n};\n","export const ERROR_INFO = 'error-info';\n","import { Box, CircularProgress } from '@ori-ui/mui';\n\nexport const Loading = () => (\n \n \n \n);\n","import type { Product } from '../models';\n\nexport const getNonDiscontinuedAndCannotBeSold = (products: Product[]) =>\n products.filter((product) => !product.isDiscontinuedAndCannotBeSold);\n","import type { FunctionComponent } from 'react';\nimport { lazy, Suspense, useMemo } from 'react';\n\nimport { Dialog } from '../components/Dialog';\nimport { ErrorInfo } from '../components/ErrorInfo';\nimport { Loading } from '../components/Loading';\nimport { DIALOG_MODE_LOADING, NOT_FOUND, DISCONTINUED } from '../constants';\nimport { useIsDesktop } from '../hooks/internal';\nimport { useTranslations } from '../hooks/useTranslations';\nimport { getInitialProduct } from '../utils';\nimport { getNonDiscontinuedAndCannotBeSold } from '../utils/getNonDiscontinuedAndCannotBeSold';\nimport type { DialogContentProps } from './DialogContent';\nimport type { ProductInfoDialogProps } from './types';\n\nexport const DialogContent = lazy>(async () => ({\n default: (await import('./DialogContent')).DialogContent,\n}));\n\nexport const DialogContainer = ({\n analytics = {},\n customer = {},\n dialog = {},\n handlers = {},\n initialProductCode,\n mode = DIALOG_MODE_LOADING,\n products = [],\n shared = {},\n replaceSubscription,\n tenant,\n staticApiUrl,\n}: ProductInfoDialogProps) => {\n const { originalItemCode } = shared;\n const { shade } = getInitialProduct({ initialProductCode, products });\n const { canBeReserved } = shade ?? {};\n const { translations } = useTranslations();\n const isDesktop = useIsDesktop();\n const isInfo = mode === NOT_FOUND || mode === DISCONTINUED;\n const header = useMemo(() => {\n if (!isDesktop) {\n if (originalItemCode) {\n return translations.replaceWith;\n }\n if (canBeReserved) {\n return translations.reserve;\n }\n }\n\n return undefined;\n }, [canBeReserved, isDesktop, originalItemCode, translations.replaceWith, translations.reserve]);\n\n const content = useMemo(() => {\n switch (mode) {\n case DIALOG_MODE_LOADING:\n return ;\n case NOT_FOUND:\n return (\n \n );\n case DISCONTINUED:\n return (\n \n );\n default:\n return (\n }>\n \n \n );\n }\n }, [\n mode,\n translations.productNotFound,\n translations.productNotFoundDescription,\n translations.goBack,\n translations.productIsDiscontinued,\n translations.productIsDiscontinuedDescription,\n dialog.onClose,\n tenant,\n staticApiUrl,\n analytics,\n customer,\n handlers,\n initialProductCode,\n products,\n shared,\n replaceSubscription,\n ]);\n\n return (\n \n }>{content}\n \n );\n};\n","import { Dialog } from '@ori-ui/components';\nimport { Component } from 'react';\n\ninterface ErrorBoundaryProps {\n children: JSX.Element;\n}\n\ninterface ErrorBoundaryState {\n error?: Error;\n open: boolean;\n}\n\nexport class ErrorBoundary extends Component {\n override readonly state: ErrorBoundaryState = { open: false };\n\n static getDerivedStateFromError(error: Error) {\n return { error, open: true };\n }\n\n handleOnClose = () => this.setState({ open: false });\n\n override render() {\n const { error, open } = this.state;\n\n if (error) {\n return (\n \n
{error.message}
\n \n );\n }\n\n const { children } = this.props;\n\n return children;\n }\n}\n","import { ThemeProvider } from '@ori-ui/mui';\nimport { Team, TestIdProvider } from '@ori/testid-generator';\nimport { Suspense } from 'react';\nimport type { FunctionComponent } from 'react';\n\nimport { DialogContainer } from './DialogContainer';\nimport { ErrorBoundary } from './ErrorBoundary';\nimport type { ProductInfoDialogProps } from './types';\n\nexport const ProductInfoDialog: FunctionComponent = (props) => (\n \n \n \n \n \n \n \n \n \n);\n","import { gql } from '@ori/fetching';\n\nconst subscriptionBenefitBanner = gql`\n fragment SubscriptionBenefitBanner on Product {\n subscriptionBenefitBanner {\n title\n message\n registerLink {\n title\n relativeUrl\n }\n readMoreLink {\n title\n relativeUrl\n }\n signInLink {\n title\n relativeUrl\n }\n }\n }\n`;\n\nconst shade = gql`\n ${subscriptionBenefitBanner}\n fragment Shade on Product {\n ...SubscriptionBenefitBanner\n availability {\n isBackorder\n }\n backInStockAvailability {\n showBackInStockNotification\n }\n color\n colorHexCode\n colorImageUrl\n formattedPrice {\n bp\n price {\n basicCashback\n basicCataloguePrice\n currentPrice\n previousMinOfferPrice\n sharingBonus\n }\n }\n isDiscontinued\n imageUrl\n labels {\n helpText\n labelKey\n productLabelDomain\n title\n }\n pdpUrl {\n relativeUrl\n }\n productCode\n volume\n volumeUnit\n }\n`;\n\nconst concept = gql`\n fragment Concept on Concept {\n benefits\n brand {\n name\n url\n }\n categories {\n taxonomyId\n }\n description\n name\n products {\n ...Shade\n }\n ratingAverage\n ratingCount\n }\n`;\n\nconst product = gql`\n ${concept}\n ${shade}\n fragment Product on Product {\n productCode\n concept {\n ...Concept\n }\n }\n`;\n\nconst replacement = gql`\n fragment Replacement on ProductReplacement {\n product {\n ...Product\n }\n }\n`;\n\nconst productWithReplacements = gql`\n ${product}\n ${replacement}\n fragment ProductWithReplacements on Product {\n ...Product\n replacements {\n ...Replacement\n }\n }\n`;\n\nexport const getProducts = gql`\n ${productWithReplacements}\n query GetProducts($productCodes: [ID]) {\n products(productCodes: $productCodes) {\n ...ProductWithReplacements\n }\n }\n`;\n","import { mapCanBeReserved, mapCanBeSold, mapCanBeSubscribed, mapLabels, mapShade } from '@ori/product-box';\n\nimport type {\n ConceptFragment,\n GetProductsQuery,\n Product,\n ProductFragment,\n ProductWithReplacementsFragment,\n ReplacementFragment,\n ShadeFragment,\n Shade,\n SubscriptionBenefitBannerData,\n SubscriptionBenefitBannerFragment,\n} from '../models';\nimport { isDeletedShade } from '../utils';\n\nexport const getProductSize = ({ volume, volumeUnit }: ShadeFragment): Shade['size'] => {\n if (volume != null && volumeUnit != null) {\n return `${volume} ${volumeUnit.trim()}`;\n }\n\n return null;\n};\n\nexport const mapProductDiscontinuedAndCannotBeSold = (\n shades: Array & Pick>,\n): boolean => {\n if (shades.length === 0) {\n return false;\n }\n\n return shades.every((shade) => shade.isDiscontinued && !shade.canBeSold);\n};\n\nexport const mapSubscriptionBenefitBanner = (\n data: NonNullable,\n): SubscriptionBenefitBannerData => ({\n title: data.title ?? '',\n message: data.message ?? '',\n readMoreText: data.readMoreLink?.title ?? '',\n readMoreUrl: data.readMoreLink?.relativeUrl ?? '',\n registerText: data.registerLink?.title ?? '',\n registerUrl: data.registerLink?.relativeUrl ?? '',\n signInText: data.signInLink?.title ?? '',\n});\n\nexport const mapShades = (shades: ConceptFragment['products']): Shade[] =>\n (shades ?? [])\n .filter((shade): shade is NonNullable => shade != null && !isDeletedShade(shade))\n .map((shade): Shade => {\n const { hexColors, imageUrl } = mapShade(shade);\n const { deal, ppa } = mapLabels(shade.labels) ?? {};\n\n return {\n canBeReserved: shade.availability?.isBackorder ?? mapCanBeReserved(shade.labels),\n canBeSold: mapCanBeSold(shade.labels),\n canBeSubscribed: mapCanBeSubscribed(shade.labels),\n isDiscontinued: shade.isDiscontinued ?? false,\n color: {\n name: shade.color ?? null,\n hexColors,\n imageUrl,\n },\n dealLabel: deal,\n imageUrl: shade.imageUrl ?? null,\n loyaltyRedeemPoints: shade.formattedPrice?.bp ?? 0,\n pdpUrl: shade.pdpUrl?.relativeUrl ?? null,\n ppaLabel: ppa,\n price: {\n basicCashback: shade.formattedPrice?.price?.basicCashback ?? null,\n current: shade.formattedPrice?.price?.currentPrice ?? null,\n old: shade.formattedPrice?.price?.basicCataloguePrice ?? null,\n previousMinOfferPrice: shade.formattedPrice?.price?.previousMinOfferPrice ?? null,\n sharingBonus: shade.formattedPrice?.price?.sharingBonus ?? null,\n },\n productCode: shade.productCode,\n size: getProductSize(shade),\n showBackInStockNotification: shade.backInStockAvailability?.showBackInStockNotification ?? false,\n subscriptionBenefitBanner: shade.subscriptionBenefitBanner\n ? mapSubscriptionBenefitBanner(shade.subscriptionBenefitBanner)\n : null,\n };\n });\n\nexport const mapProductBase = (product: ProductFragment | null | undefined): Product | null | undefined => {\n const shades = mapShades(product?.concept?.products);\n if (!product?.concept?.name || shades.length === 0) {\n return null;\n }\n\n return {\n brandName: product.concept.brand?.name ?? null,\n brandUrl: product.concept.brand?.url ?? null,\n code: product.productCode,\n description: product.concept.description ?? null,\n keyFeatures: product.concept.benefits?.filter((benefit): benefit is string => benefit != null) ?? [],\n name: product.concept.name,\n ratingAverage: product.concept.ratingAverage ?? 0,\n ratingCount: product.concept.ratingCount ?? 0,\n replacements: [],\n shades,\n isDiscontinuedAndCannotBeSold: mapProductDiscontinuedAndCannotBeSold(shades),\n };\n};\n\nexport const mapProductReplacementFromGql = (replacement?: ReplacementFragment | null | undefined): Product | null => {\n const productBase = mapProductBase(replacement?.product);\n if (!productBase) {\n return null;\n }\n const { brandName, brandUrl, code, description, keyFeatures, name, ratingAverage, ratingCount, shades } = productBase;\n\n return {\n brandName,\n brandUrl,\n code,\n description,\n keyFeatures,\n name,\n ratingAverage,\n ratingCount,\n replacements: [],\n shades,\n };\n};\n\nexport const mapProductReplacementsFromGql = ({\n replacements,\n}: NonNullable): Product[] =>\n (replacements ?? [])\n .map(mapProductReplacementFromGql)\n .filter((replacement): replacement is Product => replacement != null);\n\nexport const mapProductFromGql = (product: NonNullable): Product | null => {\n const productBase = mapProductBase(product);\n if (!productBase) {\n return null;\n }\n const {\n brandName,\n brandUrl,\n code,\n description,\n keyFeatures,\n name,\n ratingAverage,\n ratingCount,\n shades,\n isDiscontinuedAndCannotBeSold,\n } = productBase;\n\n return {\n brandName,\n brandUrl,\n code,\n description,\n keyFeatures,\n name,\n ratingAverage,\n ratingCount,\n replacements: mapProductReplacementsFromGql(product),\n shades,\n isDiscontinuedAndCannotBeSold,\n };\n};\n\nexport const mapProductsFromGql = (products: NonNullable): Product[] =>\n products\n .map((product) => (product ? mapProductFromGql(product) : null))\n .filter((product): product is Product => product != null);\n","import type { ShadeFragment } from '../models';\n\nexport const isDeletedShade = (shade: ShadeFragment): boolean => shade.isDiscontinued == null;\n","import type { Key, Fetcher } from '@ori/fetching';\nimport { useSWR } from '@ori/fetching';\nimport { useCallback, useMemo, useState } from 'react';\n\nexport const useSWRFetch = >({\n fallback,\n fetcher,\n key,\n}: {\n fallback: D;\n fetcher: F;\n key: K;\n}) => {\n const formattedKey = JSON.stringify({ key });\n const [currentKey, setCurrentKey] = useState(null);\n const matchingKey = currentKey === formattedKey;\n const { data, error } = useSWR(currentKey, fetcher);\n const fetch = useCallback(() => {\n if (!matchingKey) {\n setCurrentKey(formattedKey);\n }\n }, [formattedKey, matchingKey]);\n\n return useMemo(\n () => ({\n data: data ?? fallback,\n error,\n fetch,\n isLoaded: matchingKey && data != null && error == null,\n isLoading: data == null && error == null,\n }),\n [data, error, fallback, fetch, matchingKey],\n );\n};\n","import { useMemo } from 'react';\n\nimport { getProductInfoDialogProducts } from '../api';\nimport type { GetProductInfoDialogProductsProps } from '../api';\nimport type { Product } from '../models';\nimport { useSWRFetch } from './internal/useSWRFetch';\n\nexport const useGetProductInfoDialogProducts = ({\n atpClusterId,\n currentLanguage,\n customerId,\n globalApiUrl,\n graphqlUrl,\n productCodes,\n tenant,\n token,\n}: GetProductInfoDialogProductsProps) => {\n const { data, error, fetch, isLoaded, isLoading } = useSWRFetch({\n fallback: [] as Product[],\n fetcher: async () =>\n getProductInfoDialogProducts({\n atpClusterId,\n currentLanguage,\n customerId,\n globalApiUrl,\n graphqlUrl,\n productCodes,\n tenant,\n token,\n }),\n key: [atpClusterId, customerId, globalApiUrl, graphqlUrl, tenant, token, ...productCodes],\n });\n\n return useMemo(\n () => ({ data, error, fetch, isLoaded: isLoaded && data.length > 0, isLoading }),\n [data, error, fetch, isLoaded, isLoading],\n );\n};\n","import { fetchGraphql } from '@ori/fetching';\nimport { getSegmentationHeaders } from '@ori/presentation-http';\n\nimport { APP_NAME } from '../../constants';\nimport type { GetProductsQuery, GetProductsQueryVariables } from '../../models';\nimport { getProducts } from '../../queries';\nimport { mapProductsFromGql } from '../mappers';\nimport type { GetProductInfoDialogProductsProps } from './types';\n\nexport const getProductInfoDialogProducts = async (props: GetProductInfoDialogProductsProps) => {\n const { currentLanguage, globalApiUrl, graphqlUrl, productCodes, tenant, token, atpClusterId, customerId } = props;\n const url = new URL('/graphql', graphqlUrl);\n const { products } = await fetchGraphql({\n query: getProducts,\n url: url.toString(),\n variables: {\n productCodes,\n },\n headers: await getSegmentationHeaders({\n language: currentLanguage,\n globalApiUrl,\n tenant,\n token,\n sourceAppName: APP_NAME,\n atpClusterId,\n customerId,\n }),\n });\n\n return products ? mapProductsFromGql(products) : [];\n};\n","import type { GetProductInfoDialogShowMrpStatementProps } from '../api';\nimport { getProductInfoDialogShowMrpStatement } from '../api';\nimport { useSWRFetch } from './internal/useSWRFetch';\n\nexport const useGetProductInfoDialogShowMrpStatement = ({\n staticApiUrl,\n tenant,\n}: GetProductInfoDialogShowMrpStatementProps) =>\n useSWRFetch({\n fallback: false,\n fetcher: async () => getProductInfoDialogShowMrpStatement({ staticApiUrl, tenant }),\n key: [staticApiUrl, tenant],\n });\n","import { ApiClient, getTenantApplicationsProductDetailConfiguration } from '@ori/static-api-client-react';\n\nimport type { GetProductInfoDialogShowMrpStatementProps } from './types';\n\nexport const getProductInfoDialogShowMrpStatement = async ({\n staticApiUrl,\n tenant,\n}: GetProductInfoDialogShowMrpStatementProps) => {\n const client = new ApiClient({ baseUrl: staticApiUrl });\n const {\n data: { isMrpStatementEnabled },\n } = await getTenantApplicationsProductDetailConfiguration(client, tenant);\n\n return isMrpStatementEnabled;\n};\n","import { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport {\n DIALOG_MODE_LOADING,\n DIALOG_MODE_STANDARD_BUY,\n FETCH_MODE_EAGER,\n FETCH_MODE_LAZY,\n NOT_FOUND,\n DISCONTINUED,\n} from '../constants';\nimport { ProductInfoDialog } from '../containers/ProductInfoDialog';\nimport { shouldShowIsDiscontinuedErrorInfo } from '../utils/shouldShowIsDiscontinuedErrorInfo';\nimport type { UseProductInfoDialogProps } from './types';\nimport { useGetProductInfoDialogProducts } from './useGetProductInfoDialogProducts';\nimport { useGetProductInfoDialogShowMrpStatement } from './useGetProductInfoDialogShowMrpStatement';\n\nexport const useProductInfoDialog = ({\n atpClusterId,\n currentLanguage,\n customer,\n dialog,\n fetchMode = FETCH_MODE_LAZY,\n globalApiUrl,\n graphqlUrl,\n mode = DIALOG_MODE_STANDARD_BUY,\n productCodes,\n shared,\n staticApiUrl,\n tenant,\n token,\n ...props\n}: UseProductInfoDialogProps) => {\n const { onClose, ...dialogProps } = dialog ?? {};\n const { customerId } = customer ?? {};\n const {\n data: products,\n fetch: fetchProducts,\n isLoaded: areProductsLoaded,\n isLoading: areProductsLoading,\n } = useGetProductInfoDialogProducts({\n atpClusterId,\n globalApiUrl,\n currentLanguage,\n customerId,\n graphqlUrl,\n productCodes,\n tenant,\n token,\n });\n const {\n data: showMrpStatement,\n fetch: fetchShowMrpStatement,\n isLoaded: isShowMrpStatementLoaded,\n isLoading: isShowMrpStatementLoading,\n } = useGetProductInfoDialogShowMrpStatement({\n staticApiUrl,\n tenant,\n });\n\n const [isOpen, setIsOpen] = useState(false);\n const isLoaded = isShowMrpStatementLoaded && areProductsLoaded;\n const isLoading = isShowMrpStatementLoading || areProductsLoading;\n const fetchData = useCallback(() => {\n if (!isLoaded) {\n fetchProducts();\n fetchShowMrpStatement();\n }\n }, [fetchProducts, fetchShowMrpStatement, isLoaded]);\n const close = useCallback(() => {\n setIsOpen(false);\n onClose?.();\n }, [onClose]);\n const open = useCallback(() => {\n setIsOpen(true);\n if (fetchMode === FETCH_MODE_LAZY) {\n fetchData();\n }\n }, [fetchData, fetchMode]);\n useEffect(() => {\n if (fetchMode === FETCH_MODE_EAGER) {\n fetchData();\n }\n }, [fetchData, fetchMode]);\n\n const dialogMode = useMemo(() => {\n if (isLoading) {\n return DIALOG_MODE_LOADING;\n } else if (products.length === 0) {\n return NOT_FOUND;\n } else if (shouldShowIsDiscontinuedErrorInfo(products)) {\n return DISCONTINUED;\n }\n\n return mode;\n }, [isLoading, mode, products]);\n\n return useMemo(\n () => ({\n closeProductInfoDialog: close,\n isProductInfoDialogOpen: isOpen,\n openProductInfoDialog: open,\n productInfoDialog: (\n \n ),\n }),\n [\n close,\n isOpen,\n open,\n props,\n tenant,\n staticApiUrl,\n customer,\n dialogProps,\n dialogMode,\n products,\n shared,\n showMrpStatement,\n ],\n );\n};\n","import type { PositionData } from '@ori/analytics-data';\n\ntype EventName = typeof Name;\n\nexport const Name = 'open-product-info-dialog';\n\nexport const OpenProductInfoDialogDialog: EventName = Name;\n\nexport enum DialogMode {\n Favorites = 'favorites',\n Loading = 'loading',\n RewardsShop = 'rewardsShop',\n StandardBuy = 'standardBuy',\n}\n\ninterface ReplaceSubscriptionData {\n droppingId: number;\n subscriptionId: number;\n}\n\nexport interface Data extends PositionData {\n atpClusterId?: number;\n initialProductCode?: string;\n lineNumber?: number;\n mode: DialogMode;\n originalItemCode?: string;\n originalQuantity?: number;\n productCodes: string[];\n replaceSubscription?: ReplaceSubscriptionData;\n}\n\nexport interface Event extends CustomEvent {\n type: EventName;\n}\n\nexport default Event;\n","import * as AddBackorderDemandEvent from '@ori-events/add-backorder-demand';\nimport * as BasketUpdatedEvent from '@ori-events/basket-updated';\nimport * as ReplaceShoppingBagItem from '@ori-events/replace-shopping-bag-item';\nimport * as ReplaceSubscriptionEvent from '@ori-events/replace-subscription';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport interface UseCloseEventsProps {\n onClose: () => void;\n}\n\ntype CloseEvent = AddBackorderDemandEvent.Event | ReplaceShoppingBagItem.Event | ReplaceSubscriptionEvent.Event;\n\nconst events = [AddBackorderDemandEvent.Name, ReplaceShoppingBagItem.Name, ReplaceSubscriptionEvent.Name] as const;\n\nexport const useCloseEvents = ({ onClose }: UseCloseEventsProps) => {\n const [closeEvent, setCloseEvent] = useState();\n const onBasketUpdated = useCallback(() => {\n if (closeEvent) {\n onClose();\n setCloseEvent(undefined);\n }\n }, [closeEvent, onClose]);\n useEffect(() => {\n events.forEach((event) => window.addEventListener(event, setCloseEvent));\n window.addEventListener(BasketUpdatedEvent.Name, onBasketUpdated);\n\n return () => {\n events.forEach((event) => window.removeEventListener(event, setCloseEvent));\n window.removeEventListener(BasketUpdatedEvent.Name, onBasketUpdated);\n };\n }, [onBasketUpdated, onClose]);\n};\n","import { useToken } from '@ori/auth';\nimport { TranslationsNamespaceProvider, TranslationsProvider } from '@ori/i18n';\nimport { ApiClientProvider } from '@ori/static-api-client-react';\nimport type { FunctionComponent } from 'react';\nimport { Suspense, useCallback, useEffect, useState } from 'react';\n\nimport { APP_NAME, defaultTranslations } from '../constants';\nimport { useProductInfoDialog } from '../hooks';\nimport { useCloseEvents, useOpenEvent } from '../hooks/internal';\nimport type { ProductInfoDialogControllerProps } from './types';\n\nconst TranslatedController = ({\n currentLanguage,\n globalApiUrl,\n graphqlUrl,\n staticApiUrl,\n tenant,\n}: Omit) => {\n const [open, setOpen] = useState(false);\n const onClose = useCallback(() => setOpen(false), []);\n const onOpen = useCallback(() => setOpen(true), []);\n const { customerId, isAnonymousUser, token } = useToken();\n const {\n atpClusterId,\n initialProductCode,\n lineNumber,\n mode,\n originalItemCode,\n originalQuantity,\n placement,\n position,\n productCodes,\n replaceSubscription,\n } = useOpenEvent({ onOpen });\n\n const { closeProductInfoDialog, openProductInfoDialog, productInfoDialog } = useProductInfoDialog({\n atpClusterId,\n analytics: {\n lineNumber,\n position,\n placement,\n },\n currentLanguage,\n customer: {\n customerId,\n isAnonymousUser,\n },\n dialog: { onClose },\n globalApiUrl,\n graphqlUrl,\n initialProductCode,\n mode,\n productCodes,\n shared: {\n originalItemCode,\n originalQuantity,\n },\n staticApiUrl,\n tenant,\n token,\n replaceSubscription,\n });\n useCloseEvents({ onClose });\n useEffect(() => {\n if (open) {\n openProductInfoDialog();\n } else {\n closeProductInfoDialog();\n }\n }, [closeProductInfoDialog, open, openProductInfoDialog]);\n\n return productInfoDialog;\n};\n\nexport const ProductInfoDialogController: FunctionComponent = (props) => {\n const { currentLanguage, staticApiUrl, tenant, translations } = props;\n const { token } = useToken();\n\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n","import type { Data, Event } from '@ori-events/open-product-info-dialog';\nimport { DialogMode, Name } from '@ori-events/open-product-info-dialog';\nimport { isNonNullable } from '@ori/ts-utils';\nimport { useEffect, useMemo, useState } from 'react';\n\nexport interface UseOpenEventProps {\n onOpen: () => void;\n}\n\nexport const useOpenEvent = ({ onOpen }: UseOpenEventProps) => {\n const [atpClusterId, setAtpClusterId] = useState();\n const [initialProductCode, setInitialProductCode] = useState();\n const [lineNumber, setLineNumber] = useState();\n const [mode, setMode] = useState(DialogMode.StandardBuy);\n const [originalItemCode, setOriginalItemCode] = useState();\n const [originalQuantity, setOriginalQuantity] = useState();\n const [placement, setPlacement] = useState();\n const [position, setPosition] = useState();\n const [productCodes, setProductCodes] = useState([]);\n const [droppingId, setDroppingId] = useState();\n const [subscriptionId, setSubscriptionId] = useState();\n useEffect(() => {\n const onOpenProductInfoDialog = ({ detail }: Event) => {\n setAtpClusterId(detail.atpClusterId);\n setDroppingId(detail.replaceSubscription?.droppingId);\n setInitialProductCode(detail.initialProductCode);\n setLineNumber(detail.lineNumber);\n setMode(detail.mode);\n setOriginalItemCode(detail.originalItemCode);\n setOriginalQuantity(detail.originalQuantity);\n setPlacement(detail.placement);\n setPosition(detail.position);\n setProductCodes(detail.productCodes);\n setSubscriptionId(detail.replaceSubscription?.subscriptionId);\n onOpen();\n };\n window.addEventListener(Name, onOpenProductInfoDialog);\n\n return () => window.removeEventListener(Name, onOpenProductInfoDialog);\n }, [onOpen]);\n\n return useMemo(\n () => ({\n atpClusterId,\n initialProductCode,\n lineNumber,\n mode,\n originalItemCode,\n originalQuantity,\n placement,\n position,\n productCodes,\n replaceSubscription:\n isNonNullable(droppingId) && isNonNullable(subscriptionId) ? { droppingId, subscriptionId } : undefined,\n }),\n [\n atpClusterId,\n droppingId,\n initialProductCode,\n lineNumber,\n mode,\n originalItemCode,\n originalQuantity,\n placement,\n position,\n productCodes,\n subscriptionId,\n ],\n );\n};\n","import type { Product } from '../models';\n\nexport const shouldShowIsDiscontinuedErrorInfo = (products: Product[]) => {\n if (products.length > 0) {\n return products.every((product) => product.isDiscontinuedAndCannotBeSold);\n }\n\n return false;\n};\n","import type { PickClientAppDataConfigProps } from '@ori/client-app-config';\nimport { ProductInfoDialogController } from '@ori/product-info-dialog';\nimport { Team, TestIdProvider } from '@ori/testid-generator';\nimport { type FC } from 'react';\n\nimport { APP_NAME } from './constants';\n\nexport type AppProps = PickClientAppDataConfigProps<\n 'currentLanguage' | 'globalApiUrl' | 'graphqlUrl' | 'staticApiUrl' | 'tenant'\n>;\nexport const App: FC = ({ currentLanguage, globalApiUrl = '', graphqlUrl, staticApiUrl = '', tenant }) => (\n \n \n \n);\n","import { ReactNode, Component } from 'react';\n\ninterface ErrorBoundaryProps {\n children: JSX.Element;\n}\n\ninterface ErrorBoundaryState {\n error?: Error;\n}\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 console.error(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 { doDevelopmentLogin, UniversalTokenProvider } from '@ori/auth';\nimport type { PickClientAppDataConfigProps } from '@ori/client-app-config';\nimport { parseClientAppConfig } from '@ori/client-app-config';\nimport { createRoot } from 'react-dom/client';\n\nimport { App } from './App';\nimport type { AppProps as AppConfig } from './App';\nimport { EMOTION_CACHE_KEY } from './constants';\nimport { ErrorBoundary } from './containers/ErrorBoundary';\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 { identityUrl, ...appConfig } = parseClientAppConfig<\n AppConfig & PickClientAppDataConfigProps<'customerId' | 'identityUrl'>\n >(config, ['tenant', 'currentLanguage', 'graphqlUrl', 'staticApiUrl', 'globalApiUrl']);\n const { customerId, tenant } = appConfig;\n\n // Get token for local development\n if (process.env.NODE_ENV !== 'production') {\n // when using Requestly we do not want to load token\n if (process.env.REACT_APP_USE_REQUESTLY === '1') {\n // eslint-disable-next-line no-console -- we need to log this info\n console.log('USING REQUESTLY');\n } else if (process.env.REACT_APP_ANONYMOUS_MODE !== '1') {\n await doDevelopmentLogin({ identityUrl, tenant });\n }\n }\n\n createRoot(rootElement).render(\n \n \n \n \n \n \n ,\n );\n}\n","export const DIALOG_MODE_FAVORITES = 'favorites';\n\nexport const DIALOG_MODE_LOADING = 'loading';\n\nexport const DIALOG_MODE_REWARDS_SHOP = 'rewardsShop';\n\nexport const DIALOG_MODE_STANDARD_BUY = 'standardBuy';\n\nexport const DISCONTINUED = 'discontinued';\n\nexport const NOT_FOUND = 'notFound';\n\nexport const DIALOG_MODES = [\n DIALOG_MODE_FAVORITES,\n DIALOG_MODE_LOADING,\n DIALOG_MODE_REWARDS_SHOP,\n DIALOG_MODE_STANDARD_BUY,\n DISCONTINUED,\n NOT_FOUND,\n];\n","import type { Theme } from '@ori-ui/mui';\nimport { useMediaQuery } from '@ori-ui/mui';\n\nexport const useIsDesktop = () => useMediaQuery((theme) => theme.breakpoints.up('md'));\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 type { Product } from '../models';\n\nexport const getInitialProduct = ({\n initialProductCode,\n products,\n}: {\n initialProductCode?: string;\n products: Product[];\n}) => {\n if (initialProductCode) {\n const initialProduct = products.find(({ code }) => code === initialProductCode);\n const initialProductShade = initialProduct?.shades.find(({ productCode }) => productCode === initialProductCode);\n const productIndex = products.findIndex(({ code }) => code === initialProductCode);\n const index = productIndex < 0 ? 0 : productIndex;\n\n return { index, product: initialProduct, shade: initialProductShade };\n }\n\n return { index: 0, product: products[0], shade: products[0]?.shades?.[0] };\n};\n"],"names":["defaultTranslations","buy","choose","goBack","lowestPrice","mrpStatement","productIsDiscontinued","productIsDiscontinuedDescription","productNotFound","productNotFoundDescription","replace","replaceWith","reserve","save","subscribe","Root","styled","Dialog","shouldForwardProp","propName","_templateObject","_taggedTemplateLiteral","_ref","zIndex","_ref2","undefined","dialogBaseClasses","closeButton","paperClasses","root","_ref3","theme","breakpoints","up","props","isInfo","_ref4","_ref5","children","container","header","id","onClose","open","_ref$isInfo","_jsx","size","_defineProperty","display","width","flexDirection","alignItems","gap","spacing","padding","IconContainer","justifyContent","fontSize","justifySelf","color","palette","error","dark","ButtonContainer","marginTop","ErrorInfo","title","description","buttonTitle","handleButtonClick","getTestId","useTestId","_jsxs","ErrorCircle","Typography","variant","textAlign","Button","fullWidth","onClick","Loading","Box","height","CircularProgress","getNonDiscontinuedAndCannotBeSold","products","filter","product","isDiscontinuedAndCannotBeSold","DialogContent","lazy","async","default","DialogContainer","_ref$analytics","analytics","_ref$customer","customer","_ref$dialog","dialog","_ref$handlers","handlers","initialProductCode","_ref$mode","mode","DIALOG_MODE_LOADING","_ref$products","_ref$shared","shared","replaceSubscription","tenant","staticApiUrl","originalItemCode","shade","getInitialProduct","canBeReserved","translations","useTranslations","isDesktop","useIsDesktop","NOT_FOUND","DISCONTINUED","useMemo","content","Suspense","fallback","_objectSpread","ErrorBoundary","_Component","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","concat","setState","_inherits","_createClass","key","value","_this$state","this","state","handleOnClose","message","Component","ProductInfoDialog","ThemeProvider","enableCacheProvider","cacheKey","TestIdProvider","team","Team","Presentation","project","subscriptionBenefitBanner","gql","_templateObject2","concept","_templateObject3","_templateObject4","replacement","_templateObject5","productWithReplacements","_templateObject6","getProducts","_templateObject7","mapProductDiscontinuedAndCannotBeSold","shades","every","isDiscontinued","canBeSold","mapProductBase","_product$concept","_product$concept2","_product$concept$bran","_product$concept$bran2","_product$concept$bran3","_product$concept$bran4","_product$concept$desc","_product$concept$bene","_product$concept$bene2","_product$concept$rati","_product$concept$rati2","isDeletedShade","map","_mapLabels","_shade$availability$i","_shade$availability","_shade$isDiscontinued","_shade$color","_shade$imageUrl","_shade$formattedPrice","_shade$formattedPrice2","_shade$pdpUrl$relativ","_shade$pdpUrl","_shade$formattedPrice3","_shade$formattedPrice4","_shade$formattedPrice5","_shade$formattedPrice6","_shade$formattedPrice7","_shade$formattedPrice8","_shade$formattedPrice9","_shade$formattedPrice10","_shade$formattedPrice11","_shade$formattedPrice12","_shade$backInStockAva","_shade$backInStockAva2","data","_data$title","_data$message","_data$readMoreLink$ti","_data$readMoreLink","_data$readMoreLink$re","_data$readMoreLink2","_data$registerLink$ti","_data$registerLink","_data$registerLink$re","_data$registerLink2","_data$signInLink$titl","_data$signInLink","volume","volumeUnit","_mapShade","mapShade","hexColors","imageUrl","mapLabels","labels","deal","ppa","availability","isBackorder","mapCanBeReserved","mapCanBeSold","canBeSubscribed","mapCanBeSubscribed","name","dealLabel","loyaltyRedeemPoints","formattedPrice","bp","pdpUrl","relativeUrl","ppaLabel","price","basicCashback","current","currentPrice","old","basicCataloguePrice","previousMinOfferPrice","sharingBonus","productCode","trim","showBackInStockNotification","backInStockAvailability","readMoreText","readMoreLink","readMoreUrl","registerText","registerLink","registerUrl","signInText","signInLink","mapShades","brandName","brand","brandUrl","url","code","keyFeatures","benefits","benefit","ratingAverage","ratingCount","replacements","mapProductReplacementFromGql","productBase","mapProductsFromGql","mapProductFromGql","useSWRFetch","fetcher","formattedKey","JSON","stringify","_useState","useState","_useState2","_slicedToArray","currentKey","setCurrentKey","matchingKey","_useSWR","useSWR","fetch","useCallback","isLoaded","isLoading","useGetProductInfoDialogProducts","atpClusterId","currentLanguage","customerId","globalApiUrl","graphqlUrl","productCodes","token","_useSWRFetch","URL","fetchGraphql","query","toString","variables","headers","getSegmentationHeaders","language","sourceAppName","APP_NAME","getProductInfoDialogProducts","_toConsumableArray","useGetProductInfoDialogShowMrpStatement","client","ApiClient","baseUrl","getTenantApplicationsProductDetailConfiguration","isMrpStatementEnabled","getProductInfoDialogShowMrpStatement","Name","DialogMode","events","AddBackorderDemandEvent","ReplaceShoppingBagItem","ReplaceSubscriptionEvent","TranslatedController","setOpen","onOpen","_useToken","useToken","isAnonymousUser","_useOpenEvent","setAtpClusterId","_useState3","_useState4","setInitialProductCode","_useState5","_useState6","lineNumber","setLineNumber","_useState7","StandardBuy","_useState8","setMode","_useState9","_useState10","setOriginalItemCode","_useState11","_useState12","originalQuantity","setOriginalQuantity","_useState13","_useState14","placement","setPlacement","_useState15","_useState16","position","setPosition","_useState17","_useState18","setProductCodes","_useState19","_useState20","droppingId","setDroppingId","_useState21","_useState22","subscriptionId","setSubscriptionId","useEffect","onOpenProductInfoDialog","_detail$replaceSubscr","_detail$replaceSubscr2","detail","window","addEventListener","removeEventListener","isNonNullable","useOpenEvent","_useProductInfoDialog","_ref$fetchMode","fetchMode","FETCH_MODE_LAZY","DIALOG_MODE_STANDARD_BUY","_objectWithoutProperties","_excluded","dialogProps","_excluded2","_useGetProductInfoDia","fetchProducts","areProductsLoaded","areProductsLoading","_useGetProductInfoDia2","showMrpStatement","fetchShowMrpStatement","isShowMrpStatementLoaded","isShowMrpStatementLoading","isOpen","setIsOpen","fetchData","close","FETCH_MODE_EAGER","dialogMode","shouldShowIsDiscontinuedErrorInfo","closeProductInfoDialog","isProductInfoDialogOpen","openProductInfoDialog","productInfoDialog","useProductInfoDialog","closeEvent","setCloseEvent","onBasketUpdated","forEach","event","BasketUpdatedEvent","useCloseEvents","ProductInfoDialogController","TranslationsProvider","clientFetchConfiguration","onError","console","defaultTranslationsWithNamespaces","translationsWithNamespaces","TranslationsNamespaceProvider","namespace","ApiClientProvider","App","_ref$globalApiUrl","_ref$staticApiUrl","render","rootElement","_rootElement$dataset$","dataset","config","_parseClientAppConfig","parseClientAppConfig","appConfig","identityUrl","createRoot","UniversalTokenProvider","initialToken","EMOTION_CACHE_KEY","DIALOG_MODE_FAVORITES","DIALOG_MODE_REWARDS_SHOP","useMediaQuery","useTranslationsFromNamespace","_products$","initialProduct","find","initialProductShade","productIndex","findIndex","index"],"sourceRoot":""}