{"version":3,"file":"143.chunk.js","mappings":"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","sources":["webpack://oribackinstocknotification/./src/api/helpers/TokenProvider.ts","webpack://oribackinstocknotification/./src/api/policies/AuthorizationPolicy.ts","webpack://oribackinstocknotification/./src/api/policies/CustomHeaderPolicy.ts","webpack://oribackinstocknotification/./src/api/ClientProvider.ts","webpack://oribackinstocknotification/./src/api/policies/TenantPolicy.ts","webpack://oribackinstocknotification/./src/contexts/AppContext.tsx","webpack://oribackinstocknotification/./src/helpers/i18n.ts","webpack://oribackinstocknotification/./src/models/TranslationKey.ts","webpack://oribackinstocknotification/./src/helpers/useTranslationByKeys.ts","webpack://oribackinstocknotification/./src/components/NotifyCumulus/helpers/NotifyTypeEnum.ts","webpack://oribackinstocknotification/./src/components/Loading/Loading.tsx","webpack://oribackinstocknotification/./src/components/PopupHeader/PopupHeader.tsx","webpack://oribackinstocknotification/./src/components/NotifyCumulus/NotifyForm/useClassNames.ts","webpack://oribackinstocknotification/./src/components/NotifyCumulus/NotifyForm/NotifyForm.tsx","webpack://oribackinstocknotification/./src/components/NotifyCumulus/NotifyType/NotifyType.tsx","webpack://oribackinstocknotification/./src/components/NotifyCumulus/Thanks/Thanks.tsx","webpack://oribackinstocknotification/./src/components/NotifyCumulus/NotifyCumulus.tsx","webpack://oribackinstocknotification/./src/components/NotifyNonCumulus/NotifyNonCumulus.tsx","webpack://oribackinstocknotification/./src/components/NotifyPopup/NotifyPopup.tsx","webpack://oribackinstocknotification/./src/containers/ErrorBoundary/ErrorBoundary.tsx","webpack://oribackinstocknotification/./src/containers/BackInStockNotificationApp.tsx","webpack://oribackinstocknotification/./src/helpers/getConfiguration.ts","webpack://oribackinstocknotification/./src/AppRender.tsx","webpack://oribackinstocknotification/./src/providers/translationsProvider.ts"],"sourcesContent":["import { OidcAccessToken, OidcTokenStorage } from '@ori/auth';\n\ndeclare global {\n interface Token {\n Token: string;\n }\n\n interface TokenService {\n getToken: () => Promise;\n getPublicToken: () => Promise;\n }\n\n interface Ori {\n tokenService?: TokenService;\n }\n\n interface Window {\n ori?: Ori;\n }\n}\n\nclass TokenProvider {\n private readonly oidcTokenStorage: OidcTokenStorage = new OidcTokenStorage();\n\n async getAuthorizationToken(): Promise {\n let token: string | null = await this.getTokenServiceUserToken();\n\n if (!token) {\n token = this.getSessionStorageToken();\n }\n\n if (!token) {\n token = await this.getTokenServicePublicToken();\n }\n\n if (!token) {\n throw new Error('Missing access token');\n }\n\n return token;\n }\n\n async getCustomerId(): Promise {\n try {\n const token = await this.getToken();\n\n return token.getClaim('customer_id');\n } catch {\n return null;\n }\n }\n\n private async getToken(): Promise {\n if (window.ori?.tokenService) {\n const oriToken = await window.ori.tokenService.getToken();\n\n if (oriToken) {\n return new OidcAccessToken(oriToken.Token);\n }\n }\n\n const token: OidcAccessToken | null = this.oidcTokenStorage.getAccessToken();\n if (token !== null) {\n return token;\n }\n\n throw new Error('Missing auth token');\n }\n\n // eslint-disable-next-line class-methods-use-this -- required for tokenService\n private async getTokenServiceUserToken(): Promise {\n if (window.ori?.tokenService) {\n try {\n const oriToken = await window.ori.tokenService.getToken();\n\n if (oriToken) {\n return oriToken.Token;\n }\n } catch {\n // silence is golden\n }\n }\n\n return null;\n }\n\n private getSessionStorageToken(): string | null {\n const token = this.oidcTokenStorage.getAccessToken();\n\n if (token !== null) {\n return token.toString();\n }\n\n return null;\n }\n\n // eslint-disable-next-line class-methods-use-this -- required for tokenService\n private async getTokenServicePublicToken(): Promise {\n if (window.ori?.tokenService) {\n try {\n const oriToken = await window.ori.tokenService.getPublicToken();\n\n if (oriToken) {\n return oriToken.Token;\n }\n } catch {\n // silence is golden\n }\n }\n\n return null;\n }\n}\n\nconst tokenProvider = new TokenProvider();\n\nexport { tokenProvider as TokenProvider };\n","import {\n BaseRequestPolicy,\n HttpOperationResponse,\n RequestPolicy,\n RequestPolicyFactory,\n RequestPolicyOptions,\n WebResource,\n} from '@azure/ms-rest-js';\n\nimport { TokenProvider } from '../helpers/TokenProvider';\n\nclass AuthorizationPolicy extends BaseRequestPolicy {\n private readonly headerName: string = 'Authorization';\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor -- It's not useless, as it gives *public* access to the constructor\n constructor(nextPolicy: RequestPolicy, options: RequestPolicyOptions) {\n super(nextPolicy, options);\n }\n\n async sendRequest(request: WebResource): Promise {\n await this.addAuthorizationHeader(request);\n\n return this._nextPolicy.sendRequest(request);\n }\n\n private async addAuthorizationHeader(request: WebResource): Promise {\n const token = await TokenProvider.getAuthorizationToken();\n\n if (!request.headers.get(this.headerName) && token) {\n request.headers.set(this.headerName, token);\n }\n }\n}\n\nexport const authorizationPolicy = (): RequestPolicyFactory => ({\n create: (nextPolicy: RequestPolicy, options: RequestPolicyOptions): RequestPolicy =>\n new AuthorizationPolicy(nextPolicy, options),\n});\n","import {\n BaseRequestPolicy,\n HttpOperationResponse,\n RequestPolicy,\n RequestPolicyOptions,\n WebResource,\n} from '@azure/ms-rest-js';\n\nexport class CustomHeaderPolicy extends BaseRequestPolicy {\n private readonly headerKey: string;\n private readonly headerValue: string;\n\n // eslint-disable-next-line max-params -- Old ignore rule\n constructor(nextPolicy: RequestPolicy, options: RequestPolicyOptions, headerKey: string, headerValue: string) {\n super(nextPolicy, options);\n\n this.headerKey = headerKey;\n this.headerValue = headerValue;\n }\n\n async sendRequest(request: WebResource): Promise {\n this.addCustomHeader(request);\n\n return this._nextPolicy.sendRequest(request);\n }\n\n private addCustomHeader(request: WebResource): void {\n if (!request.headers.get(this.headerKey) && this.headerValue) {\n request.headers.set(this.headerKey, this.headerValue);\n }\n }\n}\n","import {\n deserializationPolicy,\n exponentialRetryPolicy,\n redirectPolicy,\n systemErrorRetryPolicy,\n} from '@azure/ms-rest-js';\nimport type { ApiModels } from '@ori/global-api-client';\nimport { Api } from '@ori/global-api-client';\n\nimport type { NotifyMePopupConfig } from '../models';\nimport { authorizationPolicy } from './policies/AuthorizationPolicy';\nimport { tenantPolicy } from './policies/TenantPolicy';\n\ntype InnerAppConfig = Omit;\n\nclass ClientProvider {\n private clientInternal: Api | undefined;\n private appConfig?: InnerAppConfig;\n\n init(appConfig: InnerAppConfig) {\n this.appConfig = appConfig;\n }\n\n private create(): Api {\n if (!this.appConfig) {\n throw new Error('[back-in-stock-notification]: ClientProvider was not initialized!');\n }\n\n const options: ApiModels.ApiOptions = {\n baseUri: this.appConfig.globalApiUrl,\n\n requestPolicyFactories: [\n authorizationPolicy(),\n tenantPolicy(this.appConfig.tenant),\n deserializationPolicy(),\n redirectPolicy(),\n exponentialRetryPolicy(),\n systemErrorRetryPolicy(),\n ],\n };\n\n return new Api(options);\n }\n\n get client(): Api {\n if (!this.clientInternal) {\n this.clientInternal = this.create();\n }\n\n return this.clientInternal;\n }\n}\n\nexport const clientProvider = new ClientProvider();\n\nexport const getApiClient = (): Api => clientProvider.client;\n","import type { RequestPolicy, RequestPolicyFactory, RequestPolicyOptions } from '@azure/ms-rest-js';\n\nimport { CustomHeaderPolicy } from './CustomHeaderPolicy';\n\nconst headerName = 'x-tenant-context';\n\nexport const tenantPolicy = (tenant: string): RequestPolicyFactory => ({\n create: (nextPolicy: RequestPolicy, options: RequestPolicyOptions): RequestPolicy =>\n new CustomHeaderPolicy(nextPolicy, options, headerName, tenant),\n});\n","import type { FC } from 'react';\nimport { createContext, useContext } from 'react';\n\nimport type { NotifyMePopupConfig } from '../models';\n\ntype ContextValues = Omit;\n\nconst AppContext = createContext({\n currentLanguage: '',\n globalApiUrl: '',\n tenant: '',\n notifyMeSubscriptionConfiguration: {\n IsCumulusMarket: false,\n IsEditionEnabled: false,\n IsSmsSubscriptionEnabled: false,\n MarketingApprovalWarningText: '',\n NonCumulusIframeSrc: '',\n ShowMarketingApprovalWarning: false,\n },\n});\n\nexport const useAppContext = () => useContext(AppContext);\n\nexport const AppContextProvider: FC = ({ children, ...configs }) => (\n {children}\n);\n","import type { TOptionsBase } from 'i18next';\n\ninterface SitecoreTranslation {\n [key: number]: number | string;\n [key: string]: number | string;\n}\n\nexport const sitecoreTranslation = (value: SitecoreTranslation): TOptionsBase => ({\n ...value,\n interpolation: {\n prefix: '{',\n suffix: '}',\n },\n});\n","export enum TranslationKey {\n notifyMe = 'Notify me when the product becomes available',\n thankYou = 'ThankYou',\n notifyMeSuccess = 'NotifyMesubscriptionSuccess',\n email = 'E-mail',\n sms = 'SMS',\n enterYourEmail = 'Enter your email below to be notified when this item is back on stock.',\n enterTelephoneNumber = 'Enter telephone number',\n invalidEmail = 'E-mail address is not valid.',\n}\n","import type { TFunction } from 'i18next';\nimport { useTranslation } from 'react-i18next';\n\nimport type { TranslationKey } from '../models';\nimport { sitecoreTranslation } from './i18n';\n\ninterface SitecoreTranslation {\n [key: number]: number | string;\n [key: string]: number | string;\n}\n\nconst translateKey = (key: TranslationKey, t: TFunction, interpolationOptions?: SitecoreTranslation): string => {\n if (typeof interpolationOptions === 'undefined') {\n return t(key);\n }\n\n return t(key, sitecoreTranslation(interpolationOptions));\n};\n\nexport function useTranslationByKey(): (key: TranslationKey, interpolationOptions?: SitecoreTranslation) => string {\n const [t] = useTranslation();\n const returnFunc = (key: TranslationKey, interpolationOptions?: SitecoreTranslation): string =>\n translateKey(key, t, interpolationOptions);\n\n return returnFunc;\n}\n","export enum NotifyTypeEnum {\n email = 'email',\n sms = 'sms',\n}\n","import type { SxProps } from '@ori-ui/mui';\nimport { Box, CircularProgress } from '@ori-ui/mui';\n\nconst boxStyle: SxProps = {\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n height: 'inherit',\n justifyContent: 'center',\n textAlign: 'center',\n};\n\nexport const Loading = () => (\n \n \n \n);\n","import { styled } from '@ori-ui/mui';\nimport React from 'react';\n\nexport interface PopupHeaderProps {\n title: string;\n}\n\nconst Root = styled('p')(({ theme }) => ({\n margin: '0 0 30px',\n color: theme.palette.grey[600],\n fontSize: 20,\n fontWeight: 'bold',\n lineHeight: '29px',\n textAlign: 'center',\n}));\n\nexport const PopupHeader: React.FC = ({ title }) => {title};\n","/* eslint-disable unicorn/no-nested-ternary -- clashes with prettier */\nimport type { Theme } from '@ori-ui/mui';\nimport { makeStyles } from '@mui/styles';\n\ninterface Props {\n isActiveInput: boolean;\n isCorrectInputData: boolean;\n inputData: string;\n}\n\nconst isValid = ({ isCorrectInputData, inputData }: Props) => isCorrectInputData && !!inputData.length;\nconst isInvalid = ({ isCorrectInputData, inputData }: Props) => !inputData.length || !isCorrectInputData;\n\nconst buttonAndInformationBase: Record = {\n position: 'absolute',\n bottom: '0',\n padding: '0',\n transition: '0.3s',\n border: 'none',\n backgroundColor: 'transparent',\n fontSize: '30px',\n cursor: 'pointer',\n};\n\nexport const useClassNames = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n borderRadius: '0 0 5px 5px',\n backgroundColor: theme.palette.common.white,\n },\n\n form: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n },\n\n formField: {\n display: 'flex',\n position: 'relative',\n flexDirection: 'column',\n marginBottom: '5px',\n },\n\n inputLabel: {\n marginBottom: '11px',\n color: (props) => (isInvalid(props) ? theme.palette.error.main : theme.palette.text.secondary),\n fontSize: '12px',\n lineHeight: '20px',\n },\n\n inputField: {\n boxSizing: 'border-box',\n height: '28px',\n padding: '10px 0',\n border: `solid ${theme.palette.grey[300]}`,\n borderWidth: '0 0 1px 0',\n outline: 'none',\n fontSize: '14px',\n lineHeight: '19px',\n borderBottomColor: (props) => (isInvalid(props) ? theme.palette.error.main : theme.palette.grey[300]),\n },\n\n validateInfo: {\n margin: '0 0 10px',\n color: theme.palette.error.main,\n fontSize: '12px',\n lineHeight: '20px',\n opacity: (props) => (isInvalid(props) ? 1 : 0),\n [theme.breakpoints.up(768)]: {\n marginBottom: 0,\n },\n },\n\n button: {\n ...buttonAndInformationBase,\n display: 'flex',\n right: (props) => (isInvalid(props) ? '30px' : 0),\n color: (props) =>\n isValid(props)\n ? theme.palette.primary.main\n : isInvalid(props)\n ? theme.palette.error.main\n : theme.palette.grey[300],\n },\n\n information: {\n ...buttonAndInformationBase,\n right: 0,\n display: 'flex',\n opacity: (props) => (isInvalid(props) ? 1 : 0),\n color: (props) => (isInvalid(props) ? theme.palette.error.main : theme.palette.grey[300]),\n },\n}));\n","import { ErrorCircle, Send, SendFilled } from '@ori-ui/icons';\nimport type { SyntheticEvent } from 'react';\nimport React, { useCallback, useState } from 'react';\n\nimport { getApiClient } from '../../../api/ClientProvider';\nimport { TokenProvider } from '../../../api/helpers/TokenProvider';\nimport { useAppContext } from '../../../contexts';\nimport { useTranslationByKey } from '../../../helpers/useTranslationByKeys';\nimport { TranslationKey } from '../../../models';\nimport { NotifyTypeEnum } from '../helpers/NotifyTypeEnum';\nimport { useClassNames } from './useClassNames';\n\nconst REGEX_EMAIL = /^(([^\\s(),:;<>@\\]]+(\\.[^\\s(),.:;<>@[\\]]+)*)|(.+))@(([^\\s(),:;<>@[\\]]+\\.)+[^\\s(),:;<>@[\\]]{2,})$/i;\n\nexport interface NotifyFormProps {\n currentType: string;\n handleOnChange: (event: React.FormEvent) => void;\n handleOnSubmit: () => void;\n inputData: string;\n productCode: string;\n}\n\nexport const NotifyForm: React.FC = (props) => {\n const { tenant } = useAppContext();\n const t = useTranslationByKey();\n const { currentType, inputData, handleOnSubmit, handleOnChange, productCode }: NotifyFormProps = props;\n const [isActiveInput, setIsActiveInput] = useState(false);\n const isEmail: boolean = NotifyTypeEnum.email === currentType;\n const client = getApiClient();\n const isCorrectInputData: boolean = isEmail ? REGEX_EMAIL.test(inputData) : !!inputData.length;\n const classNames = useClassNames({\n isActiveInput,\n isCorrectInputData,\n inputData,\n });\n\n const handleOnFocus = useCallback((): void => {\n setIsActiveInput(!isActiveInput);\n }, [isActiveInput]);\n\n const handleOnClick = useCallback(\n async (event: SyntheticEvent): Promise => {\n event.preventDefault();\n\n if (!isCorrectInputData) {\n return;\n }\n\n const customerId = await TokenProvider.getCustomerId();\n await client.createBackInStockNotificationSubscription(tenant, {\n body: {\n customerId: Number(customerId),\n notificationChannel: isEmail ? 'Email' : 'Sms',\n itemCode: productCode,\n [isEmail ? 'email' : 'telephoneNumber']: inputData,\n },\n });\n\n handleOnSubmit();\n },\n [client, handleOnSubmit, inputData, isCorrectInputData, isEmail, productCode, tenant],\n );\n\n return (\n
\n
\n
\n \n \n
\n \n
\n \n
\n {!isCorrectInputData &&

{t(TranslationKey.invalidEmail)}

}\n
\n
\n );\n};\n","import { makeStyles } from '@mui/styles';\nimport { FormControlLabel, Radio, RadioGroup } from '@ori-ui/mui';\nimport React from 'react';\n\nimport { useAppContext } from '../../../contexts';\nimport { useTranslationByKey } from '../../../helpers/useTranslationByKeys';\nimport { TranslationKey } from '../../../models';\nimport { NotifyTypeEnum } from '../helpers/NotifyTypeEnum';\n\nexport interface NotifyTypeProps {\n currentType: string;\n handleOnChange: (event: React.FormEvent) => void;\n}\n\nconst useClassNames = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n color: theme.palette.text.primary,\n fontSize: '14px',\n lineHeight: '21px',\n margin: '0 30px 15px 0',\n\n [theme.breakpoints.up(768)]: {\n flexDirection: 'row',\n marginBottom: '18px',\n },\n },\n}));\n\nexport const NotifyType: React.FC = ({ currentType, handleOnChange }) => {\n const { notifyMeSubscriptionConfiguration } = useAppContext();\n const t = useTranslationByKey();\n const classNames = useClassNames();\n\n return (\n \n }\n label={t(TranslationKey.email)}\n />\n {notifyMeSubscriptionConfiguration.IsSmsSubscriptionEnabled && (\n }\n label={t(TranslationKey.sms)}\n />\n )}\n \n );\n};\n","import { CheckCircle } from '@ori-ui/icons';\nimport { styled } from '@ori-ui/mui';\nimport React from 'react';\n\nimport { useTranslationByKey } from '../../../helpers/useTranslationByKeys';\nimport { TranslationKey } from '../../../models';\n\ninterface ThanksProps {\n contactToUser: string;\n}\n\nconst Root = styled('div')(({ theme }) => ({\n display: 'block',\n minHeight: '60px',\n '.ori-icon::before': {\n position: 'absolute',\n right: '1px',\n bottom: '-55px',\n [theme.breakpoints.up('sm')]: {\n position: 'static',\n lineHeight: theme.typography.pxToRem(50),\n },\n },\n}));\nconst IconWrap = styled('div')(({ theme }) => ({\n display: 'flex',\n justifyContent: 'center',\n position: 'relative',\n color: theme.palette.primary.main,\n fontSize: theme.typography.pxToRem(58),\n marginBottom: theme.spacing(6),\n [theme.breakpoints.up('sm')]: {\n fontSize: theme.typography.pxToRem(73),\n },\n}));\nconst Header = styled('h2')(({ theme }) => ({\n color: theme.palette.text.primary,\n display: 'flex',\n justifyContent: 'center',\n fontSize: theme.typography.pxToRem(20),\n lineHeight: theme.typography.pxToRem(20),\n marginBottom: theme.spacing(3),\n}));\nconst TextInfo = styled('p')(({ theme }) => ({\n color: theme.palette.text.primary,\n textAlign: 'center',\n fontSize: theme.typography.pxToRem(14),\n lineHeight: theme.typography.pxToRem(19),\n margin: 0,\n paddingBottom: theme.spacing(1),\n}));\n\nexport const Thanks: React.FC = ({ contactToUser }) => {\n const t = useTranslationByKey();\n\n return (\n \n \n \n \n
{t(TranslationKey.thankYou)}
\n {t(TranslationKey.notifyMeSuccess, { 0: contactToUser })}\n
\n );\n};\n","import { styled } from '@ori-ui/mui';\nimport type { AxiosResponse } from 'axios';\nimport axios from 'axios';\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { useAppContext } from '../../contexts';\nimport { useTranslationByKey } from '../../helpers/useTranslationByKeys';\nimport { TranslationKey } from '../../models';\nimport { Loading } from '../Loading/Loading';\nimport { PopupHeader } from '../PopupHeader/PopupHeader';\nimport { NotifyTypeEnum } from './helpers/NotifyTypeEnum';\nimport { NotifyForm } from './NotifyForm/NotifyForm';\nimport { NotifyType } from './NotifyType/NotifyType';\nimport { Thanks } from './Thanks/Thanks';\n\nconst defaultData: UserDataFromAPI = {\n email: null,\n telephoneNumber: null,\n};\n\ninterface UserDataFromAPI {\n email: string | null;\n telephoneNumber: string | null;\n}\n\ninterface NotifyCumulusProps {\n productCode: string;\n}\n\nconst Root = styled('div')(({ theme }) => ({\n height: 300,\n overflow: 'hidden',\n [theme.breakpoints.up(768)]: {\n boxSizing: 'border-box',\n width: 350,\n padding: '0 10px',\n },\n}));\n\nexport const NotifyCumulus: React.FC = ({ productCode }) => {\n const { notifyMeSubscriptionConfiguration, onlineBaseUrl } = useAppContext();\n const t = useTranslationByKey();\n const [currentType, changeType] = useState(NotifyTypeEnum.email);\n const [inputData, changeInputData] = useState('');\n const [isReserved, changeReservationState] = useState(false);\n const [userDataFromAPI, setUserData] = useState(defaultData);\n const fetchData = async (): Promise => {\n const { data }: AxiosResponse = await axios.get(\n new URL('/system/ajax/stockNotification/userData', onlineBaseUrl ?? window.location.origin).toString(),\n );\n\n setUserData(data);\n if (data.email && currentType === NotifyTypeEnum.email) {\n changeInputData(data.email);\n } else if (data.telephoneNumber && currentType === NotifyTypeEnum.sms) {\n changeInputData(data.telephoneNumber);\n }\n };\n\n useEffect(\n () => {\n fetchData();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps -- Old ignore rule\n [],\n );\n\n const handleOnChangeData = useCallback(\n (event: React.FormEvent): void => {\n if (!notifyMeSubscriptionConfiguration.IsEditionEnabled) {\n return;\n }\n\n const trimmedValue = event.currentTarget.value.trim();\n\n changeInputData(trimmedValue);\n },\n [notifyMeSubscriptionConfiguration.IsEditionEnabled],\n );\n\n const handleOnChangeType = useCallback(\n (event: React.FormEvent): void => {\n const { value } = event.currentTarget;\n\n changeType(value as NotifyTypeEnum);\n if (userDataFromAPI.email && value === NotifyTypeEnum.email) {\n changeInputData(userDataFromAPI.email);\n } else if (userDataFromAPI.telephoneNumber && value === NotifyTypeEnum.sms) {\n changeInputData(userDataFromAPI.telephoneNumber);\n }\n },\n [userDataFromAPI.email, userDataFromAPI.telephoneNumber],\n );\n\n const handleOnSubmit = useCallback((): void => {\n changeReservationState(true);\n }, []);\n\n if (!inputData) {\n return (\n \n \n \n );\n }\n\n return (\n \n {isReserved ? (\n \n ) : (\n <>\n \n \n \n \n )}\n \n );\n};\n","import { styled } from '@ori-ui/mui';\nimport React from 'react';\n\nimport { useAppContext } from '../../contexts';\n\ninterface NotifyNonCumulusProps {\n productCode: string;\n}\n\nconst PRODUCT_CODE_PARAM = 'prodCode';\nconst CODE_PARAM = 'code';\n\nconst Root = styled('div')(({ theme }) => ({\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n height: 250,\n [theme.breakpoints.up(768)]: {\n width: 350,\n },\n}));\n\nconst StyledIframe = styled('iframe')({\n flexGrow: 1,\n});\n\nexport const NotifyNonCumulus: React.FC = ({ productCode }) => {\n const { notifyMeSubscriptionConfiguration } = useAppContext();\n const parseUrl = new URL(notifyMeSubscriptionConfiguration.NonCumulusIframeSrc);\n\n parseUrl.searchParams.set(PRODUCT_CODE_PARAM, productCode);\n parseUrl.searchParams.set(CODE_PARAM, productCode);\n\n return (\n \n \n \n );\n};\n","import type { Event } from '@ori-events/open-back-in-stock-notification-dialog';\nimport { Name } from '@ori-events/open-back-in-stock-notification-dialog';\nimport { DialogBase } from '@ori-ui/components';\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { useAppContext } from '../../contexts';\nimport { NotifyCumulus } from '../NotifyCumulus/NotifyCumulus';\nimport { NotifyNonCumulus } from '../NotifyNonCumulus/NotifyNonCumulus';\n\nexport const NotifyPopup: React.FC = () => {\n const { notifyMeSubscriptionConfiguration } = useAppContext();\n const [productCode, setProductCode] = useState('');\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const closeDialog = useCallback(() => {\n setIsDialogOpen(false);\n }, []);\n const element = notifyMeSubscriptionConfiguration.IsCumulusMarket ? (\n \n ) : (\n \n );\n\n useEffect(() => {\n const openDialog = (event: Event): void => {\n const { code } = event.detail;\n\n setIsDialogOpen(true);\n setProductCode(code);\n };\n\n window.addEventListener(Name, openDialog as EventListener);\n\n return () => window.removeEventListener(Name, openDialog as EventListener);\n }, []);\n\n return (\n \n {element}\n \n );\n};\n","import React from 'react';\n\ninterface ErrorBoundaryProps {\n children: JSX.Element;\n}\n\ninterface ErrorBoundaryState {\n error?: Error;\n}\n\nexport class ErrorBoundary extends React.Component {\n readonly state: ErrorBoundaryState = {};\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { error };\n }\n\n render(): JSX.Element {\n const { error }: ErrorBoundaryState = this.state;\n\n if (error) {\n return (\n
\n

Ooops... error found :(

\n
{error.message}
\n
\n );\n }\n\n const { children }: ErrorBoundaryProps = this.props;\n\n return children;\n }\n}\n","import { ThemeProvider as StylesThemeProvider } from '@mui/styles';\nimport type { Theme } from '@ori-ui/mui';\nimport { ThemeProvider, StyledEngineProvider, theme } from '@ori-ui/mui';\nimport i18next from 'i18next';\nimport type { VFC } from 'react';\nimport React, { Suspense, useEffect } from 'react';\nimport { I18nextProvider } from 'react-i18next';\n\nimport { clientProvider } from '../api/ClientProvider';\nimport { NotifyPopup } from '../components/NotifyPopup/NotifyPopup';\nimport { AppContextProvider } from '../contexts';\nimport type { NotifyMePopupConfig } from '../models';\nimport { ErrorBoundary } from './ErrorBoundary/ErrorBoundary';\n\ndeclare module '@mui/styles' {\n // eslint-disable-next-line @typescript-eslint/no-empty-interface -- needed\n interface DefaultTheme extends Theme {}\n}\n\nexport const BackInStockNotificationApp: VFC = ({ translations, ...restConfig }) => {\n i18next.init({\n lng: 'default',\n resources: {\n default: {\n translation: translations ?? {},\n },\n },\n keySeparator: '::',\n });\n\n useEffect(() => {\n clientProvider.init(restConfig);\n }, [restConfig]);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import type { NotifyMePopupConfig } 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 NotifyMePopupConfig;\n};\n\nexport const getConfiguration = (element: HTMLElement): NotifyMePopupConfig => {\n const finalConfig = parseSpaConfig(element.dataset.config as string);\n\n if (!finalConfig.tenant) {\n throw new Error('Missing config values!');\n }\n\n return finalConfig;\n};\n","import ReactDOM from 'react-dom';\n\nimport { BackInStockNotificationApp } from './containers/BackInStockNotificationApp';\nimport { getConfiguration } from './helpers/getConfiguration';\nimport { translationsProvider } from './providers';\n\nexport const render = async (rootElement: HTMLElement): Promise => {\n const {\n currentLanguage,\n translations: translationsFromDataset,\n onlineBaseUrl,\n ...otherConfig\n } = getConfiguration(rootElement);\n\n const translations =\n translationsFromDataset ??\n (await translationsProvider(onlineBaseUrl ?? window.location.origin, currentLanguage));\n\n ReactDOM.render(\n ,\n rootElement,\n );\n};\n","import { fetchTranslations } from '@ori-appshell/shared';\n\nimport type { ITranslationsProviderResponse } from '../models';\nimport { TranslationKey } from '../models';\n\nexport const translationsProvider = async (\n baseUrl: string,\n currentLanguage: string,\n): Promise => {\n const { translations } = await fetchTranslations({ baseUrl, currentLanguage, keys: TranslationKey });\n\n return translations ?? {};\n};\n"],"names":["tokenProvider","TokenProvider","OidcTokenStorage","async","token","this","getTokenServiceUserToken","getSessionStorageToken","getTokenServicePublicToken","Error","getToken","getClaim","window","ori","tokenService","oriToken","OidcAccessToken","Token","oidcTokenStorage","getAccessToken","toString","getPublicToken","AuthorizationPolicy","nextPolicy","options","request","addAuthorizationHeader","_nextPolicy","sendRequest","headers","get","headerName","set","BaseRequestPolicy","CustomHeaderPolicy","headerKey","headerValue","addCustomHeader","clientProvider","ClientProvider","appConfig","tenant","baseUri","globalApiUrl","requestPolicyFactories","create","deserializationPolicy","redirectPolicy","exponentialRetryPolicy","systemErrorRetryPolicy","Api","clientInternal","AppContext","createContext","currentLanguage","notifyMeSubscriptionConfiguration","IsCumulusMarket","IsEditionEnabled","IsSmsSubscriptionEnabled","MarketingApprovalWarningText","NonCumulusIframeSrc","ShowMarketingApprovalWarning","useAppContext","useContext","AppContextProvider","children","configs","Provider","value","TranslationKey","translateKey","key","t","interpolationOptions","interpolation","prefix","suffix","useTranslationByKey","useTranslation","NotifyTypeEnum","boxStyle","alignItems","display","flexDirection","height","justifyContent","textAlign","Loading","Box","sx","CircularProgress","size","Root","styled","margin","color","theme","palette","grey","fontSize","fontWeight","lineHeight","PopupHeader","title","isInvalid","isCorrectInputData","inputData","length","buttonAndInformationBase","position","bottom","padding","transition","border","backgroundColor","cursor","useClassNames","makeStyles","root","borderRadius","common","white","form","width","formField","marginBottom","inputLabel","props","error","main","text","secondary","inputField","boxSizing","borderWidth","outline","borderBottomColor","validateInfo","opacity","breakpoints","up","button","right","primary","information","REGEX_EMAIL","NotifyForm","currentType","handleOnSubmit","handleOnChange","productCode","useState","isActiveInput","setIsActiveInput","isEmail","email","client","test","classNames","handleOnFocus","useCallback","handleOnClick","event","preventDefault","customerId","createBackInStockNotificationSubscription","body","Number","notificationChannel","itemCode","className","enterYourEmail","enterTelephoneNumber","type","onBlur","onChange","onFocus","ErrorCircle","onClick","SendFilled","Send","invalidEmail","NotifyType","RadioGroup","name","FormControlLabel","id","control","Radio","label","sms","minHeight","typography","pxToRem","IconWrap","spacing","Header","TextInfo","paddingBottom","Thanks","contactToUser","CheckCircle","thankYou","notifyMeSuccess","defaultData","telephoneNumber","overflow","NotifyCumulus","onlineBaseUrl","changeType","changeInputData","isReserved","changeReservationState","userDataFromAPI","setUserData","useEffect","data","axios","URL","location","origin","fetchData","handleOnChangeData","trimmedValue","currentTarget","trim","handleOnChangeType","notifyMe","StyledIframe","flexGrow","NotifyNonCumulus","parseUrl","searchParams","src","NotifyPopup","setProductCode","isDialogOpen","setIsDialogOpen","closeDialog","element","openDialog","code","detail","addEventListener","Name","removeEventListener","DialogBase","open","onClose","ErrorBoundary","state","message","React","BackInStockNotificationApp","translations","restConfig","i18next","lng","resources","default","translation","keySeparator","init","Suspense","fallback","I18nextProvider","i18n","StyledEngineProvider","injectFirst","enableCacheProvider","cacheKey","getConfiguration","finalConfig","config","JSON","parse","parseSpaConfig","dataset","render","rootElement","translationsFromDataset","otherConfig","baseUrl","fetchTranslations","keys","translationsProvider","ReactDOM"],"sourceRoot":""}