{"version":3,"file":"static/js/cf84acbb4c7a4914589d.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/css-custom/views/components/product.component.tsx?5f6c"],"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 { IProductsDimensionsAvailabilities } from '@msdyn365-commerce/commerce-entities';\r\nimport {\r\n IPriceComponentResources,\r\n ISwatchItem,\r\n ProductComponentSwatchComponent,\r\n //RatingComponent,\r\n AddToCartComponent\r\n} from '@msdyn365-commerce/components';\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport {\r\n // getCatalogId,\r\n IAny,\r\n IComponent,\r\n IComponentProps,\r\n ICoreContext,\r\n IGeneric,\r\n IGridSettings,\r\n IImageData,\r\n IImageSettings,\r\n Image,\r\n msdyn365Commerce\r\n} from '@msdyn365-commerce/core';\r\nimport {\r\n AttributeSwatch,\r\n AttributeValue,\r\n CommerceProperty,\r\n ProductDimension,\r\n ProductSearchResult,\r\n SimpleProduct\r\n} from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n ArrayExtensions,\r\n convertDimensionTypeToProductDimensionType,\r\n getDimensionsForSelectedVariant,\r\n GetDimensionsForSelectedVariantInput,\r\n getProductAvailabilitiesForSelectedVariant,\r\n ProductAvailabilitiesForSelectedVariantInput,\r\n IProductInventoryInformation,\r\n getSelectedVariant,\r\n SelectedVariantInput,\r\n IDimensionForSelectedVariant,\r\n Dictionary,\r\n DimensionTypes,\r\n generateImageUrl,\r\n getProductPageUrlSync,\r\n IDimensionsApp,\r\n StringExtensions\r\n //validateCatalogId\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n format,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n ITelemetryContent,\r\n Node\r\n //onTelemetryClick\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport React, { useState } from 'react';\r\n\r\nexport interface IProductComponentProps extends IComponentProps<{ product?: ProductSearchResult }> {\r\n className?: string;\r\n imageSettings?: IImageSettings;\r\n savingsText?: string;\r\n freePriceText?: string;\r\n originalPriceText?: string;\r\n currentPriceText?: string;\r\n ratingAriaLabel?: string;\r\n ratingCountAriaLabel?: string;\r\n allowBack?: boolean;\r\n telemetryContent?: ITelemetryContent;\r\n quickViewButton?: React.ReactNode;\r\n productComparisonButton?: React.ReactNode;\r\n isEnabledProductDescription?: boolean;\r\n isPriceMinMaxEnabled?: boolean;\r\n priceResources?: IPriceComponentResources;\r\n inventoryLabel?: string;\r\n dimensionAvailabilities?: IProductsDimensionsAvailabilities[];\r\n swatchItemAriaLabel?: string;\r\n}\r\n\r\nexport interface IListAddToCartViewProps {\r\n ContainerProps: INodeProps;\r\n button?: React.ReactNode;\r\n}\r\n\r\nexport interface ProductConversionMatrix {\r\n PRODUCT: number;\r\n FACTOR: number;\r\n FromUnit: string;\r\n ToUnit: string;\r\n}\r\n\r\nexport interface IProductComponent extends IComponent {}\r\n\r\nconst PriceComponentActions = {};\r\n\r\n/**\r\n * Gets the product page url from the default swatch selected.\r\n * @param productData - Product card to be rendered.\r\n * @returns The default color swatch selected if any.\r\n */\r\nfunction getDefaultSwatchSelected(coreContext: ICoreContext, productData?: ProductSearchResult): AttributeSwatch | null {\r\n if (!productData || !productData.AttributeValues) {\r\n return null;\r\n }\r\n\r\n const siteContext = coreContext as ICoreContext;\r\n const dimensionToPreSelectInProductCard = siteContext.app.config.dimensionToPreSelectInProductCard;\r\n\r\n const attributeSwatches = productData.AttributeValues.find(\r\n attributeValue => attributeValue.KeyName?.toLocaleLowerCase() === dimensionToPreSelectInProductCard\r\n )?.Swatches;\r\n\r\n if (!ArrayExtensions.hasElements(attributeSwatches)) {\r\n return null;\r\n }\r\n\r\n const defaultSwatch = attributeSwatches.find(item => item.IsDefault === true) ?? attributeSwatches[0];\r\n return defaultSwatch;\r\n}\r\n\r\n/**\r\n * Gets the product image from the default swatch selected.\r\n * @param coreContext - Context of the module using the component.\r\n * @param productData - Product card to be rendered.\r\n * @returns The product card image url.\r\n */\r\nfunction getProductImageUrlFromDefaultSwatch(coreContext: ICoreContext, productData?: ProductSearchResult): string | undefined {\r\n const defaultSwatch = getDefaultSwatchSelected(coreContext, productData);\r\n const swatchProductImageUrls = defaultSwatch?.ProductImageUrls;\r\n if (!ArrayExtensions.hasElements(swatchProductImageUrls)) {\r\n return productData?.PrimaryImageUrl;\r\n }\r\n\r\n return generateImageUrl(swatchProductImageUrls[0], coreContext.request.apiSettings);\r\n}\r\n\r\n/**\r\n * Updates the product url link to product details page.\r\n * @param productDetailsPageUrl - Product page url.\r\n * @param coreContext - Context of the module using the component.\r\n * @param queryString - Querystring to be added to the URL.\r\n * @returns The update product page url.\r\n */\r\nfunction updateProductUrl(productDetailsPageUrl: string, coreContext: ICoreContext, queryString: string): string {\r\n const sourceUrl = new URL(productDetailsPageUrl, coreContext.request.apiSettings.baseUrl);\r\n if (sourceUrl.search) {\r\n sourceUrl.search += `&${queryString}`;\r\n } else {\r\n sourceUrl.search += queryString;\r\n }\r\n\r\n const updatedUrl = new URL(sourceUrl.href);\r\n return updatedUrl.pathname + sourceUrl.search;\r\n}\r\n\r\n/**\r\n * Gets the react node for product unit of measure display.\r\n * @param unitOfMeasure - DefaultUnitOfMeasure property from product.\r\n * @returns The node representing markup for unit of measure component.\r\n */\r\n// function renderProductUnitOfMeasure(unitOfMeasure?: string): JSX.Element | null {\r\n// if (!unitOfMeasure) {\r\n// return null;\r\n// }\r\n// return (\r\n//
\r\n// {unitOfMeasure}\r\n//
\r\n// );\r\n// }\r\n\r\n/**\r\n * Gets the react node for product availability.\r\n * @param inventoryAvailabilityLabel - The product information.\r\n * @returns The node representing markup for product availability.\r\n */\r\n// function renderProductAvailability(inventoryAvailabilityLabel: string | undefined): JSX.Element | null {\r\n// if (!inventoryAvailabilityLabel || inventoryAvailabilityLabel === '') {\r\n// return null;\r\n// }\r\n\r\n// return (\r\n//
\r\n// {inventoryAvailabilityLabel}\r\n//
\r\n// );\r\n// }\r\n\r\n/**\r\n * Renders product comparison button similar to the quick view button.\r\n * @param productComparisonButton - React element of the button.\r\n * @param product - Current product info.\r\n * @param catalogId - Current catalog.\r\n * @returns React element for the specific product.\r\n */\r\n// function renderProductComparisonButton(\r\n// productComparisonButton: React.ReactNode,\r\n// product: ProductSearchResult,\r\n// catalogId: number\r\n// ): JSX.Element | undefined {\r\n// validateCatalogId(catalogId);\r\n// return React.cloneElement(productComparisonButton as React.ReactElement, { product, catalogId });\r\n// }\r\n\r\n/**\r\n * Gets the product page url from the default swatch selected.\r\n * @param coreContext - Context of the module using the component.\r\n * @param productUrl - Product page url for the product card.\r\n * @param productData - Product card to be rendered.\r\n * @returns The product card image url.\r\n */\r\nfunction getProductPageUrlFromDefaultSwatch(\r\n coreContext: ICoreContext,\r\n productUrl: string,\r\n productData?: ProductSearchResult\r\n): string | undefined {\r\n const defaultSwatch = getDefaultSwatchSelected(coreContext, productData);\r\n if (!defaultSwatch?.SwatchValue) {\r\n return productUrl;\r\n }\r\n\r\n const siteContext = coreContext as ICoreContext;\r\n const dimensionToPreSelectInProductCard = siteContext.app.config.dimensionToPreSelectInProductCard;\r\n\r\n const queryStringEncoded = encodeURIComponent(defaultSwatch.SwatchValue);\r\n const queryString = `${dimensionToPreSelectInProductCard}=${queryStringEncoded}`;\r\n return updateProductUrl(productUrl, coreContext, queryString);\r\n}\r\n\r\nconst ProductCard: React.FC = ({\r\n data,\r\n context,\r\n imageSettings,\r\n savingsText,\r\n freePriceText,\r\n originalPriceText,\r\n currentPriceText,\r\n ratingAriaLabel,\r\n ratingCountAriaLabel,\r\n allowBack,\r\n typeName,\r\n id,\r\n telemetryContent,\r\n quickViewButton,\r\n productComparisonButton,\r\n isPriceMinMaxEnabled,\r\n priceResources,\r\n inventoryLabel,\r\n dimensionAvailabilities,\r\n swatchItemAriaLabel\r\n}) => {\r\n const product = data.product;\r\n const [quantity, setQuantity] = useState(0);\r\n const [maxQuantity, setMaxQuantity] = useState(0);\r\n let productUrl = getProductPageUrlSync(product?.Name ?? '', product?.RecordId ?? Number.MIN_VALUE, context.actionContext, undefined);\r\n if (allowBack) {\r\n productUrl = updateProductUrl(productUrl, context, 'back=true');\r\n }\r\n const productImageUrlFromSwatch = getProductImageUrlFromDefaultSwatch(context, product) ?? product?.PrimaryImageUrl;\r\n const productPageUrlFromSwatch = getProductPageUrlFromDefaultSwatch(context, productUrl, product) ?? productUrl;\r\n const [productPageUrl, setProductPageUrl] = useState(productPageUrlFromSwatch);\r\n const [productImageUrl, setProductImageUrl] = useState(productImageUrlFromSwatch);\r\n React.useEffect(() => {\r\n setProductPageUrl(productPageUrlFromSwatch);\r\n setProductImageUrl(productImageUrlFromSwatch);\r\n }, [productUrl, productPageUrlFromSwatch, productImageUrlFromSwatch]);\r\n const [selectedSwatchItems] = useState(new Dictionary());\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access -- app context is generic\r\n const enableStockCheck = context.app.config.enableStockCheck;\r\n const siteContext = context as ICoreContext;\r\n const dimensionToPreSelectInProductCard = siteContext.app.config.dimensionToPreSelectInProductCard;\r\n const [availableDimensions, setAvailableDimensions] = useState([]);\r\n const [dimensionValues, setDimensionValues] = useState([]);\r\n const [prodDimensions, setProdDimensions] = useState([]);\r\n const [defaultDimensions, setDefaultDimensions] = useState([]);\r\n const [productVariant, setProductVariant] = useState(0);\r\n const [cartProduct, setCartProduct] = useState();\r\n const [productAvailableQuantity, setProductAvailableQuantity] = useState();\r\n //get available dimensions for product\r\n\r\n React.useEffect(() => {\r\n if (data.product && data.product.AttributeValues) {\r\n let dimensions: string[] = [];\r\n data.product.AttributeValues.forEach(item => {\r\n const dimensionTypeValue = item.KeyName?.toLocaleLowerCase() ?? '';\r\n if (shouldDisplayDimension(dimensionTypeValue)) {\r\n dimensions.push(item.KeyName!);\r\n }\r\n });\r\n setAvailableDimensions(dimensions);\r\n }\r\n }, [data.product!.AttributeValues]);\r\n\r\n React.useEffect(() => {\r\n async function getSelectedVariantbyDimensions() {\r\n let variant = await getSelectedVariant(\r\n new SelectedVariantInput(\r\n data.product!.MasterProductId ? data.product?.MasterProductId! : data.product!.RecordId!,\r\n context.request.apiSettings.channelId,\r\n dimensionValues,\r\n undefined,\r\n context.request\r\n ),\r\n context.actionContext\r\n );\r\n\r\n if (variant?.RecordId != data.product?.MasterProductId) {\r\n const newAvailableQuantity = await getProductAvailabilitiesForSelectedVariant(\r\n new ProductAvailabilitiesForSelectedVariantInput(variant?.RecordId!, context.request.apiSettings.channelId),\r\n context.actionContext\r\n );\r\n\r\n if (newAvailableQuantity && newAvailableQuantity.length > 0) {\r\n setProductAvailableQuantity(newAvailableQuantity[0]);\r\n setMaxQuantity(newAvailableQuantity[0].ProductAvailableQuantity.AvailableQuantity || 0);\r\n } else {\r\n setProductAvailableQuantity(undefined);\r\n }\r\n setProductVariant(variant?.RecordId!);\r\n setCartProduct({\r\n RecordId: variant?.RecordId!,\r\n ItemId: data.product?.ItemId,\r\n Name: data.product?.Name,\r\n Description: data.product?.Description,\r\n ProductTypeValue: data.product?.RecordId!,\r\n DefaultUnitOfMeasure: data.product?.DefaultUnitOfMeasure,\r\n BasePrice: data.product?.BasePrice!,\r\n Price: data.product?.Price!,\r\n AdjustedPrice: data.product?.Price!,\r\n MasterProductId: data.product?.MasterProductId,\r\n PrimaryImageUrl: data.product?.PrimaryImageUrl,\r\n ExtensionProperties: variant?.ExtensionProperties\r\n });\r\n } else {\r\n setProductVariant(0);\r\n setCartProduct(undefined);\r\n }\r\n }\r\n setQuantity(0);\r\n if (availableDimensions.length > 0 && availableDimensions.length == dimensionValues.length) {\r\n getSelectedVariantbyDimensions();\r\n } else {\r\n setProductVariant(0);\r\n setCartProduct(undefined);\r\n }\r\n }, [dimensionValues]);\r\n\r\n React.useEffect(() => {\r\n async function getDefaultDimensionsForVariant() {\r\n let prodDimensions = await getDimensionsForSelectedVariant(\r\n new GetDimensionsForSelectedVariantInput(\r\n data.product?.MasterProductId ?? 0,\r\n context.request.apiSettings.channelId,\r\n [],\r\n context.request\r\n ),\r\n context.actionContext\r\n );\r\n prodDimensions = prodDimensions.sort((a, b) => {\r\n return b.DimensionTypeValue - a.DimensionTypeValue;\r\n });\r\n setDefaultDimensions(prodDimensions);\r\n }\r\n\r\n getDefaultDimensionsForVariant();\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n async function getProductDimensionsForVariant() {\r\n const mappedDimensions: ProductDimension[] = [];\r\n defaultDimensions.forEach(dimension => {\r\n var selectedDimension = dimensionValues.find(dv => dv.DimensionTypeValue == dimension.DimensionTypeValue);\r\n if (selectedDimension) {\r\n dimension.DimensionValues?.forEach(ddv => {\r\n if (ddv.RecordId === selectedDimension?.DimensionValue?.RecordId) {\r\n mappedDimensions.push({\r\n DimensionTypeValue: dimension.DimensionTypeValue,\r\n DimensionValue: ddv,\r\n ExtensionProperties: dimension.ExtensionProperties\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n const prodDimensions = await getDimensionsForSelectedVariant(\r\n new GetDimensionsForSelectedVariantInput(\r\n data.product?.MasterProductId ?? 0,\r\n context.request.apiSettings.channelId,\r\n mappedDimensions,\r\n context.request\r\n ),\r\n context.actionContext\r\n );\r\n setProdDimensions(prodDimensions);\r\n }\r\n\r\n // You need to restrict it at some point\r\n // This is just dummy code and should be replaced by actual\r\n if (dimensionValues.length > 0) {\r\n getProductDimensionsForVariant();\r\n }\r\n }, [dimensionValues]);\r\n\r\n /**\r\n * Updates the product page and Image url based on swatch selected.\r\n * @param coreContext - Context of the caller.\r\n * @param swatchItem - Dimension swatch selected\r\n */\r\n const updatePageAndImageUrl = React.useCallback(\r\n (coreContext: ICoreContext, swatchItem: ISwatchItem) => {\r\n const dimensionType = swatchItem.dimensionType;\r\n selectedSwatchItems.setValue(dimensionType, swatchItem);\r\n if (StringExtensions.isNullOrWhitespace(swatchItem.value)) {\r\n return;\r\n }\r\n const queryString = `${dimensionType}=${swatchItem.value}`;\r\n let productPageUrlWithSwatch = '';\r\n if (productPageUrl.includes(dimensionType)) {\r\n const newUrl = new URL(productPageUrl, coreContext.request.apiSettings.baseUrl);\r\n newUrl.searchParams.delete(dimensionType);\r\n productPageUrlWithSwatch = updateProductUrl(newUrl.toString(), context, queryString);\r\n } else {\r\n productPageUrlWithSwatch = updateProductUrl(productPageUrl, context, queryString);\r\n }\r\n setProductPageUrl(productPageUrlWithSwatch);\r\n if (dimensionType === dimensionToPreSelectInProductCard) {\r\n const swatchProductImageUrl = ArrayExtensions.hasElements(swatchItem.productImageUrls)\r\n ? swatchItem.productImageUrls[0]\r\n : undefined;\r\n const newImageUrl = generateImageUrl(swatchProductImageUrl, coreContext.request.apiSettings);\r\n setProductImageUrl(newImageUrl);\r\n }\r\n },\r\n [selectedSwatchItems, context, productPageUrl]\r\n );\r\n\r\n if (!product) {\r\n return null;\r\n }\r\n\r\n /**\r\n * Checks if rendering the particular dimensions is allowed for product card.\r\n * @param dimensionType - Dimension to be displayed.\r\n * @returns Updates the state with new product page url.\r\n */\r\n function shouldDisplayDimension(dimensionType: string): boolean {\r\n const dimensionsContext = context as ICoreContext;\r\n const dimensionsToDisplayOnProductCard = dimensionsContext.app.config.dimensionsInProductCard;\r\n return (\r\n ArrayExtensions.hasElements(dimensionsToDisplayOnProductCard) &&\r\n !dimensionsToDisplayOnProductCard.includes(DimensionTypes.none) &&\r\n dimensionsToDisplayOnProductCard.includes(dimensionType.toLocaleLowerCase() as DimensionTypes)\r\n );\r\n }\r\n\r\n const handleDimensionChange = (\r\n dataTypeValue: number | undefined,\r\n selectedValue: string,\r\n recordId: number,\r\n ExtensionProperties: CommerceProperty[] | undefined\r\n ) => {\r\n const selectedDimensionValues = defaultDimensions.find(x => {\r\n return x.DimensionTypeValue === dataTypeValue;\r\n });\r\n selectedValue = selectedDimensionValues?.DimensionValues!.find(x => {\r\n return x.RecordId === recordId;\r\n })?.Value!;\r\n setDimensionValues(previousValue => {\r\n if (selectedValue == '0' && previousValue.some(obj => obj.DimensionTypeValue === dataTypeValue)) {\r\n var recordIndex = previousValue.findIndex(item => item.DimensionTypeValue == dataTypeValue);\r\n previousValue.splice(recordIndex, 1);\r\n return previousValue;\r\n }\r\n const updatedValue = previousValue.map(obj => {\r\n if (obj.DimensionTypeValue == dataTypeValue) {\r\n return {\r\n ...obj,\r\n DimensionValue: {\r\n Value: selectedValue,\r\n RecordId: recordId\r\n }\r\n };\r\n }\r\n return obj;\r\n });\r\n\r\n if (!previousValue.some(obj => obj.DimensionTypeValue === dataTypeValue)) {\r\n updatedValue.push({\r\n DimensionTypeValue: dataTypeValue ?? 0,\r\n DimensionValue: {\r\n Value: selectedValue,\r\n RecordId: recordId\r\n },\r\n ExtensionProperties: ExtensionProperties\r\n });\r\n }\r\n\r\n return updatedValue;\r\n });\r\n };\r\n\r\n function renderDimensions() {\r\n //let dimensionIndex = 0;\r\n return (\r\n
\r\n {defaultDimensions.map(dimension => {\r\n if (prodDimensions) {\r\n prodDimensions.forEach(pd => {\r\n if (pd.DimensionTypeValue == dimension.DimensionTypeValue) {\r\n dimension = pd;\r\n }\r\n });\r\n }\r\n const dimensionTypeValue = dimension.DimensionTypeValue == 1 ? 'length' : 'width';\r\n let sortedList = dimension.dimensionValuesWithInventory!.sort((a, b) => {\r\n return parseFloat(a.DimensionValue?.Value!) - parseFloat(b.DimensionValue?.Value!);\r\n });\r\n return (\r\n <>\r\n \r\n handleDimensionChange(\r\n dimension.DimensionTypeValue,\r\n e.target.selectedOptions[0].text,\r\n Number(e.target.value),\r\n dimension.ExtensionProperties\r\n )\r\n }\r\n >\r\n \r\n {sortedList.map(dv => {\r\n if (dimensionValues) {\r\n let selectedDimension = dimensionValues.find(\r\n d => d.DimensionTypeValue == dimension.DimensionTypeValue\r\n );\r\n if (selectedDimension?.DimensionValue?.RecordId == dv.DimensionValue!.RecordId) {\r\n return (\r\n \r\n );\r\n }\r\n }\r\n\r\n return dv.PhysicalAvailableInventoryLevelLabel == 'Available' ? (\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 * Gets the react node for product dimension as swatch.\r\n * @param attributeValues - Attribute value property from product.\r\n * @returns The node representing markup for unit of measure component.\r\n */\r\n function renderProductDimensions(attributeValues?: AttributeValue[]): JSX.Element | null {\r\n if (!attributeValues) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {attributeValues.map((item: AttributeValue) => {\r\n const dimensionTypeValue = item.KeyName?.toLocaleLowerCase() ?? '';\r\n if (!shouldDisplayDimension(dimensionTypeValue)) {\r\n return null;\r\n }\r\n const siteContext = context as ICoreContext;\r\n const dimensionToPreSelectInProductCard = siteContext.app.config.dimensionToPreSelectInProductCard;\r\n const dimensionType = dimensionTypeValue as DimensionTypes;\r\n\r\n const swatches =\r\n item.Swatches?.map(swatchItem => {\r\n return {\r\n itemId: `${item.RecordId ?? ''}-${dimensionTypeValue}-${swatchItem.SwatchValue ?? ''}`,\r\n value: swatchItem.SwatchValue ?? '',\r\n dimensionType,\r\n colorHexCode: swatchItem.SwatchColorHexCode,\r\n imageUrl: swatchItem.SwatchImageUrl,\r\n productImageUrls: swatchItem.ProductImageUrls,\r\n isDefault: swatchItem.IsDefault,\r\n swatchItemAriaLabel: swatchItemAriaLabel ? format(swatchItemAriaLabel, dimensionType) : '',\r\n isDisabled:\r\n enableStockCheck &&\r\n dimensionAvailabilities?.find(\r\n dimensionAvailability => dimensionAvailability.value === (swatchItem.SwatchValue ?? '')\r\n )?.isDisabled\r\n };\r\n }) ?? [];\r\n if (\r\n dimensionType === dimensionToPreSelectInProductCard &&\r\n ArrayExtensions.hasElements(swatches) &&\r\n !swatches.some(swatch => swatch.isDefault)\r\n ) {\r\n swatches[0].isDefault = true;\r\n }\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n );\r\n }\r\n\r\n function renderQuickView(quickview: React.ReactNode, item?: number): JSX.Element | undefined {\r\n if (quickview === null) {\r\n return undefined;\r\n }\r\n const selectedDimensions: ProductDimension[] = selectedSwatchItems.getValues().map(swatches => {\r\n return {\r\n DimensionTypeValue: convertDimensionTypeToProductDimensionType(swatches.dimensionType),\r\n DimensionValue: {\r\n RecordId: 0,\r\n Value: swatches.value\r\n }\r\n };\r\n });\r\n return React.cloneElement(quickview as React.ReactElement, { selectedProductId: item, selectedDimensions });\r\n }\r\n\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', telemetryContent!, '', product.RecordId.toString());\r\n\r\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- -- Do not need type check for appsettings\r\n //const isUnitOfMeasureEnabled = context.app.config && context.app.config.unitOfMeasureDisplayType === 'buyboxAndBrowse';\r\n\r\n function renderQuantity(\r\n arg0: number\r\n ):\r\n | string\r\n | number\r\n | boolean\r\n | {}\r\n | React.ReactElement>\r\n | React.ReactNodeArray\r\n | React.ReactPortal\r\n | null\r\n | undefined {\r\n const qtyIncrement = () => {\r\n if (quantity < maxQuantity) {\r\n setQuantity(prevCount => prevCount + 1);\r\n }\r\n };\r\n const qtyDecrement = () => {\r\n if (quantity >= 1) {\r\n setQuantity(prevCount => prevCount - 1);\r\n }\r\n };\r\n\r\n const checkQuantity = (qtyText: string) => {\r\n let qtyValue = parseInt(qtyText);\r\n if (qtyValue > maxQuantity) {\r\n setQuantity(maxQuantity);\r\n } else {\r\n setQuantity(qtyValue);\r\n }\r\n };\r\n return (\r\n \r\n \r\n\r\n checkQuantity(e.target.value)}\r\n disabled={!!!productAvailableQuantity}\r\n value={quantity > 0 ? quantity.toString() : ''}\r\n />\r\n \r\n \r\n );\r\n }\r\n\r\n // function truncateStr(text: string, lenthTobeShown: number): string {\r\n // if (text.length < lenthTobeShown) {\r\n // return text;\r\n // } else {\r\n // return text.substring(0, lenthTobeShown) + '...';\r\n // }\r\n // }\r\n\r\n function getProductWeight(product: SimpleProduct | undefined, gridProduct: ProductSearchResult): string {\r\n let weightUom: string = '';\r\n if (gridProduct) {\r\n if (gridProduct.ExtensionProperties) {\r\n var extension = gridProduct.ExtensionProperties.find(ext => {\r\n return ext.Key === 'CSSCOMMERCEWEIGHTUOM';\r\n });\r\n if (extension && extension?.Value?.StringValue !== '') {\r\n weightUom = extension?.Value?.StringValue || '';\r\n }\r\n }\r\n }\r\n weightUom = weightUom ? weightUom : 'lb';\r\n let conversionValues: ProductConversionMatrix[] = [];\r\n if (product) {\r\n if (product.ExtensionProperties) {\r\n var extension = product.ExtensionProperties.find(ext => {\r\n return ext.Key === 'CONVERSIONMATRIX';\r\n });\r\n if (extension && extension?.Value?.StringValue !== '') {\r\n conversionValues = JSON.parse(extension?.Value?.StringValue || '');\r\n }\r\n }\r\n }\r\n if (conversionValues.length > 0) {\r\n var productUnit = gridProduct.DefaultUnitOfMeasure;\r\n var conversionValue = conversionValues.find(cv => {\r\n return cv.FromUnit === productUnit && cv.ToUnit === weightUom;\r\n });\r\n if (conversionValue) {\r\n var weightValue = quantity > 1 ? quantity * conversionValue.FACTOR : conversionValue.FACTOR;\r\n return weightValue.toFixed(2).toString();\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n function getProductLFSF(product: SimpleProduct | undefined, gridProduct: ProductSearchResult): string {\r\n let lfUom: string = '';\r\n let sfUom: string = '';\r\n if (gridProduct) {\r\n if (gridProduct.ExtensionProperties) {\r\n var extension = gridProduct.ExtensionProperties.find(ext => {\r\n return ext.Key === 'CSSCOMMERCELFUOM';\r\n });\r\n if (extension && extension?.Value?.StringValue !== '') {\r\n lfUom = extension?.Value?.StringValue || '';\r\n }\r\n\r\n var extension2 = gridProduct.ExtensionProperties.find(ext => {\r\n return ext.Key === 'CSSCOMMERCESFUOM';\r\n });\r\n if (extension2 && extension2?.Value?.StringValue !== '') {\r\n sfUom = extension2?.Value?.StringValue || '';\r\n }\r\n }\r\n }\r\n let lengthUom = lfUom || sfUom;\r\n if (lengthUom === '') {\r\n lfUom = lfUom || 'ft';\r\n sfUom = sfUom || 'sqft';\r\n lengthUom = lfUom || sfUom;\r\n }\r\n let conversionValues: ProductConversionMatrix[] = [];\r\n if (product) {\r\n if (product.ExtensionProperties) {\r\n var extension = product.ExtensionProperties.find(ext => {\r\n return ext.Key === 'CONVERSIONMATRIX';\r\n });\r\n if (extension && extension?.Value?.StringValue !== '') {\r\n conversionValues = JSON.parse(extension?.Value?.StringValue || '');\r\n }\r\n }\r\n }\r\n if (conversionValues.length > 0) {\r\n var productUnit = gridProduct.DefaultUnitOfMeasure;\r\n var conversionValue = conversionValues.find(cv => {\r\n if (cv.FromUnit === productUnit && lengthUom == 'sqft' && cv.ToUnit === 'sqin') {\r\n return true;\r\n }\r\n return cv.FromUnit === productUnit && cv.ToUnit === lengthUom;\r\n });\r\n if (conversionValue) {\r\n var weightValue = quantity > 1 ? quantity * conversionValue.FACTOR : conversionValue.FACTOR;\r\n if (conversionValue.ToUnit === 'sqin') {\r\n weightValue = weightValue * 0.00694444; //1 sqin = 0.00694444 sqft\r\n }\r\n return weightValue.toFixed(2).toString();\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n return (\r\n <>\r\n \r\n
\r\n {renderProductPlacementImage(\r\n imageSettings,\r\n context.request.gridSettings,\r\n productImageUrl,\r\n product.PrimaryImageUrl,\r\n product.Name,\r\n context\r\n )}\r\n
\r\n\r\n
\r\n {productVariant && (\r\n \r\n Variant:{productVariant} , Product:{product.MasterProductId}\r\n \r\n )}\r\n {renderProductDimensions(product!.AttributeValues)}\r\n
\r\n
\r\n \r\n \r\n {renderExtensionProperty(product, 'CSSCOMMERCEPRODUCTNAME') || product.Name}\r\n \r\n \r\n {product && renderExtensionProperty(product, 'CSSCOMMERCESIZEDIMNAME')}\r\n {product && renderExtensionProperty(product, 'PRODUCTNOMINALDESIGNATION')}\r\n {product && renderExtensionProperty(product, 'PRODUCTFEATURE')}\r\n {defaultDimensions && renderDimensions()}\r\n {/* \r\n {renderPrice(\r\n context,\r\n typeName,\r\n id,\r\n product.BasePrice,\r\n product.Price,\r\n savingsText,\r\n freePriceText,\r\n originalPriceText,\r\n currentPriceText\r\n )}\r\n {isUnitOfMeasureEnabled && renderProductUnitOfMeasure(product.DefaultUnitOfMeasure)} */}\r\n
\r\n {renderQuantity(0)}\r\n {cartProduct && getProductWeight(cartProduct, product)}\r\n {cartProduct && getProductLFSF(cartProduct, product)}\r\n {quickViewButton && renderQuickView(quickViewButton, product.RecordId)}\r\n {cartProduct && quantity > 0 ? (\r\n \r\n {/* {\r\n onTelemetryClick(telemetryContent!, payLoad, product.Name!);\r\n window.location.href = productPageUrl;\r\n }}\r\n >\r\n Save\r\n */}\r\n \r\n \r\n ) : (\r\n
\r\n {/* {\r\n onTelemetryClick(telemetryContent!, payLoad, product.Name!);\r\n window.location.href = productPageUrl;\r\n }}\r\n >\r\n Save\r\n */}\r\n \r\n
\r\n )}\r\n \r\n\r\n {/* {!context.app.config.hideRating &&\r\n renderRating(context, typeName, id, product.AverageRating, product.TotalRatings, ratingAriaLabel, ratingCountAriaLabel)}\r\n {renderProductAvailability(inventoryLabel)}\r\n\r\n {productComparisonButton && renderProductComparisonButton(productComparisonButton, product, getCatalogId(context.request))} */}\r\n \r\n );\r\n};\r\n\r\nfunction renderLabel(\r\n name?: string,\r\n price?: string,\r\n rating?: number,\r\n ratingAriaLabelText?: string,\r\n reviewCount?: number,\r\n ratingCountAriaLabelText?: string\r\n): string {\r\n const reviewCountArialableText = getReviewAriaLabel(reviewCount, ratingCountAriaLabelText ?? '');\r\n return `${name ?? ''} ${price ?? ''} ${getRatingAriaLabel(rating, ratingAriaLabelText)}${\r\n reviewCountArialableText ? ` ${reviewCountArialableText}` : ''\r\n }`;\r\n}\r\n\r\nfunction renderExtensionProperty(product: ProductSearchResult | undefined, propertyName: string): string {\r\n let propertyValue: string = '';\r\n if (product) {\r\n if (product.ExtensionProperties) {\r\n var extension = product.ExtensionProperties.find(ext => {\r\n return ext.Key === propertyName;\r\n });\r\n if (extension && extension?.Value?.StringValue !== '') {\r\n propertyValue = extension?.Value?.StringValue || '';\r\n }\r\n }\r\n }\r\n return propertyValue;\r\n}\r\n\r\nfunction getRatingAriaLabel(rating?: number, ratingAriaLabel?: string): string {\r\n if (rating && ratingAriaLabel) {\r\n const roundedRating = rating.toFixed(2);\r\n return format(ratingAriaLabel || '', roundedRating, '5');\r\n }\r\n return '';\r\n}\r\n\r\nfunction getReviewAriaLabel(reviewCount?: number, ratingCountAriaLabelText?: string): string {\r\n if (reviewCount && ratingCountAriaLabelText) {\r\n return format(ratingCountAriaLabelText || '', reviewCount);\r\n }\r\n return '';\r\n}\r\n\r\n// function renderRating(\r\n// coreContext: ICoreContext,\r\n// moduleTypeName: string,\r\n// moduleId: string,\r\n// avgRating?: number,\r\n// totalRatings?: number,\r\n// ariaLabel?: string,\r\n// ratingCountAriaLabel?: string\r\n// ): JSX.Element | null {\r\n// if (!avgRating) {\r\n// return null;\r\n// }\r\n\r\n// const numberRatings = totalRatings?.toString() || undefined;\r\n// const ratingAriaLabelText = getRatingAriaLabel(avgRating, ariaLabel);\r\n// const ratingCountAriaLabelText = getReviewAriaLabel(Number(numberRatings), ratingCountAriaLabel);\r\n\r\n// return (\r\n// \r\n// );\r\n// }\r\n\r\n// function renderPrice(\r\n// context: ICoreContext,\r\n// typeName: string,\r\n// id: string,\r\n// basePrice?: number,\r\n// adjustedPrice?: number,\r\n// savingsText?: string,\r\n// freePriceText?: string,\r\n// originalPriceText?: string,\r\n// currentPriceText?: string,\r\n// isPriceMinMaxEnabled?: boolean,\r\n// priceResources?: IPriceComponentResources\r\n// ): JSX.Element | null {\r\n// const price: ProductPrice = {\r\n// BasePrice: basePrice,\r\n// AdjustedPrice: adjustedPrice,\r\n// CustomerContextualPrice: adjustedPrice\r\n// };\r\n\r\n// return (\r\n// \r\n// );\r\n// }\r\n\r\nfunction renderProductPlacementImage(\r\n imageSettings?: IImageSettings,\r\n gridSettings?: IGridSettings,\r\n imageUrl?: string,\r\n fallbackImageUrl?: string,\r\n altText?: string,\r\n context?: ICoreContext>\r\n): JSX.Element | null {\r\n if (!imageUrl || !gridSettings || !imageSettings) {\r\n return null;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment -- Site level config can be of any type.\r\n const contextConfig = context?.app.config?.placeholderImageName;\r\n const emptyPlaceHolderImage = contextConfig as string;\r\n let fallbackImageSource = fallbackImageUrl;\r\n if (emptyPlaceHolderImage && fallbackImageUrl) {\r\n fallbackImageSource = `${fallbackImageUrl},${emptyPlaceHolderImage}`;\r\n }\r\n const img: IImageData = {\r\n src: imageUrl,\r\n altText: altText ? altText : '',\r\n fallBackSrc: fallbackImageSource\r\n };\r\n const imageProps = {\r\n gridSettings,\r\n imageSettings\r\n };\r\n imageProps.imageSettings.cropFocalRegion = true;\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport const ProductComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride<\r\n IProductComponent\r\n>('Product', { component: ProductCard, ...PriceComponentActions });\r\n\r\nexport default ProductComponent;\r\n"],"names":["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","href","pathname","renderLabel","name","price","rating","ratingAriaLabelText","reviewCount","ratingCountAriaLabelText","reviewCountArialableText","format","getReviewAriaLabel","ratingAriaLabel","roundedRating","toFixed","getRatingAriaLabel","renderExtensionProperty","product","propertyName","propertyValue","ExtensionProperties","_extension$Value","_extension$Value2","extension","ext","Key","Value","StringValue","ProductComponent","msdyn365Commerce","createComponentOverride","_objectSpread","component","_ref","_product$Name","_product$RecordId","_getProductImageUrlFr","_getProductPageUrlFro","data","context","imageSettings","savingsText","freePriceText","originalPriceText","currentPriceText","ratingCountAriaLabel","allowBack","typeName","id","telemetryContent","quickViewButton","productComparisonButton","isPriceMinMaxEnabled","priceResources","inventoryLabel","dimensionAvailabilities","swatchItemAriaLabel","quantity","setQuantity","useState","maxQuantity","setMaxQuantity","productUrl","getProductPageUrlSync","Name","RecordId","Number","MIN_VALUE","actionContext","undefined","productImageUrlFromSwatch","defaultSwatch","swatchProductImageUrls","ProductImageUrls","generateImageUrl","PrimaryImageUrl","getProductImageUrlFromDefaultSwatch","productPageUrlFromSwatch","SwatchValue","encodeURIComponent","getProductPageUrlFromDefaultSwatch","productPageUrl","setProductPageUrl","productImageUrl","setProductImageUrl","React","selectedSwatchItems","Dictionary","enableStockCheck","availableDimensions","setAvailableDimensions","dimensionValues","setDimensionValues","prodDimensions","setProdDimensions","defaultDimensions","setDefaultDimensions","productVariant","setProductVariant","cartProduct","setCartProduct","productAvailableQuantity","setProductAvailableQuantity","dimensions","forEach","_item$KeyName$toLocal","_item$KeyName","shouldDisplayDimension","push","length","async","_data$product","_data$product2","variant","getSelectedVariant","SelectedVariantInput","MasterProductId","channelId","_data$product3","_data$product4","_data$product5","_data$product6","_data$product7","_data$product8","_data$product9","_data$product10","_data$product11","_data$product12","newAvailableQuantity","getProductAvailabilitiesForSelectedVariant","ProductAvailabilitiesForSelectedVariantInput","ProductAvailableQuantity","AvailableQuantity","ItemId","Description","ProductTypeValue","DefaultUnitOfMeasure","BasePrice","Price","AdjustedPrice","getSelectedVariantbyDimensions","_data$product$MasterP","_data$product13","getDimensionsForSelectedVariant","GetDimensionsForSelectedVariantInput","sort","a","b","DimensionTypeValue","getDefaultDimensionsForVariant","_data$product$MasterP2","_data$product14","mappedDimensions","dimension","_dimension$DimensionV","selectedDimension","dv","DimensionValues","ddv","_selectedDimension$Di","DimensionValue","getProductDimensionsForVariant","updatePageAndImageUrl","swatchItem","dimensionType","setValue","StringExtensions","isNullOrWhitespace","value","productPageUrlWithSwatch","includes","newUrl","searchParams","delete","toString","swatchProductImageUrl","productImageUrls","newImageUrl","dimensionsToDisplayOnProductCard","dimensionsInProductCard","DimensionTypes","none","payLoad","getPayloadObject","attribute","getTelemetryAttributes","Object","assign","cultureFormatter","formatCurrency","AverageRating","className","gridSettings","imageUrl","fallbackImageUrl","altText","_context$app$config","emptyPlaceHolderImage","placeholderImageName","fallbackImageSource","img","src","fallBackSrc","imageProps","cropFocalRegion","Image","requestContext","loadFailureBehavior","bypassHideOnFailure","renderProductPlacementImage","style","display","attributeValues","map","_item$KeyName$toLocal2","_item$KeyName2","_item$Swatches$map","_item$Swatches","dimensionTypeValue","swatches","_item$RecordId","_swatchItem$SwatchVal","_swatchItem$SwatchVal2","_dimensionAvailabilit","itemId","colorHexCode","SwatchColorHexCode","SwatchImageUrl","isDefault","isDisabled","dimensionAvailability","_swatchItem$SwatchVal3","some","swatch","ProductComponentSwatchComponent","onSelectDimension","key","title","pd","sortedList","dimensionValuesWithInventory","_a$DimensionValue","_b$DimensionValue","parseFloat","onChange","e","handleDimensionChange","dataTypeValue","selectedValue","recordId","_selectedDimensionVal","selectedDimensionValues","x","previousValue","obj","recordIndex","findIndex","splice","updatedValue","target","selectedOptions","text","_selectedDimension$Di2","d","selected","PhysicalAvailableInventoryLevelLabel","disabled","IsProductAvailable","onClick","qtyDecrement","prevCount","type","qtyText","qtyValue","parseInt","checkQuantity","qtyIncrement","gridProduct","weightUom","_extension","_extension2","conversionValues","_extension3","_extension4","JSON","parse","productUnit","conversionValue","cv","FromUnit","ToUnit","FACTOR","getProductWeight","lfUom","sfUom","_extension5","_extension2$Value","_extension6","_extension2$Value2","extension2","lengthUom","_extension7","_extension8","weightValue","getProductLFSF","quickview","selectedDimensions","getValues","convertDimensionTypeToProductDimensionType","selectedProductId","renderQuickView","Node","AddToCartComponent","addToCartText","outOfStockText","productAvailability"],"sourceRoot":""}