{"version":3,"file":"static/js/5b71b1c4e8573ee6e29b.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/product-collection/components/product.component.tsx?3a59","webpack://Msdyn365.Commerce.Online/./src/modules/product-collection/telemetryHelper.ts?38f7","webpack://Msdyn365.Commerce.Online/./src/modules/product-collection/IncrementalQuantity.tsx?bdc5","webpack://Msdyn365.Commerce.Online/./src/modules/product-collection/product-collection-qty.tsx?e27d","webpack://Msdyn365.Commerce.Online/./src/modules/product-collection/product-collection.props.autogenerated.ts?4a6d","webpack://Msdyn365.Commerce.Online/./src/modules/product-collection/product-collection.tsx?7fd4","webpack://Msdyn365.Commerce.Online/./src/modules/product-collection/product-collection.view.tsx?e55e","webpack://Msdyn365.Commerce.Online/./lib/product-collection/module-registration.js?36d3","webpack://Msdyn365.Commerce.Online/./src/modules/product-collection/product-collection.view.tsx?5d36","webpack://Msdyn365.Commerce.Online/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online/external var \"ReactDOM\"?853b"],"sourcesContent":["/*!\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 getCatalogId,\n IComponent,\n IComponentProps,\n ICoreContext,\n IGridSettings,\n IImageData,\n IImageProps,\n IImageSettings,\n Image,\n IRequestContext,\n msdyn365Commerce\n} from '@msdyn365-commerce/core';\nimport {\n AttributeSwatch,\n ProductDimension,\n ProductPrice,\n ProductSearchResult,\n ProductType,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n checkIfShouldDisplayAsSwatch,\n convertDimensionTypeToProductDimensionType,\n Dictionary,\n DimensionSwatchDisplayTypes,\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\nimport {\n IPriceComponentResources,\n PriceComponent,\n ISwatchItem,\n ProductComponentSwatchComponent,\n RatingComponent\n} from '@msdyn365-commerce/components';\n\nexport interface IProductComponentProps extends IComponentProps<{ product?: ProductSearchResult }> {\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 inventoryLabel?: string;\n isPriceMinMaxEnabled?: boolean;\n priceResources?: IPriceComponentResources;\n dimensionAvailabilities?: IProductsDimensionsAvailabilities[];\n swatchItemAriaLabel?: string;\n cartData?: any;\n}\n\nexport interface IProductComponent extends IComponent {}\n\nconst PriceComponentActions = {};\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\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 inventoryLabel,\n isPriceMinMaxEnabled,\n priceResources,\n dimensionAvailabilities,\n swatchItemAriaLabel\n}) => {\n const product = data.product;\n const dimensionContext = context as ICoreContext;\n const dimensionToPreSelectInProductCard = dimensionContext.app.config.dimensionToPreSelectInProductCard;\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 */\n function 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 product page url from the default swatch selected.\n * @param productData - Product card to be rendered.\n * @returns The default swatch selected if any.\n */\n function getDefaultSwatchSelected(productData?: ProductSearchResult): AttributeSwatch | null {\n if (!productData || !productData.AttributeValues) {\n return null;\n }\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 */\n function getProductImageUrlFromDefaultSwatch(coreContext: ICoreContext, productData?: ProductSearchResult): string | undefined {\n const defaultSwatch = getDefaultSwatchSelected(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 * 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 */\n function getProductPageUrlFromDefaultSwatch(\n coreContext: ICoreContext,\n productUrl: string,\n productData?: ProductSearchResult\n ): string | undefined {\n const defaultSwatch = getDefaultSwatchSelected(productData);\n if (!defaultSwatch?.SwatchValue) {\n return productUrl;\n }\n\n const queryStringEncoded = encodeURIComponent(defaultSwatch.SwatchValue);\n const queryString = `${dimensionToPreSelectInProductCard}=${queryStringEncoded}`;\n return updateProductUrl(productUrl, coreContext, queryString);\n }\n\n let productUrl = product ? getProductPageUrlSync(product.Name ?? '', product.RecordId, context.actionContext, undefined) : '';\n if (allowBack && productUrl) {\n productUrl = updateProductUrl(productUrl, context, 'back=true');\n }\n\n const productImageUrlFromSwatch = getProductImageUrlFromDefaultSwatch(context, product) ?? product?.PrimaryImageUrl;\n const productPageUrlFromSwatch = getProductPageUrlFromDefaultSwatch(context, productUrl, product) ?? productUrl;\n\n const [productPageUrl, setProductPageUrl] = useState(productPageUrlFromSwatch);\n const [productImageUrl, setProductImageUrl] = useState(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 /**\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 const swatchItems = ArrayExtensions.validValues(\n product.AttributeValues?.map(item => {\n const dimensionTypeValue = item.KeyName?.toLocaleLowerCase() ?? '';\n const shouldDisplayAsSwatch = checkIfShouldDisplayAsSwatch(\n dimensionTypeValue as DimensionTypes,\n context as ICoreContext,\n DimensionSwatchDisplayTypes.productCard\n );\n if (!shouldDisplayAsSwatch) {\n return null;\n }\n\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 { recordId: item.RecordId, swatches };\n })\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 /**\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 */\n function 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 */\n function 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 * Gets the react node for product dimension as swatch.\n * @returns The node representing markup for unit of measure component.\n */\n function renderProductDimensions(): JSX.Element | null {\n if (!ArrayExtensions.hasElements(swatchItems)) {\n return null;\n }\n\n return (\n
\n {swatchItems.map(item => {\n return (\n \n );\n })}\n
\n );\n }\n\n /**\n * Gets the react node for product description.\n * @param quickview - Quick view node.\n * @param item - Product id to de displayed in quickview.\n * @returns The product quickview component.\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 /**\n * Gets the aria label for rating.\n * @param rating - Product rating.\n * @param ratingAriaLabelText - Aria label format for rating.\n * @returns The product rating aria label string.\n */\n function getRatingAriaLabel(rating?: number, ratingAriaLabelText?: string): string {\n if (rating && ratingAriaLabelText) {\n const roundedRating = rating.toFixed(2);\n return format(ratingAriaLabelText || '', roundedRating, '5');\n }\n return '';\n }\n\n /**\n * Gets the aria label for review count.\n * @param reviewCount - Product review count.\n * @param ratingCountAriaLabelText - Aria label format for review.\n * @returns The product review count aria label string.\n */\n function getReviewAriaLabel(reviewCount?: number, ratingCountAriaLabelText?: string): string {\n if (reviewCount && ratingCountAriaLabelText) {\n return format(ratingCountAriaLabelText || '', reviewCount);\n }\n return '';\n }\n\n /**\n * Gets the aria label string for product that includes product name with its price and rating.\n * @param name - Product name.\n * @param price - Product price.\n * @param rating - Product rating.\n * @param ratingAriaLabelText - Rating aria label text.\n * @param reviewCount - Product review count.\n * @param ratingCountAriaLabelText - Number of ratings.\n * @returns The aria label string for the product card.\n */\n function renderLabel(\n name?: string,\n price?: string,\n rating?: number,\n ratingAriaLabelText?: string,\n reviewCount?: number,\n ratingCountAriaLabelText?: string,\n availability?: string\n ): string {\n const reviewCountArialableText = getReviewAriaLabel(reviewCount, ratingCountAriaLabelText ?? '');\n return `${name ?? ''} ${price ?? ''} ${getRatingAriaLabel(rating, ratingAriaLabelText)}${\n reviewCountArialableText ? ` ${reviewCountArialableText}` : ''\n } ${availability ?? ''}`;\n }\n\n /**\n * Gets the react component for product rating.\n * @param productCardimageSettings - Module image settings for product card.\n * @param gridSettings - Grid settings defined in theme.\n * @param imageUrl - Image url.\n * @param fallbackImageUrl - Fallback url for imge.\n * @param altText - Image Alt text.\n * @param requestContext - Request context using the component.\n * @returns React component for product image.\n */\n function renderProductPlacementImage(\n productCardimageSettings?: IImageSettings,\n gridSettings?: IGridSettings,\n imageUrl?: string,\n fallbackImageUrl?: string,\n altText?: string,\n requestContext?: IRequestContext\n ): JSX.Element | null {\n if (!imageUrl || !gridSettings || !productCardimageSettings) {\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Site level config can be of any type.\n const emptyPlaceHolderImage = context.app.config.placeholderImageName as string;\n let fallbackImageSource = fallbackImageUrl;\n if (emptyPlaceHolderImage && fallbackImageUrl) {\n fallbackImageSource = `${fallbackImageUrl},${emptyPlaceHolderImage}`;\n }\n const image: IImageData = {\n src: imageUrl,\n altText: altText ? altText : '',\n fallBackSrc: fallbackImageSource\n };\n const imageProps: IImageProps = { gridSettings };\n\n imageProps.gridSettings = gridSettings;\n imageProps.imageSettings = productCardimageSettings;\n imageProps.imageSettings.cropFocalRegion = true;\n return ;\n }\n\n /**\n * Gets the react component for product rating.\n * @param coreContext - Context of the module using the component.\n * @param moduleTypeName - Module type name.\n * @param moduleId - Module id using the component.\n * @param productSearchResult - Product search result.\n * @param savingsPriceResourceText - Product price saving text.\n * @param freePriceResourceText - Product price free text.\n * @param originalPriceResourceText - Product price original text.\n * @param currentPriceResourceText - Product price current text.\n * @returns React component for Product price.\n */\n function renderPrice(\n coreContext: ICoreContext,\n moduleTypeName: string,\n moduleId: string,\n productSearchResult: ProductSearchResult,\n savingsPriceResourceText?: string,\n freePriceResourceText?: string,\n originalPriceResourceText?: string,\n currentPriceResourceText?: string\n ): JSX.Element {\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 = {\n BasePrice: productSearchResult.BasePrice,\n AdjustedPrice: productSearchResult.Price,\n CustomerContextualPrice: productSearchResult.Price,\n // TODO from [gaweiche]: We should not put productSearchResult.Price into min/max price.\n // To minimize the change in a backport PR, I'll keep it as is for now.\n MaxVariantPrice: productSearchResult.MaxVariantPrice ? productSearchResult.MaxVariantPrice : productSearchResult.Price,\n MinVariantPrice: productSearchResult.MinVariantPrice ? productSearchResult.MinVariantPrice : productSearchResult.Price\n } as ProductPrice;\n\n return (\n \n );\n }\n\n /**\n * Gets the react node for product description.\n * @param description - Product description.\n * @returns The product description component.\n */\n function renderDescription(description?: string): JSX.Element | null {\n return

{description}

;\n }\n\n /**\n * Gets the react component for product rating.\n * @param coreContext - Context of the module using the component.\n * @param moduleTypeName - Module type name.\n * @param moduleId - Module id using the component.\n * @param avgRating - Average rating.\n * @param totalRatings - Total rating.\n * @param ariaLabel - Aria label for rating.\n * @returns React component for Product rating.\n */\n function renderRating(\n coreContext: ICoreContext,\n moduleTypeName: string,\n moduleId: string,\n avgRating?: number,\n totalRatings?: number,\n ariaLabel?: 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\n return (\n <>\n \n
\n {renderProductPlacementImage(\n imageSettings,\n context.request.gridSettings,\n productImageUrl,\n product.PrimaryImageUrl,\n product.Name,\n context.actionContext.requestContext\n )}\n
\n

{product.Name}

\n \n {renderProductDimensions()}\n
\n {renderPrice(context, typeName, id, product, savingsText, freePriceText, originalPriceText, currentPriceText)}\n {isUnitOfMeasureEnabled && renderProductUnitOfMeasure(product.DefaultUnitOfMeasure)}\n {renderDescription(product.Description)}\n {!context.app.config.hideRating &&\n renderRating(context, typeName, id, product.AverageRating, product.TotalRatings, ratingAriaLabel)}\n {renderProductAvailability(inventoryLabel)}\n
\n {quickViewButton && renderQuickView(quickViewButton, product.RecordId)}\n {productComparisonButton && renderProductComparisonButton(productComparisonButton, product, getCatalogId(context.request))}\n \n );\n};\n\nexport const ProductComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'Product',\n { component: ProductCard, ...PriceComponentActions }\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IDictionary, TelemetryEvent } from '@msdyn365-commerce/core';\nimport { ITelemetry } from '@msdyn365-commerce/telemetry-internal';\n\nexport interface IContentAction {\n pgname: string;\n mname: string;\n etext?: string;\n recid?: string;\n etype?: string;\n}\n\nexport interface IPayLoad {\n contentCategory: string;\n contentAction: IContentAction;\n}\n\nexport interface ITelemetryContent {\n pageName: string;\n moduleName: string;\n telemetry?: ITelemetry;\n}\n\nexport enum TelemetryConstant {\n ShopSimliarLooks = 'shop similar looks',\n ShopSimliarDescription = 'shop similar description',\n PickupInStore = 'pick up in store',\n PreferredStore = 'set as preferred store',\n RemovePreferredStore = 'remove preferred store',\n IncrementQuantity = 'Increment quantity',\n DecrementQuantity = 'Decrement quantity',\n Checkout = 'Checkout',\n GuestCheckout = 'Guest checkout',\n BackToShopping = 'Back to shopping',\n ApplyPromoCode = 'Apply promo code',\n ViewMore = 'View more',\n OrderDetails = 'Order details',\n AvailablePoints = 'Available points',\n ExpiringPoints = 'Expiring points',\n AddUser = 'Add user',\n BuyItAgain = 'Buy it again',\n ContactNumber = 'ContactNumber',\n CheckoutChange = 'Change',\n Save = 'Save',\n SaveContinue = 'Save and Continue',\n Cancel = 'Cancel',\n DeliveryOptions = 'Delivery options',\n CheckoutTermsAndConditions = 'Checkout terms and conditions',\n ExpandAll = 'Expand all',\n CollapseAll = 'Collapse all',\n Expand = 'Expand',\n Collapse = 'Collapse',\n SignIn = 'Sign in',\n SignUp = 'Sign up',\n SignOut = 'Sign out',\n SwitchCustomer = 'Switch Customer',\n LoyaltyDetailLink = 'Loyalty detail ink',\n LoyaltyTermsLink = 'Loyalty terms link',\n LoyaltyTermsCancel = 'Loyalty terms cancel',\n LoyaltyTermsSubmit = 'Loyalty terms submit',\n LoyaltyTermsAgree = 'Loyalty terms agree',\n RemoveCartItem = 'Remove cart item',\n EditCart = 'Edit cart',\n BackToTop = 'Back to top',\n Logo = 'Logo',\n NavIcon = 'Navigation icon',\n ViewBagAndCheckout = 'View bag and checkout',\n ContinueShopping = 'Continue shopping',\n AddOrderTemplateToCart = 'Add order template to cart',\n PromoBannerClose = 'Close promo banner',\n WriteReview = 'Write Review',\n Next = 'Next',\n Previous = 'Previous',\n SubmitReview = 'Submit review',\n SuccessButton = 'Success',\n SearchStore = 'Search store',\n ShowAllStore = 'Show all store',\n ToggleMapView = 'Toggle map view',\n PrivacyPolicy = 'Privacy policy',\n ViewShoppingBag = 'View shopping bag',\n MyProfile = 'My profile',\n seeDetails = 'See Details'\n}\n\n/**\n * Returns the payload Object.\n * @param {string} contentCategory - Content Category.\n * @param {IModule} props - Module props.\n * @param pageName\n * @param {string} moduleName - Module Name.\n * @param {string} etext - Etext Name.\n * @param {string} recid - Recid Name.\n * @param telemetry\n */\nexport function getTelemetryObject(pageName: string, moduleName: string, telemetry: ITelemetry): ITelemetryContent {\n const telemetryContent: ITelemetryContent = { pageName, moduleName, telemetry };\n return telemetryContent;\n}\n\n/**\n * Returns the payload Object.\n * @param {string} contentCategory - Content Category.\n * @param {IModule} props - Module props.\n * @param {string} moduleName - Module Name.\n * @param eventType\n * @param telemetryContent\n * @param {string} etext - Etext Name.\n * @param {string} recid - Recid Name.\n */\nexport function getPayloadObject(eventType: string, telemetryContent: ITelemetryContent, etext: string, recid?: string): IPayLoad {\n const pageName = telemetryContent && telemetryContent.pageName ? telemetryContent.pageName : '';\n const moduleName = telemetryContent && telemetryContent.moduleName ? telemetryContent.moduleName : '';\n const payload: IPayLoad = {\n contentCategory: eventType,\n contentAction: {\n pgname: pageName,\n mname: moduleName,\n etext,\n recid,\n etype: eventType\n }\n };\n return payload;\n}\n\n/**\n * Returns the telemetry Attributes.\n * @param {IModule} props - Module Props.\n * @param telemetryContent\n * @param {IPayLoad} payLoad - Pay Load.\n */\nexport function getTelemetryAttributes(telemetryContent: ITelemetryContent, payLoad: IPayLoad): IDictionary | undefined {\n const contentData = payLoad.contentAction.recid ? payLoad.contentAction.recid : payLoad.contentAction.etext;\n const attributes: IDictionary | undefined =\n telemetryContent &&\n telemetryContent.telemetry &&\n telemetryContent.telemetry.setTelemetryAttribute &&\n telemetryContent.telemetry.setTelemetryAttribute(contentData!, payLoad.contentAction);\n return attributes;\n}\n\n/**\n * Returns the telemetry Attributes.\n * @param {IModule} props - Module Props.\n * @param {IPayLoad} payLoad - Pay Load.\n */\n\nexport const onTelemetryClick = (telemetryContent: ITelemetryContent, payLoad: IPayLoad, linkText: string) => () => {\n payLoad.contentAction.etext = linkText;\n if (telemetryContent && telemetryContent.telemetry) {\n telemetryContent.telemetry.logEvent(TelemetryEvent.Custom, payLoad);\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IRequestContext } from '@msdyn365-commerce/core';\nimport { debounce } from 'lodash';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, TelemetryConstant } from './telemetryHelper';\nimport { IIncrementalQuantityProps } from './IncrementalQuantityProps';\n/**\n * IIncrementalQuantityState interface.\n */\ninterface IIncrementalQuantityState {\n currentInput: number;\n isUpdating: boolean;\n}\n\n/**\n * Quantity Component - This component is used to add or remove quantity.\n */\n@observer\nexport default class IncrementalQuantity extends React.PureComponent {\n public static defaultProps: Partial = {\n min: 1,\n decrementGlyphClass: 'fas fa-minus',\n incrementGlyphClass: 'fas fa-plus'\n };\n private readonly _minValue: number;\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n private readonly payLoad: IPayLoad;\n\n public static getDerivedStateFromProps(\n props: Readonly,\n state: IIncrementalQuantityState\n ): IIncrementalQuantityState {\n const nextState = { ...state };\n\n if (props.disabled && !state.isUpdating) {\n nextState.isUpdating = true;\n }\n\n if (!props.disabled && state.isUpdating) {\n nextState.currentInput = props.currentCount ?? 1;\n nextState.isUpdating = false;\n }\n return nextState;\n }\n constructor(props: IIncrementalQuantityProps) {\n super(props);\n this.state = { currentInput: props.currentCount ?? 1, isUpdating: false };\n this._onIncrement = this._onIncrement.bind(this);\n this._onDecrement = this._onDecrement.bind(this);\n this._removeITem = this._removeITem.bind(this);\n this._handleChange = this._handleChange.bind(this);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, '');\n this._minValue = this.props.min ?? IncrementalQuantity.defaultProps.min!;\n }\n public render(): JSX.Element {\n const { min, max } = this.props;\n const glyphMinusClassName: string = `${this.props.decrementGlyphClass!} quantity__controls-glyph`;\n //const glyphPlusClassName: string = `${this.props.incrementGlyphClass!} quantity__controls-glyph`;\n const removeClassName: string = `fas fa-trash quantity__controls-glyph`;\n const decrementDisabled = this.state.currentInput <= (min ?? 1) || this.props.isGiftCard;\n const incrementDisabled = this.state.currentInput >= max || this.props.isGiftCard;\n const currentValue = this.state.currentInput;\n this.payLoad.contentAction.etext = TelemetryConstant.DecrementQuantity;\n const decrementAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.IncrementQuantity;\n const incrementAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n const ariaLablelText = `${this.props.inputQuantityAriaLabel ?? ''} ${this.state.currentInput}`;\n let extraClassDecrement = '';\n // @ts-ignore\n let iconClassName = glyphMinusClassName;\n if (decrementDisabled) {\n // The quantity has reached its boundaries (max or min)\n extraClassDecrement = 'disabled';\n iconClassName = removeClassName;\n } else if (this.props.disabled) {\n // This.props.disabled shows if the state is not succeded yet\n extraClassDecrement = 'transition';\n iconClassName = removeClassName;\n }\n let extraClassIncrement = '';\n if (incrementDisabled) {\n // The quantity has reached its boundaries (max or min)\n extraClassIncrement = 'disabled';\n } else if (this.props.disabled) {\n // This.props.disabled shows if the state is not succeded yet\n extraClassIncrement = 'transition';\n }\n console.log(this.state.currentInput);\n let button = '';\n if (this.state.currentInput === 1) {\n // @ts-ignore\n } else {\n // @ts-ignore\n button = (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n return (\n <>\n {button}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n\n /**\n * It checks if its in mobile view or not.\n * @returns Boolean.\n */\n private readonly isMobileView = (): boolean => {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Added gridsetting values.\n const context = {\n gridSettings: {\n xs: { w: 767 },\n sm: { w: 991 },\n md: { w: 1199 },\n lg: { w: 1599 },\n xl: { w: 1600 }\n }\n } as IRequestContext;\n\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\n return isMobileCheck === 'xs' || isMobileCheck === 'sm';\n };\n\n private async _onIncrement(): Promise {\n let invokeCallback = false;\n const currQuantity = this.state.currentInput;\n let updatedQuantity: number;\n\n if (currQuantity < this.props.max) {\n invokeCallback = true;\n updatedQuantity = currQuantity + 1;\n } else {\n invokeCallback = false;\n updatedQuantity = this.props.max;\n }\n\n if (invokeCallback && this.props.onChange) {\n if (await this.props.onChange(updatedQuantity)) {\n this.setState({ currentInput: updatedQuantity });\n }\n }\n }\n\n private _removeITem(): void {\n this.setState({ currentInput: -1 });\n }\n\n private async _onDecrement(): Promise {\n let invokeCallback = false;\n const currQuantity = this.state.currentInput;\n let updatedQuantity: number;\n console.log(currQuantity);\n\n if (currQuantity >= this._minValue) {\n invokeCallback = true;\n updatedQuantity = currQuantity - 1;\n } else {\n invokeCallback = false;\n updatedQuantity = this._minValue;\n }\n\n if (invokeCallback && this.props.onChange) {\n if (await this.props.onChange(updatedQuantity)) {\n this.setState({ currentInput: updatedQuantity });\n }\n }\n }\n\n private _handleChange(e: React.ChangeEvent): void {\n let currentValue = Number.parseInt(e.target.value, 10);\n if (Number.isNaN(currentValue)) {\n this.setState({ currentInput: currentValue });\n return;\n }\n currentValue = Math.min(this.props.max, Math.max(this._minValue, currentValue));\n this.setState({ currentInput: currentValue });\n debounce(() => {\n // Due of usage debouncer, we may ignore onChange return value\n this.props.onChange && this.props.onChange(this.state.currentInput);\n\n const inputElement =\n this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\n if (inputElement) {\n inputElement.setAttribute('aria-valuenow', this.state.currentInput.toString());\n inputElement.setAttribute('value', this.state.currentInput.toString());\n }\n }, 1000)();\n }\n\n /**\n * Validates min and updates.\n */\n private readonly _validateMin = (): void => {\n if (Number.isNaN(this.state.currentInput)) {\n this.setState({ currentInput: this._minValue });\n } else {\n const currentValue = Math.min(this.props.max, Math.max(this._minValue, this.state.currentInput));\n if (currentValue !== this.state.currentInput) {\n this.setState({ currentInput: currentValue });\n }\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable no-duplicate-imports */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport IncrementalQuantity from './IncrementalQuantity';\nimport { IGridSettings, IImageSettings, IComponentProps } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport {\n ProductAvailableQuantity,\n ProductDimension,\n SimpleProduct,\n ProductsDataActions,\n ProductSearchCriteria,\n ProductType,\n ProductPrice\n} from '@msdyn365-commerce/retail-proxy';\n\nimport { OrderDetailsProduct } from '@msdyn365-commerce/components';\nimport { ICartActionResult, getCartState } from '@msdyn365-commerce/global-state';\n//import { IProductCollectionData } from './product-collection.data';\n\nexport interface IAddToCartResources {\n goToCartText: string;\n continueShoppingText: string;\n closeNotificationLabel: string;\n headerItemOneText: string;\n headerItemFormatText: string;\n headerLinesFormatText?: string;\n headerMessageText: string;\n freePriceText: string;\n originalPriceText: string;\n currentPriceText: string;\n addedQuantityText: string;\n buyAgainNotificationTitle?: string;\n buyAgainNotificationCloseAriaLabel?: string;\n validationErrorMessage?: string;\n oneErrorText?: string;\n multiErrorsText?: string;\n}\nexport interface IAddToCartComponentProps extends IComponentProps<{ product: SimpleProduct; price?: ProductPrice } | undefined> {\n context: any;\n className?: string;\n product: any;\n outOfStockText?: string;\n disabled?: boolean;\n quantity?: number;\n navigationUrl?: string;\n productAvailability?: ProductAvailableQuantity;\n getSelectedProduct?: Promise;\n isNavigationToCartPageDisabled?: boolean;\n shouldSkipSiteSettings?: boolean;\n addToCartArialLabel?: string;\n products?: {\n productId: number;\n quantity: number;\n catalogId?: number;\n }[];\n orderDetailsProducts?: OrderDetailsProduct[];\n hasAvailableProducts?: boolean;\n imageSettings?: IImageSettings;\n gridSettings?: IGridSettings;\n\n isLoading?: boolean;\n isUpdatingDimension?: boolean;\n isLoadingDeliveryOptions?: boolean;\n isUpdatingDeliveryOptions?: boolean;\n isAddServiceItemToCart?: boolean;\n isAddEmailDeliveryItemToCart?: boolean;\n isPriceKeyedIn?: boolean;\n customPriceAmount?: number;\n isOrderQuantityLimitsFeatureEnabled?: boolean;\n\n dialogStrings?: IAddToCartResources;\n\n telemetryContent?: ITelemetryContent;\n\n catalogId?: number;\n cartData?: any;\n\n isCustomPriceSelected?: boolean;\n maximumKeyInPrice?: number;\n minimumKeyInPrice?: number;\n defaultMaximumKeyInPrice?: number;\n defaultMinimumKeyInPrice?: number;\n isProductQuantityLoading?: boolean;\n isBundleCollection?: boolean;\n onAdd?(result: ICartActionResult): void;\n onError?(result: IAddToCartFailureResult): void;\n changeUpdatingDimension?(isUpdatingDimension: boolean): void;\n changeUpdatingDeliveryOptions?(isUpdatingDeliveryOptions: boolean): void;\n}\nexport declare type ICartActionFailureReason =\n | 'EMPTYINPUT'\n | 'MISSINGDIMENSION'\n | 'OUTOFSTOCK'\n | 'CARTACTIONFAILED'\n | 'INVALIDCUSTOMAMOUNT';\nexport interface IAddToCartFailureResult {\n failureReason: ICartActionFailureReason;\n\n stockLeft?: number;\n cartActionResult?: ICartActionResult;\n missingDimensions?: ProductDimension[];\n}\nexport interface IProductCollectionState {\n currentProductqQty?: any;\n}\n//const defaultQuantity = 1;\n\nclass ProductCollectionQty extends React.PureComponent {\n constructor(props: IAddToCartComponentProps) {\n super(props);\n this.state = {\n currentProductqQty: ''\n };\n }\n public removeITem = () => {\n void getCartState(this.props.context.actionContext).then((result: any): boolean => {\n const recordId = this.props.product.ItemId;\n void this.removeItemFromCart(this.props, recordId);\n this.setState({ currentProductqQty: -1 });\n return false;\n });\n };\n public removeItemFromCart = async (props: IAddToCartComponentProps, LineID: any): Promise => {\n const cartState = await getCartState(props.context.actionContext);\n const productInfow = await this.getAddToCartInputFromProps(props);\n const cartLinesData = cartState.cart.CartLines;\n const findData = cartLinesData?.find(cartLinesData => cartLinesData.ItemId === productInfow[0].product.ItemId);\n const input = {\n cartLineIds: [findData?.LineId!]\n };\n await cartState.removeCartLines(input);\n };\n public getAddToCartInputFromProps = async (props: IAddToCartComponentProps) => {\n const defaultQuantity = 1;\n const products = props.orderDetailsProducts?.filter(product => !ObjectExtensions.isNullOrUndefined(product.simpleProduct));\n const input = products?.map(product => {\n return {\n product: product.simpleProduct!,\n count: ObjectExtensions.isNullOrUndefined(product.salesLine.Quantity) ? defaultQuantity : product.salesLine.Quantity,\n catalogId: product.salesLine.CatalogId\n };\n });\n\n if (ArrayExtensions.hasElements(input)) {\n return input;\n }\n\n if (ArrayExtensions.hasElements(props.products)) {\n const actionContext = props.context.actionContext;\n const apiSettings = actionContext.requestContext.apiSettings;\n\n const catalogId = props.catalogId;\n const searchCriteriaInput: ProductSearchCriteria = {\n Context: {\n ChannelId: apiSettings.channelId,\n CatalogId: catalogId\n },\n IncludeAttributes: false,\n Ids: props.products.map(product => product.productId)\n };\n\n const searchResult = await ProductsDataActions.searchByCriteriaAsync({ callerContext: actionContext }, searchCriteriaInput);\n const productSearchResultsWithImages = searchResult.map(productSearchResult => {\n const newProductSearchResult = { ...productSearchResult };\n const newImageUrl = ' generateProductImageUrl(newProductSearchResult, apiSettings);';\n\n if (newImageUrl) {\n newProductSearchResult.PrimaryImageUrl = newImageUrl;\n }\n\n return newProductSearchResult;\n });\n\n return props.products.map(item => {\n const productData = productSearchResultsWithImages.find(product => product.RecordId === item.productId);\n let simpleProduct: SimpleProduct;\n if (productData) {\n simpleProduct = {\n ...productData,\n ProductTypeValue: ProductType.Variant,\n AdjustedPrice: productData.Price,\n BasePrice: productData.BasePrice ?? productData.Price\n };\n } else {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Cast to simple product since only record id is available.\n simpleProduct = {\n RecordId: item.productId\n } as SimpleProduct;\n }\n\n return {\n product: simpleProduct,\n count: item.quantity,\n catalogId: item.catalogId\n };\n });\n }\n\n if (props.data?.product) {\n return [\n {\n product: props.data.product,\n count: props.quantity ?? defaultQuantity,\n catalogId: props.catalogId\n }\n ];\n }\n\n return [];\n };\n public onChangeHandler = async (newValue: number): Promise => {\n if (newValue === -1) {\n this.removeITem();\n }\n const productID = this.props.data?.product.RecordId;\n let totalAvailableQuantity = 0;\n if (productID) {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const axios = require('axios');\n const data = JSON.stringify({\n searchCriteria: {\n ProductIds: [productID],\n QuantityUnitTypeValue: 2,\n DefaultWarehouseOnly: true\n }\n });\n\n const config = {\n method: 'post',\n maxBodyLength: Infinity,\n // url: 'https://scudisf0ajx86631475-rs.su.retail.dynamics.com/Commerce/Products/GetEstimatedAvailability?api-version=7.3',\n url: 'https://scuh5bsct3g80746264-rs.su.retail.dynamics.com/Commerce/Products/GetEstimatedAvailability?api-version=7.3',\n headers: {\n accept: 'application/json',\n 'accept-language': 'en-US',\n 'cache-control': 'no-cache',\n 'content-type': 'application/json',\n oun: '00000001'\n },\n data: data\n };\n\n await axios\n .request(config)\n .then((response: { data: any }) => {\n if (\n response.data?.ProductWarehouseInventoryAvailabilities &&\n response.data?.ProductWarehouseInventoryAvailabilities.length > 0\n ) {\n const respObject = response.data?.ProductWarehouseInventoryAvailabilities.filter((item: any) => {\n return item.ProductId === productID;\n });\n if (respObject && respObject.length > 0) {\n totalAvailableQuantity = Math.floor((Number(respObject[0]?.PhysicalAvailable) * 80) / 100);\n }\n }\n })\n .catch((error: any) => {\n console.log(error);\n });\n }\n if (newValue > totalAvailableQuantity) {\n return false;\n }\n const cartState = getCartState(this.props.context.actionContext).then((result: any): boolean => {\n const recordId = this.props.product.ItemId;\n const cartLinesData = result._cart.CartLines;\n const findData = cartLinesData.find((cartLinesData: { ItemId: any }) => cartLinesData.ItemId === recordId);\n this.setState({ currentProductqQty: newValue });\n if (findData === undefined) {\n // console.log(findData.Quantity);\n void this.addOneItemToCart(this.props);\n return true;\n }\n if (!result.isEmpty) {\n void this.updateCartId(this.props, findData.Quantity, newValue);\n return true;\n } else {\n void this.addOneItemToCart(this.props);\n //return true;\n }\n return false;\n });\n console.log(cartState);\n\n return true;\n };\n public updateCartId = async (props: IAddToCartComponentProps, oldQty: any, newQty: any): Promise => {\n const cartState = await getCartState(props.context.actionContext);\n const productInfow = await this.getAddToCartInputFromProps(props);\n const cartLinesData = cartState.cart.CartLines;\n const findData = cartLinesData?.find(cartLinesData => cartLinesData.ItemId === productInfow[0].product.ItemId);\n const addToCartResult = await cartState.updateCartLineQuantity({\n cartLineId: findData?.LineId || '',\n newQuantity: newQty\n });\n console.log(addToCartResult);\n };\n /**\n * Add one item to cart when it is not buy again.\n * @param props -- The props.\n * @param setDisabled -- The set disable call back.\n * @param openModal -- The open modal call back.\n */\n public addOneItemToCart = async (props: IAddToCartComponentProps): Promise => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- read config file.\n const addToCartInput = await this.getAddToCartInputFromProps(props);\n const product = addToCartInput[0].product;\n const quantity = addToCartInput[0].count;\n\n const cartState = await getCartState(props.context.actionContext);\n const addToCartResult = await cartState.addProductToCart({\n product,\n count: quantity,\n availableQuantity: props.productAvailability?.AvailableQuantity,\n additionalProperties: { orderQuantityLimitsFeatureIsEnabled: props.isOrderQuantityLimitsFeatureEnabled },\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- read config file.\n enableStockCheck: props.context.app.config.enableStockCheck,\n isPriceKeyedIn: props.isPriceKeyedIn,\n customPrice: props.isPriceKeyedIn ? props.customPriceAmount : undefined,\n isAddEmailDeliveryItemToCart: props.isAddEmailDeliveryItemToCart,\n shouldSkipSiteSettings: props.shouldSkipSiteSettings,\n catalogId: addToCartInput[0].catalogId\n });\n\n if (addToCartResult.status === 'SUCCESS') {\n console.log('its success');\n }\n };\n public _getCartStatusUpdate = (props: IAddToCartComponentProps, recordId: number): number => {\n const cartLinesData = props.cartData;\n if (cartLinesData.length !== 0) {\n const findData = cartLinesData.find((cartLinesData: { ItemId: any }) => cartLinesData.ItemId === recordId);\n if (findData) {\n return findData.Quantity;\n }\n }\n\n return 0;\n //return findData?.Quantity || 0;\n };\n public _SingleAddToCart = () => {\n void this.addOneItemToCart(this.props);\n this.setState({ currentProductqQty: 1 });\n return true;\n };\n\n public render(): JSX.Element | null {\n const isBundleCollection = this.props.isBundleCollection ? this.props.isBundleCollection : false;\n var getQty = this._getCartStatusUpdate(this.props, this.props.product.ItemId);\n //this.setState({ currentProductqQty: getQty });\n var button = null;\n var buttonAddtoCart = null;\n if (this.state.currentProductqQty === -1) {\n getQty = 0;\n }\n //this.setState({ currentProductqQty: getQty });\n if (\n getQty === 0 &&\n (this.state.currentProductqQty === 0 || this.state.currentProductqQty === '' || this.state.currentProductqQty === -1)\n ) {\n getQty = 0;\n // this.setState({ currentProductqQty: 0 });\n buttonAddtoCart = (\n <>\n {isBundleCollection ? (\n \n ) : (\n \n )}\n \n );\n return {buttonAddtoCart};\n }\n if (getQty === 1 && this.state.currentProductqQty === '') {\n button = (\n <>\n {isBundleCollection ? (\n \n ) : (\n \n )}\n \n );\n }\n if (this.state.currentProductqQty === 1) {\n button = (\n <>\n {isBundleCollection ? (\n \n ) : (\n \n )}\n \n );\n }\n return (\n \n \n {button}\n {!isBundleCollection && (\n \n )}\n \n \n );\n }\n}\nexport default ProductCollectionQty;\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IProductCollection containerModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nexport const enum layout {\r\n carousel = 'carousel',\r\n grid = 'grid'\r\n}\r\n\r\nexport interface IProductCollectionConfig extends Msdyn365.IModuleConfig {\r\n productCollection: Msdyn365.IProductList;\r\n heading?: IHeadingData;\r\n layout?: layout;\r\n allowBackNavigation?: boolean;\r\n imageSettings?: Msdyn365.IImageSettings;\r\n clientRender?: boolean;\r\n enableAffiliationBasedPricing?: boolean;\r\n shouldDisplaySeeAllButton?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport interface IProductCollectionResources {\r\n priceFree: string;\r\n priceRangeSeparator: string;\r\n ratingAriaLabel: string;\r\n flipperNext: string;\r\n flipperPrevious: string;\r\n originalPriceText: string;\r\n currentPriceText: string;\r\n ratingCountAriaLabel: string;\r\n ratingCountAriaLabelSingleUser: string;\r\n seeAllButtonText: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface IProductCollectionProps extends Msdyn365.IModule {\r\n resources: IProductCollectionResources;\r\n config: IProductCollectionConfig;\r\n slots: {\r\n quickview: React.ReactNode[];\r\n productComparisonButton: React.ReactNode[];\r\n };\r\n}\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable no-duplicate-imports */\nimport { IProductsDimensionsAvailabilities } from '@msdyn365-commerce/commerce-entities';\nimport { IPriceComponentResources } from '@msdyn365-commerce/components';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getCatalogId, getUrlSync, ICoreContext } from '@msdyn365-commerce/core';\nimport { ProductPrice, ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ProductComponent } from './components/product.component';\nimport { getCartState } from '@msdyn365-commerce/global-state';\n\nimport ProductCollectionQty from './product-collection-qty';\nimport {\n ArrayExtensions,\n DimensionAvailabilitiesForProductSearchResultInput,\n DimensionTypes,\n DimensionSwatchDisplayTypes,\n getDimensionAvailabilitiesForProductSearchResultAction,\n getPriceForProductSearchResult,\n IDimensionsApp,\n ObjectExtensions,\n PriceForProductSearchResultInput,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\n//import { ICartActionResult, getCartState } from '@msdyn365-commerce/global-state';\nimport {\n Button,\n getTelemetryObject,\n IComponentNodeProps,\n IModuleProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IProductCollectionData } from './product-collection.data';\nimport { IProductCollectionProps, layout } from './product-collection.props.autogenerated';\n\nexport interface IProductCollectionViewProps extends IProductCollectionProps {\n heading?: React.ReactNode;\n ProductCollectionContainer: IModuleProps;\n SingleSlideCarouselComponentProps: INodeProps;\n GridComponentProps: INodeProps;\n products: IProductComponentViewProps[];\n isCarousel: boolean;\n productPrices?: ProductPrice[];\n seeAllButton?: React.ReactNode;\n}\n\nexport interface IProductComponentViewProps {\n ProductContainer: INodeProps;\n productComponent: React.ReactNode;\n}\nexport interface IProductComponentState {\n products: ProductSearchResult[];\n productsDimensionAvailabilities?: IProductsDimensionsAvailabilities[][];\n cartState: any;\n valueher: any;\n}\n\n/**\n * ProductCollection component.\n */\nclass ProductCollection extends React.PureComponent, IProductComponentState> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly productPrices: ProductPrice[];\n\n constructor(props: IProductCollectionProps) {\n super(props);\n this.productPrices = [];\n this.state = {\n products: this.props.config.productCollection.products || [],\n cartState: '',\n valueher: '' || null\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n void this._getCartStatusUpdate();\n }\n\n public async componentDidMount(): Promise {\n // await this._getCartStatusUpdate();\n if (this.props.config.enableAffiliationBasedPricing && this.props.context.actionContext.requestContext.user.isAuthenticated) {\n await this._getActivePrice();\n }\n }\n\n public render(): JSX.Element | null {\n const { heading, className, shouldDisplaySeeAllButton } = this.props.config;\n\n const { resources } = this.props;\n const recommendation = this.props.config.productCollection.recommendationListId;\n\n // Initialize state in case if the products were not found during initial module render\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- Initialize data if not there.\n this.initProductState(this.props.config.productCollection);\n\n const products = this.state.products;\n const isCarousel = this.props.config.layout === layout.carousel;\n const headingLabel = heading ? heading.text : '';\n const headingComponent = heading && (\n \n );\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- product check for safety.\n const updatedProducts = products?.map((item: ProductSearchResult, index: number) => {\n //isCarousel;\n const getProductData = this._getProduct(item, index, className);\n return !ObjectExtensions.isNullOrUndefined(getProductData) ? getProductData : undefined;\n });\n\n // @ts-ignore\n // @ts-ignore\n let collectionGridBg = '0xffFFFFFF'; // By Default Grid Background\n // @ts-ignore\n if (this.props.config.imageSettings.backgroundColor) {\n // @ts-ignore\n collectionGridBg = this.props.config.imageSettings.backgroundColor;\n }\n collectionGridBg = collectionGridBg.replace('0xff', '#');\n if (collectionGridBg !== '#fff') {\n collectionGridBg = `linear-gradient(180deg, ${collectionGridBg} 0%, #F9F8F9 100%)`;\n }\n const productCollectionViewProps = {\n ...this.props,\n heading: headingComponent,\n SingleSlideCarouselComponentProps: {\n tag: SingleSlideCarousel,\n className: '',\n flipperPrevLabel: `${headingLabel} ${resources.flipperPrevious}`,\n flipperNextLabel: `${headingLabel} ${resources.flipperNext}`,\n parentId: this.props.id,\n telemetryContent: this.telemetryContent\n } as IComponentNodeProps,\n ProductCollectionContainer: {\n moduleProps: this.props,\n style: { background: collectionGridBg },\n className: classnames('ms-product-collection', className)\n },\n GridComponentProps: {\n tag: 'ul' as NodeTag,\n className: 'ms-product-collection__items'\n },\n isCarousel,\n\n products:\n ArrayExtensions.hasElements(updatedProducts) &&\n updatedProducts.filter(item => {\n return item !== undefined;\n }),\n productPrices: this.productPrices,\n seeAllButton:\n shouldDisplaySeeAllButton && ArrayExtensions.hasElements(updatedProducts)\n ? this._getSeeAllButton(recommendation, headingLabel)\n : undefined\n };\n return this.props.renderView(productCollectionViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n public _getCartStatusUpdate = async () => {\n const cartState = await getCartState(this.props.context.actionContext);\n console.log('the changes');\n console.log(cartState.cart);\n const cartLinesData = cartState.cart.CartLines;\n this.setState({ cartState: cartLinesData });\n };\n /**\n * Get products dimension availabilities.\n * @param products - Products.\n * @returns Promise.\n */\n private readonly _getProductsDimensionsAvailabilities = async (products: ProductSearchResult[]): Promise => {\n const context = this.props.context as ICoreContext;\n const dimensionsToDisplayOnProductCard = context.app.config.dimensionsInProductCard;\n const dimensionsToDisplayAsSwatch = context.app.config.dimensionsAsSwatchType;\n const validProducts = ArrayExtensions.validValues(products);\n if (\n ArrayExtensions.hasElements(validProducts) &&\n ArrayExtensions.hasElements(dimensionsToDisplayOnProductCard) &&\n !dimensionsToDisplayOnProductCard.includes(DimensionTypes.none) &&\n ArrayExtensions.hasElements(dimensionsToDisplayAsSwatch) &&\n !dimensionsToDisplayAsSwatch.includes(DimensionTypes.none)\n ) {\n const productsDimensionAvailabilities = await getDimensionAvailabilitiesForProductSearchResultAction(\n new DimensionAvailabilitiesForProductSearchResultInput(\n validProducts,\n this.props.context as ICoreContext,\n DimensionSwatchDisplayTypes.productCard\n ),\n this.props.context.actionContext\n );\n\n if (ArrayExtensions.hasElements(productsDimensionAvailabilities)) {\n this.setState({ productsDimensionAvailabilities });\n }\n }\n };\n\n /**\n * Helper method to initialize products state.\n * @param productCollection - List of products.\n */\n private readonly initProductState = async (productCollection: Msdyn365.IProductList) => {\n let products = this.state.products;\n const productCollectionProducts = productCollection.products;\n if (!ArrayExtensions.hasElements(products) && ArrayExtensions.hasElements(productCollectionProducts)) {\n products = productCollectionProducts;\n this.setState({ products });\n } else if (\n ArrayExtensions.hasElements(products) &&\n ArrayExtensions.hasElements(productCollectionProducts) &&\n !ArrayExtensions.equals(products, productCollectionProducts)\n ) {\n products = productCollectionProducts;\n this.setState({ products });\n } else if (productCollectionProducts === undefined && ArrayExtensions.hasElements(this.state.products)) {\n products = [];\n this.setState({ products: products });\n }\n\n if (Msdyn365.msdyn365Commerce.isBrowser && !ArrayExtensions.hasElements(this.state.productsDimensionAvailabilities)) {\n await this._getProductsDimensionsAvailabilities(products);\n }\n };\n\n private readonly _getProduct = (product: ProductSearchResult, index: number, className?: string): IProductComponentViewProps | null => {\n let isBundleCollection = false;\n if (className && className === 'BundleCollectionClass') {\n isBundleCollection = true;\n }\n if (!product || !product.Name) {\n this.props.telemetry.trace('[product-collection] Product or product name is null');\n return null;\n }\n const telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const {\n imageSettings\n // , allowBackNavigation\n } = this.props.config;\n const resources = this.props.resources;\n // const breaCrumbType = this.props.context.app.config.breadcrumbType;\n // const allowBack = allowBackNavigation && (breaCrumbType === 'back' || breaCrumbType === 'categoryAndBack');\n const quickviewSlot =\n this.props.slots && this.props.slots.quickview && this.props.slots.quickview.length > 0 ? this.props.slots.quickview[0] : null;\n const productComparisonButtonSlot = ArrayExtensions.hasElements(this.props.slots.productComparisonButton)\n ? this.props.slots.productComparisonButton[0]\n : null;\n\n const reviewCount = 1;\n const reviewTotalRatings = Number(product.TotalRatings);\n const reviewCountAriaLabelValue =\n reviewTotalRatings > reviewCount ? resources.ratingCountAriaLabel : resources.ratingCountAriaLabelSingleUser;\n const isPriceMinMaxEnabled = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailSearchPriceRangeFeature'\n );\n const priceResources: IPriceComponentResources = {\n priceRangeSeparator: resources.priceRangeSeparator\n };\n // console.log(this.state.cartState);\n // console.log(product);\n // if (this.state.cartState.length === 0) {\n const product1: SimpleProduct = {\n RecordId: product?.RecordId,\n ItemId: product?.ItemId,\n Name: product?.Name,\n Description: product?.Description,\n ProductTypeValue: product?.RecordId,\n DefaultUnitOfMeasure: product?.DefaultUnitOfMeasure,\n BasePrice: product?.BasePrice!,\n Price: product?.Price,\n AdjustedPrice: product?.Price,\n MasterProductId: product?.MasterProductId,\n PrimaryImageUrl: product?.PrimaryImageUrl,\n ExtensionProperties: product?.ExtensionProperties\n };\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n getCartState(this.props.context.actionContext).then(result => {\n this.setState({ valueher: 'value' });\n return result;\n });\n\n if (this.state.valueher === 'value') {\n return {\n ProductContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-product-collection__item',\n role: 'listitem',\n key: index\n },\n productComponent: (\n <>\n \n ArrayExtensions.hasElements(dimensionAvailability) &&\n dimensionAvailability[0].masterProductId === (product.MasterProductId ?? product.RecordId)\n )}\n cartData={this.state.cartState}\n />\n \n \n )\n };\n }\n return null;\n };\n\n /**\n * Get the active price for products.\n */\n private readonly _getActivePrice = async (): Promise => {\n const productsList = this.state.products;\n const products = await getPriceForProductSearchResult(\n new PriceForProductSearchResultInput(productsList),\n this.props.context.actionContext\n );\n if (Msdyn365.msdyn365Commerce.isBrowser) {\n await this._getProductsDimensionsAvailabilities(products);\n }\n\n this.setState({ products });\n };\n\n /**\n * Get the see all button.\n * @param recommendation - Recommendation.\n * @param headingLabel - Heading label.\n * @returns IProductComponentSeeAllViewProps - Product component see all view props.\n */\n private readonly _getSeeAllButton = (recommendation: string, headingLabel: string): React.ReactNode => {\n if (!Msdyn365.msdyn365Commerce.isBrowser) {\n return null;\n }\n\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n const searchPageLink = getUrlSync('search', this.props.context.actionContext);\n if (!searchPageLink) {\n return null;\n }\n var categoryId = '';\n // Get category Id\n if (this.props.config.productCollection['categoryIds']) {\n categoryId = this.props.config.productCollection['categoryIds'][0];\n }\n const url = new URL(searchPageLink, window.location.href);\n const extend_href = `${url.origin}/${categoryId}` + '.c';\n url.searchParams.set('recommendation', recommendation);\n url.searchParams.set('title', headingLabel);\n url.searchParams.set('catalogid', `${catalogId}`);\n\n return (\n \n
View All
\n
\n \n \n \n
\n \n );\n };\n}\n\nexport default ProductCollection;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable no-duplicate-imports */\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductCollectionViewProps, IProductComponentViewProps } from './product-collection';\n\nconst ProductCollectionView: React.FC = props => {\n const {\n heading,\n ProductCollectionContainer,\n products,\n SingleSlideCarouselComponentProps,\n GridComponentProps,\n isCarousel,\n seeAllButton\n } = props;\n\n if (products) {\n return (\n \n {heading}\n {seeAllButton}\n {isCarousel ? _renderCarousel(SingleSlideCarouselComponentProps, products) : _renderGrid(GridComponentProps, products)}\n \n );\n }\n props.context.telemetry.error('Product collection content is empty, module wont render.');\n return null;\n};\n\nconst _renderCarousel = (carouselContainer: INodeProps, items: IProductComponentViewProps[]): JSX.Element => {\n return {items && items.map(_renderProduct)};\n};\n\nconst _renderGrid = (gridContainer: INodeProps, items: IProductComponentViewProps[]): JSX.Element => {\n return {items && items.map(_renderProduct)};\n};\n\nconst _renderProduct = (product: IProductComponentViewProps): JSX.Element => {\n const { ProductContainer, productComponent } = product;\n\n return {productComponent};\n};\n\nexport default ProductCollectionView;\n","const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['product-collection'] = {\n c: () => require('partner/modules/product-collection/product-collection.tsx'),\n $type: 'containerModule',\n da: [{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'product-collection',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/product-collection'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|modules|product-collection|product-collection'] = {\n c: () => require('partner/modules/product-collection/product-collection.view.tsx'),\n cn: '__local__-__local__-product-collection'\n };\nviewDictionary['@msdyn365-commerce-modules|product-collection|modules|product-collection|product-collection'] = {\n c: () => require('@msdyn365-commerce-modules/product-collection/dist/lib/modules/product-collection/product-collection.view.js'),\n cn: '@msdyn365-commerce-modules-product-collection-product-collection'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductCollectionViewProps, IProductComponentViewProps } from './product-collection';\n\nconst ProductCollectionView: React.FC = props => {\n const {\n heading,\n ProductCollectionContainer,\n products,\n SingleSlideCarouselComponentProps,\n GridComponentProps,\n isCarousel,\n seeAllButton\n } = props;\n\n if (products) {\n return (\n \n {heading}\n {seeAllButton}\n {isCarousel ? _renderCarousel(SingleSlideCarouselComponentProps, products) : _renderGrid(GridComponentProps, products)}\n \n );\n }\n props.context.telemetry.error('Product collection content is empty, module wont render.');\n return null;\n};\n\nconst _renderCarousel = (carouselContainer: INodeProps, items: IProductComponentViewProps[]): JSX.Element => {\n return {items && items.map(_renderProduct)};\n};\n\nconst _renderGrid = (gridContainer: INodeProps, items: IProductComponentViewProps[]): JSX.Element => {\n return {items && items.map(_renderProduct)};\n};\n\nconst _renderProduct = (product: IProductComponentViewProps): JSX.Element => {\n const { ProductContainer, productComponent } = product;\n\n return {productComponent};\n};\n\nexport default ProductCollectionView;\n","module.exports = React;","module.exports = ReactDOM;"],"names":["ProductComponent","msdyn365Commerce","createComponent","_objectSpread","component","_ref","_product$Name","_getProductImageUrlFr","_getProductPageUrlFro","_product$AttributeVal","data","context","imageSettings","savingsText","freePriceText","originalPriceText","currentPriceText","ratingAriaLabel","ratingCountAriaLabel","allowBack","typeName","id","telemetryContent","quickViewButton","productComparisonButton","inventoryLabel","isPriceMinMaxEnabled","priceResources","dimensionAvailabilities","swatchItemAriaLabel","product","dimensionToPreSelectInProductCard","app","config","updateProductUrl","productDetailsPageUrl","coreContext","queryString","sourceUrl","URL","request","apiSettings","baseUrl","search","href","pathname","getDefaultSwatchSelected","productData","_productData$Attribut","_attributeSwatches$fi","AttributeValues","attributeSwatches","find","attributeValue","_attributeValue$KeyNa","KeyName","toLocaleLowerCase","Swatches","ArrayExtensions","hasElements","item","IsDefault","productUrl","getProductPageUrlSync","Name","RecordId","actionContext","undefined","productImageUrlFromSwatch","defaultSwatch","swatchProductImageUrls","ProductImageUrls","generateImageUrl","PrimaryImageUrl","getProductImageUrlFromDefaultSwatch","productPageUrlFromSwatch","SwatchValue","queryStringEncoded","encodeURIComponent","getProductPageUrlFromDefaultSwatch","productPageUrl","setProductPageUrl","useState","productImageUrl","setProductImageUrl","selectedSwatchItems","Dictionary","enableStockCheck","updatePageAndImageUrl","React","swatchItem","dimensionType","setValue","StringExtensions","isNullOrWhitespace","value","productPageUrlWithSwatch","includes","newUrl","searchParams","delete","toString","swatchProductImageUrl","productImageUrls","newImageUrl","swatchItems","validValues","map","_item$KeyName$toLocal","_item$KeyName","_item$Swatches$map","_item$Swatches","dimensionTypeValue","checkIfShouldDisplayAsSwatch","DimensionSwatchDisplayTypes","productCard","swatches","_item$RecordId","_swatchItem$SwatchVal","_swatchItem$SwatchVal2","_dimensionAvailabilit","itemId","colorHexCode","SwatchColorHexCode","imageUrl","SwatchImageUrl","isDefault","format","isDisabled","dimensionAvailability","_swatchItem$SwatchVal3","some","swatch","recordId","payLoad","getPayloadObject","attribute","getTelemetryAttributes","isUnitOfMeasureEnabled","unitOfMeasureDisplayType","getRatingAriaLabel","rating","ratingAriaLabelText","roundedRating","toFixed","getReviewAriaLabel","reviewCount","ratingCountAriaLabelText","Object","assign","onClick","onTelemetryClick","name","price","availability","reviewCountArialableText","renderLabel","cultureFormatter","formatCurrency","Price","AverageRating","TotalRatings","className","productCardimageSettings","gridSettings","fallbackImageUrl","altText","requestContext","emptyPlaceHolderImage","placeholderImageName","fallbackImageSource","image","src","fallBackSrc","imageProps","cropFocalRegion","Image","loadFailureBehavior","bypassHideOnFailure","renderProductPlacementImage","ProductComponentSwatchComponent","key","onSelectDimension","moduleTypeName","moduleId","productSearchResult","savingsPriceResourceText","freePriceResourceText","originalPriceResourceText","currentPriceResourceText","ProductTypeValue","IsMasterProduct","ProductType","Master","Standalone","BasePrice","AdjustedPrice","CustomerContextualPrice","MaxVariantPrice","MinVariantPrice","PriceComponent","renderPrice","unitOfMeasure","DefaultUnitOfMeasure","description","Description","hideRating","avgRating","totalRatings","ariaLabel","numberRatings","Number","RatingComponent","ratingCount","readOnly","renderRating","inventoryAvailabilityLabel","quickview","selectedDimensions","getValues","DimensionTypeValue","convertDimensionTypeToProductDimensionType","DimensionValue","Value","selectedProductId","renderQuickView","catalogId","validateCatalogId","renderProductComparisonButton","getCatalogId","TelemetryConstant","contentData","contentAction","recid","etext","telemetry","setTelemetryAttribute","IncrementalQuantity","IncrementalQuantity_1","constructor","props","_props$currentCount","_this$props$min","eventType","super","inputRef","isMobileView","isMobileCheck","isMobile","variant","VariantType","Browser","xs","w","sm","md","lg","xl","_validateMin","isNaN","this","state","currentInput","setState","_minValue","currentValue","Math","min","max","currentCount","isUpdating","_onIncrement","bind","_onDecrement","_removeITem","_handleChange","contentCategory","pgname","pageName","mname","moduleName","etype","defaultProps","nextState","_props$currentCount2","disabled","render","_this$props$inputQuan","_this$props$inputQuan2","glyphMinusClassName","decrementGlyphClass","removeClassName","decrementDisabled","isGiftCard","incrementDisabled","DecrementQuantity","decrementAttributes","IncrementQuantity","incrementAttributes","ariaLablelText","inputQuantityAriaLabel","extraClassDecrement","iconClassName","extraClassIncrement","console","log","button","title","decrementButtonAriaLabel","color","width","height","viewBox","fill","xmlns","d","stroke","transform","type","pattern","onChange","onBlur","role","ref","incrementButtonAriaLabel","invokeCallback","currQuantity","updatedQuantity","e","parseInt","target","_debounce","inputElement","current","HTMLInputElement","setAttribute","incrementGlyphClass","__decorate","observer","ProductCollectionQty","removeITem","getCartState","then","result","ItemId","removeItemFromCart","currentProductqQty","async","LineID","cartState","productInfow","getAddToCartInputFromProps","cartLinesData","cart","CartLines","findData","input","cartLineIds","LineId","removeCartLines","_props$orderDetailsPr","_props$data","products","orderDetailsProducts","filter","ObjectExtensions","isNullOrUndefined","simpleProduct","count","salesLine","Quantity","CatalogId","searchCriteriaInput","Context","ChannelId","channelId","IncludeAttributes","Ids","productId","productSearchResultsWithImages","ProductsDataActions","callerContext","newProductSearchResult","_productData$BasePric","Variant","quantity","_props$quantity","onChangeHandler","_this$props$data","newValue","productID","totalAvailableQuantity","axios","require","method","maxBodyLength","Infinity","url","headers","accept","oun","JSON","stringify","searchCriteria","ProductIds","QuantityUnitTypeValue","DefaultWarehouseOnly","response","_response$data","_response$data2","ProductWarehouseInventoryAvailabilities","length","_response$data3","respObject","ProductId","_respObject$","floor","PhysicalAvailable","catch","error","_cart","addOneItemToCart","isEmpty","updateCartId","oldQty","newQty","addToCartResult","updateCartLineQuantity","cartLineId","newQuantity","_props$productAvailab","addToCartInput","addProductToCart","availableQuantity","productAvailability","AvailableQuantity","additionalProperties","orderQuantityLimitsFeatureIsEnabled","isOrderQuantityLimitsFeatureEnabled","isPriceKeyedIn","customPrice","customPriceAmount","isAddEmailDeliveryItemToCart","shouldSkipSiteSettings","status","_getCartStatusUpdate","cartData","_SingleAddToCart","isBundleCollection","getQty","buttonAddtoCart","x","y","rx","filterUnits","in","values","dy","stdDeviation","in2","operator","mode","clipPath","strokeLinecap","strokeLinejoin","Node","minQuantityText","maxQuantityText","strokeWidth","layout","HeadingTag","ProductCollection","handleHeadingChange","event","heading","text","_getProductsDimensionsAvailabilities","dimensionsToDisplayOnProductCard","dimensionsInProductCard","dimensionsToDisplayAsSwatch","dimensionsAsSwatchType","validProducts","DimensionTypes","none","productsDimensionAvailabilities","getDimensionAvailabilitiesForProductSearchResultAction","DimensionAvailabilitiesForProductSearchResultInput","initProductState","productCollectionProducts","productCollection","equals","Msdyn365","isBrowser","_getProduct","index","_this$props$data$feat","trace","getTelemetryObject","telemetryPageName","friendlyName","resources","quickviewSlot","slots","productComparisonButtonSlot","reviewCountAriaLabelValue","ratingCountAriaLabelSingleUser","featureState","priceRangeSeparator","product1","MasterProductId","ExtensionProperties","_this$state$productsD","valueher","ProductContainer","tag","productComponent","priceFree","IsEnabled","_product$MasterProduc","masterProductId","_getActivePrice","productsList","getPriceForProductSearchResult","PriceForProductSearchResultInput","_getSeeAllButton","recommendation","headingLabel","searchPageLink","getUrlSync","categoryId","window","location","extend_href","origin","set","Button","seeAllButtonText","productPrices","enableAffiliationBasedPricing","user","isAuthenticated","shouldDisplaySeeAllButton","recommendationListId","isCarousel","carousel","headingComponent","editProps","onEdit","updatedProducts","getProductData","collectionGridBg","backgroundColor","replace","productCollectionViewProps","SingleSlideCarouselComponentProps","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","ProductCollectionContainer","moduleProps","style","background","classnames","GridComponentProps","seeAllButton","renderView","_renderCarousel","carouselContainer","items","_renderProduct","_renderGrid","gridContainer","Module","binding","modules","dataActions","c","$type","da","path","runOn","iNM","ns","n","p","pdp","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","__bindings__","viewDictionary","cn","module","exports","ReactDOM"],"sourceRoot":""}