{"version":3,"file":"src_exported_product-brief_ProductBrief_tsx.07a9d43b9b335b3abcdc.bundle.js","mappings":"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","sources":["webpack://elc-service-prodcat/./node_modules/@estee/elc-service/src/decorators/context/addTranslation.tsx","webpack://elc-service-prodcat/./src/internal/views/product-quickview/ProductQuickView.tsx","webpack://elc-service-prodcat/./src/exported/product-brief/ProductBrief.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ArrayMinOne } from '@estee/elc-universal-utils';\nimport { getRootMethods, ITranslations, requestTranslations } from './utils';\nimport {\n    Context,\n    ContextValueType,\n    IProps as UpdateContextProvideProps,\n    UpdateContextProvider\n} from './Context';\nimport { ContextMerger } from './ContextMerger';\n\ntype TranslationsType = { translations: ITranslations };\n\ninterface IProps extends UpdateContextProvideProps<ITranslations> {\n    translationFields: ArrayMinOne<string>;\n}\n\nclass GetTranslation extends UpdateContextProvider<ITranslations, IProps> {\n    static displayName = 'GetTranslation';\n\n    constructor(props: IProps) {\n        super(props);\n\n        const translations = getRootMethods().getTranslations(props.translationFields);\n        if (translations) {\n            this.hasValue = true;\n            this.updateContextProvider({ translations });\n        }\n    }\n\n    public async componentDidMount() {\n        const { translationFields } = this.props;\n\n        if (!this.hasValue) {\n            const translationsResponse = await requestTranslations(translationFields);\n\n            if (translationsResponse) {\n                this.hasValue = true;\n                getRootMethods().addTranslations(translationsResponse);\n\n                this.updateContextProvider({ translations: translationsResponse });\n            }\n        }\n    }\n}\n\ntype IAddTranslationProps = { translations?: ITranslations };\n\nexport function addTranslation(translationFields: ArrayMinOne<string>) {\n    getRootMethods().registerTranslationFields(translationFields);\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    return (WrappedComponent: any): any => (props: IAddTranslationProps) => (\n        <Context.Consumer>\n            {({ updateProvider, translations }: ContextValueType<TranslationsType>) => (\n                <GetTranslation\n                    translationFields={translationFields}\n                    updateContextProvider={updateProvider}\n                    contextHasValue={Boolean(translations)}\n                >\n                    <WrappedComponent {...props} />\n                </GetTranslation>\n            )}\n        </Context.Consumer>\n    );\n}\n\ntype IConsumerProps = { translations?: ITranslations };\n\nexport function translationConsumer(translationFields: ArrayMinOne<string>) {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    return (WrappedComponent: any): any =>\n        class extends React.Component<IConsumerProps> {\n            static displayName = 'translationConsumer';\n\n            public render() {\n                const translationsFromProps = this.props.translations;\n\n                return (\n                    <Context.Consumer>\n                        {({\n                            translations: translationsFromContext\n                        }: ContextValueType<TranslationsType>) => (\n                            <ContextMerger\n                                object={translationsFromContext || {}}\n                                keys={translationFields}\n                                render={(requestedTranslations: ITranslations) => (\n                                    <WrappedComponent\n                                        {...this.props}\n                                        translations={{\n                                            ...requestedTranslations,\n                                            ...translationsFromProps\n                                        }}\n                                    />\n                                )}\n                            />\n                        )}\n                    </Context.Consumer>\n                );\n            }\n        };\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { ResponsiveModal } from '@estee/elc-responsive-modal';\nimport styled from 'styled-components';\nimport { RemoveIcon } from '@estee/elc-icons';\nimport { ITranslationsCollection, translate, configConsumer } from '@estee/elc-service';\nimport { CartLimitReachedModal } from '../cart-limit-modal/CartLimitReachedModal';\nimport { classes } from '../../utils/Classes';\nimport { ProductQuickViewController } from '../../controllers/ProductQuickViewController';\nimport { diContainer } from '~setup/diContainer';\nimport serviceNames from '~setup/ProductService';\nimport { Product } from '../../domain/entities/Product';\nimport { Sku } from '../../domain/entities/Sku';\nimport { IProductQuickviewConfig } from '../../interfaces/IProductQuickview';\nimport { OrderRender } from '@estee/elc-layouts';\nimport { getViewRegistry } from '../..//utils/orderableUtils/getViewRegistry';\nimport { IBaseFeatureData } from '../../interfaces/IOrderableComponents';\nimport classnames from 'classnames';\nimport { ComponentTypes } from '~constants/ComponentTypes';\n\nexport interface IProductQuickView {\n    config?: IProductQuickviewConfig;\n    translations?: ITranslationsCollection;\n    onShadeSelect(name: string): void;\n    onSizeSelect(name: string): void;\n    onProductQuickViewClose(): void;\n    product: Product;\n    selectedSku: Sku;\n}\n\nconst Wrapper = styled.div`\n    margin-top: 25px;\n    display: inline-block;\n    width: 100%;\n`;\n\nconst ProductQuickViewWrapper = styled(ResponsiveModal)`\n    padding: 0;\n    width: 96%;\n`;\n\nconst ProductQuickViewCloseButton = styled.button`\n    cursor: pointer;\n    float: right;\n    border: none;\n    outline: none;\n    margin: 10px;\n    [dir='rtl'] & {\n        float: left;\n    }\n`;\n\n@configConsumer([\n    'itemMaxQuantity',\n    'hideSizeWhenSingular',\n    'sizePicker',\n    'installments',\n    'freeShippingAndReturn',\n    'shortDescription',\n    'loyaltyLearnMore',\n    'sitewideOnsaleMessage',\n    'imageCarouselSettings',\n    'showSubDisplayName',\n    'componentElementsOrderConfig',\n    'shadeSwatches',\n    'showIncludeTaxLabel'\n])\n@translate([\n    'autoReplenishLabel',\n    'subscribeLabel',\n    'subscribeCopyLabel',\n    'selectFrequencyLabel',\n    'notifyWhenAvailable',\n    'taxIncluded',\n    'shipsBy',\n    'preorderNotAvailableMessage',\n    'discountedPricePerUnitMessage',\n    'discountPercentLabel',\n    'onSaleTodayLabel',\n    'closeLabel',\n    'quickViewButtonLabel'\n])\n@observer\nexport class ProductQuickView extends React.Component<IProductQuickView> {\n    public static displayName: string;\n    private viewController: ProductQuickViewController;\n\n    constructor(props: IProductQuickView) {\n        super(props);\n\n        this.viewController = diContainer.get(serviceNames.productQuickViewController);\n        this.viewController.initialize(props.config || {});\n        this.viewController.setProduct(props.product);\n        this.viewController.setSelectedSkuId(props.selectedSku.skuId);\n    }\n\n    private closeProductQuickView = () => {\n        this.props.onProductQuickViewClose();\n    };\n\n    private handleShadeSelect = (name: string) => {\n        this.props.onShadeSelect(name);\n        this.viewController.selectShade(name);\n    };\n\n    private handleSizeSelect = (name: string) => {\n        this.props.onSizeSelect(name);\n        this.viewController.selectSize(name);\n    };\n\n    public render() {\n        const translations = this.props.translations as ITranslationsCollection;\n        const { closeLabel, quickViewButtonLabel } = translations;\n        const { productQuickview: productQuickviewConfig } =\n            (this.props.config && this.props.config.componentElementsOrderConfig) || {};\n\n        if (!productQuickviewConfig) {\n            return null;\n        }\n\n        const { displayName } = this.viewController.data.product;\n\n        const productQuickViewWrapperClassNames: string = classes('product-quick-view-wrapper');\n        const productQuickViewCloseButtonClassNames: string = classes(\n            'product-quick-view-close-button'\n        );\n        const productQuickViewCloseButtonIconClassNames: string = classes(\n            'product-quick-view-close-button-icon'\n        );\n        const productQuickViewContainerWrapperClassNames: string = classes(\n            'product-quick-view-container-wrapper'\n        );\n        const productQuickViewContentClassNames: string = classes('product-quick-view-content');\n        const productQuickViewContentOrderableClassNames: string = classes(\n            'product-quick-view-content-orderable'\n        );\n\n        const productQuickViewClassNames = classnames(\n            productQuickViewContentClassNames,\n            productQuickViewContentOrderableClassNames\n        );\n\n        const featureConfig: IBaseFeatureData = {\n            ...this.viewController.data,\n            translations: this.props.translations as ITranslationsCollection,\n            setAutoReplenishOption: this.viewController.setAutoReplenishOption,\n            getCustomSizeMedia: this.viewController.getCustomSizeMedia,\n            navigateToProduct: this.viewController.navigateToProduct,\n            handleShadeSelect: this.handleShadeSelect,\n            handleSizeSelect: this.handleSizeSelect,\n            emitSocialShareIconTriggered: this.viewController.emitSocialShareIconTriggered,\n            selectShade: this.viewController.selectShade,\n            handleLiveChatCTAClick: this.viewController.handleLiveChatCTAClick,\n            handleFavoriteClick: this.viewController.handleFavoriteClick,\n            productUpdateQuantity: this.viewController.productUpdateQuantity,\n            closeModalAction: this.closeProductQuickView,\n            clickAction: this.viewController.navigateToProduct,\n            href: this.viewController.data.selectedProductUrl,\n            componentType: ComponentTypes.PRODUCT_QUICKSHOP\n        };\n\n        return (\n            <Wrapper className={productQuickViewContainerWrapperClassNames}>\n                <ProductQuickViewWrapper\n                    className={productQuickViewWrapperClassNames}\n                    isOpen={true}\n                    title={displayName}\n                    deactivateModal={this.closeProductQuickView}\n                    onMaskClick={this.closeProductQuickView}\n                    underlayClickExits={false}\n                >\n                    <ProductQuickViewCloseButton\n                        aria-label={`${closeLabel} ${quickViewButtonLabel}`}\n                        value=\"close-quick-shop-button\"\n                        className={productQuickViewCloseButtonClassNames}\n                        onClick={this.closeProductQuickView}\n                        title={`${closeLabel} ${quickViewButtonLabel}`}\n                    >\n                        <RemoveIcon className={productQuickViewCloseButtonIconClassNames} />\n                    </ProductQuickViewCloseButton>\n\n                    <div className={productQuickViewClassNames} data-test-id=\"quickshop-content\">\n                        {Object.keys(productQuickviewConfig).map((sectionName: string) => (\n                            <div className={classes(`${sectionName}-section`)} key={sectionName}>\n                                <OrderRender\n                                    data-test-id={`${sectionName}-section`}\n                                    orderConfig={productQuickviewConfig[sectionName]}\n                                    serviceName=\"elc-service-prodcat\"\n                                    viewRegistry={getViewRegistry<IBaseFeatureData>(featureConfig)}\n                                />\n                            </div>\n                        ))}\n                    </div>\n                </ProductQuickViewWrapper>\n                <CartLimitReachedModal />\n            </Wrapper>\n        );\n    }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport {\n    ITranslationsCollection,\n    configConsumer,\n    addConfig,\n    addContext,\n    addTranslation,\n    translationConsumer\n} from '@estee/elc-service';\nimport { OrderRender } from '@estee/elc-layouts';\nimport { root } from '@estee/elc-universal-utils';\nimport { classes } from '~utils/Classes';\nimport styled from 'styled-components';\nimport { getViewRegistry } from '~utils/orderableUtils/getViewRegistry';\nimport { IBaseFeatureData, IOrderConfigCollection } from '~interfaces/IOrderableComponents';\nimport { ProductBriefViewController } from '~controllers/ProductBriefViewController';\nimport { action, observable } from 'mobx';\nimport { CheckVisibility } from '@estee/elc-check-visibility';\nimport { productBriefTranslations } from '~utils/orderableUtils/translations';\nimport { productBriefconfigs } from '~utils/orderableUtils/configs';\nimport { ProductQuickView } from '../../internal/views/product-quickview/ProductQuickView';\nimport {\n    IProductBriefConfig,\n    IProductBrief,\n    IProductBriefViewControllerData\n} from '~interfaces/IProductBrief';\nimport { diContainer } from '~setup/diContainer';\nimport serviceNames from '~setup/ProductService';\nimport { ComponentTypes } from '~constants/ComponentTypes';\nimport { mergeConfigs } from '~utils/ConfigUtils';\nimport { PRODUCT_BRIEF } from '~constants/DataTestIdAttributes';\n\ninterface IWrapperProps {\n    maxHeight: number;\n}\n\nconst ProductBriefWrapper = styled.div``;\nconst InitialWrapper = styled.div<IWrapperProps>`\n    height: ${(props) => (props.maxHeight ? `${props.maxHeight}px` : '100%')};\n`;\n\ntype IProductBriefData = IProductBriefViewControllerData;\n\nexport interface IProductBriefFeature extends IBaseFeatureData, IProductBriefData {}\n\n@addContext()\n@addConfig(\n    ['prodcatConfig', 'features', 'itemMaxQuantity', 'productBenefitTypes', 'showBestShadeMessage'],\n    mergeConfigs\n)\n@configConsumer(productBriefconfigs)\n@addTranslation(productBriefTranslations)\n@translationConsumer(productBriefTranslations)\n@observer\nclass ProductBrief extends React.Component<IProductBrief> {\n    @observable private isItemInView: boolean = false;\n    public static displayName: string;\n    private productBriefOrder: IOrderConfigCollection;\n    @observable private viewController: ProductBriefViewController;\n    private productBriefRef: React.RefObject<HTMLDivElement>;\n\n    constructor(props: IProductBrief) {\n        super(props);\n        const { config: briefConfig } = this.props;\n        const { componentElementsOrderConfig } = briefConfig as IProductBriefConfig;\n        const productBriefOrderConfig =\n            componentElementsOrderConfig && componentElementsOrderConfig.productBrief;\n        this.productBriefOrder = productBriefOrderConfig || {};\n        this.viewController = diContainer.get(serviceNames.productBriefViewController);\n        this.viewController.initialize(briefConfig);\n        this.productBriefRef = React.createRef();\n    }\n\n    @action\n    private onVisible = () => {\n        this.isItemInView = true;\n    };\n\n    public async componentDidMount() {\n        if (!this.viewController.isLoaded) {\n            await this.viewController.initialize(this.props.config);\n        }\n    }\n\n    private renderQuickView() {\n        const quickViewProps = {\n            product: this.viewController.product,\n            onShadeSelect: this.viewController.handleShadeSelect,\n            onSizeSelect: this.viewController.handleSizeSelect,\n            onProductQuickViewClose: this.viewController.closeProductQuickView,\n            selectedSku: this.viewController.selectedSku\n        };\n\n        return <ProductQuickView {...quickViewProps} />;\n    }\n\n    private renderBrief() {\n        if (!this.viewController.isLoaded) {\n            return null;\n        }\n        const productBriefClassNames = classes('product-brief', this.props.className);\n        const { product: { productId } } = this.viewController;\n        const { lazyLoadImageDesktop, lazyLoadImageMobile } = this.props.config;\n\n        const clickableProps = this.props.config.enableClickableBrief\n            ? {\n                  clickAction: this.viewController.navigateToProduct,\n                  href: this.viewController.targetUrl\n              }\n            : {};\n\n        const featureConfig: IBaseFeatureData = {\n            ...this.viewController.data,\n            translations: this.props.translations as ITranslationsCollection,\n            setAutoReplenishOption: this.viewController.setAutoReplenishOption,\n            getCustomSizeMedia: this.viewController.getCustomSizeMedia,\n            navigateToProduct: this.viewController.navigateToProduct,\n            onQuickViewButtonClick: this.viewController.onQuickViewButtonClick,\n            handleShadeSelect: this.viewController.handleShadeSelect,\n            handleSizeSelect: this.viewController.handleSizeSelect,\n            emitSocialShareIconTriggered: this.viewController.emitSocialShareIconTriggered,\n            selectShade: this.viewController.selectShade,\n            handleLiveChatCTAClick: this.viewController.handleLiveChatCTAClick,\n            handleFavoriteClick: this.viewController.handleFavoriteClick,\n            toggleDescription: this.viewController.toggleDescription,\n            productUpdateQuantity: this.viewController.productUpdateQuantity,\n            ...clickableProps,\n            lazyLoadImageDesktop,\n            lazyLoadImageMobile,\n            componentType: ComponentTypes.PRODUCT_BRIEF\n        };\n        const { isProductQuickViewOpen, selectedSku } = this.viewController.data;\n\n        const skuBaseId = selectedSku.perlgem.SKU_BASE_ID || selectedSku.skuId;\n        const productCode = selectedSku.skuId;\n        const mediumImg = selectedSku?.media?.medium[0]?.src;\n\n        return (\n            <>\n                <ProductBriefWrapper\n                    className={productBriefClassNames}\n                    ref={this.productBriefRef}\n                    data-sku-base-id={skuBaseId}\n                    data-product-id={productId}\n                    data-test-id={PRODUCT_BRIEF}\n                    data-product-code={productCode}\n                    data-medium-img={mediumImg}\n                >\n                    {Object.keys(this.productBriefOrder).map((sectionName: string) => (\n                        <div className={classes(`${sectionName}-section`)} key={sectionName}>\n                            <OrderRender\n                                data-test-id={`${sectionName}-section`}\n                                orderConfig={this.productBriefOrder[sectionName]}\n                                serviceName={'elc-service-prodcat'}\n                                viewRegistry={getViewRegistry<IProductBriefFeature>(featureConfig)}\n                            />\n                        </div>\n                    ))}\n                </ProductBriefWrapper>\n                {isProductQuickViewOpen && this.renderQuickView()}\n            </>\n        );\n    }\n\n    private renderBriefWrapper() {\n        const { maxHeight = 0 } = this.props.config;\n        const briefWrapperClassNames = classes('product-brief-wrapper');\n\n        return (\n            <CheckVisibility onVisible={this.onVisible}>\n                <InitialWrapper className={briefWrapperClassNames} maxHeight={maxHeight} />\n            </CheckVisibility>\n        );\n    }\n\n    public render() {\n        const { lazyLoadGridItem } = this.props.config as IProductBriefConfig;\n\n        return lazyLoadGridItem && !this.isItemInView && !root.__ssr\n            ? this.renderBriefWrapper()\n            : this.renderBrief();\n    }\n}\n\nProductBrief.displayName = 'ProductBrief';\n\nexport default ProductBrief;\n"],"names":["GetTranslation","constructor","props","super","translations","getTranslations","translationFields","this","hasValue","updateContextProvider","componentDidMount","translationsResponse","addTranslations","addTranslation","registerTranslationFields","WrappedComponent","updateProvider","contextHasValue","Boolean","translationConsumer","render","translationsFromProps","translationsFromContext","object","keys","requestedTranslations","displayName","Wrapper","ProductQuickViewWrapper","ResponsiveModal","ProductQuickViewCloseButton","ProductQuickView","closeProductQuickView","onProductQuickViewClose","handleShadeSelect","name","onShadeSelect","viewController","selectShade","handleSizeSelect","onSizeSelect","selectSize","diContainer","initialize","config","setProduct","product","setSelectedSkuId","selectedSku","skuId","closeLabel","quickViewButtonLabel","productQuickview","productQuickviewConfig","componentElementsOrderConfig","data","productQuickViewWrapperClassNames","productQuickViewCloseButtonClassNames","productQuickViewCloseButtonIconClassNames","productQuickViewContainerWrapperClassNames","productQuickViewContentClassNames","productQuickViewContentOrderableClassNames","productQuickViewClassNames","featureConfig","setAutoReplenishOption","getCustomSizeMedia","navigateToProduct","emitSocialShareIconTriggered","handleLiveChatCTAClick","handleFavoriteClick","productUpdateQuantity","closeModalAction","clickAction","href","selectedProductUrl","componentType","ComponentTypes","className","isOpen","title","deactivateModal","onMaskClick","underlayClickExits","value","onClick","RemoveIcon","Object","map","sectionName","key","OrderRender","orderConfig","serviceName","viewRegistry","getViewRegistry","CartLimitReachedModal","ProductBriefWrapper","InitialWrapper","maxHeight","ProductBrief","isItemInView","onVisible","briefConfig","productBriefOrderConfig","productBrief","productBriefOrder","productBriefRef","isLoaded","renderQuickView","quickViewProps","renderBrief","productBriefClassNames","productId","lazyLoadImageDesktop","lazyLoadImageMobile","clickableProps","enableClickableBrief","targetUrl","onQuickViewButtonClick","toggleDescription","isProductQuickViewOpen","skuBaseId","perlgem","SKU_BASE_ID","productCode","mediumImg","media","medium","src","ref","renderBriefWrapper","briefWrapperClassNames","CheckVisibility","lazyLoadGridItem","addContext","addConfig"],"sourceRoot":""}