{"version":3,"file":"src_exported_vto-cta-button_VtoCTAButton_tsx.cf91929945ef4498b888.bundle.js","mappings":"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","sources":["webpack://elc-service-vto/./node_modules/@estee/elc-base-theme/src/Breakpoints.ts","webpack://elc-service-vto/./node_modules/@estee/elc-base-theme/src/Colors.ts","webpack://elc-service-vto/./node_modules/@estee/elc-base-theme/src/Emphasis.ts","webpack://elc-service-vto/./node_modules/@estee/elc-base-theme/src/Fonts.ts","webpack://elc-service-vto/./node_modules/@estee/elc-buttons/src/theme/default-theme.ts","webpack://elc-service-vto/./node_modules/@estee/elc-buttons/src/views/Button.tsx","webpack://elc-service-vto/./node_modules/@estee/elc-service/src/decorators/TranslateDecorator.tsx","webpack://elc-service-vto/./src/exported/vto-cta-button/VtoCTAButton.tsx","webpack://elc-service-vto/./src/internal/constants/DataTestIdAttributes.ts","webpack://elc-service-vto/./src/internal/utils/Classes.ts","webpack://elc-service-vto/./node_modules/classnames/index.js"],"sourcesContent":["export interface IBreakpoints {\n [key: string]: number;\n}\n\nexport const layoutPageContentWidth: number = 1260;\n\nexport const Breakpoints: IBreakpoints = {\n desktop: 768,\n largeScreen: 1024,\n extraLargeScreen: 1200\n};\n\nexport const breakpoint = (brp: string) => (\n code: TemplateStringsArray,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...placeholders: any[]\n) => {\n // interleave the code with the placeholders\n let result = placeholders.reduce((acc, holder, idx) => `${acc}${code[idx]}${holder}`, '');\n\n // add the code literal\n result = `${result}${code[code.length - 1]}`;\n\n return `@media(min-width: ${Breakpoints[brp]}px) {${result}}`;\n};\n","import { Emphasis } from './Emphasis';\n\nexport interface IColors {\n black: string;\n white: string;\n whiteDove: string;\n primary900: string;\n primary800: string;\n primary700: string;\n primary600: string;\n primary500: string;\n primary400: string;\n primary300: string;\n primary200: string;\n primary100: string;\n primary50: string;\n danger: string;\n info: string;\n success: string;\n warning: string;\n unvisitedLink: string;\n visitedLink: string;\n blackHighEmphasis: string;\n blackMediumEmphasis: string;\n blackLightEmphasis: string;\n blackDisabledEmphasis: string;\n whiteHighEmphasis: string;\n whiteMediumEmphasis: string;\n whiteDisabledEmphasis: string;\n redLightEmphasis: string;\n\n [key: string]: string;\n}\n\nexport const Colors: IColors = {\n black: '#000000',\n white: '#FFFFFF',\n whiteDove: '#FBFBFB',\n primary900: '#212121',\n primary800: '#424242',\n primary700: '#616161',\n primary600: '#757575',\n primary500: '#9E9E9E',\n primary400: '#BDBDBD',\n primary300: '#E0E0E0',\n primary200: '#EEEEEE',\n primary100: '#F5F5F5',\n primary50: '#FAFAFA',\n danger: '#B00020',\n info: '#54A6D7',\n success: '#70B000',\n warning: '#EE9F57',\n unvisitedLink: '#0000EE',\n visitedLink: '#551A8B',\n blackHighEmphasis: `rgba(0, 0, 0, ${Emphasis.high.value})`,\n blackMediumEmphasis: `rgba(0, 0, 0, ${Emphasis.medium.value})`,\n blackLightEmphasis: `rgba(0, 0, 0, ${Emphasis.light.value})`,\n blackDisabledEmphasis: `rgba(0, 0, 0, ${Emphasis.disabled.value})`,\n blackPaleEmphasis: `rgba(0, 0, 0, ${Emphasis.pale.value})`,\n whiteHighEmphasis: `rgba(255, 255, 255, ${Emphasis.high.value})`,\n whiteMediumEmphasis: `rgba(255, 255, 255, ${Emphasis.medium.value})`,\n whiteDisabledEmphasis: `rgba(255, 255, 255, ${Emphasis.disabled.value})`,\n redLightEmphasis: `rgba(176, 0, 32, ${Emphasis.pale.value})`,\n successEmphasis: `rgba(112, 176, 0, ${Emphasis.pale.value})`,\n warningEmphasis: `rgba(238, 159, 87, ${Emphasis.pale.value})`\n};\n","export interface IEmphasisProps {\n [key: string]: number | string;\n}\n\nexport interface IEmphasis {\n [key: string]: IEmphasisProps;\n}\n\nexport const Emphasis: IEmphasis = {\n high: { value: 0.88, className: '' }, // No className because it has emphasis High by default\n medium: { value: 0.64, className: 'elc-medium-emphasis' },\n light: { value: 0.12, className: 'elc-light-emphasis' },\n pale: { value: 0.02, className: 'elc-pale-emphasis' },\n disabled: { value: 0.4, className: 'elc-disabled-emphasis' }\n};\n","export const Fonts = {\n roboto: 'Roboto Regular',\n robotoLight: 'Roboto Light',\n robotoMedium: 'Roboto Medium'\n};\n","import { Colors, Fonts } from '@estee/elc-base-theme';\n\nexport const typographyButtonsTheme = `\n border-radius: 4px;\n font-family: ${Fonts.roboto};\n font-weight: 500px;\n text-transform: uppercase;\n\n &:disabled {\n cursor: not-allowed;\n }\n`;\n\nexport const buttonTheme = `\n background-color: ${Colors.primary900};\n color: ${Colors.white};\n ${typographyButtonsTheme};\n\n &:hover {\n background-color: ${Colors.primary800};\n }\n\n &:active {\n background-color: ${Colors.primary700};\n }\n\n &:disabled {\n background-color: ${Colors.primary300};\n color: ${Colors.primary600};\n }\n \n`;\n\nexport const buttonTextTheme = `\n background-color: ${Colors.white};\n color: ${Colors.primary900};\n text-decoration: underline;\n ${typographyButtonsTheme};\n\n &:hover {\n background-color: ${Colors.primary100};\n }\n\n &:active {\n background-color: ${Colors.primary200};\n }\n\n &:disabled {\n background-color: ${Colors.primary300};\n color: ${Colors.primary600};\n }\n`;\n\nexport const buttonOutlinedTheme = ` \n border-color: ${Colors.primary900};\n background-color: ${Colors.white};\n color: ${Colors.primary900};\n ${typographyButtonsTheme};\n\n &:hover {\n background-color: ${Colors.primary100};\n }\n\n &:active {\n background-color: ${Colors.primary200};\n }\n\n &:disabled {\n border-color: ${Colors.primary400};\n background-color: ${Colors.white};\n color: ${Colors.primary400};\n }\n`;\n\nexport const stickyButtonContainerTheme = `\n background-color: ${Colors.white};\n box-shadow: 0 -3px 3px ${Colors.primary400};\n`;\n\nexport const stickyButtonTheme = buttonTheme;\n","import * as React from 'react';\nimport * as classnames from 'classnames';\nimport { SpinnerIcon } from '@estee/elc-icons';\nimport styled from 'styled-components';\nimport { buttonOutlinedTheme, buttonTextTheme, buttonTheme } from '../theme/default-theme';\n\nexport type ButtonSize =\n /**\n * Small\n */\n | 'sm'\n /**\n * Large\n */\n | 'lg'\n /**\n * Custom sizes\n */\n | string;\n\nexport interface IButtonDisplayProps extends React.ButtonHTMLAttributes {\n /**\n * If set to true then the component will span the width of the container\n */\n block?: boolean;\n /**\n * Based on button size a class name will be appended to the class list\n */\n size?: ButtonSize;\n /**\n * @inheritDoc\n */\n className?: string;\n}\n\nexport type IButton = React.ComponentType<\n React.ButtonHTMLAttributes & IButtonDisplayProps\n>;\n\nconst buttonSizeClass = (sz: string | undefined) => {\n return sz ? `elc-button--${sz}` : '';\n};\n\nconst getButtonClassNames = (props: IButtonDisplayProps) => {\n return classnames(['elc-button', 'js-button', buttonSizeClass(props.size), props.className]);\n};\n\nconst Btn = styled.button`\n border: none;\n cursor: pointer;\n letter-spacing: 1.25px;\n font-size: 14px;\n padding: 10px 20px;\n\n &:disabled {\n cursor: not-allowed;\n }\n\n ${(props: IButtonDisplayProps) =>\n props.block\n ? `\n display: block;\n width: 100%;\n `\n : ''};\n ${buttonTheme};\n &.${buttonSizeClass('sm')} {\n padding: 4px 8px;\n font-size: 12px;\n }\n /* stylelint-disable */\n &.${buttonSizeClass('lg')} {\n padding: 16px 32px;\n }\n /* stylelint-enable */\n`;\n\nexport const Button: React.SFC = props => {\n const className = getButtonClassNames(props);\n\n return (\n \n {props.children}\n \n );\n};\n\nexport const StyledTextButton = (props: IButtonDisplayProps) => {\n const StyledButton = styled(Btn)`\n ${buttonTextTheme};\n `;\n const className = getButtonClassNames(props);\n\n return ;\n};\n\nexport const TextButton: React.SFC = props => {\n const { className, ...restOfProps } = props;\n const textButtonClassNames = `${className} elc-button--text`;\n\n return (\n \n {props.children}\n \n );\n};\n\nexport const StyledOutlinedButton = (props: IButtonDisplayProps) => {\n const StyledButton = styled(Btn)`\n border-style: solid;\n border-width: 1px;\n ${buttonOutlinedTheme};\n `;\n const className = getButtonClassNames(props);\n\n return ;\n};\n\nexport const OutlinedButton: React.SFC = props => {\n const { className, ...restOfProps } = props;\n const outlinedButtonClassNames = `${className} elc-button--outlined`;\n\n return (\n \n {props.children}\n \n );\n};\n\nexport const LoadingButton: IButton = styled(Button).attrs({\n className: 'elc-button-spinner'\n})`\n position: relative;\n overflow: hidden;\n`;\nLoadingButton.displayName = 'LoadingButton';\n\nconst SpinnerContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n`;\n\nexport interface IButtonProps\n extends React.ButtonHTMLAttributes,\n IButtonDisplayProps {\n isLoading?: boolean;\n}\n\nconst LoadableButton: React.SFC = props => (\n \n {props.isLoading && (\n \n \n \n )}\n {props.children}\n \n);\n\nexport { LoadableButton };\n","import * as React from 'react';\nimport { root } from '@estee/elc-universal-utils';\n\nexport interface IState {\n translations: object;\n}\n\nexport interface ITranslationUrl {\n url: string;\n title: string;\n options: { absolute: boolean; new_window: boolean };\n}\n\nexport interface IProps {\n translations: { [k: string]: string };\n}\n\nexport interface ITranslationsCollection {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n}\n\nexport interface ITranslationsCollections {\n [key: string]: ITranslationsCollection;\n}\n\nexport function translate(translationFields: string[]) {\n if (root.registerTranslationFieldsToPreload) {\n root.registerTranslationFieldsToPreload(translationFields);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (WrappedComponent: any): any => {\n return class extends React.Component {\n static displayName = 'translate';\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(props: any) {\n super(props);\n\n const translationsFromCache = root.getPreloadedTranslations\n ? root.getPreloadedTranslations(translationFields)\n : null;\n\n const translations: ITranslationsCollection = props.translations\n ? props.translations\n : translationsFromCache;\n\n this.state = {\n translations\n };\n }\n\n public async componentDidMount() {\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const componentRenderer = root.ComponentRenderer as any;\n // App could not be using component renderer\n const preloader = componentRenderer ? componentRenderer.preloader : null;\n\n if (!this.state.translations) {\n let translations = null;\n\n if (preloader && preloader.preload) {\n await preloader.preload();\n translations = preloader.getPreloadedTranslations(translationFields);\n } else {\n const { GlobalServiceBus, ServiceBusTopics, addTranslations } = root;\n\n translations = await GlobalServiceBus.query(\n ServiceBusTopics.queries.GET_TRANSLATIONS,\n translationFields\n );\n\n if (addTranslations) {\n addTranslations(translations);\n }\n }\n if (translations) {\n this.setState({\n translations\n });\n }\n }\n }\n\n public render() {\n if (!this.state.translations) {\n return null;\n }\n\n return ;\n }\n };\n };\n}\n\nexport function mockTranslate(translationFields: string[]) {\n const translations: ITranslationsCollection = {};\n\n translationFields.forEach(field => {\n translations[field] = field;\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (WrappedComponent: any): any => {\n return class extends React.Component {\n public render() {\n return ;\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 { translate } from '@estee/elc-service';\nimport { Button } from '@estee/elc-buttons';\n\nimport { classes } from '~utils/Classes';\nimport { VtoCTAButtonViewController } from '~controllers/VtoCTAButtonViewController';\nimport {\n VTO_MAKEUP_BUTTON,\n VTO_FOUNDATION_BUTTON\n} from '~constants/DataTestIdAttributes';\nimport { IVtoCTAButtonServiceConfig } from '~interfaces/IVto';\nimport { Desktop, Mobile } from '@estee/elc-layouts';\nimport { Breakpoints } from '@estee/elc-base-theme';\n\nexport interface IVtoCTAButton {\n config: IVtoCTAButtonServiceConfig;\n translations: IVtoTranslations;\n viewController: VtoCTAButtonViewController;\n}\n\nexport interface IVtoTranslations {\n vtoFoundationButtonLabel: string;\n vtoMakeupButtonLabel: string;\n}\n\nconst VtoCtaWrapper = styled.div`\n text-align: center;\n cursor: pointer;\n`;\n\n@translate(['vtoFoundationButtonLabel', 'vtoMakeupButtonLabel'])\n@observer\nclass VtoCTAButton extends React.Component {\n constructor(props: IVtoCTAButton) {\n super(props);\n props.viewController.initialize(props.config);\n }\n\n public componentDidMount() {\n this.props.viewController.openVtoOnLoad();\n }\n\n public render() {\n const { viewController, config, translations } = this.props;\n const {\n data: { isVtoOpened },\n initVto,\n openVtoFoundationQrCodeOverlay\n } = viewController;\n const {\n isVtoFoundationEnabled,\n isVtoMakeupEnabled,\n isColorExperience,\n isFoundationExperience\n } = config;\n\n const { vtoFoundationButtonLabel, vtoMakeupButtonLabel } = translations;\n const isVtoCtaDisabled = isVtoOpened || (!isColorExperience && !isFoundationExperience);\n const vtoButtonTestId = isVtoFoundationEnabled ? VTO_FOUNDATION_BUTTON : VTO_MAKEUP_BUTTON;\n\n const vtoContainerClassNames = classnames({\n [classes('vto-foundation-button')]: isVtoFoundationEnabled,\n [classes('vto-makeup-button')]: isVtoMakeupEnabled\n });\n\n const buttonLabel = isVtoFoundationEnabled\n ? vtoFoundationButtonLabel\n : vtoMakeupButtonLabel;\n\n const desktopClickHandler = isVtoFoundationEnabled\n ? openVtoFoundationQrCodeOverlay\n : initVto;\n\n const buttonProps = {\n title: buttonLabel,\n className: classes('vto-button'),\n disabled: isVtoCtaDisabled,\n ['data-test-id']: vtoButtonTestId\n };\n\n return (\n \n \n {() => (\n \n )}\n \n \n {() => (\n \n )}\n \n \n );\n }\n}\n\nexport default VtoCTAButton;\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","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","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n"],"names":["Breakpoints","desktop","largeScreen","extraLargeScreen","breakpoint","brp","code","placeholders","result","reduce","acc","holder","idx","length","Colors","black","white","whiteDove","primary900","primary800","primary700","primary600","primary500","primary400","primary300","primary200","primary100","primary50","danger","info","success","warning","unvisitedLink","visitedLink","blackHighEmphasis","blackMediumEmphasis","blackLightEmphasis","blackDisabledEmphasis","blackPaleEmphasis","whiteHighEmphasis","whiteMediumEmphasis","whiteDisabledEmphasis","redLightEmphasis","successEmphasis","warningEmphasis","Emphasis","high","value","className","medium","light","pale","disabled","Fonts","roboto","robotoLight","robotoMedium","typographyButtonsTheme","F","buttonTheme","buttonSizeClass","sz","getButtonClassNames","props","classnames","size","Btn","block","Button","children","LoadingButton","attrs","displayName","translate","translationFields","WrappedComponent","constructor","super","translationsFromCache","translations","this","state","componentDidMount","componentRenderer","preloader","preload","getPreloadedTranslations","GlobalServiceBus","ServiceBusTopics","addTranslations","query","queries","GET_TRANSLATIONS","setState","render","VtoCtaWrapper","VtoCTAButton","viewController","initialize","config","openVtoOnLoad","data","isVtoOpened","initVto","openVtoFoundationQrCodeOverlay","isVtoFoundationEnabled","isVtoMakeupEnabled","isColorExperience","isFoundationExperience","vtoFoundationButtonLabel","vtoMakeupButtonLabel","isVtoCtaDisabled","vtoButtonTestId","vtoContainerClassNames","buttonLabel","desktopClickHandler","buttonProps","title","minWidth","onClick","maxWidth","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","classes","component","classNames","hasOwn","hasOwnProperty","i","arguments","arg","argType","push","Array","isArray","inner","apply","key","call","join","module","exports","default"],"sourceRoot":""}