{"version":3,"file":"885.chunk.js","mappings":"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","sources":["webpack://orinovageskincareadvisor/./src/components/Dialog/Dialog.tsx","webpack://orinovageskincareadvisor/./src/components/Loading/Loading.tsx","webpack://orinovageskincareadvisor/./src/components/Restore/styles.ts","webpack://orinovageskincareadvisor/./src/components/Restore/Restore.tsx","webpack://orinovageskincareadvisor/./src/components/Revieve/constants.ts","webpack://orinovageskincareadvisor/./src/components/Revieve/utils.ts","webpack://orinovageskincareadvisor/./src/components/Revieve/Revieve.tsx","webpack://orinovageskincareadvisor/./src/components/Revieve/hooks.ts"],"sourcesContent":["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';\nimport { useTranslation } from 'react-i18next';\n\nimport { TranslationKeys } from '../../models';\nimport { Dialog } from '../Dialog';\nimport type { LoadingProps } from './types';\n\nexport const Loading = ({ show = false }: LoadingProps) => {\n const [translate] = useTranslation();\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';\nimport { useTranslation } from 'react-i18next';\n\nimport { TranslationKeys } from '../../models';\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 [translate] = useTranslation();\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 {translate(TranslationKeys.GetNewRecommendation)}\n \n \n {translate(TranslationKeys.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 * 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 { 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","import { 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 { useConfiguration } from '../../contexts';\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 { env, 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 } = useConfiguration();\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,\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 }, [\n close,\n env,\n handleClose,\n locale,\n partnerId,\n redirectToPdp,\n setupOpenQueryParam,\n storeProduct,\n tenant,\n ]);\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"],"names":["Dialog","children","header","hideCloseButton","onClose","open","size","Box","alignItems","display","flexDirection","height","justifyContent","textAlign","width","Typography","fontSize","fontWeight","pb","pt","px","variant","Loading","show","useTranslation","translate","TranslationKeys","CircularProgress","color","boxFlexDirection","xs","sm","Restore","onContinue","onReset","useState","setOpen","handleOnClose","useCallback","useEffect","gap","mx","Button","onClick","STATE_DEFAULT","STATE_LOADING","STATE_RESTORED","USER_ACTION_DIAGNOSIS_STARTED","USER_ACTION_DIAGNOSIS_COMPLETED","addToBasket","id","window","dispatchEvent","CustomEvent","AddToBasketEvent","detail","itemCode","quantity","toggleFavorite","ToggleFavorite","code","sendUserEvents","payload","category","items","UserAction","map","p","item_id","join","title","Revieve","props","novageSkincareConfiguration","openQueryParam","env","partnerId","canChangeOpenQueryParam","OPEN_QUERY_PARAM_ALWAYS","redirectToPdp","useRedirectToPdp","locale","useLocale","state","setState","tenant","useConfiguration","useRevieveAdvisor","close","reset","useSessionStorage","restoreProduct","storeProduct","clearOpenQueryParam","removeOpenQueryParam","setupOpenQueryParam","setOpenQueryParam","continueToPdp","product","handleClose","handleOpen","initConfig","useMemo","disableAnalytics","isAnalyticsConsentGranted","partner_id","analytics","disableUsageAnalytics","disableProductAnalytics","disableErrorReporting","onAddToCart","data","Array","isArray","forEach","onAddToFavorites","onCheckout","url","getCurrentUrl","pathname","searchParams","delete","OPEN_QUERY_PARAM","location","assign","onDisplayProducts","historyId","products","onTrackingEvent","onFetchProducts","onRemoveFromFavorites","onInit","handleReset","useRevieve","useRevieveScript","useOnHrefClick","href","OPEN_HREF_ATTRIBUTE"],"sourceRoot":""}