{"version":3,"file":"753.chunk.js","mappings":"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","sources":["webpack://orinovageskincareadvisorapp/../../../src/utils/cookies.ts","webpack://orinovageskincareadvisorapp/../../../src/utils/revieve.ts","webpack://orinovageskincareadvisorapp/../../../src/hooks/useRevieveScript.ts","webpack://orinovageskincareadvisorapp/../../../src/hooks/useOnHrefClick.ts","webpack://orinovageskincareadvisorapp/../../../src/hooks/useTranslations.ts","webpack://orinovageskincareadvisorapp/../../../../src/components/Dialog/Dialog.tsx","webpack://orinovageskincareadvisorapp/../../../../src/components/Loading/Loading.tsx","webpack://orinovageskincareadvisorapp/../../../../src/components/Restore/styles.ts","webpack://orinovageskincareadvisorapp/../../../../src/components/Restore/Restore.tsx","webpack://orinovageskincareadvisorapp/../../../../src/components/Revieve/constants.ts","webpack://orinovageskincareadvisorapp/../../../src/hooks/useRedirectToPdp.ts","webpack://orinovageskincareadvisorapp/../../../src/hooks/useSessionStorage.ts","webpack://orinovageskincareadvisorapp/../../../../src/components/Revieve/utils.ts","webpack://orinovageskincareadvisorapp/../../../../src/components/Revieve/hooks.ts","webpack://orinovageskincareadvisorapp/../../../src/hooks/useLocale.ts","webpack://orinovageskincareadvisorapp/../../../src/hooks/useRevieveAdvisor.ts","webpack://orinovageskincareadvisorapp/../../../../src/components/Revieve/Revieve.tsx"],"sourcesContent":["const createNameRegExp = (name: string) => new RegExp(`(^| )${name}=([^;]+)`);\n\nexport const getCookie = (name: string) => {\n const match = document.cookie.match(createNameRegExp(name));\n\n return (match ?? [])[2];\n};\n","/* istanbul ignore file */\nimport type { Revieve, RevieveUserId } from 'revieve';\n\nimport { ONE_TRUST_GROUP_PERFORMANCE, OPTANON_CONSENT_COOKIE, REVIEVE_USER_ID_COOKIE } from '../constants';\nimport { getCookie } from './cookies';\n\nexport const getRevieveUserId = (): RevieveUserId | undefined => getCookie(REVIEVE_USER_ID_COOKIE);\n\nexport const hideRevieve = () => window.Revieve?.API.hide();\n\nexport const initRevieve: Revieve['Init'] = (config, callback) =>\n // eslint-disable-next-line new-cap -- 3rd party naming\n window.Revieve?.Init(config, callback);\n\nexport const isAnalyticsConsentGranted = (): boolean => {\n if (!getCookie(OPTANON_CONSENT_COOKIE)) {\n return true;\n }\n\n return new RegExp(`groups=[^;]*${ONE_TRUST_GROUP_PERFORMANCE}%3A1`).test(getCookie(OPTANON_CONSENT_COOKIE) ?? '');\n};\n\nexport const showRevieve = () => window.Revieve?.API.show();\n\nexport const unmountRevieve = () => window.Revieve?.API.unmount();\n","import { useCallback, useEffect } from 'react';\nimport type { RevieveInitConfig } from 'revieve';\n\nimport { initRevieve, unmountRevieve } from '../utils';\n\nconst SCRIPT_ID = 'revieve-plugin-loader';\n\nconst SCRIPT_URL = 'https://d38knilzwtuys1.cloudfront.net/revieve-plugin-v4/revieve-plugin-loader.js';\n\nconst getScriptTag = (onLoad: () => void) => {\n let script = document.getElementById(SCRIPT_ID) as HTMLScriptElement | null;\n if (script === null) {\n script = document.createElement('script');\n script.async = true;\n script.charset = 'utf8';\n script.id = SCRIPT_ID;\n script.src = SCRIPT_URL;\n script.type = 'text/javascript';\n script.addEventListener('load', onLoad);\n }\n\n return script;\n};\n\nconst insertScriptTag = (script: HTMLScriptElement) => {\n const scripts = document.getElementsByTagName('script');\n const firstScript = scripts.item(0);\n if (!firstScript?.parentNode?.contains(script)) {\n firstScript?.parentNode?.insertBefore(script, firstScript);\n }\n};\n\nexport interface UseRevieveScriptProps {\n initConfig: RevieveInitConfig;\n onInit?: () => void;\n}\n\nexport const useRevieveScript = ({ initConfig, onInit }: UseRevieveScriptProps) => {\n const onLoad = useCallback(() => initRevieve(initConfig, onInit), [initConfig, onInit]);\n useEffect(() => {\n const script = getScriptTag(onLoad);\n insertScriptTag(script);\n\n return () => {\n unmountRevieve();\n script.removeEventListener('load', onLoad);\n script.remove();\n };\n }, [onLoad]);\n};\n","import { useEffect } from 'react';\n\nconst shouldOpen = (href: string, target: EventTarget | null) => {\n // document.activeElement points to the element that currently has focus,\n // usually it is the most recent thing that was clicked (and can be focused).\n // This is what we actually need when clicking anything wrapped in an Anchor -\n // - image or other passive elements cannot have focus so it goes to the wrapping anchor.\n if (document.activeElement) {\n return document.activeElement instanceof HTMLAnchorElement && document.activeElement.hash === href;\n }\n\n // fallback code for the 0.1% cases where document does not provide activeElement -\n // - pick the event target and if it is not an Anchor, see if any of its parents is.\n // If we don't find one, stop at Body - there's nothing of interest upwards.\n let bubblingTarget = target as HTMLElement | null;\n while (bubblingTarget && !(bubblingTarget instanceof HTMLBodyElement)) {\n if (bubblingTarget instanceof HTMLAnchorElement) {\n return bubblingTarget.hash === href;\n }\n bubblingTarget = bubblingTarget.parentElement;\n }\n\n return false;\n};\n\nexport interface UseOnHrefClickProps {\n href: string;\n onClick: () => void;\n}\n\nexport const useOnHrefClick = ({ href, onClick }: UseOnHrefClickProps) =>\n useEffect(() => {\n const onOpen = (event: MouseEvent) => {\n if (shouldOpen(href, event.target)) {\n event.preventDefault();\n onClick();\n }\n };\n document.addEventListener('click', onOpen);\n\n return () => document.removeEventListener('click', onOpen);\n }, [href, onClick]);\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 { Dialog as OriUIDialog } from '@ori-ui/components';\nimport { Box, Typography } from '@ori-ui/mui';\n\nimport type { DialogProps } from './types';\n\nexport const Dialog = ({ children, header, hideCloseButton, onClose, open }: DialogProps) => (\n \n \n \n {header}\n \n {children}\n \n \n);\n","import { CircularProgress } from '@ori-ui/mui';\n\nimport { useTranslations } from '../../hooks';\nimport { Dialog } from '../Dialog';\nimport type { LoadingProps } from './types';\n\nexport const Loading = ({ show = false }: LoadingProps) => {\n const { translations } = useTranslations();\n\n return (\n \n \n \n );\n};\n","export const boxFlexDirection = { xs: 'column', sm: 'row' } as const;\n","import { Box, Button } from '@ori-ui/mui';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { useTranslations } from '../../hooks';\nimport { Dialog } from '../Dialog';\nimport { boxFlexDirection } from './styles';\nimport type { RestoreProps } from './types';\n\nexport const Restore = ({ onClose, onContinue, onReset, show = false }: RestoreProps) => {\n const [open, setOpen] = useState(show);\n const { translations } = useTranslations();\n const handleOnClose = useCallback(() => {\n setOpen(false);\n onClose();\n }, [onClose]);\n useEffect(() => {\n setOpen(show);\n }, [show]);\n\n return (\n \n \n \n {translations.GetNewRecommendation}\n \n \n {translations.SeeRecommendedProduct}\n \n \n \n );\n};\n","export const STATE_DEFAULT = 'state:default';\nexport const STATE_LOADING = 'state:loading';\nexport const STATE_RESTORED = 'state:restored';\nexport const TRACKING_TITLE_CONDITIONS = 'Conditions';\nexport const TRACKING_TITLE_SELFIE = 'Selfie';\nexport const TRACKING_CATEGORY_PRODUCT_RECOMMENDATION = 'Product Recommendation';\nexport const USER_ACTION_DIAGNOSIS_STARTED = ['skin_advisor', 'Skin diagnosis started'];\nexport const USER_ACTION_DIAGNOSIS_COMPLETED = ['skin_advisor', 'Skin diagnosis completed'];\nexport const WITH_SELFIE = 'With selfie';\nexport const WITHOUT_SELFIE = 'Without selfie';\n","import { useCallback, useEffect, useRef } from 'react';\nimport type { RevieveProduct } from 'revieve';\n\nconst origin = '&origin=revieve';\n\nconst getPdpUrl = ({ id, url }: RevieveProduct) => {\n if (url) {\n return `${url}${origin}`;\n }\n\n return `${window.location.origin}/products/product?code=${id}${origin}`;\n};\n\nexport const useRedirectToPdp = () => {\n const timeout = useRef();\n useEffect(() => () => clearTimeout(timeout.current));\n\n return useCallback((product: RevieveProduct, delay = 0) => {\n const redirect = () => window.location.assign(getPdpUrl(product));\n timeout.current = setTimeout(redirect, delay);\n }, []);\n};\n","import type { StaticApplicationsAdvisorNovAgeSkincareConfigurationDto } from '@ori/static-api-client-react';\nimport { useCallback, useMemo } from 'react';\nimport type { RevieveProduct } from 'revieve';\n\nimport { getRevieveUserId } from '../utils';\n\nexport interface UseSessionStorageProps {\n novageSkincareConfiguration: StaticApplicationsAdvisorNovAgeSkincareConfigurationDto;\n}\n\nconst getProductKey = () => `persist:${getRevieveUserId()}:product`;\n\nexport const useSessionStorage = ({\n novageSkincareConfiguration: { environment, partnerId },\n}: UseSessionStorageProps) => {\n const advisorKey = `persist:${partnerId}-${environment}`;\n const clear = useCallback(() => {\n window.sessionStorage.removeItem(advisorKey);\n window.sessionStorage.removeItem(getProductKey());\n }, [advisorKey]);\n const restoreProduct = useCallback(() => {\n const product = window.sessionStorage.getItem(getProductKey());\n\n return product ? (JSON.parse(product) as RevieveProduct) : undefined;\n }, []);\n const storeProduct = useCallback(\n (product: RevieveProduct) => window.sessionStorage.setItem(getProductKey(), JSON.stringify(product)),\n [],\n );\n\n return useMemo(() => ({ clear, restoreProduct, storeProduct }), [clear, restoreProduct, storeProduct]);\n};\n","import * as AddToBasketEvent from '@ori-events/add-to-basket';\nimport * as ToggleFavorite from '@ori-events/toggle-favorite';\nimport * as UserAction from '@ori-events/user-action';\nimport type { RevieveProduct, RevieveTrackingPayload, RevieveTrackingProductItem } from 'revieve';\n\nimport {\n TRACKING_CATEGORY_PRODUCT_RECOMMENDATION,\n TRACKING_TITLE_CONDITIONS,\n TRACKING_TITLE_SELFIE,\n USER_ACTION_DIAGNOSIS_COMPLETED,\n USER_ACTION_DIAGNOSIS_STARTED,\n WITHOUT_SELFIE,\n WITH_SELFIE,\n} from './constants';\n\nexport const addToBasket = ({ id }: RevieveProduct) =>\n window.dispatchEvent(\n new CustomEvent(AddToBasketEvent.Name, {\n detail: { itemCode: id, quantity: 1 },\n }),\n );\n\nexport const toggleFavorite = ({ id }: RevieveProduct) =>\n window.dispatchEvent(\n new CustomEvent(ToggleFavorite.Name, {\n detail: { code: id },\n }),\n );\n\nexport const sendUserEvents = ({ payload }: RevieveTrackingPayload) => {\n if (payload.payload) {\n const { category, items } = payload.payload;\n if (category === TRACKING_CATEGORY_PRODUCT_RECOMMENDATION && items) {\n UserAction.dispatch([\n ...USER_ACTION_DIAGNOSIS_COMPLETED,\n items.map((p: RevieveTrackingProductItem) => p.item_id).join(','),\n ]);\n }\n }\n switch (payload.title) {\n case TRACKING_TITLE_CONDITIONS:\n UserAction.dispatch([...USER_ACTION_DIAGNOSIS_STARTED, WITHOUT_SELFIE]);\n break;\n case TRACKING_TITLE_SELFIE:\n UserAction.dispatch([...USER_ACTION_DIAGNOSIS_STARTED, WITH_SELFIE]);\n break;\n default:\n break;\n }\n};\n","import { useEnvironmentConfiguration } from '@ori/environment';\nimport { getCurrentUrl } from '@ori/presentation-utils';\nimport { useCallback, useMemo, useState } from 'react';\nimport type { RevieveInitConfig } from 'revieve';\n\nimport { OPEN_QUERY_PARAM, OPEN_QUERY_PARAM_ALWAYS } from '../../constants';\nimport { useLocale, useRedirectToPdp, useRevieveAdvisor, useSessionStorage } from '../../hooks';\nimport { isAnalyticsConsentGranted, removeOpenQueryParam, setOpenQueryParam } from '../../utils';\nimport { STATE_DEFAULT, STATE_LOADING, STATE_RESTORED } from './constants';\nimport type { RevieveProps, RevieveState } from './types';\nimport { addToBasket, sendUserEvents, toggleFavorite } from './utils';\n\nexport const useRevieve = ({ novageSkincareConfiguration, openQueryParam }: RevieveProps) => {\n const { environment, partnerId } = novageSkincareConfiguration;\n const canChangeOpenQueryParam = openQueryParam !== OPEN_QUERY_PARAM_ALWAYS;\n const redirectToPdp = useRedirectToPdp();\n const locale = useLocale();\n const [state, setState] = useState(STATE_DEFAULT);\n const { tenant } = useEnvironmentConfiguration();\n const { close, open, reset } = useRevieveAdvisor({ novageSkincareConfiguration });\n const { restoreProduct, storeProduct } = useSessionStorage({\n novageSkincareConfiguration,\n });\n const clearOpenQueryParam = useCallback(() => {\n if (canChangeOpenQueryParam) {\n removeOpenQueryParam();\n }\n }, [canChangeOpenQueryParam]);\n const setupOpenQueryParam = useCallback(() => {\n if (canChangeOpenQueryParam) {\n setOpenQueryParam();\n }\n }, [canChangeOpenQueryParam]);\n const continueToPdp = useCallback(() => {\n const product = restoreProduct();\n if (product) {\n redirectToPdp(product);\n }\n }, [redirectToPdp, restoreProduct]);\n const handleClose = useCallback(() => {\n setState(STATE_DEFAULT);\n clearOpenQueryParam();\n }, [clearOpenQueryParam]);\n const handleOpen = useCallback(() => {\n setupOpenQueryParam();\n if (restoreProduct()) {\n setState(STATE_RESTORED);\n } else {\n open();\n }\n }, [setupOpenQueryParam, open, restoreProduct]);\n\n const initConfig = useMemo(() => {\n const disableAnalytics = !isAnalyticsConsentGranted();\n\n return {\n env: environment,\n locale,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- 3rd party naming\n partner_id: partnerId,\n analytics: {\n disableUsageAnalytics: disableAnalytics,\n disableProductAnalytics: disableAnalytics,\n disableErrorReporting: disableAnalytics,\n },\n onClose: handleClose,\n onAddToCart: (data) => {\n if (Array.isArray(data)) {\n data.forEach(addToBasket);\n } else {\n addToBasket(data);\n }\n },\n onAddToFavorites: toggleFavorite,\n onCheckout: () => {\n const url = getCurrentUrl();\n url.pathname = '/shopping/basket';\n url.searchParams.delete(OPEN_QUERY_PARAM);\n window.location.assign(url);\n },\n onDisplayProducts: (historyId, products) => {\n // TODO -- Remove this once the behavior is configurable\n if (tenant === 'by') {\n return;\n }\n const product = products[0];\n if (product) {\n setupOpenQueryParam();\n storeProduct(product);\n redirectToPdp(product, 2000);\n }\n },\n onTrackingEvent: sendUserEvents,\n onFetchProducts: () => {\n // TODO -- Remove this once the behavior is configurable\n if (tenant === 'by') {\n return;\n }\n close();\n setState(STATE_LOADING);\n },\n onRemoveFromFavorites: toggleFavorite,\n };\n }, [close, environment, handleClose, locale, partnerId, redirectToPdp, setupOpenQueryParam, storeProduct, tenant]);\n const onInit = useCallback(() => {\n if (openQueryParam) {\n handleOpen();\n }\n }, [handleOpen, openQueryParam]);\n const handleReset = useCallback(() => {\n setState(STATE_DEFAULT);\n reset(initConfig);\n handleOpen();\n }, [handleOpen, initConfig, reset]);\n\n return useMemo(\n () => ({\n close: handleClose,\n continueToPdp,\n initConfig,\n onInit,\n open: handleOpen,\n reset: handleReset,\n state,\n }),\n [continueToPdp, handleClose, handleOpen, handleReset, initConfig, onInit, state],\n );\n};\n","import { useTranslationsWithNamespaces } from '@ori/i18n';\n\nexport const useLocale = () => {\n const { language } = useTranslationsWithNamespaces();\n const [locale] = language.split('-');\n\n return locale;\n};\n","import type { StaticApplicationsAdvisorNovAgeSkincareConfigurationDto } from '@ori/static-api-client-react';\nimport { useCallback, useMemo } from 'react';\nimport type { RevieveInitConfig } from 'revieve';\n\nimport { hideRevieve, initRevieve, showRevieve, unmountRevieve } from '../utils';\nimport { useSessionStorage } from './useSessionStorage';\n\nexport interface UseRevieveAdvisorProps {\n novageSkincareConfiguration: StaticApplicationsAdvisorNovAgeSkincareConfigurationDto;\n}\n\nexport const useRevieveAdvisor = ({ novageSkincareConfiguration }: UseRevieveAdvisorProps) => {\n const { clear } = useSessionStorage({ novageSkincareConfiguration });\n const reset = useCallback(\n (config: RevieveInitConfig) => {\n unmountRevieve();\n clear();\n initRevieve(config);\n },\n [clear],\n );\n\n return useMemo(() => ({ close: hideRevieve, open: showRevieve, reset }), [reset]);\n};\n","import { OPEN_HREF_ATTRIBUTE } from '../../constants';\nimport { useOnHrefClick, useRevieveScript } from '../../hooks';\nimport { Loading } from '../Loading';\nimport { Restore } from '../Restore';\nimport { STATE_LOADING, STATE_RESTORED } from './constants';\nimport { useRevieve } from './hooks';\nimport type { RevieveProps } from './types';\n\nexport const Revieve = (props: RevieveProps) => {\n const { close, continueToPdp, initConfig, onInit, open, reset, state } = useRevieve(props);\n useRevieveScript({ initConfig, onInit });\n useOnHrefClick({ href: OPEN_HREF_ATTRIBUTE, onClick: open });\n\n return (\n <>\n \n \n \n );\n};\n"],"names":["getCookie","name","match","document","cookie","RegExp","concat","createNameRegExp","hideRevieve","_window$Revieve","window","Revieve","API","hide","initRevieve","config","callback","_window$Revieve2","Init","showRevieve","_window$Revieve3","show","unmountRevieve","_window$Revieve4","unmount","SCRIPT_ID","useRevieveScript","_ref","initConfig","onInit","onLoad","useCallback","useEffect","script","getElementById","createElement","async","charset","id","src","type","addEventListener","getScriptTag","_firstScript$parentNo","_firstScript$parentNo2","firstScript","getElementsByTagName","item","parentNode","contains","insertBefore","insertScriptTag","removeEventListener","remove","useOnHrefClick","href","onClick","onOpen","event","target","activeElement","HTMLAnchorElement","hash","bubblingTarget","HTMLBodyElement","parentElement","shouldOpen","preventDefault","useTranslations","useTranslationsFromNamespace","Dialog","children","header","hideCloseButton","onClose","open","_jsx","OriUIDialog","size","_jsxs","Box","alignItems","display","flexDirection","height","justifyContent","textAlign","width","Typography","fontSize","fontWeight","pb","pt","px","variant","Loading","_ref$show","translations","FindingProduct","CircularProgress","color","boxFlexDirection","xs","sm","Restore","onContinue","onReset","_useState","useState","_useState2","_slicedToArray","setOpen","handleOnClose","Recommendation","gap","mx","Button","GetNewRecommendation","SeeRecommendedProduct","STATE_DEFAULT","STATE_LOADING","STATE_RESTORED","USER_ACTION_DIAGNOSIS_STARTED","USER_ACTION_DIAGNOSIS_COMPLETED","origin","useRedirectToPdp","timeout","useRef","clearTimeout","current","product","delay","arguments","length","undefined","setTimeout","location","assign","url","getProductKey","REVIEVE_USER_ID_COOKIE","useSessionStorage","_ref$novageSkincareCo","novageSkincareConfiguration","environment","partnerId","advisorKey","clear","sessionStorage","removeItem","restoreProduct","getItem","JSON","parse","storeProduct","setItem","stringify","useMemo","addToBasket","dispatchEvent","CustomEvent","AddToBasketEvent","detail","itemCode","quantity","toggleFavorite","_ref2","ToggleFavorite","code","sendUserEvents","_ref3","payload","_payload$payload","category","items","UserAction","_toConsumableArray","map","p","item_id","join","title","useRevieve","_language$split","openQueryParam","canChangeOpenQueryParam","OPEN_QUERY_PARAM_ALWAYS","redirectToPdp","locale","useTranslationsWithNamespaces","language","split","state","setState","tenant","useEnvironmentConfiguration","_useRevieveAdvisor","reset","close","useRevieveAdvisor","_useSessionStorage","clearOpenQueryParam","removeOpenQueryParam","setupOpenQueryParam","setOpenQueryParam","continueToPdp","handleClose","handleOpen","_getCookie","disableAnalytics","OPTANON_CONSENT_COOKIE","ONE_TRUST_GROUP_PERFORMANCE","test","env","partner_id","analytics","disableUsageAnalytics","disableProductAnalytics","disableErrorReporting","onAddToCart","data","Array","isArray","forEach","onAddToFavorites","onCheckout","getCurrentUrl","pathname","searchParams","delete","OPEN_QUERY_PARAM","onDisplayProducts","historyId","products","onTrackingEvent","onFetchProducts","onRemoveFromFavorites","handleReset","props","_useRevieve","OPEN_HREF_ATTRIBUTE","_Fragment"],"sourceRoot":""}