{"version":3,"file":"static/js/09e2ac64156b1a261024.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 const isMobile = context.request.device.Type === 'Mobile';\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(arg0: number): JSX.Element | null | 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 isMobile ? (\r\n <>\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 {defaultDimensions && renderDimensions()}\r\n {renderQuantity(0)}\r\n
\r\n
\r\n {cartProduct &&
Weight: {getProductWeight(cartProduct, product)}
}\r\n
\r\n {cartProduct &&
LF/SF: {getProductLFSF(cartProduct, product)}
}\r\n
\r\n {cartProduct && quantity > 0 ? (\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 {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 \r\n {renderExtensionProperty(product, 'CSSCOMMERCEPRODUCTNAME') || product.Name}\r\n \r\n \r\n
\r\n {product && renderExtensionProperty(product, 'CSSCOMMERCESIZEDIMNAME') && (\r\n \r\n Size Dimensions: \r\n {renderExtensionProperty(product, 'CSSCOMMERCESIZEDIMNAME')}\r\n \r\n )}\r\n {product && renderExtensionProperty(product, 'PRODUCTNOMINALDESIGNATION') && (\r\n \r\n Nominal Designation: \r\n {renderExtensionProperty(product, 'PRODUCTNOMINALDESIGNATION')}\r\n \r\n )}\r\n {product && renderExtensionProperty(product, 'PRODUCTFEATURE') && (\r\n \r\n Features: \r\n {renderExtensionProperty(product, 'PRODUCTFEATURE')}\r\n \r\n )}\r\n
\r\n
\r\n\r\n {defaultDimensions && renderDimensions()}\r\n
\r\n
\r\n {renderQuantity(0)}\r\n {cartProduct && (\r\n \r\n Weight: \r\n {getProductWeight(cartProduct, product)}\r\n \r\n )}\r\n {cartProduct && (\r\n \r\n LF/SF: \r\n {getProductLFSF(cartProduct, product)}\r\n \r\n )}\r\n
\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 );\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\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","renderProductPlacementImage","imageSettings","gridSettings","imageUrl","fallbackImageUrl","altText","context","_context$app$config","contextConfig","placeholderImageName","fallbackImageSource","img","src","fallBackSrc","imageProps","cropFocalRegion","React","Image","Object","assign","requestContext","actionContext","loadFailureBehavior","bypassHideOnFailure","ProductComponent","msdyn365Commerce","createComponentOverride","_objectSpread","component","_ref","_product$Name","_product$RecordId","_getProductImageUrlFr","_getProductPageUrlFro","data","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","undefined","productImageUrlFromSwatch","defaultSwatch","swatchProductImageUrls","ProductImageUrls","generateImageUrl","PrimaryImageUrl","getProductImageUrlFromDefaultSwatch","productPageUrlFromSwatch","SwatchValue","encodeURIComponent","getProductPageUrlFromDefaultSwatch","productPageUrl","setProductPageUrl","productImageUrl","setProductImageUrl","selectedSwatchItems","Dictionary","enableStockCheck","availableDimensions","setAvailableDimensions","dimensionValues","setDimensionValues","prodDimensions","setProdDimensions","defaultDimensions","setDefaultDimensions","productVariant","setProductVariant","cartProduct","setCartProduct","productAvailableQuantity","setProductAvailableQuantity","isMobile","device","Type","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","renderDimensions","className","map","pd","dimensionTypeValue","sortedList","dimensionValuesWithInventory","_a$DimensionValue","_b$DimensionValue","parseFloat","onChange","e","handleDimensionChange","dataTypeValue","selectedValue","recordId","_selectedDimensionVal","selectedDimensionValues","x","previousValue","some","obj","recordIndex","findIndex","splice","updatedValue","target","selectedOptions","text","_selectedDimension$Di2","d","selected","PhysicalAvailableInventoryLevelLabel","disabled","payLoad","getPayloadObject","attribute","getTelemetryAttributes","renderQuantity","arg0","title","IsProductAvailable","onClick","qtyDecrement","prevCount","type","qtyText","qtyValue","parseInt","checkQuantity","qtyIncrement","getProductWeight","gridProduct","weightUom","_extension","_extension2","conversionValues","_extension3","_extension4","JSON","parse","productUnit","conversionValue","cv","FromUnit","ToUnit","FACTOR","getProductLFSF","lfUom","sfUom","_extension5","_extension2$Value","_extension6","_extension2$Value2","extension2","lengthUom","_extension7","_extension8","weightValue","cultureFormatter","formatCurrency","AverageRating","Node","key","AddToCartComponent","addToCartText","outOfStockText","productAvailability","style","display","attributeValues","_item$KeyName$toLocal2","_item$KeyName2","_item$Swatches$map","_item$Swatches","swatches","_item$RecordId","_swatchItem$SwatchVal","_swatchItem$SwatchVal2","_dimensionAvailabilit","itemId","colorHexCode","SwatchColorHexCode","SwatchImageUrl","isDefault","isDisabled","dimensionAvailability","_swatchItem$SwatchVal3","swatch","ProductComponentSwatchComponent","onSelectDimension","quickview","selectedDimensions","getValues","convertDimensionTypeToProductDimensionType","selectedProductId","renderQuickView"],"sourceRoot":""}