{"version":3,"file":"SkinAnalyser.0224def2b00d9b9f5616.chunk.js","mappings":"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","sources":["webpack://nushopweb/./packages/client/src/containers/ProductDetailContainer/ProductDetail/ProductBaseInfo/SkinAnalyser/messages.ts","webpack://nushopweb/./packages/client/src/containers/ProductDetailContainer/ProductDetail/ProductBaseInfo/SkinAnalyser/styled.ts","webpack://nushopweb/./packages/client/src/containers/ProductDetailContainer/ProductDetail/ProductBaseInfo/SkinAnalyser/components/ActionButton.tsx","webpack://nushopweb/./packages/client/src/containers/ProductDetailContainer/ProductDetail/ProductBaseInfo/SkinAnalyser/components/Description.tsx","webpack://nushopweb/./packages/client/src/containers/ProductDetailContainer/ProductDetail/ProductBaseInfo/SkinAnalyser/hooks/useBrand.ts","webpack://nushopweb/./packages/client/src/containers/ProductDetailContainer/ProductDetail/ProductBaseInfo/SkinAnalyser/components/Images.tsx","webpack://nushopweb/./packages/client/src/containers/ProductDetailContainer/ProductDetail/ProductBaseInfo/SkinAnalyser/components/Title.tsx","webpack://nushopweb/./packages/client/src/containers/ProductDetailContainer/ProductDetail/ProductBaseInfo/SkinAnalyser/lib/tracking.ts","webpack://nushopweb/./packages/client/src/containers/ProductDetailContainer/ProductDetail/ProductBaseInfo/SkinAnalyser/lib/api/index.ts","webpack://nushopweb/./packages/client/src/containers/ProductDetailContainer/ProductDetail/ProductBaseInfo/SkinAnalyser/lib/hooks/useSkinAnalyzerEvents/utils.ts","webpack://nushopweb/./packages/client/src/containers/ProductDetailContainer/ProductDetail/ProductBaseInfo/SkinAnalyser/lib/hooks/useTracking/model.ts","webpack://nushopweb/./packages/client/src/containers/ProductDetailContainer/ProductDetail/ProductBaseInfo/SkinAnalyser/lib/hooks/useTracking/index.ts","webpack://nushopweb/./packages/client/src/containers/ProductDetailContainer/ProductDetail/ProductBaseInfo/SkinAnalyser/SkinAnalyser.tsx","webpack://nushopweb/./packages/client/src/containers/ProductDetailContainer/ProductDetail/ProductBaseInfo/SkinAnalyser/lib/hooks/useInitSkinAnalyzer.tsx","webpack://nushopweb/./packages/client/src/containers/ProductDetailContainer/ProductDetail/ProductBaseInfo/SkinAnalyser/lib/hooks/useSkinAnalyzerEvents/index.tsx"],"sourcesContent":["import { defineMessages } from 'react-intl';\n\nexport const skinAnalyserMessages = defineMessages({\n skinAnalyserTitle: {\n id: 'pd.skinAnalyserTitle',\n defaultMessage: 'Okamžitá diagnostika pleti s {brand}',\n },\n skinAnalyserDescriptionVariant1: {\n id: 'pd.skinAnalyserDescriptionVariant1',\n defaultMessage: 'Zjistěte, které produkty jsou vhodné právě pro vás.',\n },\n skinAnalyserDescriptionVariant2: {\n id: 'pd.skinAnalyserDescriptionVariant2',\n defaultMessage:\n 'Zjistěte, které produkty jsou pro vás vhodné. Díky krátkému dotazníku a screeningu tváře.',\n },\n skinAnalyserRunDiagnostic: {\n id: 'pd.skinAnalyserRunDiagnostic',\n defaultMessage: 'Spustit diagnostiku',\n },\n});\n","import styled, { css } from 'styled-components';\n\nimport { Button, breakpoints, theme } from '@notino/react-styleguide';\n\ninterface Variant {\n isVariant2: boolean;\n}\n\nconst mediaMdStyles = ({ isVariant2 }) =>\n isVariant2 &&\n css`\n margin-top: -0.5rem;\n margin-bottom: 1.5rem;\n flex-direction: row;\n `;\n\nconst mediaLgStyles = ({ isVariant2 }) =>\n isVariant2 &&\n css`\n margin: 0;\n margin-bottom: 3rem;\n flex-direction: row;\n `;\n\nexport const SkinAnalyserWrapper = styled.div`\n padding: 0.5rem;\n\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n border-radius: 0.5rem;\n box-shadow: 0px 1px 2px 0px rgba(71, 71, 71, 0.06),\n 0px 4px 8px 0px rgba(71, 71, 71, 0.1);\n\n cursor: ${({ isVariant2 }) => (isVariant2 ? ' default' : 'pointer')};\n\n ${({ isVariant2 }) =>\n isVariant2 &&\n css`\n flex-direction: column;\n padding: 0;\n margin-top: -0.5rem;\n margin-bottom: 1.5rem;\n `}\n\n @media (min-width: ${breakpoints.md}) {\n margin: 0.5rem 0;\n\n ${mediaMdStyles}\n }\n\n @media (min-width: ${breakpoints.lg}) {\n ${mediaLgStyles}\n }\n`;\n\nexport const ImageVariant1 = styled.img`\n width: 6.25rem;\n height: 6.25rem;\n`;\n\nexport const ImageVariant2 = styled.img`\n width: 100%;\n\n @media (min-width: ${breakpoints.md}) {\n width: 23.31rem;\n }\n`;\n\nexport const DescriptionAndActionWrapper = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: 0.25rem;\n\n ${({ isVariant2 }) =>\n isVariant2 &&\n css`\n padding: 1.25rem 1rem;\n gap: 0.5rem;\n flex: initial;\n\n @media (min-width: ${breakpoints.md}) {\n padding: 1.25rem;\n }\n `}\n`;\n\nexport const StyledButton = styled(Button)`\n margin-top: 0.5rem;\n\n @media (min-width: ${breakpoints.md}) and (max-width: ${breakpoints.lg}) {\n width: 50%;\n margin-top: 0.75rem;\n }\n @media (min-width: ${breakpoints.xl}) {\n width: 50%;\n }\n`;\n\nexport const StyledTitle = styled.span`\n ${({ isVariant2 }) => css`\n ${theme.typography[isVariant2 ? 'titleSmall' : 'labelRegular']}\n font-size: ${isVariant2 ? '1.125rem' : '0.875rem'};\n `}\n`;\nexport const StyledDescription = styled.span`\n ${({ isVariant2 }) =>\n theme.typography[isVariant2 ? 'bodyRegular' : 'labelRegular400']}\n\n color: ${theme.color.text.secondary};\n`;\n","import * as React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { ButtonModel } from '@notino/react-styleguide';\n\nimport { skinAnalyserMessages } from '../messages';\nimport { StyledButton } from '../styled';\n\ninterface ActionButtonProps {\n onOpenSkinAnalyzer: () => void;\n}\n\nexport const ActionButton: React.FC = ({\n onOpenSkinAnalyzer,\n}) => {\n return (\n \n \n \n );\n};\n","import * as React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { useSkinAnalyzerVisibility } from '../hooks/useAnalyzerVisibility';\nimport { skinAnalyserMessages } from '../messages';\nimport { StyledDescription } from '../styled';\n\nexport const Description = () => {\n const { isVariant2 } = useSkinAnalyzerVisibility();\n return (\n \n \n \n );\n};\n","import { BrandsId } from '@containers/ProductDetailContainer/ProductDetail/model';\nimport { useProductDetailContext } from '@containers/ProductDetailContainer/ProductDetail/ProductDetailContext';\n\nexport const useBrand = () => {\n const {\n product: {\n brand: { id: brandId },\n },\n } = useProductDetailContext();\n\n const isLaRoche = String(brandId) === BrandsId.Roche;\n const isEstee = String(brandId) === BrandsId.Estee;\n\n return { isLaRoche, isEstee };\n};\n","import * as React from 'react';\n\nimport esteeLauderVariant1 from '../assets/esteeLauder/esteVariant1.webp';\nimport esteeLauderVariant2 from '../assets/esteeLauder/esteVariant2.webp';\nimport larocheVariant1 from '../assets/laRoche/larocheVariant1.webp';\nimport larocheVariant2 from '../assets/laRoche/larocheVariant2.webp';\nimport { useSkinAnalyzerVisibility } from '../hooks/useAnalyzerVisibility';\nimport { useBrand } from '../hooks/useBrand';\nimport { ImageVariant1, ImageVariant2 } from '../styled';\n\nconst getImageComponent = (\n isVariant1: boolean,\n variant1Src: string,\n variant2Src: string\n) => {\n return isVariant1 ? (\n \n ) : (\n \n );\n};\n\nexport const Images = () => {\n const { isEstee, isLaRoche } = useBrand();\n const { isVariant1 } = useSkinAnalyzerVisibility();\n\n const larocheImage = getImageComponent(\n isVariant1,\n larocheVariant1,\n larocheVariant2\n );\n\n const esteeLauderImage = getImageComponent(\n isVariant1,\n esteeLauderVariant1,\n esteeLauderVariant2\n );\n\n return (\n <>\n {isLaRoche && larocheImage}\n {isEstee && esteeLauderImage}\n \n );\n};\n","import * as React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { useSkinAnalyzerVisibility } from '../hooks/useAnalyzerVisibility';\nimport { useBrand } from '../hooks/useBrand';\nimport { skinAnalyserMessages } from '../messages';\nimport { StyledTitle } from '../styled';\n\nexport const Title = () => {\n const { isEstee } = useBrand();\n\n const { isVariant2 } = useSkinAnalyzerVisibility();\n\n return (\n \n \n \n );\n};\n","import { Product } from '@notino/web-tracking/dist/types/package/ga4/events/products';\n\nimport { dispatchTrackingEvent } from '@context/tracking/utils';\n\nimport { ProductDetail } from './hooks/useTracking/model';\n\nconst getTrackingProduct = (\n product: ProductDetail,\n listName?: 'skin_anl_pdp' | 'skin_anl_list'\n): Product => ({\n brand_name: product.item_brand,\n full_price: product.price,\n kind: '',\n price: product.price,\n primary_subcategory: '',\n primary_category: product.item_category,\n primary_type: '',\n product_code: '',\n product_name: product.item_name,\n ...(listName && { list_name: listName }),\n});\n\nexport const trackViewItem = (product: ProductDetail) => {\n const trackingProduct = getTrackingProduct(product, 'skin_anl_pdp');\n\n dispatchTrackingEvent({\n event: 'view_item',\n products: [trackingProduct],\n location: 'skin_anl',\n _clear: true,\n });\n};\nexport const trackViewItemList = (products: ProductDetail[]) => {\n const trackingProducts = products.map((product) => ({\n ...getTrackingProduct(product),\n list_position: 0,\n }));\n\n dispatchTrackingEvent({\n event: 'view_item_list',\n product_lists: {\n list_name: 'skin_anl_list',\n interaction: 'click',\n sorting_type: 'automatic',\n products: trackingProducts,\n },\n _clear: true,\n });\n};\n\nexport const trackAddToCard = (product: ProductDetail) => {\n const trackingProduct = getTrackingProduct(product);\n\n dispatchTrackingEvent({\n event: 'add_to_cart',\n product: {\n ...trackingProduct,\n quantity: 1,\n cart_type: 'skin_anl',\n },\n _clear: true,\n });\n};\n\nexport const trackAddToWishList = (product: ProductDetail, timing: number) => {\n const trackingProduct = getTrackingProduct(product);\n\n dispatchTrackingEvent({\n event: 'add_to_wishlist',\n wishlist: {\n action: 'product_added_to_wishlist',\n interaction: 'click_add',\n type: 'skin_anl',\n timing,\n products: [trackingProduct],\n },\n _clear: true,\n });\n};\n\nexport const trackRemoveFromWishList = (\n product: ProductDetail,\n timing: number\n) => {\n const trackingProduct = getTrackingProduct(product);\n\n dispatchTrackingEvent({\n event: 'remove_from_wishlist',\n wishlist: {\n action: 'product_removed_from_wishlist',\n interaction: 'click_add',\n type: 'skin_anl',\n timing,\n products: [trackingProduct],\n },\n _clear: true,\n });\n};\n\nexport const trackViewOrSelectPromotion = (\n brand: string,\n event: 'select_promotion' | 'view_promotion'\n) => {\n dispatchTrackingEvent({\n event,\n promotions: [\n {\n code: 'skin_anl',\n id: brand,\n location: 'skin_anl_pdp',\n creative: '',\n destination_url: '',\n name: '',\n position: 0,\n },\n ],\n _clear: true,\n });\n};\n","import axios from 'axios';\n\ninterface IApiClientFactory {\n addToCart: (productId: string) => Promise;\n addToWishlist: (productId: string) => Promise;\n removeFromWishlist: (productId: string) => Promise;\n}\n\nexport const apiClientFactory = ({\n apiUrl,\n}: {\n apiUrl: string;\n}): IApiClientFactory => {\n const client = axios.create({\n baseURL: apiUrl,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n return {\n addToCart: async (productId: string) => {\n const apiUri = '/cart/add';\n\n const requestBody = {\n productId,\n };\n\n try {\n const response = await client.post(apiUri, requestBody, {\n maxRedirects: 0,\n validateStatus: (statusCode) => {\n return statusCode >= 200 && statusCode < 400;\n },\n });\n\n if (response.status >= 400) {\n // eslint-disable-next-line no-console\n console.log(\n `Unable to add to cart. Response: ${response.statusText}}. Request: ${apiUri}`\n );\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.log(\n `Unable to add to cart. Error: ${\n (error as Error)?.message\n }}. Request: ${apiUri}`\n );\n }\n },\n addToWishlist: async (productId: string) => {\n const apiUri = `/wishlist/${productId}`;\n\n try {\n const response = await client.post(apiUri, null, {\n maxRedirects: 0,\n validateStatus: (statusCode) => {\n return statusCode >= 200 && statusCode < 400;\n },\n });\n if (response.status >= 400) {\n // eslint-disable-next-line no-console\n console.log(\n `Unable to add to wishlist. Response: ${response.statusText}}. Request: ${apiUri}`\n );\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.log(\n `Unable to add to wishlist. Error: ${\n (error as Error)?.message\n }}. Request: ${apiUri}`\n );\n }\n },\n removeFromWishlist: async (productId: string) => {\n const apiUri = `/wishlist/${productId}`;\n\n try {\n const response = await client.delete(apiUri, {\n maxRedirects: 0,\n validateStatus: (statusCode) => {\n return statusCode >= 200 && statusCode < 400;\n },\n });\n if (response.status >= 400) {\n // eslint-disable-next-line no-console\n console.log(\n `Unable to remove from wishlist. Response: ${response.statusText}}. Request: ${apiUri}`\n );\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.log(\n `Unable to remove from wishlist. Error: ${\n (error as Error)?.message\n }}. Request: ${apiUri}`\n );\n }\n },\n };\n};\n","export const updateCartHeader = () => {\n document.dispatchEvent(new CustomEvent('header:cart:overview:update'));\n};\n\nexport const updateWishlistHeader = () => {\n document.dispatchEvent(new CustomEvent('header:wishlist:overview:update'));\n};\n","export enum SkaEventName {\n OpenProductDetails = 'open_product_details',\n AddToCart = 'add_to_cart',\n AddToWishList = 'add_favourites',\n RemoveFromWishList = 'remove_favourites',\n ViewItemList = 'view_item_list',\n}\n\nexport interface ProductDetail {\n category: string;\n currency: string;\n id: string;\n item_brand: string;\n item_category: string;\n item_id: string;\n item_name: string;\n item_variant?: string;\n user_input: string;\n finish: string;\n price?: number;\n items: ProductDetail[];\n}\n\nexport interface SkaTrackingEvent {\n payload: SkaTrackingEventPayload;\n}\n\nexport interface SkaTrackingEventPayload {\n name: string;\n payload: ProductDetail;\n}\n","import * as React from 'react';\n\nimport { useTrackingContext } from '@context/tracking/TrackingContext';\n\nimport {\n trackAddToCard,\n trackAddToWishList,\n trackRemoveFromWishList,\n trackViewItem,\n trackViewItemList,\n} from '../../tracking';\n\nimport { SkaEventName, SkaTrackingEvent } from './model';\n\nexport const useTracking = () => {\n const { getTimeFromInit } = useTrackingContext();\n\n const dispatchTrackingEvent = React.useCallback(\n (event: SkaTrackingEvent) => {\n const eventPayloadParams = event.payload.payload;\n\n switch (event.payload.name) {\n case SkaEventName.OpenProductDetails:\n trackViewItem(eventPayloadParams);\n return;\n case SkaEventName.ViewItemList:\n trackViewItemList(eventPayloadParams.items);\n return;\n case SkaEventName.AddToWishList:\n trackAddToWishList(eventPayloadParams, getTimeFromInit());\n return;\n case SkaEventName.RemoveFromWishList:\n trackRemoveFromWishList(eventPayloadParams, getTimeFromInit());\n return;\n case SkaEventName.AddToCart:\n trackAddToCard(eventPayloadParams);\n return;\n default:\n break;\n }\n },\n [getTimeFromInit]\n );\n\n return { dispatchTrackingEvent };\n};\n","import * as React from 'react';\nimport { useInView } from 'react-intersection-observer';\n\nimport { IconRegularChevronRight } from '@notino/react-styleguide';\n\nimport { ActionButton } from './components/ActionButton';\nimport { Description } from './components/Description';\nimport { Images } from './components/Images';\nimport { Title } from './components/Title';\nimport { useSkinAnalyzerVisibility } from './hooks/useAnalyzerVisibility';\nimport { useBrand } from './hooks/useBrand';\nimport { useInitSkinAnalyzer } from './lib/hooks/useInitSkinAnalyzer';\nimport { openSkinAnalyzer } from './lib/skinAnalyzerScripts';\nimport { trackViewOrSelectPromotion } from './lib/tracking';\nimport { DescriptionAndActionWrapper, SkinAnalyserWrapper } from './styled';\n\nconst SkinAnalyser = () => {\n const { inView, ref } = useInView({\n triggerOnce: true,\n });\n\n const { isEstee } = useBrand();\n\n const brandName = isEstee ? 'Estée Lauder' : 'La Roche-Posay';\n\n useInitSkinAnalyzer({\n inView,\n brand: brandName,\n });\n\n const { isVariant1, isVariant2 } = useSkinAnalyzerVisibility();\n\n const onOpenSkinAnalyzer = () => {\n trackViewOrSelectPromotion(brandName, 'select_promotion');\n openSkinAnalyzer();\n };\n\n return (\n \n \n\n \n \n\n <Description />\n\n {isVariant2 && <ActionButton onOpenSkinAnalyzer={onOpenSkinAnalyzer} />}\n </DescriptionAndActionWrapper>\n\n {isVariant1 && <IconRegularChevronRight color=\"icon.tertiary\" />}\n </SkinAnalyserWrapper>\n );\n};\n\nexport default SkinAnalyser;\n","import * as React from 'react';\n\nimport { useApolloClientHeaders } from '@hooks/useApolloClientHeaders';\n\nimport { SkaConfig } from '../model';\nimport { initSkinAnalyzer, unmountSkinAnalyzer } from '../skinAnalyzerScripts';\nimport { trackViewOrSelectPromotion } from '../tracking';\nimport { getSkaCountryConfig } from '../utils';\n\nimport { useSkinAnalyzerEvents } from './useSkinAnalyzerEvents';\nimport { useTracking } from './useTracking';\nimport { SkaTrackingEvent } from './useTracking/model';\n\ninterface UseInitSkinAnalyzerArgs {\n inView: boolean;\n brand: string;\n}\n\nexport const useInitSkinAnalyzer = ({\n inView,\n brand,\n}: UseInitSkinAnalyzerArgs) => {\n const {\n shopId,\n skinAnalyzer: { env },\n } = useApolloClientHeaders();\n\n const countryConfig = getSkaCountryConfig(shopId);\n const { events } = useSkinAnalyzerEvents();\n const { dispatchTrackingEvent } = useTracking();\n const wasRendered = React.useRef(false);\n\n React.useEffect(() => {\n if (!countryConfig) {\n return;\n }\n\n if (!inView || wasRendered.current) {\n return;\n }\n\n trackViewOrSelectPromotion(brand, 'view_promotion');\n\n wasRendered.current = true;\n\n const {\n onAddToCart,\n onAddToFavorites,\n onRemoveFromFavorites,\n onCheckout,\n onClickProduct,\n onExpandProduct,\n } = events;\n const skaConfig: SkaConfig = {\n partner_id: countryConfig.partnerId,\n locale: countryConfig.locale,\n env,\n onAddToCart: async (product) => {\n await Promise.resolve(onAddToCart(product));\n },\n onAddToFavorites: async (product) => {\n await Promise.resolve(onAddToFavorites(product.id));\n },\n onRemoveFromFavorites: async (product) => {\n await Promise.resolve(onRemoveFromFavorites(product.id));\n },\n onClose: () => {\n history.pushState(\n '',\n document.title,\n window.location.pathname + window.location.search\n );\n },\n onCheckout: (_) => {\n onCheckout();\n },\n onClickProduct: (product) => {\n onClickProduct(product);\n },\n onExpandProduct: (product) => {\n onExpandProduct(product);\n },\n onTrackingEvent: (event: SkaTrackingEvent) => {\n if (!event) {\n return;\n }\n\n dispatchTrackingEvent(event);\n },\n recommendationFilters: {\n brand_includes: brand,\n },\n };\n\n initSkinAnalyzer(skaConfig);\n\n return () => {\n unmountSkinAnalyzer();\n };\n }, [countryConfig, env, events, inView, brand, dispatchTrackingEvent]);\n};\n","import * as React from 'react';\n\nimport { useApolloClientHeaders } from '@hooks/useApolloClientHeaders';\n\nimport { apiClientFactory } from '../../api';\n\nimport { ISkinAnalyzerEvents } from './model';\nimport { updateCartHeader, updateWishlistHeader } from './utils';\n\nexport interface ISkinAnalyzerEventProps {\n events: ISkinAnalyzerEvents;\n}\n\nexport const useSkinAnalyzerEvents = (): ISkinAnalyzerEventProps => {\n const {\n skinAnalyzer: { apiUrl },\n } = useApolloClientHeaders();\n const { addToCart, addToWishlist, removeFromWishlist } = React.useMemo(\n () =>\n apiClientFactory({\n apiUrl,\n }),\n [apiUrl]\n );\n\n const events = React.useMemo(() => {\n return {\n onAddToCart: async (product) => {\n await addToCart(product.id);\n updateCartHeader();\n },\n onAddToFavorites: async (productId) => {\n await addToWishlist(productId);\n updateWishlistHeader();\n },\n onRemoveFromFavorites: async (productId) => {\n await removeFromWishlist(productId);\n updateWishlistHeader();\n },\n onCheckout: () =>\n window.location.assign(`${window.location.origin}/cart`),\n onClickProduct: (product) => window.location.assign(product.url),\n onExpandProduct: (_) => null,\n } as ISkinAnalyzerEvents;\n }, [addToCart, addToWishlist, removeFromWishlist]);\n\n return { events };\n};\n"],"names":["skinAnalyserMessages","defineMessages","skinAnalyserTitle","id","skinAnalyserDescriptionVariant1","skinAnalyserDescriptionVariant2","skinAnalyserRunDiagnostic","SkinAnalyserWrapper","styled","componentId","_ref3","isVariant2","_ref4","css","breakpoints","_ref","_ref2","ImageVariant1","ImageVariant2","DescriptionAndActionWrapper","_ref5","StyledButton","Button","withConfig","StyledTitle","_ref6","theme","StyledDescription","_ref7","ActionButton","onOpenSkinAnalyzer","React","onClick","fullWidth","buttonStyle","ButtonModel","FormattedMessage","Description","useSkinAnalyzerVisibility","useBrand","product","brand","brandId","useProductDetailContext","isLaRoche","String","BrandsId","isEstee","getImageComponent","isVariant1","variant1Src","variant2Src","src","alt","Images","larocheImage","larocheVariant1","larocheVariant2","esteeLauderImage","esteeLauderVariant1","esteeLauderVariant2","Title","_extends","values","getTrackingProduct","listName","brand_name","item_brand","full_price","price","kind","primary_subcategory","primary_category","item_category","primary_type","product_code","product_name","item_name","list_name","trackViewOrSelectPromotion","event","dispatchTrackingEvent","promotions","code","location","creative","destination_url","name","position","_clear","updateWishlistHeader","document","dispatchEvent","CustomEvent","SkaEventName","SkinAnalyser","inView","ref","useInView","triggerOnce","brandName","shopId","skinAnalyzer","env","useApolloClientHeaders","countryConfig","getSkaCountryConfig","events","useSkinAnalyzerEvents","apiUrl","addToCart","addToWishlist","removeFromWishlist","client","axios","baseURL","headers","async","requestBody","productId","response","post","maxRedirects","validateStatus","statusCode","status","console","log","statusText","error","message","apiUri","delete","apiClientFactory","onAddToCart","onAddToFavorites","onRemoveFromFavorites","onCheckout","window","assign","origin","onClickProduct","url","onExpandProduct","_","useTracking","getTimeFromInit","useTrackingContext","eventPayloadParams","payload","OpenProductDetails","trackingProduct","products","trackViewItem","ViewItemList","trackingProducts","map","list_position","product_lists","interaction","sorting_type","trackViewItemList","items","AddToWishList","trackAddToWishList","timing","wishlist","action","type","RemoveFromWishList","trackRemoveFromWishList","AddToCart","quantity","cart_type","trackAddToCard","wasRendered","current","skaConfig","partner_id","partnerId","locale","Promise","resolve","onClose","history","pushState","title","pathname","search","onTrackingEvent","recommendationFilters","brand_includes","initSkinAnalyzer","unmountSkinAnalyzer","useInitSkinAnalyzer","openSkinAnalyzer","undefined","IconRegularChevronRight","color"],"sourceRoot":""}