{"version":3,"file":"static/js/992e64298633cc4fe0e0.bundle.js","mappings":"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","sources":["webpack://jansen-adventureworks/./src/themes/jansen-adventureworks/views/components/IncrementalQuantity.tsx?9858","webpack://jansen-adventureworks/./src/themes/jansen-adventureworks/views/components/product-popover.component.tsx?6b34","webpack://jansen-adventureworks/./src/modules/adventureworks/views/components/product.component.tsx?fd23"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { IRequestContext } from '@msdyn365-commerce/core';\r\nimport { debounce } from 'lodash';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { ITelemetry } from '@msdyn365-commerce/telemetry-internal';\r\nimport { IDictionary } from '@msdyn365-commerce/core';\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\n\r\nexport enum VariantType {\r\n Browser,\r\n Viewport\r\n}\r\n\r\n/**\r\n * Returns the payload Object.\r\n * @param {string} contentCategory - Content Category.\r\n * @param {IModule} props - Module props.\r\n * @param {string} moduleName - Module Name.\r\n * @param eventType\r\n * @param telemetryContent\r\n * @param {string} etext - Etext Name.\r\n * @param {string} recid - Recid Name.\r\n */\r\nexport function getPayloadObject(eventType: string, telemetryContent: ITelemetryContent, etext: string, recid?: string): IPayLoad {\r\n const pageName = telemetryContent && telemetryContent.pageName ? telemetryContent.pageName : '';\r\n const moduleName = telemetryContent && telemetryContent.moduleName ? telemetryContent.moduleName : '';\r\n const payload: IPayLoad = {\r\n contentCategory: eventType,\r\n contentAction: {\r\n pgname: pageName,\r\n mname: moduleName,\r\n etext,\r\n recid,\r\n etype: eventType\r\n }\r\n };\r\n return payload;\r\n}\r\n\r\nexport interface IMobileProps {\r\n variant?: VariantType;\r\n context?: IRequestContext;\r\n}\r\n\r\nexport const isMobile = (props: IMobileProps) => {\r\n const { variant, context } = props;\r\n switch (variant) {\r\n case VariantType.Browser:\r\n if (MsDyn365.isBrowser && window.innerWidth) {\r\n const gridSettings = context?.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n }\r\n return 'xl';\r\n }\r\n }\r\n\r\n return 'lg';\r\n case VariantType.Viewport:\r\n const viewport = context?.device?.Type === 'Mobile' ? 'xs' : 'lg';\r\n return viewport;\r\n default:\r\n return 'lg';\r\n }\r\n};\r\n\r\n/**\r\n * Returns the telemetry Attributes.\r\n * @param {IModule} props - Module Props.\r\n * @param telemetryContent\r\n * @param {IPayLoad} payLoad - Pay Load.\r\n */\r\nexport function getTelemetryAttributes(telemetryContent: ITelemetryContent, payLoad: IPayLoad): IDictionary | undefined {\r\n const contentData = payLoad.contentAction.recid ? payLoad.contentAction.recid : payLoad.contentAction.etext;\r\n const attributes: IDictionary | undefined =\r\n telemetryContent &&\r\n telemetryContent.telemetry &&\r\n telemetryContent.telemetry.setTelemetryAttribute &&\r\n telemetryContent.telemetry.setTelemetryAttribute(contentData!, payLoad.contentAction);\r\n return attributes;\r\n}\r\n\r\nexport interface IContentAction {\r\n pgname: string;\r\n mname: string;\r\n etext?: string;\r\n recid?: string;\r\n etype?: string;\r\n}\r\n\r\nexport interface IPayLoad {\r\n contentCategory: string;\r\n contentAction: IContentAction;\r\n}\r\n\r\nexport enum TelemetryConstant {\r\n ShopSimliarLooks = 'shop similar looks',\r\n ShopSimliarDescription = 'shop similar description',\r\n PickupInStore = 'pick up in store',\r\n PreferredStore = 'set as preferred store',\r\n RemovePreferredStore = 'remove preferred store',\r\n IncrementQuantity = 'Increment quantity',\r\n DecrementQuantity = 'Decrement quantity',\r\n Checkout = 'Checkout',\r\n GuestCheckout = 'Guest checkout',\r\n BackToShopping = 'Back to shopping',\r\n ApplyPromoCode = 'Apply promo code',\r\n ViewMore = 'View more',\r\n OrderDetails = 'Order details',\r\n AvailablePoints = 'Available points',\r\n ExpiringPoints = 'Expiring points',\r\n AddUser = 'Add user',\r\n BuyItAgain = 'Buy it again',\r\n ContactNumber = 'ContactNumber',\r\n CheckoutChange = 'Change',\r\n Save = 'Save',\r\n SaveContinue = 'Save and Continue',\r\n Cancel = 'Cancel',\r\n DeliveryOptions = 'Delivery options',\r\n CheckoutTermsAndConditions = 'Checkout terms and conditions',\r\n ExpandAll = 'Expand all',\r\n CollapseAll = 'Collapse all',\r\n Expand = 'Expand',\r\n Collapse = 'Collapse',\r\n SignIn = 'Sign in',\r\n SignUp = 'Sign up',\r\n SignOut = 'Sign out',\r\n SwitchCustomer = 'Switch Customer',\r\n LoyaltyDetailLink = 'Loyalty detail ink',\r\n LoyaltyTermsLink = 'Loyalty terms link',\r\n LoyaltyTermsCancel = 'Loyalty terms cancel',\r\n LoyaltyTermsSubmit = 'Loyalty terms submit',\r\n LoyaltyTermsAgree = 'Loyalty terms agree',\r\n RemoveCartItem = 'Remove cart item',\r\n EditCart = 'Edit cart',\r\n BackToTop = 'Back to top',\r\n Logo = 'Logo',\r\n NavIcon = 'Navigation icon',\r\n ViewBagAndCheckout = 'View bag and checkout',\r\n ContinueShopping = 'Continue shopping',\r\n AddOrderTemplateToCart = 'Add order template to cart',\r\n PromoBannerClose = 'Close promo banner',\r\n WriteReview = 'Write Review',\r\n Next = 'Next',\r\n Previous = 'Previous',\r\n SubmitReview = 'Submit review',\r\n SuccessButton = 'Success',\r\n SearchStore = 'Search store',\r\n ShowAllStore = 'Show all store',\r\n ToggleMapView = 'Toggle map view',\r\n PrivacyPolicy = 'Privacy policy',\r\n ViewShoppingBag = 'View shopping bag',\r\n MyProfile = 'My profile',\r\n seeDetails = 'See Details',\r\n CurrentDistributor = 'Set as current distributor',\r\n ViewMode = 'View mode',\r\n ApplyRefiner = 'Apply Refiner',\r\n Search = 'Search'\r\n}\r\n\r\ninterface ITelemetryContent {\r\n pageName: string;\r\n moduleName: string;\r\n telemetry?: ITelemetry;\r\n}\r\n\r\ninterface IIncrementalQuantityState {\r\n isUpdating: boolean;\r\n currentInput: string;\r\n}\r\n\r\ninterface IIncrementalQuantityProps {\r\n min?: number;\r\n max: number;\r\n currentCount?: number;\r\n disabled?: boolean;\r\n incrementGlyphClass?: string;\r\n decrementGlyphClass?: string;\r\n decrementButtonAriaLabel?: string;\r\n incrementButtonAriaLabel?: string;\r\n minQuantityText: string;\r\n maxQuantityText: string;\r\n inputQuantityAriaLabel?: string;\r\n isGiftCard?: boolean;\r\n id?: string;\r\n telemetryContent?: ITelemetryContent;\r\n applyDefaultOrderSettings?: boolean;\r\n onChange?(newValue: number): boolean;\r\n}\r\n/**\r\n * Quantity Component - This component is used to add or remove quantity.\r\n */\r\n@observer\r\nexport default class IncrementalQuantity extends React.PureComponent {\r\n public static defaultProps: Partial = {\r\n min: 1,\r\n decrementGlyphClass: 'fas fa-minus',\r\n incrementGlyphClass: 'fas fa-plus'\r\n };\r\n\r\n private _minValue: number;\r\n\r\n private readonly inputRef: React.RefObject = React.createRef();\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n public static getDerivedStateFromProps(\r\n props: Readonly,\r\n state: IIncrementalQuantityState\r\n ): IIncrementalQuantityState {\r\n const nextState = { ...state };\r\n\r\n if (props.disabled && !state.isUpdating) {\r\n nextState.isUpdating = true;\r\n }\r\n\r\n let updatedValue = parseFloat(state.currentInput);\r\n\r\n if (\r\n (!props.disabled && state.isUpdating) ||\r\n ((props.applyDefaultOrderSettings ?? false) &&\r\n updatedValue === 1.00 &&\r\n props.currentCount &&\r\n props.currentCount > IncrementalQuantity.defaultProps.min!)\r\n ) {\r\n updatedValue = props.currentCount ?? 1.00;\r\n nextState.isUpdating = false;\r\n }\r\n\r\n return nextState;\r\n }\r\n\r\n constructor(props: IIncrementalQuantityProps) {\r\n super(props);\r\n this.state = { isUpdating: false, currentInput: props.currentCount?.toFixed(2) ?? '1.00' };\r\n this._onIncrement = this._onIncrement.bind(this);\r\n this._onDecrement = this._onDecrement.bind(this);\r\n this._handleChange = this._handleChange.bind(this);\r\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, '');\r\n this._minValue = this.props.min ?? IncrementalQuantity.defaultProps.min!;\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { min, max } = this.props;\r\n\r\n this._minValue = min ?? IncrementalQuantity.defaultProps.min!;\r\n const currentValue1 = this.state.currentInput;\r\n\r\n const glyphMinusClassName: string = `${this.props.decrementGlyphClass!} quantity__controls-glyph`;\r\n const glyphPlusClassName: string = `${this.props.incrementGlyphClass!} quantity__controls-glyph`;\r\n const decrementDisabled = parseFloat(currentValue1) <= this._minValue || this.props.isGiftCard;\r\n const incrementDisabled = parseFloat(currentValue1) >= max || this.props.isGiftCard;\r\n const currentValue = parseFloat(currentValue1);\r\n this.payLoad.contentAction.etext = TelemetryConstant.DecrementQuantity;\r\n const decrementAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n this.payLoad.contentAction.etext = TelemetryConstant.IncrementQuantity;\r\n const incrementAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n const ariaLablelText = `${this.props.inputQuantityAriaLabel ?? ''} ${parseFloat(currentValue1)}`;\r\n\r\n let extraClassDecrement = '';\r\n if (decrementDisabled) {\r\n // The quantity has reached its boundaries (max or min)\r\n extraClassDecrement = 'disabled';\r\n } else if (this.props.disabled) {\r\n // This.props.disabled shows if the state is not succeded yet\r\n extraClassDecrement = 'transition';\r\n }\r\n let extraClassIncrement = '';\r\n if (incrementDisabled) {\r\n // The quantity has reached its boundaries (max or min)\r\n extraClassIncrement = 'disabled';\r\n } else if (this.props.disabled) {\r\n // This.props.disabled shows if the state is not succeded yet\r\n extraClassIncrement = 'transition';\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n }\r\n\r\n /**\r\n * It checks if its in mobile view or not.\r\n * @returns Boolean.\r\n */\r\n private readonly isMobileView = (): boolean => {\r\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Added gridsetting values.\r\n const context = {\r\n gridSettings: {\r\n xs: { w: 767 },\r\n sm: { w: 991 },\r\n md: { w: 1199 },\r\n lg: { w: 1599 },\r\n xl: { w: 1600 }\r\n }\r\n } as IRequestContext;\r\n\r\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\r\n return isMobileCheck === 'xs' || isMobileCheck === 'sm';\r\n };\r\n\r\n private _onIncrement(): void {\r\n let invokeCallback = false;\r\n const currQuantity = parseFloat(this.state.currentInput)\r\n \r\n let updatedQuantity: number;\r\n \r\n if (currQuantity < this.props.max) {\r\n invokeCallback = true;\r\n updatedQuantity = currQuantity + 1;\r\n } else {\r\n invokeCallback = false;\r\n updatedQuantity = this.props.max;\r\n }\r\n\r\n if (invokeCallback && this.props.onChange) {\r\n if (this.props.onChange(updatedQuantity)) {\r\n this.setState({ currentInput: updatedQuantity.toFixed(2) });\r\n }\r\n }\r\n }\r\n\r\n private _onDecrement(): void {\r\n let invokeCallback = false;\r\n const currQuantity = parseFloat(this.state.currentInput)\r\n let updatedQuantity: number;\r\n\r\n if (currQuantity >= this._minValue) {\r\n invokeCallback = true;\r\n updatedQuantity = currQuantity - 1;\r\n } else {\r\n invokeCallback = false;\r\n updatedQuantity = this._minValue;\r\n }\r\n\r\n if (invokeCallback && this.props.onChange) {\r\n if (this.props.onChange(updatedQuantity)) {\r\n this.setState({ currentInput: updatedQuantity.toFixed(2) });\r\n }\r\n }\r\n }\r\n\r\n private _handleChange(e: React.ChangeEvent): void {\r\n let value = e.target.value;\r\n \r\n // If the input field is empty, we update the state to an empty field.\r\n if (value === '') {\r\n this.setState({ currentInput: '' });\r\n } else if (/^[0-9]*[.]?[0-9]{0,2}$/.test(value)) {\r\n // Converts the comma to a dot and stores the valid value in the state.\r\n const formattedValue = value.replace(\",\", \".\");\r\n this.setState({ currentInput: formattedValue });\r\n \r\n debounce(() => {\r\n this.props.onChange && this.props.onChange(parseFloat(this.state.currentInput));\r\n \r\n const inputElement =\r\n this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\r\n if (inputElement) {\r\n inputElement.setAttribute('aria-valuenow', this.state.currentInput);\r\n inputElement.setAttribute('value', this.state.currentInput);\r\n }\r\n }, 1000)();\r\n }\r\n }\r\n\r\n /**\r\n * Validates min and updates.\r\n */\r\n private readonly _validateMin = (): void => {\r\n // If the input field is empty, we update the state to an empty field.\r\n if (this.state.currentInput === '') {\r\n this.setState({ currentInput: '1' });\r\n }\r\n \r\n const currentValue = parseFloat(this.state.currentInput);\r\n \r\n if (isNaN(currentValue)) {\r\n // If the value is invalid, we set it to the minimum value.\r\n this.setState({ currentInput: this._minValue.toFixed(2) });\r\n } else {\r\n const validValue = Math.min(this.props.max, Math.max(this._minValue, currentValue));\r\n if (validValue !== currentValue) {\r\n this.setState({ currentInput: validValue.toFixed(2) });\r\n }\r\n }\r\n };\r\n}\r\n","import React, { useState } from 'react';\r\nimport { Popover, PopoverHeader, PopoverBody } from 'reactstrap';\r\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\r\nimport { ICoreContext } from '@msdyn365-commerce/core';\r\nimport { getProductPageUrlSync } from '@msdyn365-commerce-modules/retail-actions';\r\n\r\nconst ProductPopover = ({ product, index, context, layout }: { product: ProductSearchResult; index: number; context: ICoreContext; layout: String }) => {\r\n const productUrl = product ? getProductPageUrlSync(product.Name ?? '', product.RecordId, context.actionContext, undefined) : '';\r\n const [popoverOpen, setPopoverOpen] = useState(false);\r\n const zIndex = index + 1;\r\n\r\n const togglePopover = (isVisible: boolean) => {\r\n setPopoverOpen(isVisible);\r\n };\r\n\r\n return (\r\n <>\r\n togglePopover(false)}\r\n onMouseLeave={() => togglePopover(false)}\r\n style={{ position: 'relative', zIndex: zIndex }}\r\n onClick={() => window.location.href = productUrl}\r\n >\r\n {layout === 'imagelist' ? {product.Name}{product.Name} :\r\n {product.Name}}\r\n \r\n togglePopover(!popoverOpen)}\r\n style={{ zIndex: zIndex + 1 }}\r\n >\r\n \r\n togglePopover(false)}\r\n onMouseLeave={() => togglePopover(false)}\r\n >\r\n {product.Name}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ProductPopover;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductsDimensionsAvailabilities } from '@msdyn365-commerce/commerce-entities';\nimport {\n IPriceComponentResources,\n ISwatchItem,\n PriceComponent,\n ProductComponentSwatchComponent,\n RatingComponent\n} from '@msdyn365-commerce/components';\nimport {\n getCatalogId,\n IAny,\n IComponent,\n IComponentProps,\n ICoreContext,\n IGeneric,\n IGridSettings,\n IImageData,\n IImageSettings,\n Image,\n msdyn365Commerce\n} from '@msdyn365-commerce/core';\nimport {\n AttributeSwatch,\n AttributeValue,\n ProductDimension,\n ProductPrice,\n ProductSearchResult,\n ProductType,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n convertDimensionTypeToProductDimensionType,\n Dictionary,\n DimensionTypes,\n generateImageUrl,\n getProductPageUrlSync,\n IDimensionsApp,\n StringExtensions,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n format,\n getPayloadObject,\n getTelemetryAttributes,\n ITelemetryContent,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport React, { useState } from 'react';\n\nexport interface IProductComponentProps extends IComponentProps<{ product?: ProductSearchResult; productPrice?: ProductPrice }> {\n className?: string;\n imageSettings?: IImageSettings;\n savingsText?: string;\n freePriceText?: string;\n originalPriceText?: string;\n currentPriceText?: string;\n ratingAriaLabel?: string;\n ratingCountAriaLabel?: string;\n allowBack?: boolean;\n telemetryContent?: ITelemetryContent;\n quickViewButton?: React.ReactNode;\n productComparisonButton?: React.ReactNode;\n isEnabledProductDescription?: boolean;\n isPriceMinMaxEnabled?: boolean;\n priceResources?: IPriceComponentResources;\n inventoryLabel?: string;\n dimensionAvailabilities?: IProductsDimensionsAvailabilities[];\n swatchItemAriaLabel?: string;\n}\n\nexport interface IProductComponent extends IComponent {}\n\nconst PriceComponentActions = {};\n\n/**\n * Gets the product page url from the default swatch selected.\n * @param productData - Product card to be rendered.\n * @returns The default color swatch selected if any.\n */\nfunction getDefaultSwatchSelected(coreContext: ICoreContext, productData?: ProductSearchResult): AttributeSwatch | null {\n if (!productData || !productData.AttributeValues) {\n return null;\n }\n\n const siteContext = coreContext as ICoreContext;\n const dimensionToPreSelectInProductCard = siteContext.app.config.dimensionToPreSelectInProductCard;\n\n const attributeSwatches = productData.AttributeValues.find(\n attributeValue => attributeValue.KeyName?.toLocaleLowerCase() === dimensionToPreSelectInProductCard\n )?.Swatches;\n\n if (!ArrayExtensions.hasElements(attributeSwatches)) {\n return null;\n }\n\n const defaultSwatch = attributeSwatches.find(item => item.IsDefault === true) ?? attributeSwatches[0];\n return defaultSwatch;\n}\n\n/**\n * Gets the product image from the default swatch selected.\n * @param coreContext - Context of the module using the component.\n * @param productData - Product card to be rendered.\n * @returns The product card image url.\n */\nfunction getProductImageUrlFromDefaultSwatch(coreContext: ICoreContext, productData?: ProductSearchResult): string | undefined {\n const defaultSwatch = getDefaultSwatchSelected(coreContext, productData);\n const swatchProductImageUrls = defaultSwatch?.ProductImageUrls;\n if (!ArrayExtensions.hasElements(swatchProductImageUrls)) {\n return productData?.PrimaryImageUrl;\n }\n\n return generateImageUrl(swatchProductImageUrls[0], coreContext.request.apiSettings);\n}\n\n/**\n * Updates the product url link to product details page.\n * @param productDetailsPageUrl - Product page url.\n * @param coreContext - Context of the module using the component.\n * @param queryString - Querystring to be added to the URL.\n * @returns The update product page url.\n */\nfunction updateProductUrl(productDetailsPageUrl: string, coreContext: ICoreContext, queryString: string): string {\n const sourceUrl = new URL(productDetailsPageUrl, coreContext.request.apiSettings.baseUrl);\n if (sourceUrl.search) {\n sourceUrl.search += `&${queryString}`;\n } else {\n sourceUrl.search += queryString;\n }\n\n const updatedUrl = new URL(sourceUrl.href);\n return updatedUrl.pathname + sourceUrl.search;\n}\n\n/**\n * Gets the react node for product unit of measure display.\n * @param unitOfMeasure - DefaultUnitOfMeasure property from product.\n * @returns The node representing markup for unit of measure component.\n */\nfunction renderProductUnitOfMeasure(unitOfMeasure?: string): JSX.Element | null {\n if (!unitOfMeasure) {\n return null;\n }\n return (\n
\n {unitOfMeasure}\n
\n );\n}\n\n/**\n * Gets the react node for product availability.\n * @param inventoryAvailabilityLabel - The product information.\n * @returns The node representing markup for product availability.\n */\nfunction renderProductAvailability(inventoryAvailabilityLabel: string | undefined): JSX.Element | null {\n if (!inventoryAvailabilityLabel || inventoryAvailabilityLabel === '') {\n return null;\n }\n\n return (\n
\n {inventoryAvailabilityLabel}\n
\n );\n}\n\n/**\n * Renders product comparison button similar to the quick view button.\n * @param productComparisonButton - React element of the button.\n * @param product - Current product info.\n * @param catalogId - Current catalog.\n * @returns React element for the specific product.\n */\nfunction renderProductComparisonButton(\n productComparisonButton: React.ReactNode,\n product: ProductSearchResult,\n catalogId: number\n): JSX.Element | undefined {\n validateCatalogId(catalogId);\n return React.cloneElement(productComparisonButton as React.ReactElement, { product, catalogId });\n}\n\n/**\n * Gets the product page url from the default swatch selected.\n * @param coreContext - Context of the module using the component.\n * @param productUrl - Product page url for the product card.\n * @param productData - Product card to be rendered.\n * @returns The product card image url.\n */\nfunction getProductPageUrlFromDefaultSwatch(\n coreContext: ICoreContext,\n productUrl: string,\n productData?: ProductSearchResult\n): string | undefined {\n const defaultSwatch = getDefaultSwatchSelected(coreContext, productData);\n if (!defaultSwatch?.SwatchValue) {\n return productUrl;\n }\n\n const siteContext = coreContext as ICoreContext;\n const dimensionToPreSelectInProductCard = siteContext.app.config.dimensionToPreSelectInProductCard;\n\n const queryStringEncoded = encodeURIComponent(defaultSwatch.SwatchValue);\n const queryString = `${dimensionToPreSelectInProductCard}=${queryStringEncoded}`;\n return updateProductUrl(productUrl, coreContext, queryString);\n}\n\nconst ProductCard: React.FC = ({\n data,\n context,\n imageSettings,\n savingsText,\n freePriceText,\n originalPriceText,\n currentPriceText,\n ratingAriaLabel,\n ratingCountAriaLabel,\n allowBack,\n typeName,\n id,\n telemetryContent,\n quickViewButton,\n productComparisonButton,\n isEnabledProductDescription,\n isPriceMinMaxEnabled,\n priceResources,\n inventoryLabel,\n dimensionAvailabilities,\n swatchItemAriaLabel\n}) => {\n const product = data.product;\n const productPrice = data.productPrice;\n\n let productUrl = getProductPageUrlSync(product?.Name ?? '', product?.RecordId ?? Number.MIN_VALUE, context.actionContext, undefined);\n if (allowBack) {\n productUrl = updateProductUrl(productUrl, context, 'back=true');\n }\n const productImageUrlFromSwatch = getProductImageUrlFromDefaultSwatch(context, product) ?? product?.PrimaryImageUrl;\n const productPageUrlFromSwatch = getProductPageUrlFromDefaultSwatch(context, productUrl, product) ?? productUrl;\n const [productPageUrl, setProductPageUrl] = useState(productPageUrlFromSwatch);\n const [productImageUrl, setProductImageUrl] = useState(productImageUrlFromSwatch);\n React.useEffect(() => {\n setProductPageUrl(productPageUrlFromSwatch);\n setProductImageUrl(productImageUrlFromSwatch);\n }, [productUrl, productPageUrlFromSwatch, productImageUrlFromSwatch]);\n const [selectedSwatchItems] = useState(new Dictionary());\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access -- app context is generic\n const enableStockCheck = context.app.config.enableStockCheck;\n\n const siteContext = context as ICoreContext;\n const dimensionToPreSelectInProductCard = siteContext.app.config.dimensionToPreSelectInProductCard;\n\n /**\n * Updates the product page and Image url based on swatch selected.\n * @param coreContext - Context of the caller.\n * @param swatchItem - Dimension swatch selected.\n */\n const updatePageAndImageUrl = React.useCallback(\n (coreContext: ICoreContext, swatchItem: ISwatchItem) => {\n const dimensionType = swatchItem.dimensionType;\n selectedSwatchItems.setValue(dimensionType, swatchItem);\n if (StringExtensions.isNullOrWhitespace(swatchItem.value)) {\n return;\n }\n const queryString = `${dimensionType}=${swatchItem.value}`;\n let productPageUrlWithSwatch = '';\n if (productPageUrl.includes(dimensionType)) {\n const newUrl = new URL(productPageUrl, coreContext.request.apiSettings.baseUrl);\n newUrl.searchParams.delete(dimensionType);\n productPageUrlWithSwatch = updateProductUrl(newUrl.toString(), context, queryString);\n } else {\n productPageUrlWithSwatch = updateProductUrl(productPageUrl, context, queryString);\n }\n setProductPageUrl(productPageUrlWithSwatch);\n if (dimensionType === dimensionToPreSelectInProductCard) {\n const swatchProductImageUrl = ArrayExtensions.hasElements(swatchItem.productImageUrls)\n ? swatchItem.productImageUrls[0]\n : undefined;\n const newImageUrl = generateImageUrl(swatchProductImageUrl, coreContext.request.apiSettings);\n setProductImageUrl(newImageUrl);\n }\n },\n [selectedSwatchItems, context, productPageUrl]\n );\n\n if (!product) {\n return null;\n }\n\n /**\n * Checks if rendering the particular dimensions is allowed for product card.\n * @param dimensionType - Dimension to be displayed.\n * @returns Updates the state with new product page url.\n */\n function shouldDisplayDimension(dimensionType: string): boolean {\n const dimensionsContext = context as ICoreContext;\n const dimensionsToDisplayOnProductCard = dimensionsContext.app.config.dimensionsInProductCard;\n return (\n ArrayExtensions.hasElements(dimensionsToDisplayOnProductCard) &&\n !dimensionsToDisplayOnProductCard.includes(DimensionTypes.none) &&\n dimensionsToDisplayOnProductCard.includes(dimensionType.toLocaleLowerCase() as DimensionTypes)\n );\n }\n\n /**\n * Gets the react node for product dimension as swatch.\n * @param attributeValues - Attribute value property from product.\n * @returns The node representing markup for unit of measure component.\n */\n function renderProductDimensions(attributeValues?: AttributeValue[]): JSX.Element | null {\n if (!attributeValues) {\n return null;\n }\n\n return (\n
\n {attributeValues.map((item: AttributeValue) => {\n const dimensionTypeValue = item.KeyName?.toLocaleLowerCase() ?? '';\n if (!shouldDisplayDimension(dimensionTypeValue)) {\n return null;\n }\n\n const siteContext = context as ICoreContext;\n const dimensionToPreSelectInProductCard = siteContext.app.config.dimensionToPreSelectInProductCard;\n const dimensionType = dimensionTypeValue as DimensionTypes;\n const swatches =\n item.Swatches?.map(swatchItem => {\n return {\n itemId: `${item.RecordId ?? ''}-${dimensionTypeValue}-${swatchItem.SwatchValue ?? ''}`,\n value: swatchItem.SwatchValue ?? '',\n dimensionType,\n colorHexCode: swatchItem.SwatchColorHexCode,\n imageUrl: swatchItem.SwatchImageUrl,\n productImageUrls: swatchItem.ProductImageUrls,\n isDefault: swatchItem.IsDefault,\n swatchItemAriaLabel: swatchItemAriaLabel ? format(swatchItemAriaLabel, dimensionType) : '',\n isDisabled:\n enableStockCheck &&\n dimensionAvailabilities?.find(\n dimensionAvailability => dimensionAvailability.value === (swatchItem.SwatchValue ?? '')\n )?.isDisabled\n };\n }) ?? [];\n if (\n dimensionType === dimensionToPreSelectInProductCard &&\n ArrayExtensions.hasElements(swatches) &&\n !swatches.some(swatch => swatch.isDefault)\n ) {\n swatches[0].isDefault = true;\n }\n return (\n \n );\n })}\n
\n );\n }\n\n function renderQuickView(quickview: React.ReactNode, item?: number): JSX.Element | undefined {\n if (quickview === null) {\n return undefined;\n }\n const selectedDimensions: ProductDimension[] = selectedSwatchItems.getValues().map(swatches => {\n return {\n DimensionTypeValue: convertDimensionTypeToProductDimensionType(swatches.dimensionType),\n DimensionValue: {\n RecordId: 0,\n Value: swatches.value\n }\n };\n });\n return React.cloneElement(quickview as React.ReactElement, { selectedProductId: item, selectedDimensions });\n }\n\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', telemetryContent!, '', product.RecordId.toString());\n\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- -- Do not need type check for appsettings\n const isUnitOfMeasureEnabled = context.app.config && context.app.config.unitOfMeasureDisplayType === 'buyboxAndBrowse';\n\n return (\n <>\n {isEnabledProductDescription ? (\n \n
\n
\n {renderProductPlacementImage(\n imageSettings,\n context.request.gridSettings,\n productImageUrl,\n product.PrimaryImageUrl,\n product.Name,\n context\n )}\n
\n
\n

{product.Name}

\n {renderPrice(\n context,\n typeName,\n id,\n product,\n savingsText,\n freePriceText,\n originalPriceText,\n currentPriceText,\n isPriceMinMaxEnabled,\n priceResources,\n productPrice\n )}\n {isUnitOfMeasureEnabled && renderProductUnitOfMeasure(product.DefaultUnitOfMeasure)}\n {renderDescription(product.Description)}\n
\n
\n \n ) : (\n \n
\n {renderProductPlacementImage(\n imageSettings,\n context.request.gridSettings,\n productImageUrl,\n product.PrimaryImageUrl,\n product.Name,\n context\n )}\n
\n
\n

{product.Name}

\n {renderPrice(\n context,\n typeName,\n id,\n product,\n savingsText,\n freePriceText,\n originalPriceText,\n currentPriceText,\n isPriceMinMaxEnabled,\n priceResources,\n productPrice\n )}\n {isUnitOfMeasureEnabled && renderProductUnitOfMeasure(product.DefaultUnitOfMeasure)}\n
\n \n )}\n {renderProductDimensions(product.AttributeValues)}\n {!context.app.config.hideRating &&\n renderRating(context, typeName, id, product.AverageRating, product.TotalRatings, ratingAriaLabel, ratingCountAriaLabel)}\n {renderProductAvailability(inventoryLabel)}\n {quickViewButton && renderQuickView(quickViewButton, product.RecordId)}\n {productComparisonButton && renderProductComparisonButton(productComparisonButton, product, getCatalogId(context.request))}\n \n );\n};\n\nfunction renderLabel(\n name?: string,\n price?: string,\n rating?: number,\n ratingAriaLabelText?: string,\n reviewCount?: number,\n ratingCountAriaLabelText?: string\n): string {\n const reviewCountArialableText = getReviewAriaLabel(reviewCount, ratingCountAriaLabelText ?? '');\n return `${name ?? ''} ${price ?? ''} ${getRatingAriaLabel(rating, ratingAriaLabelText)}${\n reviewCountArialableText ? ` ${reviewCountArialableText}` : ''\n }`;\n}\n\nfunction renderDescription(description?: string): JSX.Element | null {\n return

{description}

;\n}\n\nfunction getRatingAriaLabel(rating?: number, ratingAriaLabel?: string): string {\n if (rating && ratingAriaLabel) {\n const roundedRating = rating.toFixed(2);\n return format(ratingAriaLabel || '', roundedRating, '5');\n }\n return '';\n}\n\nfunction getReviewAriaLabel(reviewCount?: number, ratingCountAriaLabelText?: string): string {\n if (reviewCount && ratingCountAriaLabelText) {\n return format(ratingCountAriaLabelText || '', reviewCount);\n }\n return '';\n}\n\nfunction renderRating(\n coreContext: ICoreContext,\n moduleTypeName: string,\n moduleId: string,\n avgRating?: number,\n totalRatings?: number,\n ariaLabel?: string,\n ratingCountAriaLabel?: string\n): JSX.Element | null {\n if (!avgRating) {\n return null;\n }\n\n const numberRatings = totalRatings?.toString() || undefined;\n const ratingAriaLabelText = getRatingAriaLabel(avgRating, ariaLabel);\n const ratingCountAriaLabelText = getReviewAriaLabel(Number(numberRatings), ratingCountAriaLabel);\n\n return (\n \n );\n}\n\nfunction renderPrice(\n context: ICoreContext,\n typeName: string,\n id: string,\n productSearchResult: ProductSearchResult,\n savingsText?: string,\n freePriceText?: string,\n originalPriceText?: string,\n currentPriceText?: string,\n isPriceMinMaxEnabled?: boolean,\n priceResources?: IPriceComponentResources,\n productPrice?: ProductPrice\n): JSX.Element | null {\n const product: SimpleProduct = {\n // This is a fake product. The product type is only used for price component to determine if it should show price range or not.\n ProductTypeValue: productSearchResult.IsMasterProduct ? ProductType.Master : ProductType.Standalone\n } as SimpleProduct;\n\n const price: ProductPrice = productPrice ?? {\n BasePrice: productSearchResult.BasePrice,\n AdjustedPrice: productSearchResult.Price,\n CustomerContextualPrice: productSearchResult.Price,\n MaxVariantPrice: productSearchResult.MaxVariantPrice ? productSearchResult.MaxVariantPrice : productSearchResult.Price,\n MinVariantPrice: productSearchResult.MinVariantPrice ? productSearchResult.MinVariantPrice : productSearchResult.Price\n };\n\n return (\n \n );\n}\n\nfunction renderProductPlacementImage(\n imageSettings?: IImageSettings,\n gridSettings?: IGridSettings,\n imageUrl?: string,\n fallbackImageUrl?: string,\n altText?: string,\n context?: ICoreContext>\n): JSX.Element | null {\n if (!imageUrl || !gridSettings || !imageSettings) {\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment -- Site level config can be of any type.\n const contextConfig = context?.app.config?.placeholderImageName;\n const emptyPlaceHolderImage = contextConfig as string;\n let fallbackImageSource = fallbackImageUrl;\n if (emptyPlaceHolderImage && fallbackImageUrl) {\n fallbackImageSource = `${fallbackImageUrl},${emptyPlaceHolderImage}`;\n }\n const img: IImageData = {\n src: imageUrl,\n altText: altText ? altText : '',\n fallBackSrc: fallbackImageSource\n };\n const imageProps = {\n gridSettings,\n imageSettings\n };\n imageProps.imageSettings.cropFocalRegion = true;\n return (\n \n );\n}\n\nexport const ProductComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride<\n IProductComponent\n>('Product', { component: ProductCard, ...PriceComponentActions });\n\nexport default ProductComponent;\n"],"names":["VariantType","getTelemetryAttributes","telemetryContent","payLoad","contentData","contentAction","recid","etext","telemetry","setTelemetryAttribute","TelemetryConstant","IncrementalQuantity","IncrementalQuantity_1","React","constructor","props","_props$currentCount$t","_props$currentCount","_this$props$min","eventType","super","inputRef","isMobileView","isMobileCheck","_context$device","variant","context","Browser","MsDyn365","isBrowser","window","innerWidth","gridSettings","xs","w","sm","md","lg","Viewport","device","Type","isMobile","xl","_validateMin","this","state","currentInput","setState","currentValue","parseFloat","isNaN","_minValue","toFixed","validValue","Math","min","max","isUpdating","currentCount","_onIncrement","bind","_onDecrement","_handleChange","contentCategory","pgname","pageName","mname","moduleName","etype","defaultProps","_props$applyDefaultOr","nextState","_objectSpread","disabled","updatedValue","_props$currentCount2","applyDefaultOrderSettings","render","_this$props$inputQuan","_this$props$inputQuan2","currentValue1","glyphMinusClassName","decrementGlyphClass","glyphPlusClassName","incrementGlyphClass","decrementDisabled","isGiftCard","incrementDisabled","DecrementQuantity","decrementAttributes","IncrementQuantity","incrementAttributes","ariaLablelText","inputQuantityAriaLabel","extraClassDecrement","extraClassIncrement","className","id","Object","assign","title","decrementButtonAriaLabel","onClick","color","type","value","onChange","onBlur","role","ref","incrementButtonAriaLabel","invokeCallback","currQuantity","updatedQuantity","e","target","test","formattedValue","replace","_debounce","inputElement","current","HTMLInputElement","setAttribute","__decorate","observer","_ref","_product$Name","product","index","layout","productUrl","getProductPageUrlSync","Name","RecordId","actionContext","undefined","popoverOpen","setPopoverOpen","useState","zIndex","togglePopover","isVisible","onMouseEnter","onMouseLeave","style","position","location","href","src","PrimaryImageUrl","alt","Popover","placement","isOpen","toggle","PopoverHeader","PopoverBody","getDefaultSwatchSelected","coreContext","productData","_productData$Attribut","_attributeSwatches$fi","AttributeValues","dimensionToPreSelectInProductCard","app","config","attributeSwatches","find","attributeValue","_attributeValue$KeyNa","KeyName","toLocaleLowerCase","Swatches","ArrayExtensions","hasElements","item","IsDefault","updateProductUrl","productDetailsPageUrl","queryString","sourceUrl","URL","request","apiSettings","baseUrl","search","pathname","renderProductUnitOfMeasure","unitOfMeasure","renderLabel","name","price","rating","ratingAriaLabelText","reviewCount","ratingCountAriaLabelText","reviewCountArialableText","getReviewAriaLabel","getRatingAriaLabel","ratingAriaLabel","roundedRating","format","renderPrice","typeName","productSearchResult","savingsText","freePriceText","originalPriceText","currentPriceText","isPriceMinMaxEnabled","priceResources","productPrice","ProductTypeValue","IsMasterProduct","ProductType","Master","Standalone","BasePrice","AdjustedPrice","Price","CustomerContextualPrice","MaxVariantPrice","MinVariantPrice","PriceComponent","data","renderProductPlacementImage","imageSettings","imageUrl","fallbackImageUrl","altText","_context$app$config","contextConfig","placeholderImageName","fallbackImageSource","img","fallBackSrc","imageProps","cropFocalRegion","Image","requestContext","loadFailureBehavior","bypassHideOnFailure","ProductComponent","msdyn365Commerce","createComponentOverride","component","_product$RecordId","_getProductImageUrlFr","_getProductPageUrlFro","ratingCountAriaLabel","allowBack","quickViewButton","productComparisonButton","isEnabledProductDescription","inventoryLabel","dimensionAvailabilities","swatchItemAriaLabel","Number","MIN_VALUE","productImageUrlFromSwatch","defaultSwatch","swatchProductImageUrls","ProductImageUrls","generateImageUrl","getProductImageUrlFromDefaultSwatch","productPageUrlFromSwatch","SwatchValue","encodeURIComponent","getProductPageUrlFromDefaultSwatch","productPageUrl","setProductPageUrl","productImageUrl","setProductImageUrl","selectedSwatchItems","Dictionary","enableStockCheck","updatePageAndImageUrl","swatchItem","dimensionType","setValue","StringExtensions","isNullOrWhitespace","productPageUrlWithSwatch","includes","newUrl","searchParams","delete","toString","swatchProductImageUrl","productImageUrls","newImageUrl","getPayloadObject","attribute","isUnitOfMeasureEnabled","unitOfMeasureDisplayType","onTelemetryClick","cultureFormatter","formatCurrency","AverageRating","TotalRatings","DefaultUnitOfMeasure","description","Description","attributeValues","map","_item$KeyName$toLocal","_item$KeyName","_item$Swatches$map","_item$Swatches","dimensionTypeValue","dimensionsToDisplayOnProductCard","dimensionsInProductCard","DimensionTypes","none","shouldDisplayDimension","swatches","_item$RecordId","_swatchItem$SwatchVal","_swatchItem$SwatchVal2","_dimensionAvailabilit","itemId","colorHexCode","SwatchColorHexCode","SwatchImageUrl","isDefault","isDisabled","dimensionAvailability","_swatchItem$SwatchVal3","some","swatch","ProductComponentSwatchComponent","onSelectDimension","key","hideRating","moduleTypeName","moduleId","avgRating","totalRatings","ariaLabel","numberRatings","RatingComponent","ratingCount","readOnly","renderRating","inventoryAvailabilityLabel","quickview","selectedDimensions","getValues","DimensionTypeValue","convertDimensionTypeToProductDimensionType","DimensionValue","Value","selectedProductId","renderQuickView","catalogId","validateCatalogId","renderProductComparisonButton","getCatalogId"],"sourceRoot":""}