{"version":3,"file":"src_exported_vto_Vto_tsx.8d7418ef38d4c5f54ab0.bundle.js","mappings":"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","sources":["webpack://elc-service-vto/./src/theme/default-theme.ts","webpack://elc-service-vto/./src/internal/views/common/VtoShadeItem.tsx","webpack://elc-service-vto/./src/internal/views/common/VtoCustomShadePicker.tsx","webpack://elc-service-vto/./src/internal/views/vto-foundation/VtoFoundationCustomShadePicker.tsx","webpack://elc-service-vto/./src/internal/views/vto-foundation/VtoPairShadePicker.tsx","webpack://elc-service-vto/./src/internal/views/common/ProductPriceFormatted.tsx","webpack://elc-service-vto/./src/internal/views/common/VtoShadeName.tsx","webpack://elc-service-vto/./src/internal/views/common/TaxIncluded.tsx","webpack://elc-service-vto/./src/internal/views/vto-foundation/VtoProductPrice.tsx","webpack://elc-service-vto/./src/internal/views/vto-foundation/VtoShadeInfoLeftContainer.tsx","webpack://elc-service-vto/./src/internal/views/vto-save-match/VtoSaveMatch.tsx","webpack://elc-service-vto/./src/internal/utils/VtoFeatures.ts","webpack://elc-service-vto/./src/internal/views/vto-foundation/VtoShadeInfoRightContainer.tsx","webpack://elc-service-vto/./src/internal/views/vto-foundation/VtoShadeCtaContainer.tsx","webpack://elc-service-vto/./src/internal/views/vto-foundation/VtoShadeInfoContainer.tsx","webpack://elc-service-vto/./src/internal/views/vto-foundation/VtoGridTabs.tsx","webpack://elc-service-vto/./src/internal/views/VtoFoundationShadeGrid.tsx","webpack://elc-service-vto/./src/internal/views/vto-makeup/VtoShadeInfoRightContainer.tsx","webpack://elc-service-vto/./src/internal/views/vto-makeup/VtoShadeInfoLeftContainer.tsx","webpack://elc-service-vto/./src/internal/views/vto-makeup/VtoMakeupCustomShadePicker.tsx","webpack://elc-service-vto/./src/internal/views/VtoMakeupShadeGrid.tsx","webpack://elc-service-vto/./src/internal/views/VtoShadeGrids.tsx","webpack://elc-service-vto/./src/internal/views/VtoFoundationContentBlock.tsx","webpack://elc-service-vto/./src/internal/views/vto-foundation/VtoFoundationQrCodeOverlay.tsx","webpack://elc-service-vto/./src/internal/views/vto-survey/VtoSurveyButtons.tsx","webpack://elc-service-vto/./src/internal/views/vto-survey/VtoSurvey.tsx","webpack://elc-service-vto/./src/exported/vto/Vto.tsx","webpack://elc-service-vto/./src/internal/constants/DataTestIdAttributes.ts","webpack://elc-service-vto/./src/internal/constants/Vto.ts","webpack://elc-service-vto/./src/internal/constants/VtoSurvey.ts","webpack://elc-service-vto/./src/internal/utils/Classes.ts","webpack://elc-service-vto/./src/internal/views/common/supported-browser-overlay/SupportedBrowserOverlay.tsx"],"sourcesContent":["import { Colors } from '@estee/elc-base-theme';\n\nexport const SelectedSwatchTheme = `\n border: 2px solid ${Colors.black}\n`;\n\nexport const VtoShadeGridContainerTheme = `\n background: ${Colors.white};\n`;\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport { Caption, Body1 } from '@estee/elc-typography';\nimport { classes } from '../../utils/Classes';\nimport { VTO_SHADE_SELECT, VTO_SHADE_SWATCH } from '../../constants/DataTestIdAttributes';\nimport { IShade } from '../../interfaces/IVto';\nimport { observer } from 'mobx-react';\nimport { IVtoTranslations } from '../../../exported/vto/Vto';\nimport { translate } from '@estee/elc-service';\n\ninterface IVtoShadeItem {\n shade: IShade;\n selectedShade?: IShade;\n isPerfectShadeEnabled?: boolean;\n onClick(event: React.MouseEvent): void;\n showAllShadesVariant?: boolean;\n showPerfectShadesLabel?: boolean;\n translations?: IVtoTranslations;\n isMatchSaved?: boolean;\n savedMatch?: string;\n}\n\nconst Wrapper = styled.div`\n text-align: center;\n &:focus {\n outline: none;\n }\n`;\n\nconst ShadeSwatch = styled.div`\n height: 56px;\n width: 56px;\n margin: 0 auto;\n`;\n\nconst perfectShadeLabelClassNames = classes('vto-perfect-shade-label');\nconst shadeSwatchClassNames = classes('vto-custom-shade-picker-swatch');\nconst shadeItemNameClassNames = classes('vto-custom-shade-picker-item-name');\n\nexport const VtoShadeItem = translate([\n 'bestShadeMessage',\n 'bestLabel',\n 'lighterLabel',\n 'darkerLabel',\n 'coolerLabel',\n 'warmerLabel'\n])(\n observer(\n ({\n shade,\n selectedShade,\n isPerfectShadeEnabled,\n onClick,\n showAllShadesVariant,\n translations,\n isMatchSaved,\n showPerfectShadesLabel,\n savedMatch\n }: IVtoShadeItem) => {\n const {\n bestLabel,\n lighterLabel,\n darkerLabel,\n coolerLabel,\n warmerLabel\n } = translations as IVtoTranslations;\n const shadeItemWrapperClassNames = classes('vto-custom-shade', {\n 'elc-vto-custom-shade-selected': selectedShade && selectedShade.name === shade.name,\n 'elc-vto-all-shades-lighter-shade':\n showAllShadesVariant && shade.perfectShadeLabel === lighterLabel,\n 'elc-vto-all-shades-match-shade':\n showAllShadesVariant && shade.perfectShadeLabel === bestLabel,\n 'elc-vto-all-shades-darker-shade':\n showAllShadesVariant && shade.perfectShadeLabel === darkerLabel,\n 'elc-vto-all-shades-cooler-shade':\n showAllShadesVariant && shade.perfectShadeLabel === coolerLabel,\n 'elc-vto-all-shades-warmer-shade':\n showAllShadesVariant && shade.perfectShadeLabel === warmerLabel,\n 'elc-vto-match-shade-selected': isMatchSaved && savedMatch === shade.name\n });\n const showPerfectShadeLabel =\n isPerfectShadeEnabled || showAllShadesVariant || showPerfectShadesLabel;\n\n return (\n \n {showPerfectShadeLabel && (\n \n {shade.perfectShadeLabel}\n \n )}\n \n {shade.name}\n \n );\n }\n )\n);\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { computed } from 'mobx';\nimport styled from 'styled-components';\nimport { ContentSpacing, Breakpoints } from '@estee/elc-base-theme';\nimport { SliderView, ISliderSettings } from '@estee/elc-slider';\n\nimport { classes } from '../../utils/Classes';\nimport { IShade, ISku } from '../../interfaces/IVto';\nimport { CUSTOM_SLIDES_TO_SHOW, CUSTOM_SLIDES_TO_SCROLL } from '../../constants/Vto';\nimport { VtoShadeItem } from './VtoShadeItem';\n\nexport interface IVtoCustomShadePicker {\n selectedSku: ISku;\n isPerfectShadeEnabled: boolean;\n sortPerfectLabels?(a: IShade, b: IShade): number;\n onShadeSelect(name: string, eventLabel: string): void;\n slidesToShow: number;\n slidesToScroll: number;\n showAllShadesVariant?: boolean;\n showPerfectShadesLabel?: boolean;\n isMatchSaved?: boolean;\n savedMatch?: string;\n}\n\nconst CustomShadePicker = styled.div`\n margin-top: ${ContentSpacing.space6};\n .slick-slider {\n margin-bottom: 0;\n }\n`;\n\n@observer\nexport class VtoCustomShadePicker extends React.Component {\n private customShadePickerClassNames = classes('vto-custom-shade-picker', {\n 'elc-vto-all-shades-variant': this.props.showAllShadesVariant\n });\n\n @computed\n public get customShades(): JSX.Element[] {\n const {\n selectedSku,\n isPerfectShadeEnabled,\n sortPerfectLabels,\n onShadeSelect,\n showAllShadesVariant,\n showPerfectShadesLabel,\n isMatchSaved,\n savedMatch\n } = this.props;\n\n const {\n parentProduct: { perfectShades, shades, displayName, productId },\n selectedShade\n } = selectedSku;\n\n const filteredShades =\n isPerfectShadeEnabled && perfectShades.length ? perfectShades : shades;\n\n if (isPerfectShadeEnabled && sortPerfectLabels) {\n filteredShades.sort(sortPerfectLabels);\n }\n\n return filteredShades.map((shade) => {\n const handleShadeClick = () => {\n const { name } = shade;\n const eventLabel = `${productId} - ${shade.parentSku?.perlgem?.SKU_BASE_ID} - ${displayName}`;\n\n if (name) {\n onShadeSelect(name, eventLabel);\n }\n };\n\n return (\n \n );\n });\n }\n\n private get sliderSettings(): ISliderSettings {\n const { slidesToShow, slidesToScroll } = this.props;\n\n return {\n arrows: false,\n responsive: [\n {\n breakpoint: Breakpoints.desktop,\n settings: {\n slidesToShow: slidesToShow || CUSTOM_SLIDES_TO_SHOW,\n slidesToScroll: slidesToScroll || CUSTOM_SLIDES_TO_SCROLL\n }\n }\n ]\n };\n }\n\n public render() {\n return (\n \n \n \n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { IShade, IShadePicker, IVtoFlag, IVtoFoundationTabs } from '../../interfaces/IVto';\nimport { VtoCustomShadePicker } from '../common/VtoCustomShadePicker';\n\ninterface IVtoFoundationCustomShadePicker {\n tabs: Pick;\n vtoFoundationFeature?: IVtoFlag;\n productShadePickerProps: IShadePicker;\n sortPerfectLabels?(a: IShade, b: IShade): number;\n isMatchSaved?: boolean;\n savedMatch?: string;\n}\n\nexport const VtoFoundationCustomShadePicker = observer(\n ({\n tabs,\n vtoFoundationFeature,\n productShadePickerProps,\n sortPerfectLabels,\n isMatchSaved,\n savedMatch\n }: IVtoFoundationCustomShadePicker) => {\n const { perfectShades, allShades } = tabs;\n const {\n parentProduct: { isShaded }\n } = productShadePickerProps.selectedSku;\n const hasCustomShadePicker =\n vtoFoundationFeature && vtoFoundationFeature.hasCustomShadePicker;\n const showAllShadesVariant = vtoFoundationFeature?.showAllShadesVariant;\n const showPerfectShadesLabel = vtoFoundationFeature?.showPerfectShadesLabel;\n const shadePickerProps = {\n ...productShadePickerProps,\n sortPerfectLabels,\n showAllShadesVariant,\n isMatchSaved,\n showPerfectShadesLabel,\n savedMatch\n };\n\n if ((perfectShades.active || allShades.active) && hasCustomShadePicker && isShaded) {\n return ;\n }\n\n return null;\n }\n);\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { computed } from 'mobx';\nimport styled from 'styled-components';\nimport { ContentSpacing } from '@estee/elc-base-theme';\n\nimport { classes } from '../../utils/Classes';\nimport { VtoShadeItem } from '../common/VtoShadeItem';\nimport { VTO_CUSTOM_PAIR_SHADE_PICKER } from '../../constants/DataTestIdAttributes';\nimport { IShade, IVtoFoundationPairShadeLabels } from '../../interfaces/IVto';\n\nexport interface IVtoPairShadePicker {\n vtoFoundationPairText: IVtoFoundationPairShadeLabels;\n onPairShadeSelect(shadeName: string): void;\n selectedPairShade?: IShade;\n selectedPairShades: { [key: string]: IShade };\n}\n\nconst CustomPairShadePicker = styled.div`\n margin-top: ${ContentSpacing.space6};\n display: flex;\n justify-content: space-around;\n`;\n\nconst customShadePickerClassNames = classes('vto-custom-shade-picker');\n\n@observer\nexport class VtoPairShadePicker extends React.Component {\n @computed\n public get customShades(): JSX.Element[] {\n const {\n vtoFoundationPairText,\n onPairShadeSelect,\n selectedPairShade,\n selectedPairShades\n } = this.props;\n\n return Object.entries(selectedPairShades).map(([shadeType, shade]) => {\n const handleShadeClick = () => {\n if (shade.name && onPairShadeSelect) {\n onPairShadeSelect(shade.name);\n }\n };\n const perfectShadeLabel =\n vtoFoundationPairText[shadeType as keyof IVtoFoundationPairShadeLabels] || '';\n const _shade = { ...shade, perfectShadeLabel };\n\n return (\n \n );\n });\n }\n\n public render() {\n return (\n \n {this.customShades}\n \n );\n }\n}\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport { ContentSpacing } from '@estee/elc-base-theme';\nimport { PriceFormatted } from '@estee/elc-formatters';\nimport { classes } from '../../utils/Classes';\nimport { VTO_PRODUCT_PRICE } from '../../constants/DataTestIdAttributes';\n\nexport interface IPriceFormatted {\n className?: string;\n formattedPrice: string;\n formattedOriginalPrice?: string;\n}\n\nconst ProductPriceRowWrapper = styled.div`\n display: inline-block;\n margin-right: ${ContentSpacing.space16};\n`;\n\nconst productPriceRowWrapperClassNames = classes('product-price-row-wrapper');\nconst productOriginalPriceClassNames = classes('product-original-price');\nconst productPriceClassNames = classes('product-price');\n\nexport const ProductPriceFormatted = (props: IPriceFormatted) => {\n const { formattedPrice, formattedOriginalPrice } = props;\n\n return (\n \n {formattedOriginalPrice && (\n \n )}\n {formattedPrice && (\n \n )}\n \n );\n};\n","import * as React from 'react';\nimport PieChart from 'react-minimal-pie-chart';\nimport styled from 'styled-components';\nimport { Body2 } from '@estee/elc-typography';\nimport { ContentSpacing } from '@estee/elc-base-theme';\nimport { classes } from '../../utils/Classes';\nimport { IShade } from '../../interfaces/IVto';\nimport { PIE_CHART_DEFAULT_VALUE } from '../../constants/Vto';\n\nexport interface IVtoShadeName {\n selectedShade: IShade;\n}\n\nconst ShadeNameContainer = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst ShadePieChart = styled.div`\n width: 15px;\n height: 15px;\n margin-right: ${ContentSpacing.space6};\n align-self: flex-start;\n flex-shrink: 0;\n [dir='rtl'] & {\n margin-right: 0;\n margin-left: ${ContentSpacing.space6};\n }\n`;\n\nconst shadeNameContainerClassNames = classes('vto-shade-name-container');\nconst shadePieChartClassNames = classes('vto-shade-pie-chart');\nconst shadeClassNames = classes('vto-shade-name');\n\nexport const VtoShadeName = (props: IVtoShadeName) => {\n const {\n selectedShade: { colors, hexVal, name }\n } = props;\n const pieChartData = colors.length\n ? colors.map((color) => ({ value: PIE_CHART_DEFAULT_VALUE, color }))\n : [{ value: PIE_CHART_DEFAULT_VALUE, color: hexVal }];\n\n return (\n \n \n \n \n {name}\n \n );\n};\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { TAX_INCLUDED } from '../../constants/DataTestIdAttributes';\nimport { translate } from '@estee/elc-service';\n\ninterface ITaxIncluded {\n translations: {\n taxIncluded: string;\n };\n}\n\nexport const TaxIncluded = translate(['taxIncluded'])(\n observer(({ translations: { taxIncluded } }: ITaxIncluded) => {\n return (\n
\n {taxIncluded}\n
\n );\n })\n);\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { classes } from '../../utils/Classes';\nimport { PriceFormatted } from '@estee/elc-formatters';\nimport { IPrice } from '../../interfaces/IVto';\n\nexport interface IVtoProductPrice {\n formattedPricePerUnit?: string;\n prices: IPrice[];\n}\n\nconst productPricePerUnitClassNames = classes('product-price-per-unit');\n\nexport const VtoProductPrice = observer(({ formattedPricePerUnit, prices }: IVtoProductPrice) => {\n const pricePerUnit = formattedPricePerUnit || prices[0].pricePerUnitFormatted;\n\n if (!pricePerUnit) {\n return null;\n }\n\n return (\n \n );\n});\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport { ContentSpacing } from '@estee/elc-base-theme';\nimport { Body1, Body2 } from '@estee/elc-typography';\nimport { observer } from 'mobx-react';\n\nimport { IShade, ISku } from '../../interfaces/IVto';\nimport { ProductPriceFormatted } from '../common/ProductPriceFormatted';\nimport { VtoShadeName } from '../common/VtoShadeName';\nimport { classes } from '../../utils/Classes';\nimport {\n VTO_PRODUCT_NAME,\n VTO_PRODUCT_SIZE,\n VTO_PRODUCT_SUBHEADER\n} from '../../constants/DataTestIdAttributes';\nimport { TaxIncluded } from '../common/TaxIncluded';\nimport { VtoProductPrice } from './VtoProductPrice';\nimport { config } from '@estee/elc-service';\n\nexport interface IVtoShadeInfoLeft {\n displayName: string;\n subHeader?: string;\n selectedSku: ISku;\n selectedShade: IShade;\n selectedSizeValue?: string;\n formattedPrice?: string;\n formattedOriginalPrice?: string;\n formattedPricePerUnit?: string;\n}\n\ninterface Props extends IVtoShadeInfoLeft {\n hideProductPricePerUnit?: boolean;\n hideProductPrice: boolean;\n config: {\n showIncludeTaxLabel: boolean;\n };\n}\n\nconst Wrapper = styled.div`\n float: left;\n padding-left: ${ContentSpacing.space12};\n width: 50%;\n [dir='rtl'] & {\n float: right;\n padding-right: ${ContentSpacing.space12};\n padding-left: 0;\n }\n`;\n\nconst shadeInfoLeftContainerClassNames = classes('vto-shade-info-left-container');\nconst productClassNames = classes('vto-product-name');\nconst productSubHeaderClassNames = classes('vto-sub-header');\nconst productPriceClassNames = classes('vto-price');\nconst productSizeClassNames = classes('vto-product-size');\n\nexport const VtoShadeInfoLeftContainer = config(['showIncludeTaxLabel'])(\n observer(\n ({\n displayName,\n subHeader,\n selectedShade,\n selectedSizeValue,\n hideProductPricePerUnit,\n hideProductPrice,\n selectedSku: { formattedPrice, formattedOriginalPrice, formattedPricePerUnit, prices },\n config: { showIncludeTaxLabel }\n }: Props) => (\n \n \n {displayName}\n \n \n {subHeader}\n \n {selectedShade && }\n {!hideProductPrice && (\n <>\n {showIncludeTaxLabel && }\n
\n \n {!hideProductPricePerUnit && (\n \n )}\n
\n \n )}\n {selectedSizeValue && (\n \n {selectedSizeValue}\n \n )}\n
\n )\n )\n);\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { Button } from '@estee/elc-buttons';\nimport { translate } from '@estee/elc-service';\nimport { VTO_SAVE_MATCHES, VTO_REMOVE_MATCHES } from '../../constants/DataTestIdAttributes';\nimport { classes } from '~utils/Classes';\n\ninterface IVtoSaveMatch {\n saveMatches(): void;\n removeMatches(): void;\n isMatchSaved: boolean;\n isSaveInProgress: boolean;\n translations: {\n saveMyMatch: string;\n removeMyMatch: string;\n };\n isAllShadesTabActive?: boolean;\n}\n\nconst saveMatchButtonClassNames = classes('vto-save-match');\nconst removeMatchButtonClassNames = classes('vto-remove-match');\n\nexport const VtoSaveMatch = translate(['saveMyMatch', 'removeMyMatch'])(\n observer(\n ({\n saveMatches,\n removeMatches,\n isMatchSaved,\n translations,\n isSaveInProgress,\n isAllShadesTabActive\n }: IVtoSaveMatch) => {\n if (isMatchSaved) {\n return (\n \n {translations.removeMyMatch}\n \n );\n }\n\n return (\n \n {translations.saveMyMatch}\n \n );\n }\n )\n);\n","import { IVtoFeature } from '~interfaces/IVto';\n\nexport const hasVtoFoundationFeature = (vtoFeature?: IVtoFeature) => {\n return vtoFeature && vtoFeature.foundation;\n};\nexport const hasSaveMatch = (vtoFeature?: IVtoFeature) => {\n const vtoFoundationFeature = hasVtoFoundationFeature(vtoFeature);\n\n return !!(vtoFoundationFeature && vtoFoundationFeature.isSaveMatchEnabled);\n};\nexport const hasPairProduct = (isPairShadesTabActive: boolean, vtoFeature?: IVtoFeature) => {\n const vtoFoundationFeature = hasVtoFoundationFeature(vtoFeature);\n\n return !!(vtoFoundationFeature && vtoFoundationFeature.hasLipVto && isPairShadesTabActive);\n};\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport { ContentSpacing } from '@estee/elc-base-theme';\nimport { observer } from 'mobx-react';\nimport { Button } from '@estee/elc-buttons';\nimport { configConsumer, translate } from '@estee/elc-service';\n\nimport { IVtoFeature } from '../../interfaces/IVto';\nimport { classes } from '../../utils/Classes';\nimport {\n VTO_ALL_SHADES_BUTTON,\n VTO_PAIR_PRODUCT_LINK,\n VTO_PERFECT_SHADES_BUTTON\n} from '../../constants/DataTestIdAttributes';\nimport { VtoSaveMatch } from '../vto-save-match/VtoSaveMatch';\nimport { foundationTabs } from '../../constants/Vto';\nimport { hasPairProduct, hasSaveMatch, hasVtoFoundationFeature } from '~utils/VtoFeatures';\n\ninterface IVtoShadeInfoRightContainer {\n isPerfectShadeEnabled?: boolean;\n isAllShadesTabActive?: boolean;\n togglePerfectShades?(hidden: boolean): void;\n setActiveTab(activeTab: string): void;\n saveMatches(): void;\n removeMatches(): void;\n translations: {\n seeAllShadesLabel: string;\n seeBestShadesLabel: string;\n seePairDetailsLabel: string;\n };\n isPairShadesTabActive: boolean;\n pairProductUrl: string;\n isMatchSaved: boolean;\n isSaveInProgress: boolean;\n config: {\n vtoFeature: IVtoFeature;\n };\n}\n\ninterface IVtoShadesButton extends React.HTMLAttributes {\n isPerfectShadeEnabled?: boolean;\n showPairProduct: boolean;\n label: string;\n onClick(event: React.MouseEvent): void;\n}\n\nexport const VtoShadesButton = observer(\n ({ isPerfectShadeEnabled, showPairProduct, label, ...props }: IVtoShadesButton) => {\n if (isPerfectShadeEnabled || showPairProduct) {\n return null;\n }\n\n return ;\n }\n);\n\nconst Wrapper = styled.div`\n float: right;\n width: 48%;\n padding-right: ${ContentSpacing.space10};\n [dir='rtl'] & {\n float: left;\n padding-right: 0;\n padding-left: ${ContentSpacing.space10};\n }\n`;\n\nconst shadeInfoRightContainerClassNames = classes('vto-shade-info-right-container');\nconst vtoPairProductLinkClassName = classes('vto-see-pair-product');\nconst seeAllShadesClassName = classes('vto-see-all-shades');\nconst seePerfectShadesClassName = classes('vto-see-perfect-shades');\n\nexport const VtoShadeInfoRightContainer = configConsumer(['vtoFeature'])(\n translate(['seeAllShadesLabel', 'seeBestShadesLabel', 'seePairDetailsLabel'])(\n observer(\n ({\n isPerfectShadeEnabled,\n translations,\n togglePerfectShades,\n setActiveTab,\n saveMatches,\n removeMatches,\n isPairShadesTabActive,\n isAllShadesTabActive,\n pairProductUrl,\n isMatchSaved,\n isSaveInProgress,\n config\n }: IVtoShadeInfoRightContainer) => {\n const { seeAllShadesLabel, seeBestShadesLabel, seePairDetailsLabel } = translations;\n\n const { vtoFeature } = config;\n const vtoFoundationFeature = hasVtoFoundationFeature(vtoFeature);\n const showMatchButtons = vtoFoundationFeature?.showMatchButtons;\n const showPairProduct = hasPairProduct(isPairShadesTabActive, vtoFeature);\n const isSaveMatchEnabled = hasSaveMatch(vtoFeature);\n const isShadeToggleButtonVisible =\n vtoFeature?.foundation?.isShadeToggleButtonVisible ?? true;\n\n const seeAllShades = () => {\n togglePerfectShades && togglePerfectShades(false);\n setActiveTab(foundationTabs.allShadesTab);\n };\n\n const seePerfectShades = () => {\n togglePerfectShades && togglePerfectShades(true);\n setActiveTab(foundationTabs.perfectShadesTab);\n };\n const showSaveMatchButton =\n (isSaveMatchEnabled && isPerfectShadeEnabled && !showPairProduct) ||\n showMatchButtons;\n\n return (\n \n {!isSaveMatchEnabled && isShadeToggleButtonVisible && (\n \n )}\n {isShadeToggleButtonVisible && (\n \n )}\n {showPairProduct && (\n \n {seePairDetailsLabel}\n \n )}\n {showSaveMatchButton && (\n \n )}\n \n );\n }\n )\n )\n);\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport { observer } from 'mobx-react';\nimport { ContentSpacing } from '@estee/elc-base-theme';\nimport { configConsumer, ServiceView } from '@estee/elc-service';\nimport { PRODUCT_CTA } from '@estee/elc-service-view-names';\n\nimport { classes } from '../../utils/Classes';\nimport { IProductImage, ISku, IVtoConfig, IVtoFeature } from '../../interfaces/IVto';\n\nconst { name: serviceName } = __serviceInfo__;\n\ninterface IVtoShadeCtaContainer {\n config: IVtoShadeCtaContainerConfig;\n selectedSku: ISku;\n largeImages?: IProductImage[];\n quantity?: number;\n selectedAutoReplenishOption?: number;\n isPairShadesTabActive: boolean;\n pairProductLargeImages: IProductImage[];\n selectedPairSku?: ISku;\n isSaveMatchEnabled?: boolean;\n isPerfectShadeEnabled?: boolean;\n}\n\ninterface IVtoShadeCtaContainerConfig {\n vtoConfig: IVtoConfig;\n vtoFeature: IVtoFeature;\n}\n\nconst Wrapper = styled.div`\n float: right;\n width: 48%;\n padding-right: ${ContentSpacing.space10};\n [dir='rtl'] & {\n float: left;\n padding-left: ${ContentSpacing.space10};\n }\n`;\n\nconst hasPairProductCta = (config: IVtoConfig, isPairShadesTabActive: boolean) => {\n const vtoFoundationFeature = config.vtoFeature && config.vtoFeature.foundation;\n\n return !!(vtoFoundationFeature && vtoFoundationFeature.hasLipVto && isPairShadesTabActive);\n};\n\nexport const VtoShadeCtaContainer = configConsumer(['vtoConfig', 'vtoFeature'])(\n observer(\n ({\n config,\n selectedSku,\n largeImages,\n selectedAutoReplenishOption,\n isPairShadesTabActive,\n pairProductLargeImages,\n selectedPairSku,\n isSaveMatchEnabled,\n isPerfectShadeEnabled\n }: IVtoShadeCtaContainer) => {\n const {\n parentProduct: { quantity }\n } = selectedSku;\n\n const showPairProductCta = hasPairProductCta(config, isPairShadesTabActive);\n\n const productCtaConfig = {\n ...config,\n selectedSku: showPairProductCta ? selectedPairSku : selectedSku,\n largeImages: showPairProductCta ? pairProductLargeImages : largeImages,\n quantity,\n selectedAutoReplenishOption\n };\n\n const ctaContainerClassNames = classes('vto-shade-grid-cta-container', {\n 'elc-vto-shade-grid-cta-container-save-match':\n !isPerfectShadeEnabled && isSaveMatchEnabled\n });\n\n return (\n \n \n \n );\n }\n )\n);\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport { observer } from 'mobx-react';\nimport { classes } from '../../utils/Classes';\nimport { IVtoShadeInfoLeft, VtoShadeInfoLeftContainer } from './VtoShadeInfoLeftContainer';\nimport { VtoShadeInfoRightContainer } from './VtoShadeInfoRightContainer';\nimport { VtoShadeCtaContainer } from './VtoShadeCtaContainer';\nimport {\n IProduct,\n IProductImage,\n IShade,\n IShadePicker,\n ISku,\n IVtoFeature\n} from '../../interfaces/IVto';\nimport { configConsumer } from '@estee/elc-service';\nimport { hasSaveMatch } from '~utils/VtoFeatures';\n\ninterface IVtoShadeInfoContainer {\n isPairShadesTabActive: boolean;\n isAllShadesTabActive: boolean;\n pairProductData: {\n pairProduct?: IProduct;\n pairProductUrl: string;\n pairProductLargeImages: IProductImage[];\n selectedPairShade?: IShade;\n selectedPairSizeValue: string;\n selectedPairSku?: ISku;\n };\n saveMatches(): void;\n removeMatches(): void;\n isMatchSaved: boolean;\n isSaveInProgress: boolean;\n isVtoPriceHidden: boolean;\n config: IVtoShadeInfoConfig;\n productShadePickerProps: IShadePicker;\n togglePerfectShades(isEnabled: boolean): void;\n setActiveTab(activeTab: string): void;\n largeImages: IProductImage[];\n selectedAutoReplenishOption: number;\n}\n\ninterface IVtoShadeInfoConfig {\n vtoFeature: IVtoFeature;\n hideProductPricePerUnit: boolean;\n}\n\nconst Wrapper = styled.div`\n overflow: hidden;\n`;\n\nconst shadeInfoContainerClassNames = classes('vto-shade-info-container');\n\nconst hasProductSize = (vtoFeature: IVtoFeature) => {\n return vtoFeature && vtoFeature.foundation && vtoFeature.foundation.hasProductSize;\n};\n\nconst hasPairProduct = (vtoFeature: IVtoFeature, isPairShadesTabActive: boolean) => {\n const vtoFoundationFeature = vtoFeature && vtoFeature.foundation;\n\n return !!(vtoFoundationFeature && vtoFoundationFeature.hasLipVto && isPairShadesTabActive);\n};\n\nexport const VtoShadeInfoContainer = configConsumer(['vtoFeature', 'hideProductPricePerUnit'])(\n observer(\n ({\n config,\n largeImages,\n togglePerfectShades,\n setActiveTab,\n selectedAutoReplenishOption,\n productShadePickerProps: { selectedSku, isPerfectShadeEnabled },\n isPairShadesTabActive,\n isAllShadesTabActive,\n pairProductData,\n saveMatches,\n removeMatches,\n isMatchSaved,\n isSaveInProgress,\n isVtoPriceHidden\n }: IVtoShadeInfoContainer) => {\n const {\n pairProduct,\n pairProductUrl,\n pairProductLargeImages,\n selectedPairShade,\n selectedPairSizeValue,\n selectedPairSku\n } = pairProductData;\n const { vtoFeature, hideProductPricePerUnit } = config;\n const isSaveMatchEnabled = hasSaveMatch(vtoFeature);\n const {\n parentProduct: { displayName, subHeader },\n selectedShade,\n selectedSize\n } = selectedSku;\n const selectedSizeValue = hasProductSize(vtoFeature) ? selectedSize.value : '';\n const showPairProduct = hasPairProduct(vtoFeature, isPairShadesTabActive);\n\n let shadeInfoLeftProps: IVtoShadeInfoLeft = {\n displayName,\n subHeader,\n selectedShade,\n selectedSizeValue,\n selectedSku\n };\n\n if (showPairProduct && selectedPairShade && selectedPairSku) {\n shadeInfoLeftProps = {\n displayName: pairProduct ? pairProduct.displayName : '',\n subHeader: pairProduct && pairProduct.subHeader,\n selectedShade: selectedPairShade,\n selectedSizeValue: selectedPairSizeValue,\n selectedSku: selectedPairSku\n };\n }\n\n return (\n \n \n \n \n \n );\n }\n )\n);\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport { ContentSpacing } from '@estee/elc-base-theme';\nimport { observer } from 'mobx-react';\nimport { configConsumer, translate } from '@estee/elc-service';\n\nimport { classes } from '../../utils/Classes';\nimport {\n VTO_PERFECT_SHADES_BUTTON,\n VTO_ALL_SHADES_BUTTON,\n VTO_PAIR_SHADES_BUTTON\n} from '../../constants/DataTestIdAttributes';\nimport { IVtoFeature, IVtoFoundationTabs } from '../../interfaces/IVto';\nimport { foundationTabs } from '../../constants/Vto';\n\ninterface IVtoGridTabs {\n translations: {\n seeAllShadesLabel: string;\n seeBestShadesLabel: string;\n seePairShadesLabel: string;\n };\n onTabClick(event: React.MouseEvent): void;\n tabs: IVtoFoundationTabs;\n config: {\n vtoFeature: IVtoFeature;\n };\n}\n\nconst Wrapper = styled.div`\n display: flex;\n`;\n\nconst VtoTab = styled.div`\n flex: 1;\n text-align: center;\n padding: ${ContentSpacing.space12} 0;\n\n &.disabled {\n pointer-events: none;\n opacity: 0.3;\n }\n`;\n\nconst vtoTabContainerClassName = classes('vto-tab-container');\n\nexport const VtoGridTabs = configConsumer(['vtoFeature'])(\n translate(['seeAllShadesLabel', 'seeBestShadesLabel', 'seePairShadesLabel'])(\n observer(({ translations, onTabClick, tabs, config }: IVtoGridTabs) => {\n const { seeAllShadesLabel, seeBestShadesLabel, seePairShadesLabel } = translations;\n const { perfectShades, pairShades, allShades } = tabs;\n const vtoTabPerfectShadesClassNames = classes('vto-tab', {\n 'tab-active': perfectShades.active,\n disabled: perfectShades.disabled\n });\n const vtoTabPairShadesClassNames = classes('vto-tab', {\n 'tab-active': pairShades.active,\n disabled: pairShades.disabled\n });\n const vtoTabAllShadesClassNames = classes('vto-tab', {\n 'tab-active': allShades.active,\n disabled: allShades.disabled\n });\n\n const { perfectShadesTab, allShadesTab, pairShadesTab } = foundationTabs;\n\n if (\n !(\n config.vtoFeature &&\n config.vtoFeature.foundation &&\n config.vtoFeature.foundation.hasLipVto\n )\n ) {\n return null;\n }\n\n return (\n \n \n {seeBestShadesLabel}\n \n \n {seeAllShadesLabel}\n \n \n {seePairShadesLabel}\n \n \n );\n })\n )\n);\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport { observer } from 'mobx-react';\n\nimport { ContentSpacing } from '@estee/elc-base-theme';\nimport { configConsumer } from '@estee/elc-service';\n\nimport { classes } from '../utils/Classes';\nimport { VtoShadeGridContainerTheme } from '../../theme/default-theme';\nimport { IProductImage, IShadePicker, IVtoFeature } from '../interfaces/IVto';\nimport { VtoFoundationCustomShadePicker } from './vto-foundation/VtoFoundationCustomShadePicker';\nimport { VtoPairShadePicker } from './vto-foundation/VtoPairShadePicker';\nimport { VtoViewController } from '../controllers/VtoViewController';\nimport { VtoShadeInfoContainer } from './vto-foundation/VtoShadeInfoContainer';\nimport { VtoGridTabs } from './vto-foundation/VtoGridTabs';\n\nexport interface IVtoFoundationShadeGridProps {\n saveMatches(): void;\n removeMatches(): void;\n isMatchSaved: boolean;\n isSaveInProgress: boolean;\n isVtoPriceHidden: boolean;\n config?: IVtoFoundationShadeGridConfig;\n productShadePickerProps: IShadePicker;\n togglePerfectShades(isEnabled: boolean): void;\n largeImages: IProductImage[];\n selectedAutoReplenishOption: number;\n viewController: VtoViewController;\n}\n\ninterface IVtoFoundationShadeGridConfig {\n vtoFeature: IVtoFeature;\n}\n\nconst Wrapper = styled.div`\n position: absolute;\n bottom: 0;\n padding: ${ContentSpacing.space10} 0 ${ContentSpacing.space20};\n width: 100%;\n z-index: 100;\n visibility: visible;\n & .elc-shade-carousel {\n padding: 0 ${ContentSpacing.space16} ${ContentSpacing.space10};\n }\n & .elc-product-shade-picker-slider .slick-track {\n margin: 0 auto;\n }\n & .elc-product-shade-picker-title {\n display: none;\n }\n\n ${VtoShadeGridContainerTheme}\n`;\n\nconst vtoFoundationShadeGridWrapperClassNames = classes('vto-foundation-shade-picker-wrapper');\n\n@configConsumer(['vtoFeature'])\n@observer\nexport class VtoFoundationShadeGrid extends React.Component {\n private getCrossSellProductProps() {\n const {\n viewController: {\n data: {\n selectedCrossSellSku,\n selectedCrossSellShade,\n selectedCrossSellProductUrl,\n selectedCrossSellLargeImages,\n selectedCrossSellSizeValue\n }\n }\n } = this.props;\n\n return {\n pairProduct: selectedCrossSellSku?.parentProduct,\n pairProductUrl: selectedCrossSellProductUrl,\n pairProductLargeImages: selectedCrossSellLargeImages,\n selectedPairShade: selectedCrossSellShade,\n selectedPairSku: selectedCrossSellSku,\n selectedPairSizeValue: selectedCrossSellSizeValue\n };\n }\n\n private getCrossSellShadePickerProps() {\n const {\n viewController: {\n onCrossSellShadeSelect,\n data: { selectedCrossSellShade, selectedCrossSellShades, foundationPairText }\n }\n } = this.props;\n\n return {\n selectedPairShades: selectedCrossSellShades,\n selectedPairShade: selectedCrossSellShade,\n onPairShadeSelect: onCrossSellShadeSelect,\n vtoFoundationPairText: foundationPairText\n };\n }\n\n public render() {\n const { config, productShadePickerProps, viewController } = this.props;\n const { onVtoTabClick, sortPerfectLabels, setActiveTab, data } = viewController;\n const { isPerfectShadeEnabled } = productShadePickerProps;\n const { activeTabs, isMatchSaved, savedMatch } = data;\n const { vtoFeature } = config as IVtoFoundationShadeGridConfig;\n\n const vtoFoundationFeature = vtoFeature && vtoFeature.foundation;\n const vtoFoundationShadeWrapperClassNames = classes(\n 'vto-foundation-shade-grid',\n { 'vto-foundation-perfect-shade': isPerfectShadeEnabled },\n { 'vto-foundation-lip': vtoFoundationFeature && vtoFoundationFeature.hasLipVto }\n );\n\n const pairShadePickerProps = this.getCrossSellShadePickerProps();\n const pairProductData = this.getCrossSellProductProps();\n const isPairShadesTabActive = activeTabs.pairShades.active;\n const isAllShadesTabActive = activeTabs.allShades.active;\n\n return (\n \n \n
\n \n {isPairShadesTabActive && }\n
\n \n
\n );\n }\n}\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport { observer } from 'mobx-react';\nimport { PriceFormatted } from '@estee/elc-formatters';\nimport { Body2 } from '@estee/elc-typography';\n\nimport { ProductPriceFormatted } from '../common/ProductPriceFormatted';\nimport { classes } from '../../utils/Classes';\nimport { ISku } from '../../interfaces/IVto';\nimport { VTO_PRICE_FORMATTED, VTO_PRODUCT_SIZE } from '../../constants/DataTestIdAttributes';\nimport { TaxIncluded } from '../common/TaxIncluded';\nimport { config } from '@estee/elc-service';\n\ninterface IVtoShadeInfoRightContainer {\n selectedSku: ISku;\n hasProductSize?: boolean;\n hideProductPricePerUnit?: boolean;\n hideProductPrice: boolean;\n config: {\n showIncludeTaxLabel: boolean;\n };\n}\n\nconst Wrapper = styled.div`\n float: right;\n [dir='rtl'] & {\n float: left;\n }\n`;\n\nconst productPriceClassNames = classes('vto-price');\nconst productSizeClassNames = classes('vto-product-size');\nconst shadeInfoRightContainerClassNames = classes('vto-shade-info-right-container');\n\nexport const VtoShadeInfoRightContainer = config(['showIncludeTaxLabel'])(\n observer(\n ({\n selectedSku,\n hasProductSize,\n hideProductPricePerUnit,\n hideProductPrice,\n config: { showIncludeTaxLabel }\n }: IVtoShadeInfoRightContainer) => {\n const {\n selectedSize,\n formattedOriginalPrice,\n formattedPrice,\n formattedPricePerUnit\n } = selectedSku;\n const selectedSizeValue =\n hasProductSize && selectedSize ? selectedSize.value : undefined;\n\n return (\n \n {!hideProductPrice && (\n <>\n {showIncludeTaxLabel && }\n
\n \n {formattedPricePerUnit && !hideProductPricePerUnit && (\n \n )}\n
\n \n )}\n {selectedSizeValue && (\n \n {selectedSizeValue}\n \n )}\n
\n );\n }\n )\n);\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport { Body2 } from '@estee/elc-typography';\nimport { observer } from 'mobx-react';\n\nimport { classes } from '../../utils/Classes';\n\ninterface IVtoShadeInfoLeftContainer {\n displayName?: string;\n subHeader?: string;\n}\n\nconst Wrapper = styled.div`\n float: left;\n [dir='rtl'] & {\n float: right;\n }\n`;\n\nconst productClassNames = classes('vto-product-name');\nconst productSubHeaderClassNames = classes('vto-sub-header');\nconst shadeInfoLeftContainerClassNames = classes('vto-shade-info-left-container');\n\nexport const VtoShadeInfoLeftContainer = observer(\n ({ displayName, subHeader }: IVtoShadeInfoLeftContainer) => (\n \n {displayName && (\n \n )}\n {subHeader && (\n \n )}\n \n )\n);\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { IShadePicker, IVtoFlag } from '../../interfaces/IVto';\n\nimport { VtoCustomShadePicker } from '../common/VtoCustomShadePicker';\n\ninterface IVtoMakeupCustomShadePicker {\n vtoMakeupFeature?: IVtoFlag;\n productShadePickerProps: IShadePicker;\n}\n\nexport const VtoMakeupCustomShadePicker = observer(\n ({ vtoMakeupFeature, productShadePickerProps }: IVtoMakeupCustomShadePicker) => {\n const hasCustomShadePicker = vtoMakeupFeature && vtoMakeupFeature.hasCustomShadePicker;\n const {\n parentProduct: { isShaded }\n } = productShadePickerProps.selectedSku;\n\n if (!hasCustomShadePicker || !isShaded) {\n return null;\n }\n\n return ;\n }\n);\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport { configConsumer, ServiceView } from '@estee/elc-service';\nimport { PRODUCT_CTA } from '@estee/elc-service-view-names';\nimport { ContentSpacing } from '@estee/elc-base-theme';\nimport { observer } from 'mobx-react';\n\nimport { classes } from '../utils/Classes';\nimport { VtoShadeName } from './common/VtoShadeName';\nimport {\n IProductImage,\n IShadePicker,\n ISku,\n IVtoConfig,\n IVtoFeature,\n IVtoFlag\n} from '~interfaces/IVto';\nimport { VtoShadeInfoRightContainer } from './vto-makeup/VtoShadeInfoRightContainer';\nimport { VtoShadeInfoLeftContainer } from './vto-makeup/VtoShadeInfoLeftContainer';\nimport { VtoMakeupCustomShadePicker } from './vto-makeup/VtoMakeupCustomShadePicker';\n\nconst { name: serviceName } = __serviceInfo__;\n\ninterface IVtoMakeupShadeGridProps {\n selectedSku: ISku;\n config: IVtoMakeupShadeGridConfig;\n largeImages?: IProductImage[];\n productShadePickerProps: IShadePicker;\n selectedAutoReplenishOption?: number;\n isVtoPriceHidden: boolean;\n}\n\ninterface IVtoMakeupShadeGridConfig {\n vtoConfig: IVtoConfig;\n vtoFeature: IVtoFeature;\n hideProductPricePerUnit: boolean;\n}\n\nconst VtoMakeupShadeGridContainer = styled.div`\n & .elc-shade-carousel {\n padding: ${ContentSpacing.space16};\n }\n & .elc-product-shade-picker-title {\n display: none;\n }\n`;\n\nconst VtoMakeupCtaContainer = styled.div`\n position: absolute;\n width: 100%;\n padding: 0 ${ContentSpacing.space16};\n bottom: ${ContentSpacing.space16};\n`;\n\nconst ShadeInfoContainer = styled.div`\n padding: 0 ${ContentSpacing.space16};\n overflow: hidden;\n`;\n\nconst VtoShadePieChartWrapper = styled.div`\n padding: 0 ${ContentSpacing.space16};\n`;\n\nconst ctaContainerClassNames = classes('vto-shade-grid-cta-container');\nconst vtoMakeupShadeGridClassNames = classes('vto-makeup-shade-grid');\nconst shadeInfoContainerClassNames = classes('vto-shade-info-container');\n\nexport const VtoMakeupShadeGrid = configConsumer([\n 'vtoConfig',\n 'vtoFeature',\n 'hideProductPricePerUnit'\n])(\n observer((props: IVtoMakeupShadeGridProps) => {\n const {\n config,\n largeImages,\n productShadePickerProps,\n selectedAutoReplenishOption,\n isVtoPriceHidden\n } = props;\n\n const { vtoConfig, vtoFeature, hideProductPricePerUnit } = config;\n\n const { selectedSku } = productShadePickerProps;\n\n const {\n parentProduct: { quantity, displayName, subHeader }\n } = selectedSku;\n\n const productCtaConfig = {\n ...vtoConfig,\n selectedSku,\n largeImages,\n selectedAutoReplenishOption,\n quantity\n };\n const { selectedShade } = selectedSku;\n const vtoMakeupFeature = vtoFeature && vtoFeature.makeup;\n const { hasProductSize } = vtoMakeupFeature as IVtoFlag;\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n })\n);\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\n\nimport { Breakpoints } from '@estee/elc-base-theme';\nimport { configConsumer } from '@estee/elc-service';\nimport { Mobile } from '@estee/elc-layouts';\n\nimport { VtoFoundationShadeGrid } from './VtoFoundationShadeGrid';\nimport { VtoMakeupShadeGrid } from './VtoMakeupShadeGrid';\nimport { IVtoShadeGrid } from '~interfaces/IVto';\nimport { VtoViewController } from '~controllers/VtoViewController';\nimport { IVtoTranslations } from 'src/exported/vto/Vto';\nimport { VtoButtonTypes } from '~constants/Vto';\n\nexport interface IVtoShadeGridProps {\n shadeGridProps?: IVtoShadeGrid;\n isVtoFoundationEnabled?: boolean;\n isVtoMakeupEnabled?: boolean;\n isVtoShadeGridEnabled: boolean;\n saveMatches(): void;\n removeMatches(): void;\n isMatchSaved: boolean;\n isSaveInProgress: boolean;\n isVtoPriceHidden: boolean;\n config: IVtoShadeGridConfig;\n translations: IVtoTranslations;\n viewController: VtoViewController;\n}\n\ninterface IVtoShadeGridConfig {\n isVtoFoundationEnabled: boolean;\n isVtoMakeupEnabled: boolean;\n}\n\nexport const VtoShadeGrids = configConsumer(['isVtoFoundationEnabled', 'isVtoMakeupEnabled'])(\n observer(\n ({\n shadeGridProps,\n isVtoShadeGridEnabled,\n saveMatches,\n removeMatches,\n isMatchSaved,\n isSaveInProgress,\n isVtoPriceHidden,\n config,\n viewController\n }: IVtoShadeGridProps) => {\n if (!isVtoShadeGridEnabled || !shadeGridProps) {\n return null;\n }\n\n const { isVtoFoundationEnabled, isVtoMakeupEnabled } = config;\n\n const {\n largeImages,\n selectedAutoReplenishOption,\n productShadePickerProps\n } = shadeGridProps;\n\n const trackPerfectShadesToggle = (perfectShades: boolean) => {\n const { togglePerfectShades } = shadeGridProps;\n const { handleShadesViewed } = viewController;\n const vtoButtonType = perfectShades\n ? VtoButtonTypes.BEST_SHADES\n : VtoButtonTypes.ALL_SHADES;\n\n togglePerfectShades(perfectShades);\n handleShadesViewed(vtoButtonType);\n };\n\n if (isVtoFoundationEnabled) {\n const foundationShadeGridProps = {\n largeImages,\n selectedAutoReplenishOption,\n productShadePickerProps,\n togglePerfectShades: trackPerfectShadesToggle,\n saveMatches,\n removeMatches,\n isMatchSaved,\n isSaveInProgress,\n isVtoPriceHidden,\n viewController\n };\n\n return ;\n }\n\n if (isVtoMakeupEnabled) {\n const makeupShadeGridProps = {\n largeImages,\n productShadePickerProps,\n selectedAutoReplenishOption,\n isVtoPriceHidden\n };\n\n return (\n \n {() => }\n \n );\n }\n\n return null;\n }\n )\n);\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { ServiceView } from '@estee/elc-service';\nimport { CONTENT_BLOCK } from '@estee/elc-service-view-names';\n\nconst { name: serviceName } = __serviceInfo__;\n\ninterface IVtoServiceView {\n isVtoFoundationEnabled?: boolean;\n isOverlayOpened: boolean;\n overlayNodeId?: number;\n}\n\nexport const VtoFoundationContentBlock = observer(\n ({ isVtoFoundationEnabled, isOverlayOpened, overlayNodeId }: IVtoServiceView) => {\n if (!overlayNodeId || !isVtoFoundationEnabled || !isOverlayOpened) {\n return null;\n }\n\n return (\n \n );\n }\n);\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { configConsumer, ServiceView } from '@estee/elc-service';\nimport { CONTENT_BLOCK } from '@estee/elc-service-view-names';\n\ninterface IVtoFoundationQrCodeOverlay {\n config: {\n contentServiceNodeIds: {\n vtoFoundationQrCodeOverlay: number;\n };\n };\n}\n\nconst { name: serviceName } = __serviceInfo__;\n\nexport const VtoFoundationQrCodeOverlay = configConsumer(['contentServiceNodeIds'])(\n observer(({ config }: IVtoFoundationQrCodeOverlay) => {\n const {\n contentServiceNodeIds: { vtoFoundationQrCodeOverlay: nid }\n } = config;\n\n return ;\n })\n);\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { Button } from '@estee/elc-buttons';\nimport classnames from 'classnames';\nimport { classes } from '~utils/Classes';\nimport { SURVEY_BUTTONS_WRAPPER, SURVEY_BUTTON, SURVEY_BUTTONS_DATA } from '~constants/VtoSurvey';\n\ninterface IVtoSurveyButtons {\n surveyButtonIndex: number;\n setSurveyButtonIndex(index: number): void;\n}\n\nconst vtoSurveyRatingButtonsWrapperClassNames = classes('vto-survey__rating-buttons-wrapper');\n\nexport const VtoSurveyButtons = observer(\n ({ surveyButtonIndex, setSurveyButtonIndex }: IVtoSurveyButtons) => {\n const handleSurveyButtonClick = (index: number) => {\n setSurveyButtonIndex(index);\n };\n\n return (\n \n {SURVEY_BUTTONS_DATA.map((buttonLabel: number, key: number) => {\n const vtoSurveyRatingButton = classnames(\n `${classes('vto-survey-overlay__rating-button')}`,\n {\n [classes('vto-survey-overlay__rating-button--selected')]:\n surveyButtonIndex === key\n }\n );\n\n return (\n handleSurveyButtonClick(key)}\n data-test-id={SURVEY_BUTTON}\n >\n {buttonLabel}\n \n );\n })}\n \n );\n }\n);\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { Button } from '@estee/elc-buttons';\nimport { RemoveIcon } from '@estee/elc-icons';\nimport { ISurveyFields } from '~interfaces/ISurvey';\nimport { VtoSurveyButtons } from './VtoSurveyButtons';\nimport { Body1, Heading5 } from '@estee/elc-typography';\nimport styled from 'styled-components';\nimport {\n VTO_SURVEY_DISCLAIMER,\n VTO_SURVEY_QUESTION1_TITLE,\n VTO_SURVEY_END_MESSAGE\n} from '../../constants/VtoSurvey';\nimport { translate } from '@estee/elc-service';\nimport { classes } from '../../utils/Classes';\n\ninterface IVtoSurveyTranslations {\n surveyQuestionOneLabel: string;\n surveyQuestionOneDescriptionLeft: string;\n surveyQuestionOneDescriptionRight: string;\n surveyQuestionTwoLabel: string;\n surveyQuestionTwoPlaceholder: string;\n surveyCtaLabel: string;\n surveyDisclaimer: string;\n surveyEndLabel: string;\n}\n\ninterface IVtoSurvey {\n submitSurveyData({ rating, comment }: ISurveyFields): void;\n closeSurvey(): void;\n translations?: IVtoSurveyTranslations;\n showThankMessage: boolean;\n setThankMessageStatus(status: boolean): void;\n surveyButtonIndex: number;\n setSurveyButtonIndex(index: number): void;\n handleSurveySubmit(submitData: ISurveyFields): void;\n surveyComment: string;\n setSurveyComment(surveyComment: string): void;\n}\n\nconst VtoSurveyContainer = styled.div`\n background-color: white;\n border: 1px solid black;\n`;\n\nconst vtoSurveyContainerClassNames = classes('vto-survey__container');\nconst vtoSurveyCloseButtonClassNames = classes('vto-survey__close-button');\nconst vtoSurveyQuestion1TitleClassNames = classes('vto-survey__question-1-title');\nconst vtoSurveyQuestion1RatingDescriptionContainerClassNames = classes(\n 'vto-survey__question-1-rating-description-container'\n);\nconst vtoSurveyQuestion1RatingDescriptionLeftClassNames = classes(\n 'vto-survey__question-1-rating-description-left'\n);\nconst vtoSurveyQuestion1RatingDescriptionRightClassNames = classes(\n 'vto-survey__question-1-rating-description-right'\n);\nconst vtoSurveyQuestion2TitleClassNames = classes('vto-survey__question-2-title');\nconst vtoSurveyCenterWrapperClassNames = classes('vto-survey__section-wrapper--center');\nconst vtoSurveyQuestion2CommentClassNames = classes('vto-survey__question-2-comment');\nconst vtoSurveySubmitButtonClassNames = classes('vto-survey__submit-button');\nconst vtoSurveyDisclaimerClassNames = classes('vto-survey__disclaimer');\nconst vtoSurveyEndMessageClassNames = classes('vto-survey__end-message');\n\nexport const VtoSurvey = translate([\n 'surveyQuestionOneLabel',\n 'surveyQuestionOneDescriptionLeft',\n 'surveyQuestionOneDescriptionRight',\n 'surveyQuestionTwoLabel',\n 'surveyQuestionTwoPlaceholder',\n 'surveyCtaLabel',\n 'surveyDisclaimer',\n 'surveyEndLabel'\n])(\n observer(\n ({\n submitSurveyData,\n closeSurvey,\n translations,\n showThankMessage,\n setThankMessageStatus,\n surveyButtonIndex,\n setSurveyButtonIndex,\n handleSurveySubmit,\n surveyComment,\n setSurveyComment\n }: IVtoSurvey) => {\n const {\n surveyQuestionOneLabel,\n surveyQuestionOneDescriptionLeft,\n surveyQuestionOneDescriptionRight,\n surveyQuestionTwoLabel,\n surveyQuestionTwoPlaceholder,\n surveyCtaLabel,\n surveyDisclaimer,\n surveyEndLabel\n } = translations as IVtoSurveyTranslations;\n\n const handleSubmit = () => {\n const rating = surveyButtonIndex;\n const surveyData: ISurveyFields = {\n rating,\n comment: surveyComment\n };\n\n handleSurveySubmit(surveyData);\n };\n\n const handleCommentChange = (event: React.ChangeEvent) => {\n setSurveyComment(event.target.value);\n };\n\n return (\n \n \n {!showThankMessage && (\n <>\n \n {surveyQuestionOneLabel}\n \n\n \n\n
\n \n {surveyQuestionOneDescriptionLeft}\n \n \n {surveyQuestionOneDescriptionRight}\n \n
\n\n \n {surveyQuestionTwoLabel}\n \n\n
\n \n
\n
\n \n {surveyCtaLabel}\n \n
\n\n \n \n )}\n\n {showThankMessage && (\n
\n \n {surveyEndLabel}\n \n
\n )}\n
\n );\n }\n )\n);\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport styled from 'styled-components';\nimport classnames from 'classnames';\nimport { addConfig, addContext, configConsumer, translate } from '@estee/elc-service';\nimport { breakpoint } from '@estee/elc-base-theme';\nimport { Spinner } from '@estee/elc-spinner';\nimport { classes } from '~utils/Classes';\nimport { VtoViewController } from '~controllers/VtoViewController';\nimport { IVtoServiceConfig } from '~interfaces/IVto';\nimport { VtoShadeGrids } from '~views/VtoShadeGrids';\nimport { VtoFoundationContentBlock } from '~views/VtoFoundationContentBlock';\nimport { SupportedBrowserOverlay } from '~views/common/supported-browser-overlay/SupportedBrowserOverlay';\nimport { VtoFoundationQrCodeOverlay } from '~views/vto-foundation/VtoFoundationQrCodeOverlay';\nimport { VtoSurvey } from '~views/vto-survey/VtoSurvey';\n\nexport interface IVto {\n config: IVtoServiceConfig;\n translations: IVtoTranslations;\n viewController: VtoViewController;\n}\n\nexport interface IVtoTranslations {\n coolerLabel: string;\n lighterLabel: string;\n bestLabel: string;\n darkerLabel: string;\n warmerLabel: string;\n coolerPairLabel: string;\n casualPairLabel: string;\n bestPairLabel: string;\n glamPairLabel: string;\n warmerPairLabel: string;\n}\n\nconst IframeContainer = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n z-index: 9999;\n width: 100%;\n height: 100%;\n display: none;\n ${breakpoint('desktop')`\n position: static;\n width: auto;\n `}\n [dir='rtl'] & {\n right: 0;\n }\n &.elc-vto-iframe-container-opened {\n display: block;\n }\n`;\n\nconst Iframe = styled.div`\n & > div {\n ${breakpoint('desktop')`\n margin: 0 auto;\n `}\n }\n`;\n\nconst iframeClassNames = classes('vto-iframe');\n\n@addContext()\n@addConfig(['contentServiceNodeIds', 'vtoFeature', 'hideProductPricePerUnit'])\n@configConsumer(['contentServiceNodeIds'])\n@translate([\n 'coolerLabel',\n 'lighterLabel',\n 'bestLabel',\n 'darkerLabel',\n 'warmerLabel',\n 'coolerPairLabel',\n 'casualPairLabel',\n 'bestPairLabel',\n 'glamPairLabel',\n 'warmerPairLabel'\n])\n@observer\nclass Vto extends React.Component {\n private vtoIframeRef: React.RefObject;\n\n constructor(props: IVto) {\n super(props);\n const { viewController, ...restProps } = props;\n const vtoProps = this.vtoProps(restProps);\n props.viewController.initialize(vtoProps);\n }\n\n public componentDidUpdate(prevProps: IVto) {\n const {\n viewController,\n config: { selectedSku }\n } = this.props;\n\n if (selectedSku !== prevProps.config.selectedSku) {\n viewController.updateProductData(selectedSku);\n }\n }\n\n public componentWillUnmount() {\n this.props.viewController.handleVtoUnmount();\n }\n\n public async componentDidMount() {\n this.props.viewController.checkHidePriceOnLoad();\n }\n\n private vtoProps = (props: Omit) => {\n this.vtoIframeRef = React.createRef();\n\n return {\n ...props,\n vtoIframeRef: this.vtoIframeRef\n };\n };\n\n private getVtoFoundationOverlayNodeId = () => {\n const { vtoConfig } = this.props.config;\n\n return (\n vtoConfig.contentServiceNodeIds && vtoConfig.contentServiceNodeIds.vtoFoundationOverlay\n );\n };\n\n private trackCloseSupportedBrowserOverlay = () => {\n const {\n viewController: { closeSupportedBrowserOverlay, getVtoType }\n } = this.props;\n\n closeSupportedBrowserOverlay(getVtoType());\n };\n\n public render() {\n const { viewController, config } = this.props;\n const {\n data: {\n isVtoOpened,\n isVtoShadeGridEnabled,\n isVtoFoundationOverlayOpened,\n isMatchSaved,\n isSaveInProgress,\n isVtoPriceHidden,\n isSpinnerEnabled,\n isSupportedBrowserOverlayVisible,\n isSupportedBrowserOverlayOpen,\n isVtoFoundationQrCodeOverlayEnabled,\n isSurveyVisible,\n showThankMessage,\n surveyButtonIndex,\n surveyComment\n },\n removeMatches,\n saveMatches,\n sortPerfectLabels,\n slidesToShow,\n slidesToScroll,\n handleShadeSelect,\n submitSurveyData,\n closeSurvey,\n setThankMessageStatus,\n setSurveyButtonIndex,\n handleSurveySubmit,\n setSurveyComment\n } = viewController;\n const {\n isVtoFoundationEnabled,\n isVtoMakeupEnabled,\n selectedSku,\n isPerfectShadeEnabled,\n togglePerfectShades,\n largeImages,\n selectedAutoReplenishOption\n } = config;\n\n const vtoShadeGridProps = {\n productShadePickerProps: {\n selectedSku,\n isPerfectShadeEnabled,\n sortPerfectLabels,\n onShadeSelect: handleShadeSelect,\n slidesToShow: slidesToShow,\n slidesToScroll: slidesToScroll\n },\n togglePerfectShades,\n largeImages,\n selectedAutoReplenishOption\n };\n\n const vtoContainerClassNames = classnames({\n [classes('vto-foundation')]: isVtoFoundationEnabled,\n [classes('vto-makeup')]: isVtoMakeupEnabled\n });\n\n const vtoIframeClassNames = classes('vto-iframe-container', {\n 'elc-vto-iframe-container-opened': isVtoOpened\n });\n\n if (isSupportedBrowserOverlayVisible) {\n return (\n \n );\n }\n\n return (\n
\n \n {isSpinnerEnabled && }\n\n {isVtoFoundationQrCodeOverlayEnabled ? (\n \n ) : (\n \n )}\n\n \n \n \n {isSurveyVisible && (\n \n )}\n
\n );\n }\n}\n\nexport default Vto;\n","export const VTO_MAKEUP_BUTTON = 'vto-button-makeup';\nexport const VTO_FOUNDATION_BUTTON = 'vto-button-foundation';\nexport const VTO_PERFECT_SHADES_BUTTON = 'vto-button-perfect-shades';\nexport const VTO_ALL_SHADES_BUTTON = 'vto-button-all-shades';\nexport const VTO_PAIR_SHADES_BUTTON = 'vto-button-pair-shades';\nexport const VTO_SHADE_SELECT = 'vto-shade-select';\nexport const VTO_PRODUCT_PRICE = 'vto-product-price';\nexport const VTO_PAIR_PRODUCT_LINK = 'vto-pair-product-link';\nexport const VTO_PRODUCT_NAME = 'vto-product-name';\nexport const VTO_PRODUCT_SUBHEADER = 'vto-product-subheader';\nexport const VTO_PRODUCT_SIZE = 'vto-product-size';\nexport const VTO_PRICE_FORMATTED = 'vto-price-formatted';\nexport const VTO_SKIN_CARE_RESULT_BUTTON = 'vto-skin-care-result-button';\nexport const VTO_SKIN_CARE_BUTTON = 'vto-skin-care-button';\nexport const VTO_CUSTOM_PAIR_SHADE_PICKER = 'vto-custom-shade-pair-picker';\nexport const VTO_SHADE_SWATCH = 'vto-shade-swatch';\nexport const VTO_SAVE_MATCHES = 'vto-save-matches';\nexport const VTO_REMOVE_MATCHES = 'vto-remove-matches';\nexport const TAX_INCLUDED = 'tax-included';\nexport const VTO_SKINCARE_PRODUCT_GRID = 'vto-skincare-product-grid';\nexport const VTO_SKINCARE_PRIORITY_PRODUCT_GRID = 'vto-skincare-priority-product-grid';\nexport const SUPPORTED_BROWSER_OVERLAY_COPY = 'supported-browser-overlay-copy';\n","export const IFRAME_MIN_WIDTH = 300;\nexport const IFRAME_MAX_WIDTH = 600;\nexport const TIMEOUT_VALUE = 500;\nexport const IFRAME_EXTRA_PADDING = 30;\nexport const IFRAME_RATIO = 1.22;\nexport const SHADE_SIDEBAR_HEIGHT_RATIO = 0.7;\nexport const COMPARE_BUTTON_HEIGHT = 225;\nexport const SKIN_SMOOTH_STRENGTH = 50;\nexport const PIE_CHART_DEFAULT_VALUE = 1;\nexport const CUSTOM_SLIDES_TO_SHOW = 5;\nexport const CUSTOM_SLIDES_TO_SCROLL = 5;\nexport const VTO_GUID = 'guid';\nexport const NO_SCROLL_CLASS = 'no-scroll';\nexport const VTO_ACTIVE_CLASS = 'vto-active';\nexport const VTO_DISCLOSE_PARAM = 'vto_disclose';\nexport const VTO_HIDE_PRICE_PARAM = 'vto_disprice';\nexport const VTO_OPEN_PARAM = 'vto_open';\nexport const VTO_MATCHES_COOKIE_NAME = 'vtoMatches';\nexport const VTO_PERSONALIZATION_VERIFIED_COOKIE = 'vto.p13n.verified';\nexport const SHADE_SIDEBAR_CONTAINER = 'js-product-shade-info-wrapper';\nexport const LEFT_STICKY_COLUMN = 'js-left-sticky-column';\nexport const LEFT_COLUMN_SECTION = 'js-left-column-section';\nexport const PRODUCT_FULL_SECTION = 'js-product-full';\nexport const PERLGEM_USER_IDENTIFIER_TYPE = 'perlgem_user_id';\nexport const VTO = 'vto';\nexport const VTO_FOUNDATION = 'vtoFoundation';\nexport const VTO_MATCHES = 'vtoMatches';\nexport const API_REQUEST_TIMEOUT = 100;\nexport const DOWNLOAD_BAR_SIZE = 50;\nexport const DOWNLOAD_BAR_TOLERANCE = 0.3;\nexport const DOWNLOAD_BAR_VARIATION = 1;\n\nexport enum VtoEvents {\n CAMERA_CLOSED = 'cameraClosed',\n CAMERA_FAILED = 'cameraFailed',\n CAMERA_OPENED = 'cameraOpened',\n CLOSED = 'closed',\n COMPARE = 'compare',\n COMPARE_DISABLED = 'compareDisabled',\n ENGINE_CLOSED = 'engineClosed',\n KISS_DETECTED = 'kissDetected',\n LOADED = 'loaded',\n LOADING = 'loading',\n OPENED = 'opened',\n PHOTO_LOADED = 'photoLoaded',\n PHOTO_SAVED = 'photoSaved',\n RESET = 'reset',\n SHADE_FINDER_COMPLETED = 'shadeFinderCompleted',\n SHADE_FINDER_CANCELLED = 'shadeFinderCancelled',\n SHADE_FINDER_STARTED = 'shadeFinderStarted',\n SKIN_SHADE_FOUND = 'skinShadeFound',\n SPLIT_FOUR_WAY = 'splitFourWay',\n SPLIT_FOUR_WAY_DISABLED = 'splitFourWayDisabled',\n VIDEO_LOADED = 'videoLoaded',\n ZOOM = 'zoom'\n}\n\nexport enum FoundationShadeTypes {\n COOLER = 'cooler',\n LIGHTER = 'lighter',\n BEST = 'best',\n DARKER = 'darker',\n WARMER = 'warmer'\n}\n\nexport enum FoundationPairShadeTypes {\n CASUAL = 'casualPair',\n BEST = 'bestPair',\n GLAM = 'glamPair'\n}\n\nexport const foundationTabs = Object.freeze({\n allShadesTab: 'allShades',\n pairShadesTab: 'pairShades',\n perfectShadesTab: 'perfectShades'\n});\n\nexport enum VtoButtonTypes {\n ALL_SHADES = 'allShades',\n BEST_SHADES = 'bestShades'\n}\n\nexport enum VtoTypes {\n FOUNDATION = 'Foundation',\n MAKEUP = 'Makeup',\n SKINCARE = 'Skincare'\n}\n\nexport const LOADING_PERCENTAGE_EVENT_TRIGGERED = 10;\n","import { ISurveyData } from '~api/SurveyApiSdk';\n\nexport const VTO_SURVEY_DISCLAIMER = 'vto-survey-overlay-disclaimer';\nexport const VTO_SURVEY_QUESTION1_TITLE = 'vto-survey-question1-title';\nexport const VTO_SURVEY_END_MESSAGE = 'vto-survey-end-message';\n// generated the array of numbers from 0 to 10\nexport const SURVEY_BUTTONS_DATA: number[] = [...Array(11).keys()];\nexport const CLOSE_SURVEY_TIMEOUT = 3000;\n\nexport const SURVEY_BUTTONS_WRAPPER = 'vto-survey-buttons-wrapper';\nexport const SURVEY_BUTTON = 'vto-survey-button';\n\nexport const FORM_DATA_FIELD = Object.freeze({\n USER_IDENTIFIER_FIELD: 'entry.1767715272',\n PAGE_FIELD: 'entry.107238290',\n VTO_TYPE_FIELD: 'entry.2017070630',\n NP_FIELD: 'entry.1596679860',\n COMMENT_FIELD: 'entry.1094555031'\n});\n\nexport const GOOGLE_FORMS_URL =\n 'https://docs.google.com/forms/d/e/1FAIpQLScKp12Vt-BAn53_Jkuy6xwTaTobcznksaKrxRFAuAoG2b30pA/formResponse';\n\nexport const MOCK_SURVEY_DATA: ISurveyData = {\n np: '10',\n comment: 'vto is awesome',\n userIdentifier: '1292791192',\n page:\n 'https://e.esteelauder.na.us.vmicu.eng.ncsa9.elcdev.net/product/649/29657/product-catalog/makeup/lips/lipstick/pure-color-envy/sculpting-lipstick',\n vtoType: 'Makeup'\n};\n","import classnames from 'classnames';\n\ninterface ClassDictionary {\n [id: string]: unknown;\n}\n\ntype ClassValue = string | number | ClassDictionary | ClassValue[] | undefined | null | boolean;\n\nexport const classes = (component: string, ...classNames: ClassValue[]) =>\n classnames(`elc-${component}`, `js-${component}`, classNames);\n","import * as React from 'react';\nimport { translate } from '@estee/elc-service';\nimport { observer } from 'mobx-react';\nimport { ResponsiveModal } from '@estee/elc-responsive-modal';\nimport { Button } from '@estee/elc-buttons';\nimport { RemoveIcon } from '@estee/elc-icons';\nimport { SUPPORTED_BROWSER_OVERLAY_COPY } from '../../../constants/DataTestIdAttributes';\n\ninterface ISupportedBrowserOverlay {\n translations: {\n useSafariToAccessCamera: string;\n };\n closeOverlay(): void;\n isOpen: boolean;\n}\n\nexport const SupportedBrowserOverlay = translate(['useSafariToAccessCamera'])(\n observer(({ translations, closeOverlay, isOpen }: ISupportedBrowserOverlay) => {\n const { useSafariToAccessCamera } = translations;\n\n return (\n \n \n \n \n );\n })\n);\n"],"names":["Colors","VtoShadeGridContainerTheme","Wrapper","ShadeSwatch","perfectShadeLabelClassNames","shadeSwatchClassNames","shadeItemNameClassNames","VtoShadeItem","observer","shade","selectedShade","isPerfectShadeEnabled","onClick","showAllShadesVariant","translations","isMatchSaved","showPerfectShadesLabel","savedMatch","bestLabel","lighterLabel","darkerLabel","coolerLabel","warmerLabel","shadeItemWrapperClassNames","name","perfectShadeLabel","showPerfectShadeLabel","className","style","backgroundColor","hexVal","CustomShadePicker","ContentSpacing","VtoCustomShadePicker","customShadePickerClassNames","this","props","customShades","selectedSku","sortPerfectLabels","onShadeSelect","parentProduct","perfectShades","shades","displayName","productId","filteredShades","length","sort","map","key","eventLabel","parentSku","perlgem","SKU_BASE_ID","sliderSettings","slidesToShow","slidesToScroll","arrows","responsive","breakpoint","Breakpoints","settings","CUSTOM_SLIDES_TO_SHOW","CUSTOM_SLIDES_TO_SCROLL","render","SliderView","items","VtoFoundationCustomShadePicker","tabs","vtoFoundationFeature","productShadePickerProps","allShades","isShaded","hasCustomShadePicker","shadePickerProps","active","CustomPairShadePicker","VtoPairShadePicker","vtoFoundationPairText","onPairShadeSelect","selectedPairShade","selectedPairShades","Object","entries","shadeType","_shade","ProductPriceRowWrapper","productPriceRowWrapperClassNames","productOriginalPriceClassNames","productPriceClassNames","ProductPriceFormatted","formattedPrice","formattedOriginalPrice","PriceFormatted","isDiscounted","priceTag","ShadeNameContainer","ShadePieChart","shadeNameContainerClassNames","shadePieChartClassNames","shadeClassNames","VtoShadeName","colors","pieChartData","color","value","PIE_CHART_DEFAULT_VALUE","data","TaxIncluded","taxIncluded","productPricePerUnitClassNames","VtoProductPrice","formattedPricePerUnit","prices","pricePerUnit","pricePerUnitFormatted","shadeInfoLeftContainerClassNames","productClassNames","productSubHeaderClassNames","productSizeClassNames","VtoShadeInfoLeftContainer","subHeader","selectedSizeValue","hideProductPricePerUnit","hideProductPrice","config","showIncludeTaxLabel","saveMatchButtonClassNames","removeMatchButtonClassNames","VtoSaveMatch","saveMatches","removeMatches","isSaveInProgress","isAllShadesTabActive","Button","removeMyMatch","disabled","saveMyMatch","hasVtoFoundationFeature","vtoFeature","foundation","hasSaveMatch","isSaveMatchEnabled","VtoShadesButton","showPairProduct","label","shadeInfoRightContainerClassNames","vtoPairProductLinkClassName","seeAllShadesClassName","seePerfectShadesClassName","VtoShadeInfoRightContainer","togglePerfectShades","setActiveTab","isPairShadesTabActive","pairProductUrl","seeAllShadesLabel","seeBestShadesLabel","seePairDetailsLabel","showMatchButtons","hasLipVto","hasPairProduct","isShadeToggleButtonVisible","showSaveMatchButton","foundationTabs","href","serviceName","VtoShadeCtaContainer","largeImages","selectedAutoReplenishOption","pairProductLargeImages","selectedPairSku","quantity","showPairProductCta","hasPairProductCta","productCtaConfig","ctaContainerClassNames","ServiceView","shadeInfoContainerClassNames","VtoShadeInfoContainer","pairProductData","isVtoPriceHidden","pairProduct","selectedPairSizeValue","selectedSize","hasProductSize","shadeInfoLeftProps","VtoTab","vtoTabContainerClassName","VtoGridTabs","onTabClick","seePairShadesLabel","pairShades","vtoTabPerfectShadesClassNames","vtoTabPairShadesClassNames","vtoTabAllShadesClassNames","perfectShadesTab","allShadesTab","pairShadesTab","vtoFoundationShadeGridWrapperClassNames","VtoFoundationShadeGrid","getCrossSellProductProps","viewController","selectedCrossSellSku","selectedCrossSellShade","selectedCrossSellProductUrl","selectedCrossSellLargeImages","selectedCrossSellSizeValue","getCrossSellShadePickerProps","onCrossSellShadeSelect","selectedCrossSellShades","foundationPairText","onVtoTabClick","activeTabs","vtoFoundationShadeWrapperClassNames","pairShadePickerProps","dangerouslySetInnerHTML","__html","VtoMakeupCustomShadePicker","vtoMakeupFeature","VtoMakeupShadeGridContainer","VtoMakeupCtaContainer","ShadeInfoContainer","VtoShadePieChartWrapper","vtoMakeupShadeGridClassNames","VtoMakeupShadeGrid","vtoConfig","makeup","VtoShadeGrids","shadeGridProps","isVtoShadeGridEnabled","isVtoFoundationEnabled","isVtoMakeupEnabled","foundationShadeGridProps","handleShadesViewed","vtoButtonType","Vto","VtoButtonTypes","makeupShadeGridProps","maxWidth","VtoFoundationContentBlock","isOverlayOpened","overlayNodeId","nid","VtoFoundationQrCodeOverlay","contentServiceNodeIds","vtoFoundationQrCodeOverlay","vtoSurveyRatingButtonsWrapperClassNames","VtoSurveyButtons","surveyButtonIndex","setSurveyButtonIndex","buttonLabel","vtoSurveyRatingButton","VtoSurveyContainer","vtoSurveyContainerClassNames","vtoSurveyCloseButtonClassNames","vtoSurveyQuestion1TitleClassNames","vtoSurveyQuestion1RatingDescriptionContainerClassNames","vtoSurveyQuestion1RatingDescriptionLeftClassNames","vtoSurveyQuestion1RatingDescriptionRightClassNames","vtoSurveyQuestion2TitleClassNames","vtoSurveyCenterWrapperClassNames","vtoSurveyQuestion2CommentClassNames","vtoSurveySubmitButtonClassNames","vtoSurveyDisclaimerClassNames","vtoSurveyEndMessageClassNames","submitSurveyData","closeSurvey","showThankMessage","setThankMessageStatus","handleSurveySubmit","surveyComment","setSurveyComment","surveyQuestionOneLabel","surveyQuestionOneDescriptionLeft","surveyQuestionOneDescriptionRight","surveyQuestionTwoLabel","surveyQuestionTwoPlaceholder","surveyCtaLabel","surveyDisclaimer","surveyEndLabel","RemoveIcon","onChange","event","target","placeholder","rating","comment","IframeContainer","Iframe","iframeClassNames","constructor","super","vtoProps","vtoIframeRef","getVtoFoundationOverlayNodeId","vtoFoundationOverlay","trackCloseSupportedBrowserOverlay","closeSupportedBrowserOverlay","getVtoType","restProps","initialize","componentDidUpdate","prevProps","updateProductData","componentWillUnmount","handleVtoUnmount","componentDidMount","checkHidePriceOnLoad","isVtoOpened","isVtoFoundationOverlayOpened","isSpinnerEnabled","isSupportedBrowserOverlayVisible","isSupportedBrowserOverlayOpen","isVtoFoundationQrCodeOverlayEnabled","isSurveyVisible","handleShadeSelect","vtoShadeGridProps","vtoContainerClassNames","vtoIframeClassNames","SupportedBrowserOverlay","closeOverlay","isOpen","Spinner","isLoading","id","ref","addContext","addConfig","VTO_MAKEUP_BUTTON","VTO_FOUNDATION_BUTTON","VTO_PERFECT_SHADES_BUTTON","VTO_ALL_SHADES_BUTTON","VTO_PAIR_SHADES_BUTTON","VTO_SHADE_SELECT","VTO_PRODUCT_PRICE","VTO_PAIR_PRODUCT_LINK","VTO_PRODUCT_NAME","VTO_PRODUCT_SUBHEADER","VTO_PRODUCT_SIZE","VTO_PRICE_FORMATTED","VTO_SKIN_CARE_RESULT_BUTTON","VTO_SKIN_CARE_BUTTON","VTO_CUSTOM_PAIR_SHADE_PICKER","VTO_SHADE_SWATCH","VTO_SAVE_MATCHES","VTO_REMOVE_MATCHES","TAX_INCLUDED","VTO_SKINCARE_PRODUCT_GRID","VTO_SKINCARE_PRIORITY_PRODUCT_GRID","SUPPORTED_BROWSER_OVERLAY_COPY","IFRAME_MIN_WIDTH","IFRAME_MAX_WIDTH","TIMEOUT_VALUE","IFRAME_EXTRA_PADDING","IFRAME_RATIO","SHADE_SIDEBAR_HEIGHT_RATIO","COMPARE_BUTTON_HEIGHT","SKIN_SMOOTH_STRENGTH","VTO_GUID","NO_SCROLL_CLASS","VTO_ACTIVE_CLASS","VTO_DISCLOSE_PARAM","VTO_HIDE_PRICE_PARAM","VTO_OPEN_PARAM","VTO_MATCHES_COOKIE_NAME","VTO_PERSONALIZATION_VERIFIED_COOKIE","SHADE_SIDEBAR_CONTAINER","LEFT_STICKY_COLUMN","LEFT_COLUMN_SECTION","PRODUCT_FULL_SECTION","PERLGEM_USER_IDENTIFIER_TYPE","VTO","VTO_FOUNDATION","VTO_MATCHES","API_REQUEST_TIMEOUT","DOWNLOAD_BAR_SIZE","DOWNLOAD_BAR_TOLERANCE","DOWNLOAD_BAR_VARIATION","VtoEvents","FoundationShadeTypes","FoundationPairShadeTypes","freeze","VtoTypes","LOADING_PERCENTAGE_EVENT_TRIGGERED","VTO_SURVEY_DISCLAIMER","VTO_SURVEY_QUESTION1_TITLE","VTO_SURVEY_END_MESSAGE","SURVEY_BUTTONS_DATA","Array","keys","CLOSE_SURVEY_TIMEOUT","SURVEY_BUTTONS_WRAPPER","SURVEY_BUTTON","FORM_DATA_FIELD","USER_IDENTIFIER_FIELD","PAGE_FIELD","VTO_TYPE_FIELD","NP_FIELD","COMMENT_FIELD","GOOGLE_FORMS_URL","classes","component","classNames","useSafariToAccessCamera","deactivateModal","onMaskClick","underlayClickExits","title"],"sourceRoot":""}