{"version":3,"file":"356.chunk.js","mappings":"sWAQaA,EAA8B,CACzCC,gBAAiB,EACjBC,mBAAoB,IACpBC,sBAAuB,IACvBC,oBAAoB,EACpBC,UAAU,EAEVC,aAAc,SACZC,EACAC,EACAC,EACAC,EAAuBC,GAEpB,IAAAC,EAAAC,EADDC,EAAAH,EAAAG,WAEIC,EAAaC,OAAwB,QAAlBJ,EAACL,EAAMU,KAAKC,cAAM,IAAAN,EAAAA,EAAI,KAC/C,KAAIG,GAAc,KAAOA,EAAa,KAAtC,CAGA,IAAMI,EAASL,QAAAA,EAAc,EACzBK,IAAiC,QAA3BN,EAAKJ,EAAOR,uBAAe,IAAAY,EAAAA,EAAI,IAGzCO,YAAW,WAAWV,EAAW,CAAEI,WAAYK,GAAS,GAAEV,EAAOP,mBALjE,CAMF,GClBWmB,EAA2C,CACtDC,eAAgB,mCAChBC,qBAAsB,yBACtBC,eAAgB,2CAChBC,sBAAuB,2BAGZC,EAAwB,0B,mBCXxBC,EAAqC,SAAHhB,GAAqB,IAAfiB,EAAAjB,EAAAiB,SAEEC,GAA7BC,EAAAA,EAAAA,KAAhBC,OAAAA,OAAM,IAAAF,EAAG,GAAAA,EACTG,GAAaC,EAAAA,EAAAA,KAAbD,SACAE,GAAiBC,EAAAA,EAAAA,GAAe,CAAC,cAAjCD,aAER,OACEE,EAAAA,EAAAA,KAACC,EAAAA,GAAS,CAACC,MAAOtC,EAAU4B,UAC1BQ,EAAAA,EAAAA,KAACG,EAAAA,IAAuB,CACtBC,QAASN,EACTF,SAAUA,EACVD,OAAQA,EAAOH,SAEdA,KAIT,E,oBClBaa,EAAoC,WAE/C,IAAqDZ,GAA7BC,EAAAA,EAAAA,KAAhBC,OAAAA,OAAM,IAAAF,EAAG,GAAAA,EACTG,GAAaC,EAAAA,EAAAA,KAAbD,SACRU,GAAwBC,EAAAA,EAAAA,KACtBZ,EACA,CACEa,KAAMZ,GAER,CACEa,QAAS,CACPC,SAASC,EAAAA,EAAAA,GAAW,CAAEf,SAAAA,EAAUgB,cAAeC,EAAAA,GAAUlB,OAAAA,OAPvDd,EAAIyB,EAAJzB,KAaR,OCvB0B,SAAAV,IAC1B2C,EAAAA,EAAAA,YAAU,WACJ3C,aAAiB4C,OAEnBC,QAAQ7C,MAAMA,EAElB,GAAG,CAACA,GAAO,CDeX8C,CAXcX,EAAAnC,OAaPU,CACT,E,mBErBaqC,EAAoB,WAC/B,IAAAC,GAA0BC,EAAAA,EAAAA,YAAkBC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAArCI,EAAKF,EAAA,GAAEG,EAAQH,EAAA,GAQtB,OAPAP,EAAAA,EAAAA,YAAU,WAAM,IAAAW,EACRC,EAAgC,QAAtBD,GAAGE,EAAAA,EAAAA,aAAmB,IAAAF,EAAAA,EAAI,GACtCG,EAAAA,GAA8BC,SAASH,IACzCF,EAASE,EAEb,GAAG,IAEIH,CACT,ECLMO,GAAUC,EAAAA,EAAAA,OAAsCC,iBAAA,OACpD,sDAAgCC,MAAM,SAAAC,GAAM,MAAM,CAAEC,QAASD,EAAOJ,QAAS,GAC/E,IAEaM,EAAwB,WACnC,ICZAC,EDYMC,EAA8BjC,IAC9BkC,EAAiBrB,IACfsB,GAAcC,EAAAA,EAAAA,KAAdD,UAER,OACExC,EAAAA,EAAAA,KAAA,OAAK,cAAawC,EAAU3B,EAAAA,IAAUrB,UACpCQ,EAAAA,EAAAA,KAAC0C,EAAAA,SAAQ,CAACC,SAAU,KAAKnD,UClB7B6C,EDmB0CC,ECjB1CM,SAAQP,aAAa,EAAbA,EAAeQ,cAAeR,EAAcS,YDkB5C9C,EAAAA,EAAAA,KAAC8B,EAAO,CACNQ,4BAA6BA,EAC7BC,eAAgBA,IAEhB,SAIZ,EERaQ,EAA4E,SAAHxE,GAAyB,IAAnByE,EAAAzE,EAAAyE,aAErCvD,GAA7BC,EAAAA,EAAAA,KAAhBC,OAAAA,OAAM,IAAAF,EAAG,GAAAA,EACTG,GAAaC,EAAAA,EAAAA,KAAbD,SACAE,GAAiBC,EAAAA,EAAAA,GAAe,CAAC,cAAjCD,aACAmD,GAAUC,EAAAA,EAAAA,KAAVD,MAER,OACEjD,EAAAA,EAAAA,KAACmD,EAAAA,EAAc,CACbC,KAAMC,EAAAA,GACNC,QAASzC,EAAAA,GAASrB,UAElBQ,EAAAA,EAAAA,KAACC,EAAAA,GAAS,CAACC,MAAOtC,EAAU4B,UAC1BQ,EAAAA,EAAAA,KAAC0C,EAAAA,SAAQ,CAACC,SAAU,KAAKnD,UACvBQ,EAAAA,EAAAA,KAACT,EAAW,CAAAC,UACVQ,EAAAA,EAAAA,KAACuD,EAAAA,EAAoB,CACnB3D,SAAUA,EACV4D,mCAAiCC,EAAAA,EAAAA,GAAA,GAAKnE,EAAwBL,GAC9DyE,2BAA4BV,GAAYS,EAAAA,EAAAA,GAAA,GAAMnE,EAAwB0D,QAAiBW,EAEvFC,yBAA0B,CAAEjE,OAAAA,EAAQsD,MAAAA,EAAO7C,QAASN,EAAc+D,QAAS7C,QAAQ7C,OAAQqB,UAE3FQ,EAAAA,EAAAA,KAAC8D,EAAAA,EAA6B,CAACC,UAAWzE,EAAsBE,UAC9DQ,EAAAA,EAAAA,KAACoC,EAAqB,eAQtC,EC5Ca4B,EAAoB,SAAHzF,GAAA,IAAM0F,EAAe1F,EAAf0F,gBAAiBtE,EAAMpB,EAANoB,OAAQG,EAAYvB,EAAZuB,aAAcoE,EAAU3F,EAAV2F,WAAYC,EAAY5F,EAAZ4F,aAAY,OACjGnE,EAAAA,EAAAA,KAACoE,EAAAA,EAAmB,CAClBC,YAAa,CACXvE,aAAAA,EACAwE,WAAYJ,EACZC,aAAAA,GACA3E,UAEFQ,EAAAA,EAAAA,KAACuE,EAAAA,EAAmB,CAAC5E,OAAQA,EAAOH,UAClCQ,EAAAA,EAAAA,KAACuD,EAAAA,EAAoB,CACnBC,kCAAmC,CAAC,EACpC5D,SAAUqE,EACVP,2BAA4B,CAAC,EAAElE,UAE/BQ,EAAAA,EAAAA,KAAC+C,EAA+B,SAGhB,E,omBChBjB,IAAMyB,EAASxC,eAAOyC,GAC3B,IAAAC,EAAwBD,EAAYE,QAA5BtG,OAAAA,OAAM,IAAAqG,EAAG,GAAEA,EACnBE,GAAkDC,EAAAA,EAAAA,GAEhDxG,EAAQ,CAAC,SAAU,iBAFbyG,EAAUF,EAAVE,WAA4BC,GAALH,EAAXI,aAAyBC,EAAAA,EAAAA,GAAAL,EAAAM,IAG1BH,EAAXpF,OA6BR,OAhBAwF,EAAAA,EAAAA,GAAWV,GAAaD,QACtBxE,EAAAA,EAAAA,KAACoF,EAAAA,EAAa,CAAA5F,UACZQ,EAAAA,EAAAA,KAACqF,EAAAA,EAAsB,CACrBP,WAAYA,EACZQ,aAAa,GAAE9F,UAEfQ,EAAAA,EAAAA,KAACuF,EAAAA,EAAa,CACZC,qBAAmB,EACnBC,SAAU5E,EAAAA,GAASrB,UAEnBQ,EAAAA,EAAAA,KAACgE,EAAG0B,EAAA,GAAKX,YAMV,CACT,C,sFC1CapD,EAAoB,WAG/B,OAFYgE,EAAAA,EAAAA,KAEDC,aAAaC,IAAIC,EAAAA,GAC9B,EAEaC,EAAuB,WAClC,GAAIpE,IAAqB,CACvB,IAAMqE,GAAML,EAAAA,EAAAA,KACZK,EAAIJ,aAAaK,OAAOH,EAAAA,KACxBI,EAAAA,EAAAA,GAAkBF,EACpB,CACF,EAEaG,EAAoB,WAC/B,IAAMH,GAAML,EAAAA,EAAAA,KACZK,EAAIJ,aAAaQ,IAAIN,EAAAA,GAAkBO,EAAAA,IACnCL,EAAIJ,aAAaC,IAAIC,EAAAA,MAAsBnE,MAC7CuE,EAAAA,EAAAA,GAAkBF,EAEtB,C","sources":["webpack://orinovageskincareadvisorapp/../../../src/constants/swrConfig.ts","webpack://orinovageskincareadvisorapp/../../../src/constants/defaultTranslations.ts","webpack://orinovageskincareadvisorapp/../../../src/containers/ApiProvider.tsx","webpack://orinovageskincareadvisorapp/../../../src/hooks/useGetNovageSkincareConfiguration.ts","webpack://orinovageskincareadvisorapp/../../../src/hooks/useLogError.ts","webpack://orinovageskincareadvisorapp/../../../src/hooks/useOpenQueryParam.ts","webpack://orinovageskincareadvisorapp/../../../src/containers/NovageSkincareAdvisor.tsx","webpack://orinovageskincareadvisorapp/../../../src/utils/isValidNovageSkincareConfiguration.ts","webpack://orinovageskincareadvisorapp/../../../src/containers/NovageSkincareAdvisorController.tsx","webpack://orinovageskincareadvisorapp/./src/App.tsx","webpack://orinovageskincareadvisorapp/./src/AppRender.tsx","webpack://orinovageskincareadvisorapp/../../../src/utils/openQueryParam.ts"],"sourcesContent":["// istanbul ignore file\nimport type { Revalidator, RevalidatorOptions, SWRConfiguration } from '@ori/fetching';\n\nimport type { ApiError } from '../models';\n\n/**\n * SWR config\n */\nexport const swrConfig: SWRConfiguration = {\n errorRetryCount: 3,\n errorRetryInterval: 10000,\n focusThrottleInterval: 300000,\n shouldRetryOnError: true,\n suspense: false,\n /* eslint-disable max-params -- library requires too many parameters */\n onErrorRetry: (\n error: ApiError,\n key: string,\n config: SWRConfiguration,\n revalidate: Revalidator,\n { retryCount }: RevalidatorOptions,\n ) => {\n const statusCode = Number(error.data.status ?? 200);\n if (statusCode >= 400 && statusCode < 500) {\n return;\n }\n const rCount = retryCount ?? 1;\n if (rCount >= (config.errorRetryCount ?? 0)) {\n return;\n }\n setTimeout(() => void revalidate({ retryCount: rCount }), config.errorRetryInterval);\n },\n /* eslint-enable max-params */\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 FindingProduct: 'Finding the best product for you',\n GetNewRecommendation: 'Get new recommendation',\n Recommendation: 'We have a product recommendation for you',\n SeeRecommendedProduct: 'See recommended product',\n};\n\nexport const translationsNamespace = 'novage-skincare-advisor';\n","import { useServiceUrls } from '@ori/configuration-manager';\nimport { useEnvironmentConfiguration } from '@ori/environment';\nimport { SWRConfig } from '@ori/fetching';\nimport { useTranslationsWithNamespaces } from '@ori/i18n';\nimport { ApiClientProvider as StaticApiClientProvider } from '@ori/static-api-client-react';\nimport type { FC, PropsWithChildren } from 'react';\n\nimport { swrConfig } from '../constants';\n\nexport const ApiProvider: FC = ({ children }) => {\n // istanbul ignore next\n const { tenant = '' } = useEnvironmentConfiguration();\n const { language } = useTranslationsWithNamespaces();\n const { staticApiUrl } = useServiceUrls(['staticApi']);\n\n return (\n \n \n {children}\n \n \n );\n};\n","import { useEnvironmentConfiguration } from '@ori/environment';\nimport { getHeaders } from '@ori/fetching';\nimport { useTranslationsWithNamespaces } from '@ori/i18n';\nimport { useGetTenantApplicationsAdvisorNovAgeSkincareConfiguration } from '@ori/static-api-client-react';\n\nimport { APP_NAME } from '../constants';\nimport { useLogError } from './useLogError';\n\nexport const useGetNovageSkincareConfiguration = () => {\n // istanbul ignore next\n const { tenant = '' } = useEnvironmentConfiguration();\n const { language } = useTranslationsWithNamespaces();\n const { data, error } = useGetTenantApplicationsAdvisorNovAgeSkincareConfiguration(\n tenant,\n {\n lang: language,\n },\n {\n request: {\n headers: getHeaders({ language, sourceAppName: APP_NAME, tenant }),\n },\n },\n );\n useLogError(error);\n\n return data;\n};\n","import { useEffect } from 'react';\n\nexport const useLogError = (error?: unknown) =>\n useEffect(() => {\n if (error instanceof Error) {\n // eslint-disable-next-line no-console -- log error to console\n console.error(error);\n }\n }, [error]);\n","import { useEffect, useState } from 'react';\n\nimport { OPEN_QUERY_PARAM_VALID_VALUES } from '../constants';\nimport { getOpenQueryParam } from '../utils';\n\nexport const useOpenQueryParam = () => {\n const [param, setParam] = useState();\n useEffect(() => {\n const queryParam = getOpenQueryParam() ?? '';\n if (OPEN_QUERY_PARAM_VALID_VALUES.includes(queryParam)) {\n setParam(queryParam);\n }\n }, []);\n\n return param;\n};\n","import useTestId from '@ori/testid-generator';\nimport type { FunctionComponent } from 'react';\nimport { lazy, Suspense } from 'react';\n\nimport type { RevieveProps } from '../components';\nimport { APP_NAME } from '../constants';\nimport { useGetNovageSkincareConfiguration } from '../hooks/useGetNovageSkincareConfiguration';\nimport { useOpenQueryParam } from '../hooks/useOpenQueryParam';\nimport { isValidNovageSkincareConfiguration } from '../utils';\n\nconst Revieve = lazy>(async () =>\n import('../components/Revieve').then((module) => ({ default: module.Revieve })),\n);\n\nexport const NovageSkincareAdvisor = () => {\n const novageSkincareConfiguration = useGetNovageSkincareConfiguration();\n const openQueryParam = useOpenQueryParam();\n const { getTestId } = useTestId();\n\n return (\n
\n \n {isValidNovageSkincareConfiguration(novageSkincareConfiguration) ? (\n \n ) : null}\n \n
\n );\n};\n","import type { StaticApplicationsAdvisorNovAgeSkincareConfigurationDto } from '@ori/static-api-client-react';\n\nexport const isValidNovageSkincareConfiguration = (\n configuration: StaticApplicationsAdvisorNovAgeSkincareConfigurationDto | undefined,\n): configuration is Required =>\n Boolean(configuration?.environment && configuration.partnerId);\n","import { useToken } from '@ori/auth';\nimport { useServiceUrls } from '@ori/configuration-manager';\nimport { useEnvironmentConfiguration } from '@ori/environment';\nimport { SWRConfig } from '@ori/fetching';\nimport type { Translations } from '@ori/i18n';\nimport { TranslationsNamespaceProvider, TranslationsProvider, useTranslationsWithNamespaces } from '@ori/i18n';\nimport { TestIdProvider } from '@ori/testid-generator';\nimport type { FC } from 'react';\nimport { Suspense } from 'react';\n\nimport { APP_NAME, APP_TEAM_NAME, defaultTranslations, swrConfig, translationsNamespace } from '../constants';\nimport { ApiProvider } from './ApiProvider';\nimport { NovageSkincareAdvisor } from './NovageSkincareAdvisor';\n\nexport interface NovageSkincareAdvisorControllerProps {\n /** Translations for NovageSkincareAdvisor. */\n translations?: Translations | undefined;\n}\n\n/**\n * Accepts config data, fetches data for FeedbackBenefitDialog and renders it if\n * OpenFeedbackBenefitDialog event is dispatched\n */\nexport const NovageSkincareAdvisorController: FC = ({ translations }) => {\n // istanbul ignore next\n const { tenant = '' } = useEnvironmentConfiguration();\n const { language } = useTranslationsWithNamespaces();\n const { staticApiUrl } = useServiceUrls(['staticApi']);\n const { token } = useToken();\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import type { PickClientAppDataConfigProps } from '@ori/client-app-config';\nimport { ServiceUrlsProvider } from '@ori/configuration-manager';\nimport { EnvironmentProvider } from '@ori/environment';\nimport { TranslationsProvider } from '@ori/i18n';\nimport { NovageSkincareAdvisorController } from '@ori/novage-skincare-advisor';\nimport type { FC } from 'react';\n\nexport type AppProps = PickClientAppDataConfigProps<\n 'currentLanguage' | 'globalApiUrl' | 'graphqlUrl' | 'staticApiUrl' | 'tenant'\n>;\nexport const App: FC = ({ currentLanguage, tenant, staticApiUrl, graphqlUrl, globalApiUrl }) => (\n \n \n \n \n \n \n \n);\n","import { ThemeProvider } from '@ori-ui/mui';\nimport { UniversalTokenProvider, doDevelopmentLogin } from '@ori/auth';\nimport type { PickClientAppDataConfigProps } from '@ori/client-app-config';\nimport { parseClientAppConfig } from '@ori/client-app-config';\nimport { APP_NAME } from '@ori/novage-skincare-advisor';\nimport { ErrorBoundary } from '@ori/presentation-components';\nimport { createRoot } from 'react-dom/client';\n\nimport type { AppProps as AppConfig } from './App';\nimport { App } from './App';\n\nexport const render = async (rootElement: HTMLElement) => {\n const { config = '' } = rootElement.dataset;\n const { customerId, identityUrl, ...appConfig } = parseClientAppConfig<\n AppConfig & PickClientAppDataConfigProps<'customerId' | 'identityUrl'>\n >(config, ['tenant', 'staticApiUrl']);\n const { 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 return true;\n};\n","import { getCurrentUrl, replaceCurrentUrl } from '@ori/presentation-utils';\n\nimport { OPEN_QUERY_PARAM, OPEN_QUERY_PARAM_ONCE } from '../constants';\n\nexport const getOpenQueryParam = () => {\n const url = getCurrentUrl();\n\n return url.searchParams.get(OPEN_QUERY_PARAM);\n};\n\nexport const removeOpenQueryParam = () => {\n if (getOpenQueryParam()) {\n const url = getCurrentUrl();\n url.searchParams.delete(OPEN_QUERY_PARAM);\n replaceCurrentUrl(url);\n }\n};\n\nexport const setOpenQueryParam = () => {\n const url = getCurrentUrl();\n url.searchParams.set(OPEN_QUERY_PARAM, OPEN_QUERY_PARAM_ONCE);\n if (url.searchParams.get(OPEN_QUERY_PARAM) !== getOpenQueryParam()) {\n replaceCurrentUrl(url);\n }\n};\n"],"names":["swrConfig","errorRetryCount","errorRetryInterval","focusThrottleInterval","shouldRetryOnError","suspense","onErrorRetry","error","key","config","revalidate","_ref","_error$data$status","_config$errorRetryCou","retryCount","statusCode","Number","data","status","rCount","setTimeout","defaultTranslations","FindingProduct","GetNewRecommendation","Recommendation","SeeRecommendedProduct","translationsNamespace","ApiProvider","children","_useEnvironmentConfig2","useEnvironmentConfiguration","tenant","language","useTranslationsWithNamespaces","staticApiUrl","useServiceUrls","_jsx","SWRConfig","value","StaticApiClientProvider","baseUrl","useGetNovageSkincareConfiguration","_useGetTenantApplicat","useGetTenantApplicationsAdvisorNovAgeSkincareConfiguration","lang","request","headers","getHeaders","sourceAppName","APP_NAME","useEffect","Error","console","useLogError","useOpenQueryParam","_useState","useState","_useState2","_slicedToArray","param","setParam","_getOpenQueryParam","queryParam","getOpenQueryParam","OPEN_QUERY_PARAM_VALID_VALUES","includes","Revieve","lazy","async","then","module","default","NovageSkincareAdvisor","configuration","novageSkincareConfiguration","openQueryParam","getTestId","useTestId","Suspense","fallback","Boolean","environment","partnerId","NovageSkincareAdvisorController","translations","token","useToken","TestIdProvider","team","APP_TEAM_NAME","project","TranslationsProvider","defaultTranslationsWithNamespaces","_defineProperty","translationsWithNamespaces","undefined","clientFetchConfiguration","onError","TranslationsNamespaceProvider","namespace","App","currentLanguage","graphqlUrl","globalApiUrl","ServiceUrlsProvider","serviceUrls","graphQlUrl","EnvironmentProvider","render","rootElement","_rootElement$dataset$","dataset","_parseClientAppConfig","parseClientAppConfig","customerId","appConfig","identityUrl","_objectWithoutProperties","_excluded","createRoot","ErrorBoundary","UniversalTokenProvider","initialToken","ThemeProvider","enableCacheProvider","cacheKey","_objectSpread","getCurrentUrl","searchParams","get","OPEN_QUERY_PARAM","removeOpenQueryParam","url","delete","replaceCurrentUrl","setOpenQueryParam","set","OPEN_QUERY_PARAM_ONCE"],"sourceRoot":""}