{"version":3,"file":"297.chunk.js","mappings":"mVAQaA,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,G,UCvBWmB,EAAqC,SAAHV,GAAqB,IAAfW,EAAAX,EAAAW,SACnDC,GAAoCC,EAAAA,EAAAA,KAA5BC,EAAeF,EAAfE,gBAAiBC,EAAAH,EAAAG,OACjBC,GAAiBC,EAAAA,EAAAA,GAAe,CAAC,cAAjCD,aAER,OACEE,EAAAA,EAAAA,KAACC,EAAAA,GAAS,CAACC,MAAO/B,EAAUsB,UAC1BO,EAAAA,EAAAA,KAACG,EAAAA,IAAuB,CACtBC,QAASN,EACTO,SAAUT,EACVC,OAAQA,EAAOJ,SAEdA,KAIT,E,oBChBaa,EAAoC,WAC/C,IAAAZ,GAAoCC,EAAAA,EAAAA,KAA5BC,EAAeF,EAAfE,gBAAiBC,EAAAH,EAAAG,OACzBU,GAAwBC,EAAAA,EAAAA,IACtBX,EACA,CACEY,KAAMb,GAER,CACEc,QAAS,CACPC,SAASC,EAAAA,EAAAA,GAAW,CAAEP,SAAUT,EAAiBiB,cAAeC,EAAAA,GAAUjB,OAAAA,OAPxET,EAAImB,EAAJnB,KAaR,OCpB0B,SAAAV,IAC1BqC,EAAAA,EAAAA,YAAU,WACJrC,aAAiBsC,OAEnBC,QAAQvC,MAAMA,EAElB,GAAG,CAACA,GAAO,CDYXwC,CAXcX,EAAA7B,OAaPU,CACT,E,oBElBa+B,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,ECJMO,GAAUC,EAAAA,EAAAA,OAAsCC,iBAAA,OACpD,sDAAgCC,MAAM,SAAAC,GAAM,MAAM,CAAEC,QAASD,EAAOJ,QAAS,GAC/E,IAEaM,EAAwB,WACnC,ICbAC,EDaMC,EAA8BjC,IAC9BkC,EAAiBrB,IACfvB,GAAoBD,EAAAA,EAAAA,KAApBC,gBACA6C,GAAcC,EAAAA,EAAAA,KAAdD,UAER,OACEzC,EAAAA,EAAAA,KAAA,OAAK,cAAayC,EAAU3B,EAAAA,IAAUrB,UACpCO,EAAAA,EAAAA,KAAC2C,EAAAA,SAAQ,CAACC,SAAU,KAAKnD,UCpB7B6C,EDqB0CC,ECnB1CM,SAAQP,aAAa,EAAbA,EAAeQ,cAAeR,EAAcS,YDoB5C/C,EAAAA,EAAAA,KAAC+B,EAAO,CACNnC,gBAAiBA,EACjB2C,4BAA6BA,EAC7BC,eAAgBA,IAEhB,SAIZ,EErBaQ,EAA2C,CACtDC,eAAgB,mCAChBC,qBAAsB,yBACtBC,eAAgB,2CAChBC,sBAAuB,2BAGZC,EAAwB,0BCGxBC,EAA4E,SAAHxE,GAAyB,IAAnByE,EAAAzE,EAAAyE,aAC1F7D,GAAoCC,EAAAA,EAAAA,KAA5BC,EAAeF,EAAfE,gBAAiBC,EAAAH,EAAAG,OACjBC,GAAiBC,EAAAA,EAAAA,GAAe,CAAC,cAAjCD,aACA0D,GAAUC,EAAAA,EAAAA,KAAVD,MAER,OACExD,EAAAA,EAAAA,KAAC0D,EAAAA,EAAc,CACbC,KAAMC,EAAAA,GACNC,QAAS/C,EAAAA,GAASrB,UAElBO,EAAAA,EAAAA,KAACC,EAAAA,GAAS,CAACC,MAAO/B,EAAUsB,UAC1BO,EAAAA,EAAAA,KAAC2C,EAAAA,SAAQ,CAACC,SAAU,KAAKnD,UACvBO,EAAAA,EAAAA,KAACR,EAAW,CAAAC,UACVO,EAAAA,EAAAA,KAAC8D,EAAAA,EAAoB,CACnBzD,SAAUT,EACVmE,mCAAiCC,EAAAA,EAAAA,GAAA,GAAKX,EAAwBL,GAC9DiB,2BAA4BV,GAAYS,EAAAA,EAAAA,GAAA,GAAMX,EAAwBE,QAAiBW,EAEvFC,yBAA0B,CAAEtE,OAAAA,EAAQ2D,MAAAA,EAAOpD,QAASN,EAAcsE,QAASnD,QAAQvC,OAAQe,UAE3FO,EAAAA,EAAAA,KAACqE,EAAAA,EAA6B,CAACC,UAAWjB,EAAsB5D,UAC9DO,EAAAA,EAAAA,KAACqC,EAAqB,eAQtC,E,UC5CakC,EAAoB,SAAHzF,GAAA,IAAMc,EAAed,EAAfc,gBAAiBC,EAAMf,EAANe,OAAQC,EAAYhB,EAAZgB,aAAc0E,EAAU1F,EAAV0F,WAAYC,EAAY3F,EAAZ2F,aAAcC,EAAW5F,EAAX4F,YAAW,OAC9G1E,EAAAA,EAAAA,KAAC2E,EAAAA,EAAmB,CAClBC,YAAa,CACX9E,aAAAA,EACA+E,WAAYL,EACZC,aAAAA,EACAC,YAAAA,GACAjF,UAEFO,EAAAA,EAAAA,KAAC8E,EAAAA,EAAiB,CAChBlF,gBAAiBA,EACjBC,OAAQA,EAAOJ,UAEfO,EAAAA,EAAAA,KAACsD,EAA+B,OAEd,E,qkBCdjB,IAAMyB,EAAS9C,eAAO+C,GAC3B,IAAAC,EAAwBD,EAAYE,QAA5BtG,OAAAA,OAAM,IAAAqG,EAAG,GAAEA,EACbE,GAAYC,EAAAA,EAAAA,GAAexG,GACzByG,EAAoCF,EAApCE,WAAYX,EAAwBS,EAAxBT,YAAwBS,EAAXtF,OAEjC,IAAK6E,EACH,MAAM,IAAI1D,MAAM,yBA8BlB,OAhBAsE,EAAAA,EAAAA,GAAWN,GAAaD,QACtB/E,EAAAA,EAAAA,KAACuF,EAAAA,EAAa,CAAA9F,UACZO,EAAAA,EAAAA,KAACwF,EAAAA,EAAsB,CACrBH,WAAYA,EACZI,aAAa,GAAEhG,UAEfO,EAAAA,EAAAA,KAAC0F,EAAAA,EAAa,CACZC,qBAAmB,EACnBC,SAAU9E,EAAAA,GAASrB,UAEnBO,EAAAA,EAAAA,KAACuE,EAAGsB,EAAA,GAAKV,YAMV,CACT,C,uFC1CavD,EAAoB,WAG/B,OAFYkE,EAAAA,EAAAA,KAEDC,aAAaC,IAAIC,EAAAA,GAC9B,EAEaC,EAAuB,WAClC,GAAItE,IAAqB,CACvB,IAAMuE,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,MAAsBrE,MAC7CyE,EAAAA,EAAAA,GAAkBF,EAEtB,C","sources":["webpack://orinovageskincareadvisorapp/../../../src/constants/swrConfig.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/constants/defaultTranslations.ts","webpack://orinovageskincareadvisorapp/../../../src/containers/NovageSkincareAdvisorController.tsx","webpack://orinovageskincareadvisorapp/./src/App.tsx","webpack://orinovageskincareadvisorapp/./src/AppRender.tsx","webpack://orinovageskincareadvisorapp/../../../src/utils/openQueryParam.ts"],"sourcesContent":["import type { Revalidator, RevalidatorOptions, SWRConfiguration } from '@ori/fetching';\n\nimport type { ApiError } from '../models';\n\n/* istanbul ignore next */\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","import { useServiceUrls } from '@ori/configuration-manager';\nimport { SWRConfig } from '@ori/fetching';\nimport { ApiClientProvider as StaticApiClientProvider } from '@ori/static-api-client-react';\nimport { useSpaConfig } from '@ori-appshell/config';\nimport type { FC, PropsWithChildren } from 'react';\n\nimport { swrConfig } from '../constants';\n\nexport const ApiProvider: FC = ({ children }) => {\n const { currentLanguage, tenant } = useSpaConfig();\n const { staticApiUrl } = useServiceUrls(['staticApi']);\n\n return (\n \n \n {children}\n \n \n );\n};\n","import { getHeaders } from '@ori/fetching';\nimport { useGetTenantApplicationsAdvisorNovAgeSkincareConfiguration } from '@ori/static-api-client-react';\nimport { useSpaConfig } from '@ori-appshell/config';\n\nimport { useLogError } from './useLogError';\nimport { APP_NAME } from '../constants';\n\nexport const useGetNovageSkincareConfiguration = () => {\n const { currentLanguage, tenant } = useSpaConfig();\n const { data, error } = useGetTenantApplicationsAdvisorNovAgeSkincareConfiguration(\n tenant,\n {\n lang: currentLanguage,\n },\n {\n request: {\n headers: getHeaders({ language: currentLanguage, 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 { useSpaConfig } from '@ori-appshell/config';\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 { currentLanguage } = useSpaConfig();\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","/* istanbul ignore file */\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 */\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 { useToken } from '@ori/auth';\nimport { useServiceUrls } from '@ori/configuration-manager';\nimport { SWRConfig } from '@ori/fetching';\nimport type { Translations } from '@ori/i18n';\nimport { TranslationsNamespaceProvider, TranslationsProvider } from '@ori/i18n';\nimport { TestIdProvider } from '@ori/testid-generator';\nimport { useSpaConfig } from '@ori-appshell/config';\nimport type { FC } from 'react';\nimport { Suspense } from 'react';\n\nimport { ApiProvider } from './ApiProvider';\nimport { NovageSkincareAdvisor } from './NovageSkincareAdvisor';\nimport { APP_NAME, APP_TEAM_NAME, defaultTranslations, swrConfig, translationsNamespace } from '../constants';\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 const { currentLanguage, tenant } = useSpaConfig();\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 { ServiceUrlsProvider } from '@ori/configuration-manager';\nimport { NovageSkincareAdvisorController } from '@ori/novage-skincare-advisor';\nimport type { parseSpaConfig } from '@ori-appshell/config';\nimport { SpaConfigProvider } from '@ori-appshell/config';\nimport type { FC } from 'react';\n\nexport type AppProps = ReturnType;\n\nexport const App: FC = ({ currentLanguage, tenant, staticApiUrl, graphqlUrl, globalApiUrl, identityUrl }) => (\n \n \n \n \n \n);\n","import { UniversalTokenProvider, doDevelopmentLogin } from '@ori/auth';\nimport { APP_NAME } from '@ori/novage-skincare-advisor';\nimport { ErrorBoundary } from '@ori/presentation-components';\nimport { parseSpaConfig } from '@ori-appshell/config';\nimport { ThemeProvider } from '@ori-ui/mui';\nimport { createRoot } from 'react-dom/client';\n\nimport { App } from './App';\n\nexport const render = async (rootElement: HTMLElement) => {\n const { config = '' } = rootElement.dataset;\n const appConfig = parseSpaConfig(config);\n const { customerId, identityUrl, tenant } = appConfig;\n\n if (!identityUrl) {\n throw new Error('Missing Identity URL!');\n }\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","ApiProvider","children","_useSpaConfig","useSpaConfig","currentLanguage","tenant","staticApiUrl","useServiceUrls","_jsx","SWRConfig","value","StaticApiClientProvider","baseUrl","language","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","defaultTranslations","FindingProduct","GetNewRecommendation","Recommendation","SeeRecommendedProduct","translationsNamespace","NovageSkincareAdvisorController","translations","token","useToken","TestIdProvider","team","APP_TEAM_NAME","project","TranslationsProvider","defaultTranslationsWithNamespaces","_defineProperty","translationsWithNamespaces","undefined","clientFetchConfiguration","onError","TranslationsNamespaceProvider","namespace","App","graphqlUrl","globalApiUrl","identityUrl","ServiceUrlsProvider","serviceUrls","graphQlUrl","SpaConfigProvider","render","rootElement","_rootElement$dataset$","dataset","appConfig","parseSpaConfig","customerId","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":""}