{"version":3,"file":"static/js/642c0fd974a9f703997c.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/rwb-buybox/rwb-buybox-components.tsx?2bb8","webpack://Msdyn365.Commerce.Online/./src/modules/rwb-buybox/components/rwb-buybox-find-in-store.tsx?850d","webpack://Msdyn365.Commerce.Online/./src/modules/rwb-buybox/rwb-buybox.tsx?bc35","webpack://Msdyn365.Commerce.Online/./src/modules/rwb-buybox/rwb-buybox.view.tsx?f711","webpack://Msdyn365.Commerce.Online/./src/modules/rwb-incremental-quantity/RwbIncrementalQuantity.tsx?9f98","webpack://Msdyn365.Commerce.Online/./src/themes/rwb-adventureworks/views/components/rwb-buybox-add-to-order-template.tsx?3352","webpack://Msdyn365.Commerce.Online/./src/themes/rwb-adventureworks/views/rwb-buybox.view.tsx?1acc","webpack://Msdyn365.Commerce.Online/./lib/rwb-buybox/module-registration.js?9de5","webpack://Msdyn365.Commerce.Online/./src/store-selector-state-manager/base-store-selector-state-manager.ts?281e","webpack://Msdyn365.Commerce.Online/./src/store-selector-state-manager/map-store-selector-state-manager.ts?2ae0","webpack://Msdyn365.Commerce.Online/./src/store-selector-state-manager/store-selector-state-manager-data-action.ts?bd3e","webpack://Msdyn365.Commerce.Online/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online/external var \"ReactDOM\"?853b"],"sourcesContent":["import * as React from 'react';\nimport {\n IBuyboxState\n} from '@msdyn365-commerce-modules/buybox';\nimport { IRwbBuyboxProps } from './rwb-buybox.props.autogenerated';\nimport { IRwbBuyboxData } from './rwb-buybox.data';\n\nconst _getClassNamePrefix = (typeName: string): string => {\n return typeName.toLocaleLowerCase() === 'quickview' ? 'rwb-quickView' : 'rwb-buybox';\n};\n\nexport function getTotalInventory(\n props: IRwbBuyboxProps,\n state: IBuyboxState\n): React.ReactElement | undefined {\n\n const { typeName } = props;\n var className = _getClassNamePrefix(typeName);\n var totalInventoryClassName = `${className}__totalInventory`;\n var totalInventory = 0;\n var storeNum = 0;\n\n var preferredStore = props.data.storeSelectorStateManager.result?.preferredStore;\n var preferredStoreInventory = 0;\n var preferredStoreName ='';\n\n var availabilities = props.data.availabilitiesWithHours.result;\n availabilities?.forEach (availability=>{\n var itemAvailabilities = availability.OrgUnitAvailability?.ItemAvailabilities;\n var inventory = 0;\n if (itemAvailabilities && itemAvailabilities[0]) {\n inventory = itemAvailabilities[0].AvailableQuantity?itemAvailabilities[0].AvailableQuantity:0;\n storeNum++;\n if (availability.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId === preferredStore?.StoreId) {\n preferredStoreInventory = itemAvailabilities[0].AvailableQuantity?itemAvailabilities[0].AvailableQuantity:0;\n preferredStoreName = preferredStore?.StoreName? preferredStore?.StoreName:'';\n }\n }\n totalInventory += inventory;\n });\n\n if (preferredStore) {\n if (preferredStoreInventory === 0) {\n totalInventoryClassName += '__notInStock';\n return (\n
\n Not in stock in {preferredStoreName}\n
\n );\n }\n return (\n
\n {preferredStoreInventory} in stock in {preferredStoreName}\n
\n );\n } else {\n if (totalInventory === 0) {\n totalInventoryClassName += '__notInStock';\n return (\n
\n Not in stock in {storeNum} shops\n
\n );\n }\n return (\n
\n {totalInventory} in stock in {storeNum} shops\n
\n );\n }\n}","/*!\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\n/* eslint-disable no-duplicate-imports */\r\nimport {\r\n AddToCartBehavior,\r\n IAddToCartFailureResult,\r\n IAddToCartResources,\r\n ItemSuccessfullyAddedToCartNotification,\r\n PriceComponent\r\n} from '@msdyn365-commerce/components';\r\nimport { getUrlSync, ICoreContext, IImageSettings } from '@msdyn365-commerce/core';\r\nimport { ICartActionResult } from '@msdyn365-commerce/global-state';\r\nimport { DeliveryOption, FeatureState, OrgUnitLocation, ProductAvailableQuantity, ProductDimension } from '@msdyn365-commerce/retail-proxy';\r\nimport { NotificationsManager } from '@msdyn365-commerce-modules/notifications-core';\r\nimport {\r\n ArrayExtensions,\r\n DeliveryMode,\r\n IProductInventoryInformation,\r\n isAggregatedInventory,\r\n IFullOrgUnitAvailability\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getTelemetryObject, Heading, INodeProps, IPopupProps, Popup } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { BuyboxErrorBlock } from '@msdyn365-commerce-modules/buybox';\r\nimport { IBuyboxCallbacks, IBuyboxState } from '@msdyn365-commerce-modules/buybox';\r\nimport { getConfigureErrors, getGenericError } from '@msdyn365-commerce-modules/buybox';\r\nimport { IRwbBuyboxData } from '../rwb-buybox.data';\r\nimport { IRwbBuyboxProps, IRwbBuyboxResources } from '../rwb-buybox.props.autogenerated';\r\nimport { IStoreInfo } from '@msdyn365-commerce-modules/bopis-utilities';\r\nimport { getTotalInventory } from '../rwb-buybox-components';\r\n\r\nconst modalCloseButtonReference: React.RefObject = React.createRef();\r\n\r\n/**\r\n * FindinStore failure Interface.\r\n */\r\nexport interface IFindInStoreFailureResult {\r\n missingDimensions?: ProductDimension[];\r\n}\r\n\r\n/**\r\n * BuyBoxFindinStore View Props Interface.\r\n */\r\nexport interface IRwbBuyboxFindInStoreViewProps {\r\n storeSelector?: React.ReactNode;\r\n heading?: React.ReactNode;\r\n description?: React.ReactNode;\r\n inventory?:React.ReactNode;\r\n errors?: React.ReactNode;\r\n button?: React.ReactNode;\r\n button2?: React.ReactNode;\r\n productPickupOptionList?: React.ReactNode;\r\n\r\n modal?: React.ReactNode;\r\n\r\n ContainerProps: INodeProps;\r\n\r\n openFindInStoreDialog(): Promise;\r\n}\r\n\r\n/**\r\n * On click find store handler.\r\n * @param props -Buybox data.\r\n * @param state -Buybox state.\r\n * @param callbacks -Buybox callbacks.\r\n * @returns Find in store.\r\n */\r\nconst onClickFindInStoreHandler = (props: IRwbBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks) => async () => {\r\n await findInStoreOnClick(props, state, callbacks);\r\n};\r\n\r\nconst onClickFindInStoreHandler2 = (props: IRwbBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks) => async () => {\r\n await findInStoreOnClick2(props, state, callbacks);\r\n};\r\n/**\r\n * Inventory settings based on the inventory policy for aggregated availability.\r\n */\r\ninterface IInventorySettingsProps {\r\n isSectionDisabled: boolean;\r\n description: string;\r\n buttonText: string;\r\n buttonText2: string;\r\n}\r\n\r\n/**\r\n * The function defines the settings values for a given inventory configuration.\r\n * @param context - The context.\r\n * @param isStockCheck - Flag to enable inventory validation.\r\n * @param productAvailability - The product inventory information.\r\n * @param buyboxResources - The buybox string resources.\r\n * @param isLoading - Is loading.\r\n * @returns Boolean.\r\n */\r\nfunction getFindInStoreInventorySettings(\r\n context: ICoreContext,\r\n isStockCheck: boolean,\r\n productAvailability: IProductInventoryInformation[] | undefined,\r\n buyboxResources: IRwbBuyboxResources,\r\n isLoading?: boolean\r\n): IInventorySettingsProps {\r\n // If shouldValidateAggregation is true then is required to check for the product inventory, based on this the messaging will change\r\n // and the find in store button will be ensbled or disabled\r\n\r\n let isSectionDisabled: boolean;\r\n let buttonText;\r\n const buttonText2: string = \"Add to cart\";\r\n let description: string;\r\n\r\n let pickupInventory: IProductInventoryInformation | undefined;\r\n\r\n if (!isStockCheck || isLoading) {\r\n return {\r\n isSectionDisabled: false,\r\n buttonText: buyboxResources.findInStoreLinkText,\r\n buttonText2: buttonText2,\r\n description: buyboxResources.findInStoreDescriptionText\r\n };\r\n }\r\n\r\n if (productAvailability) {\r\n pickupInventory = productAvailability.find(pickup => pickup.deliveryType === DeliveryMode.pickup);\r\n }\r\n\r\n // If aggregated is enabled, then we need to validate the inventor check for find in store.\r\n // If an individual is selected, then we will always show a find in store button.\r\n if (isAggregatedInventory(context.actionContext)) {\r\n if (productAvailability && pickupInventory?.IsProductAvailable) {\r\n isSectionDisabled = false;\r\n buttonText = buyboxResources.findInStoreLinkText;\r\n description = buyboxResources.findInStoreDescriptionText;\r\n } else {\r\n isSectionDisabled = true;\r\n buttonText = buyboxResources.findInStoreNotAvailableTextButton;\r\n description = buyboxResources.findInStoreNotAvailableDescription;\r\n }\r\n } else {\r\n isSectionDisabled = false;\r\n buttonText = buyboxResources.findInStoreLinkText;\r\n description = buyboxResources.findInStoreDescriptionText;\r\n }\r\n\r\n return {\r\n isSectionDisabled,\r\n description,\r\n buttonText,\r\n buttonText2\r\n };\r\n}\r\n\r\n/**\r\n * Method to check if we have atleast one common delivery code between product and channel.\r\n * @param productdeliveryOptions - Product DeliveryOption List.\r\n * @param storePickUpOptionList - Channel DeliveryOption List.\r\n * @returns Boolean flag.\r\n */\r\nconst matchDeliveryOptions = (\r\n productdeliveryOptions: DeliveryOption[] | undefined,\r\n storePickUpOptionList: string[] | undefined\r\n): boolean => {\r\n const deliveryOption: string[] = [];\r\n productdeliveryOptions?.map(delivery => {\r\n const pickup = storePickUpOptionList?.find(deliveryCode => deliveryCode === delivery.Code);\r\n if (pickup) {\r\n deliveryOption.push(pickup);\r\n }\r\n return deliveryOption;\r\n });\r\n\r\n return ArrayExtensions.hasElements(deliveryOption);\r\n};\r\n\r\nexport function getBuyboxFindInStore(\r\n props: IRwbBuyboxProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks\r\n): IRwbBuyboxFindInStoreViewProps | undefined {\r\n const {\r\n data,\r\n slots: { storeSelector },\r\n resources: {\r\n priceFree,\r\n originalPriceText,\r\n currentPriceText,\r\n findInStoreHeaderText,\r\n buyBoxGoToCartText,\r\n buyBoxContinueShoppingText,\r\n closeNotificationLabel,\r\n buyBoxSingleItemText,\r\n buyBoxMultiLineItemFormatText,\r\n buyBoxHeaderMessageText,\r\n descriptionTextToShowAllPickupOptions\r\n },\r\n context: {\r\n request: { channel: { PickupDeliveryModeCode } = { PickupDeliveryModeCode: undefined } }\r\n }\r\n } = props;\r\n\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const product = data?.product?.result;\r\n const price = data?.productPrice?.result;\r\n const cart = data?.cart?.result;\r\n //const preferredStoreInfo: IStoreInfo | undefined = data.storeSelectorStateManager.result?.preferredStore;\r\n //const preferredStoreId = preferredStoreInfo?.StoreId ? preferredStoreInfo.StoreId : '';\r\n // if (typeof window !== undefined){\r\n // let btnArray =window.document.getElementsByClassName('ms-buybox__find-in-store-button');\r\n // var btn:any =btnArray[1];\r\n // btn.disabled = preferredStoreId==='';\r\n\r\n // }\r\n const deliveryOptions = data?.deliveryOptions?.result;\r\n const productAvailability = data.productAvailableQuantity?.result;\r\n const retailMulitplePickupMFeatureState = data?.featureState?.result?.find(\r\n (featureState: FeatureState) => featureState.Name === multiplePickupStoreSwitchName\r\n )?.IsEnabled;\r\n const channelDeliveryOptionConfig = data?.channelDeliveryOptionConfig?.result;\r\n\r\n const missingDimensions = product?.Dimensions?.filter(dimension => !dimension.DimensionValue?.Value);\r\n\r\n const {\r\n errorState: { configureErrors, quantityError, otherError, errorHost },\r\n modalOpen,\r\n quantity\r\n } = state;\r\n\r\n const { isSectionDisabled, buttonText, buttonText2, description } = getFindInStoreInventorySettings(\r\n props.context,\r\n props.context.app.config.enableStockCheck,\r\n productAvailability,\r\n props.resources,\r\n props.data.productAvailableQuantity.status === 'LOADING' || ArrayExtensions.hasElements(missingDimensions)\r\n );\r\n\r\n if (!product || !ArrayExtensions.hasElements(storeSelector)) {\r\n return undefined;\r\n }\r\n\r\n if (!deliveryOptions || !deliveryOptions.DeliveryOptions) {\r\n return undefined;\r\n }\r\n\r\n // If no delivery options present on the product, or none of the delivery options\r\n // match the PickupDeliveryModeCode, that means the item cannot be used for BOPIS\r\n if (retailMulitplePickupMFeatureState && channelDeliveryOptionConfig) {\r\n if (!matchDeliveryOptions(deliveryOptions.DeliveryOptions, channelDeliveryOptionConfig?.PickupDeliveryModeCodes)) {\r\n return undefined;\r\n }\r\n } else if (\r\n !PickupDeliveryModeCode ||\r\n !deliveryOptions.DeliveryOptions.find((option: DeliveryOption) => option.Code === PickupDeliveryModeCode)\r\n ) {\r\n return undefined;\r\n }\r\n\r\n const dialogStrings = {\r\n goToCartText: buyBoxGoToCartText,\r\n continueShoppingText: buyBoxContinueShoppingText,\r\n closeNotificationLabel,\r\n headerItemOneText: buyBoxSingleItemText,\r\n headerItemFormatText: buyBoxMultiLineItemFormatText,\r\n headerMessageText: buyBoxHeaderMessageText,\r\n freePriceText: priceFree,\r\n originalPriceText,\r\n currentPriceText\r\n };\r\n\r\n const priceComponent = price ? (\r\n \r\n ) : (\r\n ''\r\n );\r\n\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=240&h=240&m=6', w: 0, h: 0 },\r\n lg: { q: 'w=240&h=240&m=6', w: 0, h: 0 },\r\n xl: { q: 'w=240&h=240&m=6', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n const popupProps: IPopupProps = {\r\n context: props.context,\r\n className: 'ms-buybox',\r\n id: props.id,\r\n typeName: props.typeName,\r\n data: { product: props.data.product?.result, price: props.data.productPrice?.result },\r\n dialogStrings,\r\n imageSettings: defaultImageSettings,\r\n gridSettings: props.context.request.gridSettings,\r\n productQuantity: quantity,\r\n priceComponent,\r\n navigationUrl: getUrlSync('cart', props.context.actionContext),\r\n modalOpen,\r\n setModalOpen: callbacks.changeModalOpen\r\n };\r\n const renderModalPopup = ;\r\n\r\n // let cookieValue;\r\n // if (typeof window !== 'undefined') {\r\n // let storage = window.localStorage;\r\n // cookieValue = storage.getItem('_msdyn365__preferredStore_');\r\n // }\r\n\r\n //const cookieValue = '{\"StoreId\":\"KCY\",\"StoreName\":\"Kansas City Pro Shop\",\"Latitude\":38.962888,\"Longitude\":-94.718959}';\r\n return {\r\n ContainerProps: {\r\n className: 'ms-buybox__find-in-store'\r\n },\r\n\r\n storeSelector: storeSelector[0],\r\n\r\n openFindInStoreDialog: onClickFindInStoreHandler(props, state, callbacks),\r\n\r\n heading: ,\r\n\r\n description:

{description}

,\r\n inventory:getTotalInventory (props, state),\r\n productPickupOptionList:\r\n retailMulitplePickupMFeatureState && !isSectionDisabled ? (\r\n <>\r\n

{descriptionTextToShowAllPickupOptions}

\r\n
    \r\n {deliveryOptions.DeliveryOptions.map((item: DeliveryOption) => {\r\n return (\r\n
  • \r\n {item.Description}\r\n
  • \r\n );\r\n })}\r\n
\r\n \r\n ) : null,\r\n errors: (\r\n \r\n ),\r\n\r\n button: (\r\n \r\n {buttonText}\r\n \r\n ),\r\n button2: (\r\n \r\n {buttonText2}\r\n \r\n ),\r\n\r\n modal: renderModalPopup\r\n };\r\n}\r\n\r\n/**\r\n * Handler for find in store button.\r\n * @param props - BuyBox data.\r\n * @param state - BuyBox state.\r\n * @param callbacks - BuyBox callbacks.\r\n * @returns - Promise.\r\n */\r\nasync function findInStoreOnClick(props: IRwbBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks): Promise {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager },\r\n cart: { result: cart },\r\n productAvailableQuantity: { result: productAvailableQuantity }\r\n\r\n },\r\n resources,\r\n context,\r\n modules\r\n } = props;\r\n\r\n const { selectedProduct, quantity } = state;\r\n\r\n let dataProduct = props.data.product.result;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const retailMulitplePickupMFeatureState = props.data?.featureState?.result?.find(\r\n (featureState: FeatureState) => featureState.Name === multiplePickupStoreSwitchName\r\n )?.IsEnabled;\r\n\r\n if (selectedProduct) {\r\n dataProduct = (await selectedProduct) || dataProduct;\r\n }\r\n\r\n if (!dataProduct || !storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n const product = dataProduct;\r\n\r\n const missingDimensions =\r\n product.Dimensions &&\r\n product.Dimensions.filter((dimension: ProductDimension) => !(dimension.DimensionValue && dimension.DimensionValue.Value));\r\n\r\n let storeSelectorId: string = '';\r\n if (modules && Object.keys(modules).length > 0 && modules.storeSelector && modules.storeSelector.length > 0) {\r\n storeSelectorId = modules.storeSelector[0].id;\r\n }\r\n\r\n if (missingDimensions && missingDimensions.length > 0) {\r\n if (callbacks.updateErrorState) {\r\n callbacks.updateErrorState({\r\n errorHost: 'FINDINSTORE',\r\n configureErrors: getConfigureErrors(missingDimensions, resources)\r\n });\r\n }\r\n } else {\r\n storeSelectorStateManager\r\n .openDialog({\r\n product,\r\n id: storeSelectorId,\r\n parentElementRef: modalCloseButtonReference,\r\n deliveryOptions: retailMulitplePickupMFeatureState ? props.data.deliveryOptions.result : undefined,\r\n onLocationSelected: async (orgUnitLocation: OrgUnitLocation, deliveryMode: string) => {\r\n if (!cart) {\r\n return Promise.resolve();\r\n }\r\n\r\n const behavior = props.context?.app?.config?.addToCartBehavior;\r\n\r\n return cart\r\n .addProductToCart({ product, count: quantity, location: orgUnitLocation, deliveryMode })\r\n .then((result: ICartActionResult) => {\r\n if (result.status === 'FAILED' && result.substatus === 'MAXQUANTITY') {\r\n callbacks.changeModalOpen(false);\r\n let productAvailability: ProductAvailableQuantity | undefined;\r\n if (state.productAvailableQuantity) {\r\n productAvailability = state.productAvailableQuantity.ProductAvailableQuantity;\r\n } else if (productAvailableQuantity && ArrayExtensions.hasElements(productAvailableQuantity)) {\r\n const shippingInventory = productAvailableQuantity.find(\r\n shipping => shipping.deliveryType === DeliveryMode.pickup\r\n );\r\n productAvailability = shippingInventory?.ProductAvailableQuantity;\r\n } else {\r\n productAvailability = undefined;\r\n }\r\n const failureResult: IAddToCartFailureResult = {\r\n failureReason: 'CARTACTIONFAILED',\r\n cartActionResult: { status: result.status, substatus: result.substatus }\r\n };\r\n callbacks.updateErrorState({\r\n errorHost: 'ADDTOCART',\r\n configureErrors: {},\r\n otherError: getGenericError(\r\n failureResult,\r\n cart,\r\n resources,\r\n context,\r\n product,\r\n productAvailability,\r\n orgUnitLocation\r\n )\r\n });\r\n } else {\r\n callbacks.updateErrorState({\r\n configureErrors: {}\r\n });\r\n const navigationUrl = getUrlSync('cart', context.actionContext);\r\n if (behavior === undefined || behavior === AddToCartBehavior.goToCart) {\r\n if (result.status === 'SUCCESS' && navigationUrl) {\r\n window.location.assign(navigationUrl);\r\n }\r\n } else if (behavior === AddToCartBehavior.showModal) {\r\n callbacks.changeModalOpen(true);\r\n } else if (behavior === AddToCartBehavior.showNotification) {\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=240&h=240&m=6', w: 0, h: 0 },\r\n lg: { q: 'w=240&h=240&m=6', w: 0, h: 0 },\r\n xl: { q: 'w=240&h=240&m=6', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n const telemetryContent = getTelemetryObject(\r\n props.context.request.telemetryPageName!,\r\n props.friendlyName,\r\n props.telemetry\r\n );\r\n const dialogStrings: IAddToCartResources = {\r\n goToCartText: resources.buyBoxGoToCartText,\r\n continueShoppingText: resources.buyBoxContinueShoppingText,\r\n closeNotificationLabel: resources.closeNotificationLabel,\r\n headerItemOneText: resources.buyBoxSingleItemText,\r\n headerItemFormatText: resources.buyBoxMultiLineItemFormatText,\r\n headerMessageText: resources.buyBoxHeaderMessageText,\r\n freePriceText: resources.priceFree,\r\n originalPriceText: resources.originalPriceText,\r\n currentPriceText: resources.currentPriceText,\r\n addedQuantityText: resources.addedQuantityText\r\n };\r\n const notification = new ItemSuccessfullyAddedToCartNotification(\r\n props.context,\r\n dialogStrings,\r\n defaultImageSettings,\r\n props.context.request.gridSettings,\r\n product,\r\n props.data.productPrice?.result,\r\n quantity,\r\n navigationUrl,\r\n telemetryContent,\r\n props.id,\r\n props.typeName\r\n );\r\n NotificationsManager.instance().addNotification(notification);\r\n }\r\n }\r\n })\r\n .catch((error: Error) => {\r\n if (props.telemetry) {\r\n props.telemetry.exception(error);\r\n props.telemetry.debug('Unable to add product to cart');\r\n }\r\n });\r\n }\r\n })\r\n .catch((error: Error) => {\r\n if (props.telemetry) {\r\n props.telemetry.error(error.message);\r\n props.telemetry.debug('Unable to find in store');\r\n }\r\n });\r\n }\r\n}\r\n\r\n\r\nasync function findInStoreOnClick2(props: IRwbBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks): Promise {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager },\r\n cart: { result: cart },\r\n productAvailableQuantity: { result: productAvailableQuantity },\r\n availabilitiesWithHours: { result: availabilitiesWithHours },\r\n storeLocations: { result: storeLocations }\r\n },\r\n resources,\r\n context//,\r\n //modules\r\n } = props;\r\n\r\n const { selectedProduct, quantity } = state;\r\n\r\n let dataProduct = props.data.product.result;\r\n //const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n // const retailMulitplePickupMFeatureState = props.data?.featureState?.result?.find(\r\n // (featureState: FeatureState) => featureState.Name === multiplePickupStoreSwitchName\r\n // )?.IsEnabled;\r\n if (selectedProduct) {\r\n dataProduct = (await selectedProduct) || dataProduct;\r\n }\r\n\r\n if (!dataProduct || !storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n const preferredStoreInfo: IStoreInfo | undefined = props.data.storeSelectorStateManager.result?.preferredStore;\r\n const preferredStoreId = preferredStoreInfo?.StoreId ? preferredStoreInfo.StoreId : '';\r\n\r\n if (preferredStoreId ==='') {\r\n return findInStoreOnClick(props, state, callbacks);\r\n }\r\n const product = dataProduct;\r\n\r\n const missingDimensions =\r\n product.Dimensions &&\r\n product.Dimensions.filter((dimension: ProductDimension) => !(dimension.DimensionValue && dimension.DimensionValue.Value));\r\n\r\n\r\n if (missingDimensions && missingDimensions.length > 0) {\r\n if (callbacks.updateErrorState) {\r\n callbacks.updateErrorState({\r\n errorHost: 'FINDINSTORE',\r\n configureErrors: getConfigureErrors(missingDimensions, resources)\r\n });\r\n }\r\n } else {\r\n if (!cart || preferredStoreId ==='') {\r\n return Promise.resolve();\r\n }\r\n // const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\r\n // const isLocatorView = modeDefault === modeEnum.findStores;\r\n const shouldHideInventory = false;\r\n const behavior = props.context?.app?.config?.addToCartBehavior;\r\n const storeLocationList: IFullOrgUnitAvailability[] | undefined = shouldHideInventory ? storeLocations : availabilitiesWithHours;\r\n if (storeLocationList !== undefined) {\r\n const storeLocation: IFullOrgUnitAvailability | undefined = storeLocationList?.find(location => {\r\n return location.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreId;\r\n });\r\n const orgUnitLocation = storeLocation?.OrgUnitAvailability?.OrgUnitLocation;\r\n const deliveryOptions = props.data.deliveryOptions.result?.DeliveryOptions;\r\n const deliveryMode:string|undefined = deliveryOptions? deliveryOptions[0]?.Code:'';\r\n\r\n return cart\r\n .addProductToCart({ product, count: quantity, location: orgUnitLocation, deliveryMode })\r\n .then((result: ICartActionResult) => {\r\n if (result.status === 'FAILED' && result.substatus === 'MAXQUANTITY') {\r\n callbacks.changeModalOpen(false);\r\n let productAvailability: ProductAvailableQuantity | undefined;\r\n if (state.productAvailableQuantity) {\r\n productAvailability = state.productAvailableQuantity.ProductAvailableQuantity;\r\n } else if (productAvailableQuantity && ArrayExtensions.hasElements(productAvailableQuantity)) {\r\n const shippingInventory = productAvailableQuantity.find(\r\n shipping => shipping.deliveryType === DeliveryMode.pickup\r\n );\r\n productAvailability = shippingInventory?.ProductAvailableQuantity;\r\n } else {\r\n productAvailability = undefined;\r\n }\r\n const failureResult: IAddToCartFailureResult = {\r\n failureReason: 'CARTACTIONFAILED',\r\n cartActionResult: { status: result.status, substatus: result.substatus }\r\n };\r\n callbacks.updateErrorState({\r\n errorHost: 'ADDTOCART',\r\n configureErrors: {},\r\n otherError: getGenericError(\r\n failureResult,\r\n cart,\r\n resources,\r\n context,\r\n product,\r\n productAvailability,\r\n orgUnitLocation\r\n )\r\n });\r\n } else {\r\n callbacks.updateErrorState({\r\n configureErrors: {}\r\n });\r\n const navigationUrl = getUrlSync('cart', context.actionContext);\r\n if (behavior === undefined || behavior === AddToCartBehavior.goToCart) {\r\n if (result.status === 'SUCCESS' && navigationUrl) {\r\n window.location.assign(navigationUrl);\r\n }\r\n } else if (behavior === AddToCartBehavior.showModal) {\r\n callbacks.changeModalOpen(true);\r\n } else if (behavior === AddToCartBehavior.showNotification) {\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=240&h=240&m=6', w: 0, h: 0 },\r\n lg: { q: 'w=240&h=240&m=6', w: 0, h: 0 },\r\n xl: { q: 'w=240&h=240&m=6', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n const telemetryContent = getTelemetryObject(\r\n props.context.request.telemetryPageName!,\r\n props.friendlyName,\r\n props.telemetry\r\n );\r\n const dialogStrings: IAddToCartResources = {\r\n goToCartText: resources.buyBoxGoToCartText,\r\n continueShoppingText: resources.buyBoxContinueShoppingText,\r\n closeNotificationLabel: resources.closeNotificationLabel,\r\n headerItemOneText: resources.buyBoxSingleItemText,\r\n headerItemFormatText: resources.buyBoxMultiLineItemFormatText,\r\n headerMessageText: resources.buyBoxHeaderMessageText,\r\n freePriceText: resources.priceFree,\r\n originalPriceText: resources.originalPriceText,\r\n currentPriceText: resources.currentPriceText,\r\n addedQuantityText: resources.addedQuantityText\r\n };\r\n const notification = new ItemSuccessfullyAddedToCartNotification(\r\n props.context,\r\n dialogStrings,\r\n defaultImageSettings,\r\n props.context.request.gridSettings,\r\n product,\r\n props.data.productPrice?.result,\r\n quantity,\r\n navigationUrl,\r\n telemetryContent,\r\n props.id,\r\n props.typeName\r\n );\r\n NotificationsManager.instance().addNotification(notification);\r\n }\r\n }\r\n })\r\n .catch((error: Error) => {\r\n if (props.telemetry) {\r\n props.telemetry.exception(error);\r\n props.telemetry.debug('Unable to add product to cart');\r\n }\r\n });\r\n }\r\n return Promise.resolve();\r\n }\r\n\r\n}\r\n","/*!\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\n/* eslint-disable no-duplicate-imports */\r\nimport { getCatalogId, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core-internal';\r\nimport {\r\n CommerceProperty,\r\n ProductDeliveryOptions,\r\n ProductDimensionValue,\r\n ProductDimensionValueInventoryAvailability,\r\n ProductPrice,\r\n ReleasedProductType,\r\n SimpleProduct\r\n} from '@msdyn365-commerce/retail-proxy';\r\nimport { BulkPurchase } from '@msdyn365-commerce-modules/bulk-purchase';\r\nimport {\r\n ArrayExtensions,\r\n DeliveryMode,\r\n FinitePromiseQueue,\r\n FinitePromiseQueueError,\r\n getDeliveryOptionsForSelectedVariant,\r\n GetDeliveryOptionsForSelectedVariantInput,\r\n getDimensionsForSelectedVariant,\r\n GetDimensionsForSelectedVariantInput,\r\n getInventoryLevelCodeFromDimensionValue,\r\n getPriceForSelectedVariant,\r\n getProductAvailabilitiesForSelectedVariant,\r\n getSelectedVariant,\r\n IDimensionsApp,\r\n IDimensionValueForSelectedVariant,\r\n InventoryLevelValues,\r\n IProductInventoryInformation,\r\n IPromiseQueue,\r\n PriceForSelectedVariantInput,\r\n ProductAvailabilitiesForSelectedVariantInput,\r\n SelectedVariantInput,\r\n setDimensionValuesToQuery\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n getBuyboxAddToCart,\r\n getBuyBoxInventoryLabel,\r\n getBuyboxKeyInPrice,\r\n getBuyboxProductAddToOrderTemplate,\r\n getBuyboxProductAddToWishlist,\r\n getBuyboxProductComparisonButton,\r\n getBuyboxProductDescription,\r\n getBuyboxProductPrice,\r\n getBuyboxProductQuantity,\r\n getBuyboxProductRating,\r\n getBuyboxProductTitle,\r\n getBuyboxProductUnitOfMeasure,\r\n getBuyboxShopSimilarButton,\r\n getQuantityLimitsMessages,\r\n RetailDefaultOrderQuantityLimitsFeatureName\r\n} from '@msdyn365-commerce-modules/buybox';\r\n\r\nimport {getTotalInventory} from './rwb-buybox-components';\r\nimport { getBuyboxProductConfigure } from '@msdyn365-commerce-modules/buybox';\r\nimport {\r\n IBuyboxAddToCartViewProps,\r\n IBuyboxAddToOrderTemplateViewProps,\r\n IBuyboxAddToWishlistViewProps,\r\n IBuyboxCallbacks,\r\n IBuyboxCommonData,\r\n IBuyboxExtentedProps,\r\n IBuyboxKeyInPriceViewProps,\r\n IBuyboxProductConfigureViewProps,\r\n IBuyboxProductQuantityViewProps,\r\n IBuyboxShopSimilarLookViewProps,\r\n IBuyboxState,\r\n IErrorState,\r\n ShopSimiliarButtonType\r\n} from '@msdyn365-commerce-modules/buybox';\r\nimport { IRwbBuyboxData } from './rwb-buybox.data';\r\nimport { IRwbBuyboxProps, IRwbBuyboxResources } from './rwb-buybox.props.autogenerated';\r\nimport { getBuyboxFindInStore, IRwbBuyboxFindInStoreViewProps } from './components/rwb-buybox-find-in-store';\r\nimport { RecentlyViewedState } from '@msdyn365-commerce-modules/buybox';\r\n\r\nexport interface IRwbBuyboxViewProps extends IRwbBuyboxProps {\r\n state: IBuyboxState;\r\n ModuleProps: IModuleProps;\r\n ProductInfoContainerProps: INodeProps;\r\n MediaGalleryContainerProps: INodeProps;\r\n callbacks: IBuyboxCallbacks;\r\n mediaGallery?: React.ReactNode;\r\n title?: React.ReactNode;\r\n description?: React.ReactNode;\r\n rating?: React.ReactNode;\r\n price?: React.ReactNode;\r\n productComparisonButton?: React.ReactNode;\r\n bulkPurchaseLink?: React.ReactNode;\r\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps;\r\n addToWishlist?: IBuyboxAddToWishlistViewProps;\r\n max: number | undefined;\r\n addToCart: IBuyboxAddToCartViewProps;\r\n findInStore?: IRwbBuyboxFindInStoreViewProps;\r\n quantity?: IBuyboxProductQuantityViewProps;\r\n configure?: IBuyboxProductConfigureViewProps;\r\n inventoryLabel?: React.ReactNode;\r\n shopSimilarLook?: IBuyboxShopSimilarLookViewProps;\r\n shopSimilarDescription?: IBuyboxShopSimilarLookViewProps;\r\n quantityLimitsMessages: React.ReactNode;\r\n telemetryContent?: ITelemetryContent;\r\n keyInPrice?: IBuyboxKeyInPriceViewProps;\r\n unitOfMeasure?: React.ReactNode;\r\n totalInventory?:React.ReactNode\r\n}\r\n\r\n/**\r\n * Buybox Module.\r\n */\r\nclass Buybox extends React.PureComponent, IBuyboxState> {\r\n /**\r\n * A queue of tasks of processing the changes in the dimensions.\r\n * Limit to two processes:\r\n * 1 - for the current process, which is under execution at the moment.\r\n * 2 - next process, which will process the latest version of data.\r\n * @remark Enqueueing new promises will discard the previous ones (except the one which is under processing).\r\n */\r\n private readonly dimensionUpdateQueue: IPromiseQueue = new FinitePromiseQueue(2);\r\n\r\n private dimensions: { [id: number]: string } = {};\r\n\r\n private readonly buyboxCallbacks: IBuyboxCallbacks = {\r\n updateQuantity: (newQuantity: number): boolean => {\r\n const errorState = { ...this.state.errorState };\r\n errorState.quantityError = undefined;\r\n errorState.otherError = undefined;\r\n\r\n this.setState({ quantity: newQuantity, errorState });\r\n return true;\r\n },\r\n updateErrorState: (newErrorState: IErrorState): void => {\r\n this.setState({ errorState: newErrorState });\r\n },\r\n updateSelectedProduct: (\r\n newSelectedProduct: Promise,\r\n newInventory: IProductInventoryInformation | undefined,\r\n newPrice: ProductPrice | undefined,\r\n newDeliveryOptions: ProductDeliveryOptions | undefined\r\n ): void => {\r\n this.setState({\r\n selectedProduct: newSelectedProduct,\r\n productAvailableQuantity: newInventory,\r\n productDeliveryOptions: newDeliveryOptions\r\n });\r\n this._updatePrice(newPrice);\r\n },\r\n dimensionSelectedAsync: async (selectedDimensionId: number, selectedDimensionValueId: string): Promise => {\r\n this.dimensions[selectedDimensionId] = selectedDimensionValueId;\r\n return this.dimensionUpdateQueue\r\n .enqueue(async () => {\r\n return this._updateDimensions();\r\n })\r\n .catch((error: unknown) => {\r\n // Ignore discarded processes.\r\n if (error !== FinitePromiseQueueError.ProcessWasDiscardedFromTheQueue) {\r\n throw error;\r\n }\r\n });\r\n },\r\n getDropdownName: (dimensionType: number, resources: IRwbBuyboxResources): string => {\r\n return this._getDropdownName(dimensionType, resources);\r\n },\r\n changeModalOpen: (isModalOpen: boolean): void => {\r\n this.setState({ modalOpen: isModalOpen });\r\n },\r\n changeUpdatingDimension: (isUpdatingDimension: boolean): void => {\r\n this.setState({ isUpdatingDimension });\r\n },\r\n\r\n /**\r\n * Update isUpdatingDeliveryOptions state.\r\n *\r\n * @param isUpdatingDeliveryOptions - The status of updating delivery options.\r\n */\r\n changeUpdatingDeliveryOptions: (isUpdatingDeliveryOptions: boolean): void => {\r\n this.setState({ isUpdatingDeliveryOptions });\r\n },\r\n\r\n updateKeyInPrice: (customPrice: number): void => {\r\n // Remove custom amount error when updating the custom price\r\n const errorState = { ...this.state.errorState };\r\n errorState.customAmountError = undefined;\r\n\r\n this.setState({ isPriceKeyedIn: true, keyInPriceAmount: customPrice, errorState });\r\n this._updatePrice(this.state.productPrice, customPrice);\r\n }\r\n };\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n public constructor(props: IRwbBuyboxProps, state: IBuyboxState) {\r\n super(props);\r\n this.state = {\r\n errorState: {\r\n configureErrors: {}\r\n },\r\n quantity: 1,\r\n min: undefined,\r\n max: undefined,\r\n selectedProduct: undefined,\r\n productPrice: undefined,\r\n productDeliveryOptions: undefined,\r\n\r\n modalOpen: false,\r\n isUpdatingDimension: false,\r\n isUpdatingDeliveryOptions: false\r\n };\r\n this.telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n const {\r\n data: {\r\n product: { result: product },\r\n productPrice\r\n },\r\n context\r\n } = this.props;\r\n\r\n productPrice.then(async result => {\r\n this._updatePrice(result);\r\n });\r\n\r\n if (product) {\r\n // Check if the product is service or not by product type\r\n if (product.ItemTypeValue === ReleasedProductType.Service) {\r\n this.setState({ isServiceItem: true });\r\n }\r\n await this._updateQuantitiesInState(product);\r\n }\r\n\r\n if (product && context.app.config.maxRecentlyViewedItemsCount > 0) {\r\n RecentlyViewedState.instance(this.props.context, context.app.config.maxRecentlyViewedItemsCount, product.RecordId);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n slots: { mediaGallery, productComparisonButton },\r\n data: {\r\n product: { result: product }\r\n },\r\n config: { className = '' }\r\n } = this.props;\r\n\r\n const { max } = this.state;\r\n\r\n if (!product) {\r\n this.props.context.telemetry.error('Product content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n const props = this.props as IBuyboxExtentedProps;\r\n const defaultMinimumKeyInPrice = 10;\r\n const defaultMaximumKeyInPrice = 100;\r\n\r\n const context = this.props.context as ICoreContext;\r\n const inventoryLevel = context.app.config.inventoryLevel;\r\n const dimensionValuesWithInventory = ArrayExtensions.flatten(\r\n ArrayExtensions.validValues(this.props.data.productDimensions.result?.map(value => value.dimensionValuesWithInventory))\r\n );\r\n const hasAvailableProducts =\r\n !ArrayExtensions.hasElements(dimensionValuesWithInventory) ||\r\n dimensionValuesWithInventory.some((value: unknown) => {\r\n const inventoryLevelCode = getInventoryLevelCodeFromDimensionValue(\r\n value as ProductDimensionValueInventoryAvailability,\r\n inventoryLevel\r\n );\r\n return inventoryLevelCode !== InventoryLevelValues.outOfStock;\r\n });\r\n\r\n const viewProps: IRwbBuyboxViewProps = {\r\n ...(this.props as IRwbBuyboxProps),\r\n state: this.state,\r\n mediaGallery: mediaGallery && mediaGallery.length > 0 ? mediaGallery[0] : undefined,\r\n ModuleProps: {\r\n moduleProps: this.props,\r\n className: classnames('ms-buybox', className)\r\n },\r\n ProductInfoContainerProps: {\r\n className: 'ms-buybox__content'\r\n },\r\n MediaGalleryContainerProps: {\r\n className: 'ms-buybox__media-gallery'\r\n },\r\n telemetryContent: this.telemetryContent,\r\n callbacks: this.buyboxCallbacks,\r\n title: getBuyboxProductTitle(props),\r\n description: getBuyboxProductDescription(props),\r\n bulkPurchaseLink: this._renderBuyboxBulkPurchaseLink(),\r\n unitOfMeasure: getBuyboxProductUnitOfMeasure(props),\r\n configure: getBuyboxProductConfigure(props, this.state, this.buyboxCallbacks),\r\n findInStore: getBuyboxFindInStore(this.props, this.state, this.buyboxCallbacks),\r\n price: getBuyboxProductPrice(props, this.state),\r\n addToCart: getBuyboxAddToCart(\r\n props,\r\n this.state,\r\n this.buyboxCallbacks,\r\n defaultMinimumKeyInPrice,\r\n defaultMaximumKeyInPrice,\r\n undefined,\r\n hasAvailableProducts\r\n ),\r\n productComparisonButton: ArrayExtensions.hasElements(productComparisonButton)\r\n ? getBuyboxProductComparisonButton(\r\n productComparisonButton[0],\r\n product,\r\n getCatalogId(this.props.context.request),\r\n this.state\r\n )\r\n : undefined,\r\n addToOrderTemplate: getBuyboxProductAddToOrderTemplate(props, this.state, this.buyboxCallbacks),\r\n addToWishlist: getBuyboxProductAddToWishlist(props, this.state, this.buyboxCallbacks),\r\n rating: !props.context.app.config.hideRating && getBuyboxProductRating(props),\r\n quantity: product.IsGiftCard ? undefined : getBuyboxProductQuantity(props, this.state, this.buyboxCallbacks),\r\n inventoryLabel: getBuyBoxInventoryLabel(props),\r\n shopSimilarLook:\r\n this.props.config.enableShopSimilarLooks && !product.IsGiftCard\r\n ? getBuyboxShopSimilarButton(props, ShopSimiliarButtonType.Looks)\r\n : undefined,\r\n shopSimilarDescription:\r\n this.props.config.enableShopSimilarDescription && !product.IsGiftCard\r\n ? getBuyboxShopSimilarButton(props, ShopSimiliarButtonType.Description)\r\n : undefined,\r\n keyInPrice:\r\n this.props.config.enableKeyInPrice && this.state.isCustomPriceSelected\r\n ? getBuyboxKeyInPrice(props, this.state, this.buyboxCallbacks)\r\n : undefined,\r\n quantityLimitsMessages: getQuantityLimitsMessages(props, this.state),\r\n totalInventory: getTotalInventory(this.props, this.state),\r\n max\r\n\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Handles anchor click event and scrolls to the given bulk purchase module.\r\n * @param bulkPurchaseModule - Bulk purchase module.\r\n * @returns Handler.\r\n */\r\n private readonly _onBulkPurchaseLinkClick = (bulkPurchaseModule: Element) => () => {\r\n const boundingRect = bulkPurchaseModule.getBoundingClientRect();\r\n window.scrollTo(boundingRect.left, boundingRect.top);\r\n };\r\n\r\n private _renderBuyboxBulkPurchaseLink(): React.ReactNode {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Temporary switch for the feature which is under development.\r\n if (!this.props.context.app.config.isBulkPurchaseEnabled) {\r\n return null;\r\n }\r\n\r\n if (!msdyn365Commerce.isBrowser) {\r\n return null;\r\n }\r\n\r\n const bulkPurchaseModules = Array.from(document.getElementsByClassName(BulkPurchase.className));\r\n\r\n if (!ArrayExtensions.hasElements(bulkPurchaseModules)) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {this.props.resources.bulkPurchaseLinkText}\r\n \r\n );\r\n }\r\n\r\n private _updatePrice(newPrice: ProductPrice | undefined, customPrice: number | undefined = this.state.keyInPriceAmount): void {\r\n if (this.state.isCustomPriceSelected && newPrice) {\r\n newPrice.CustomerContextualPrice = customPrice;\r\n }\r\n this.setState({ productPrice: newPrice });\r\n }\r\n\r\n private _getProductVariant(dimensionsToUpdate: { [id: number]: string }) {\r\n const {\r\n data: {\r\n product: { result: product }\r\n },\r\n context: {\r\n actionContext,\r\n request: {\r\n apiSettings: { channelId }\r\n }\r\n }\r\n } = this.props;\r\n\r\n const productDimensions = this.props.data.productDimensions.result!;\r\n\r\n // Step 3, Build the actually selected dimensions, prioritizing the information in state\r\n // over the information in data\r\n const mappedDimensions = productDimensions\r\n .map(dimension => {\r\n const dimensions = (dimension.dimensionValuesWithInventory ??\r\n dimension.DimensionValues ??\r\n []) as IDimensionValueForSelectedVariant[];\r\n return {\r\n DimensionTypeValue: dimension.DimensionTypeValue,\r\n DimensionValue:\r\n dimensions.find(\r\n value => value.DimensionValue?.RecordId.toString() === dimensionsToUpdate[dimension.DimensionTypeValue]\r\n )?.DimensionValue ?? dimension.DimensionValue,\r\n ExtensionProperties: dimension.ExtensionProperties\r\n };\r\n })\r\n .filter(dimension => dimension.DimensionValue);\r\n setDimensionValuesToQuery(this.props.context.actionContext.requestContext.url.requestUrl, mappedDimensions);\r\n\r\n // Step 4. Use these dimensions hydrate the product. Wrap this in a promise\r\n // so that places like add to cart can await it\r\n const selectedProductPromise = getSelectedVariant(\r\n new SelectedVariantInput(\r\n product!.MasterProductId ? product!.MasterProductId : product!.RecordId,\r\n channelId,\r\n undefined,\r\n undefined,\r\n this.props.context.request\r\n ),\r\n actionContext\r\n );\r\n this.setState({ selectedProduct: selectedProductPromise });\r\n\r\n return { productVariantPromise: selectedProductPromise, mappedDimensions };\r\n }\r\n\r\n private readonly _updateDimensions = async (): Promise => {\r\n const product = this.props.data.product.result;\r\n\r\n const productDimensions = this.props.data.productDimensions.result;\r\n\r\n const hasProductDimensions = ArrayExtensions.hasElements(productDimensions);\r\n\r\n if (!product || !hasProductDimensions) {\r\n return;\r\n }\r\n\r\n const dimensionsToUpdate: { [id: number]: string } = { ...this.dimensions };\r\n this.setState({ isUpdatingDimension: true, isUpdatingDeliveryOptions: true });\r\n\r\n // Step 1: Clear error state to display relevant errors\r\n if (this.state.errorState.otherError || this.state.errorState.quantityError) {\r\n const clearErrorState = { ...this.state.errorState };\r\n clearErrorState.otherError = undefined;\r\n if (this.state.errorState.errorHost === 'ADDTOCART') {\r\n clearErrorState.quantityError = undefined;\r\n clearErrorState.errorHost = undefined;\r\n }\r\n this.setState({ errorState: clearErrorState });\r\n }\r\n\r\n // Step 2: Clear any errors indicating the dimension wasn't selected\r\n for (const key of Object.keys(dimensionsToUpdate)) {\r\n if (this.state.errorState.configureErrors[key]) {\r\n this.setState(previousState => {\r\n const errorState = previousState.errorState;\r\n errorState.configureErrors[key] = undefined;\r\n return { errorState };\r\n });\r\n }\r\n }\r\n\r\n const data = this._getProductVariant(dimensionsToUpdate);\r\n const productVariant: SimpleProduct | null = await data.productVariantPromise;\r\n\r\n if (!productVariant) {\r\n return;\r\n }\r\n\r\n const promises: Promise[] = [\r\n this._getDimensionsForSelectedVariant(productVariant, data.mappedDimensions),\r\n this._hydrateInventoryInfo(productVariant),\r\n this._hydratePrice(productVariant),\r\n this._hydrateDeliveryOptions(productVariant),\r\n this._updateQuantitiesInState(productVariant)\r\n ];\r\n\r\n await Promise.all(promises);\r\n };\r\n\r\n private async _getDimensionsForSelectedVariant(\r\n productVariant: SimpleProduct,\r\n mappedDimensions: {\r\n /* eslint-disable @typescript-eslint/naming-convention -- Retail proxy values */\r\n DimensionTypeValue: number;\r\n DimensionValue: ProductDimensionValue | undefined;\r\n ExtensionProperties: CommerceProperty[] | undefined;\r\n /* eslint-enable @typescript-eslint/naming-convention -- Retail proxy values */\r\n }[]\r\n ): Promise {\r\n await getDimensionsForSelectedVariant(\r\n new GetDimensionsForSelectedVariantInput(\r\n productVariant.MasterProductId ? productVariant.MasterProductId : productVariant.RecordId,\r\n this.props.context.request.apiSettings.channelId,\r\n mappedDimensions,\r\n this.props.context.request\r\n ),\r\n this.props.context.actionContext\r\n );\r\n }\r\n\r\n private async _hydrateInventoryInfo(productVariant: SimpleProduct): Promise {\r\n // Step 5. Use these dimensions hydrate the inventory. Wrap this in a promise\r\n // so that places like add to cart can await it\r\n const newAvailableQuantity = await getProductAvailabilitiesForSelectedVariant(\r\n new ProductAvailabilitiesForSelectedVariantInput(productVariant.RecordId, this.props.context.request.apiSettings.channelId),\r\n this.props.context.actionContext\r\n );\r\n\r\n const newShippingQuantity = newAvailableQuantity?.find(\r\n // @ts-expect-error\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (shipping: { deliveryType: any }) => shipping.deliveryType === DeliveryMode.shipping\r\n );\r\n const isCustomPriceSelected = productVariant.Dimensions?.find(\r\n dimension =>\r\n dimension.DimensionTypeValue === 4 && dimension.DimensionValue && dimension.DimensionValue.Value?.toLowerCase() === 'custom'\r\n );\r\n if (isCustomPriceSelected) {\r\n this.setState({ isCustomPriceSelected: true });\r\n } else {\r\n this.setState(previousState => {\r\n const errorState = previousState.errorState;\r\n errorState.customAmountError = undefined;\r\n return { isCustomPriceSelected: false, isPriceKeyedIn: false, errorState };\r\n });\r\n }\r\n\r\n if (newShippingQuantity) {\r\n this.setState({ productAvailableQuantity: newShippingQuantity });\r\n } else {\r\n this.setState({ productAvailableQuantity: undefined });\r\n }\r\n }\r\n\r\n private async _hydratePrice(productVariant: SimpleProduct): Promise {\r\n // Step 6. Use these dimensions hydrate the product price.\r\n const newPrice = await getPriceForSelectedVariant(\r\n new PriceForSelectedVariantInput(productVariant.RecordId, this.props.context.request.apiSettings.channelId),\r\n this.props.context.actionContext\r\n );\r\n\r\n if (newPrice) {\r\n this._updatePrice(newPrice);\r\n }\r\n }\r\n\r\n private async _hydrateDeliveryOptions(productVariant: SimpleProduct): Promise {\r\n const retailMultiplePickupFeatureState = this.props.data.featureState.result?.find(\r\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature'\r\n );\r\n\r\n // Step 7. Use these dimensions hydrate the product delivery options.\r\n const newDeliveryOptions = await getDeliveryOptionsForSelectedVariant(\r\n new GetDeliveryOptionsForSelectedVariantInput(\r\n productVariant.RecordId,\r\n this.props.context.request.apiSettings.channelId,\r\n undefined,\r\n undefined,\r\n retailMultiplePickupFeatureState?.IsEnabled\r\n ),\r\n this.props.context.actionContext\r\n );\r\n\r\n if (newDeliveryOptions) {\r\n this.setState({ productDeliveryOptions: newDeliveryOptions });\r\n }\r\n }\r\n\r\n private async _updateQuantitiesInState(product: SimpleProduct): Promise {\r\n const isOrderQuantityLimitsFeatureEnabled = await this._isOrderQuantityLimitsFeatureEnabled();\r\n if (isOrderQuantityLimitsFeatureEnabled && product) {\r\n this.setState({\r\n min: product.Behavior?.MinimumQuantity || 1,\r\n\r\n // If max by feature in default order settings is not defined then use max from site settings or default max 10.\r\n max:\r\n product.Behavior?.MaximumQuantity && product.Behavior?.MaximumQuantity > 0\r\n ? product.Behavior?.MaximumQuantity\r\n : this.props.context.app.config.maxQuantityForCartLineItem || 10\r\n });\r\n } else {\r\n this.setState({\r\n min: 1,\r\n max: this.props.context.app.config.maxQuantityForCartLineItem || 10\r\n });\r\n }\r\n }\r\n\r\n private readonly _getDropdownName = (dimensionType: number, resources: IRwbBuyboxResources): string => {\r\n const isGiftCard = this.props.data.product.result?.IsGiftCard;\r\n\r\n switch (dimensionType) {\r\n case 1: // ProductDimensionType.Color\r\n return resources.productDimensionTypeColor;\r\n case 2: // ProductDimensionType.Configuration\r\n return resources.productDimensionTypeConfiguration;\r\n case 3: // ProductDimensionType.Size\r\n return resources.productDimensionTypeSize;\r\n case 4: // ProductDimensionType.Style\r\n return isGiftCard ? resources.productDimensionTypeAmount : resources.productDimensionTypeStyle;\r\n default:\r\n return '';\r\n }\r\n };\r\n\r\n private async _isOrderQuantityLimitsFeatureEnabled(): Promise {\r\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\r\n if (defaultOrderQuantityLimitsFeatureConfig === 'none') {\r\n return false;\r\n }\r\n\r\n const featureStatuses = await this.props.data.featureState;\r\n const isFeatureEnabledInHq = featureStatuses?.find(\r\n featureState => featureState.Name === RetailDefaultOrderQuantityLimitsFeatureName\r\n )?.IsEnabled;\r\n if (!isFeatureEnabledInHq) {\r\n return false;\r\n }\r\n\r\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\r\n return true;\r\n }\r\n let customerInfo;\r\n try {\r\n customerInfo = await this.props.data.customerInformation;\r\n } catch (error) {\r\n this.props.telemetry.information(error as string);\r\n this.props.telemetry.debug('Unable to receive Customer Information. May be user is not authorized');\r\n return false;\r\n }\r\n\r\n return (\r\n customerInfo &&\r\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\r\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b))\r\n );\r\n }\r\n}\r\n\r\nexport default Buybox;\r\n","/*!\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\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IBuyboxAddToCartViewProps,\r\n IBuyboxAddToOrderTemplateViewProps,\r\n IBuyboxAddToWishlistViewProps,\r\n IBuyboxKeyInPriceViewProps,\r\n IBuyboxProductConfigureDropdownViewProps,\r\n IBuyboxProductConfigureViewProps,\r\n IBuyboxProductQuantityViewProps,\r\n IBuyboxShopSimilarLookViewProps\r\n} from '@msdyn365-commerce-modules/buybox';\r\nimport { IRwbBuyboxViewProps } from './rwb-buybox';\r\nimport { IRwbBuyboxFindInStoreViewProps } from './components/rwb-buybox-find-in-store';\r\n\r\nconst BuyboxView: React.FC = props => {\r\n const {\r\n ModuleProps,\r\n MediaGalleryContainerProps,\r\n ProductInfoContainerProps,\r\n addToCart,\r\n addToOrderTemplate,\r\n addToWishlist,\r\n configure,\r\n description,\r\n findInStore,\r\n quantity,\r\n price,\r\n title,\r\n rating,\r\n inventoryLabel,\r\n shopSimilarLook,\r\n keyInPrice,\r\n shopSimilarDescription,\r\n unitOfMeasure,\r\n productComparisonButton\r\n } = props;\r\n\r\n return (\r\n \r\n {props.mediaGallery}\r\n \r\n {title}\r\n {price}\r\n {unitOfMeasure}\r\n {props.bulkPurchaseLink}\r\n {description}\r\n {rating}\r\n {configure && _renderConfigure(configure)}\r\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\r\n {quantity && _renderQuantity(quantity)}\r\n {inventoryLabel}\r\n {addToCart && _renderAddToCart(addToCart)}\r\n {findInStore && _renderFindInStore(findInStore)}\r\n {addToOrderTemplate && _renderAddToOrderTemplate(addToOrderTemplate)}\r\n {addToWishlist && _renderAddToWishlist(addToWishlist)}\r\n {_renderSocialShare(props.slots && props.slots.socialShare)}\r\n {productComparisonButton}\r\n {shopSimilarLook && _renderShopSimilarItem(shopSimilarLook)}\r\n {shopSimilarDescription && _renderShopSimilarItem(shopSimilarDescription)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderAddToCart = (addToCart: IBuyboxAddToCartViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToCart;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\nconst _renderAddToOrderTemplate = (addToOrderTemplate: IBuyboxAddToOrderTemplateViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToOrderTemplate;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\nconst _renderAddToWishlist = (addToWishlist: IBuyboxAddToWishlistViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToWishlist;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\r\n const { ContainerProps, dropdowns } = configure;\r\n\r\n return {dropdowns.map(_renderConfigureDropdown)};\r\n};\r\n\r\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!socialShare || socialShare.length === 0) {\r\n return undefined;\r\n }\r\n\r\n return <>{socialShare[0]};\r\n};\r\n\r\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {select}\r\n \r\n );\r\n};\r\n\r\nconst _renderFindInStore = (findInStore: IRwbBuyboxFindInStoreViewProps): JSX.Element => {\r\n const { ContainerProps, storeSelector, heading, description, errors, button, button2, modal, productPickupOptionList } = findInStore;\r\n\r\n return (\r\n \r\n {storeSelector}\r\n {heading}\r\n {productPickupOptionList}\r\n {description}\r\n {errors}\r\n {button}\r\n {button2}\r\n {modal}\r\n \r\n );\r\n};\r\n\r\nconst _renderQuantity = (quantity: IBuyboxProductQuantityViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input, errors } = quantity;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\r\n\r\n return (\r\n \r\n {heading}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst _renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\r\n const { ContainerProps, errors, input } = shopSimilarItem;\r\n\r\n return (\r\n \r\n {errors}\r\n {input}\r\n \r\n );\r\n};\r\nexport default BuyboxView;\r\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 '@msdyn365-commerce-modules/utilities/';\nimport { IRwbIncrementalQuantityProps } from './RwbIncrementalQuantity.props';\n\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 RwbIncrementalQuantity extends React.PureComponent {\n public static defaultProps: Partial = {\n min: 1,\n decrementGlyphClass: 'fas fa-minus',\n incrementGlyphClass: 'fas fa-plus'\n };\n\n private _minValue: number;\n private converage = 1;\n private nst = 1;\n\n private conversion =1;\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 (\n (!props.disabled && state.isUpdating) ||\n ((props.applyDefaultOrderSettings ?? false) &&\n state.currentInput === 1 &&\n props.currentCount &&\n props.currentCount > RwbIncrementalQuantity.defaultProps.min!)\n ) {\n nextState.currentInput = props.currentCount ?? 1;\n nextState.isUpdating = false;\n }\n\n return nextState;\n }\n\n constructor(props: IRwbIncrementalQuantityProps) {\n super(props);\n this.state = { currentInput: props.currentCount ?? 1, isUpdating: false };\n\n const parts = props.UOMCollection? props.UOMCollection.split('|') :[];\n parts.forEach(element => {\n const found = element.match(/(\\1\\sNST\\s=\\s)(\\d+\\.*\\d*)\\sSQFT/);\n if (found) {\n this.conversion = Number.parseFloat(found[2]);\n this.converage = this.converage*this.conversion;\n }\n });\n\n this._onIncrement = this._onIncrement.bind(this);\n this._onDecrement = this._onDecrement.bind(this);\n this._handleChange = this._handleChange.bind(this);\n this._handleCoverageChange = this._handleCoverageChange.bind(this);\n this._handleNstChange = this._handleNstChange.bind(this);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, '');\n this._minValue = this.props.min ?? RwbIncrementalQuantity.defaultProps.min!;\n if (this.props.UOMCollection!==undefined){\n var value = this._fixPercision(this.nst*this.conversion);\n if ( this.props.onChange) {\n this.props.onChange(value);\n }\n }\n }\n\n public render(): JSX.Element {\n const { min, max } = this.props;\n\n this._minValue = min ?? RwbIncrementalQuantity.defaultProps.min!;\n var value = this.state.currentInput;\n\n const glyphMinusClassName: string = `${this.props.decrementGlyphClass!} quantity__controls-glyph`;\n const glyphPlusClassName: string = `${this.props.incrementGlyphClass!} quantity__controls-glyph`;\n const decrementDisabled = value <= this._minValue || this.props.isGiftCard;\n const incrementDisabled = value >= max || this.props.isGiftCard;\n const currentValue = value;\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 ?? ''} ${value}`;\n\n const price = this.props.price? this.props.price:0;\n let extraClassDecrement = '';\n if (decrementDisabled) {\n // The quantity has reached its boundaries (max or min)\n extraClassDecrement = 'disabled';\n } else if (this.props.disabled) {\n // This.props.disabled shows if the state is not succeded yet\n extraClassDecrement = 'transition';\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\n var disabled = true; //this.props.disabled\n if (this.props.UOMCollection!==undefined){\n value = this._fixPercision(this.nst*this.conversion);\n return (\n <>\n
\n \n {this.props.calcTitle}\n \n \n \n \n \n \n \n \n \n \n
\n Sq ft\n \n or\n \n Boxes\n
\n ${(price *this.conversion).toFixed(2)}/box   \n {this.nst} box = {(this.nst*this.conversion).toFixed(2)} sqft | ${(this.nst*this.conversion*price).toFixed(2)}
\n
\n
\n \n \n \n \n \n \n \n
\n \n );\n } else {\n return (\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 //return false;\n };\n\n private _onIncrement(): void {\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 (this.props.onChange(updatedQuantity)) {\n this.setState({ currentInput: updatedQuantity });\n }\n }\n }\n\n private _onDecrement(): void {\n let invokeCallback = false;\n const currQuantity = this.state.currentInput;\n let updatedQuantity: number;\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 (this.props.onChange(updatedQuantity)) {\n this.setState({ currentInput: updatedQuantity });\n }\n }\n }\n\n private _fixPercision (num:number){\n return Math.round(num*100)/100;\n }\n\n private _handleCoverageChange(e: React.ChangeEvent): void {\n let invokeCallback = false;\n let coverage2 = Number.parseInt(e.target.value, 10);\n this.nst = Math.ceil(coverage2/this.conversion);\n var updatedQuantity = this.nst*this.conversion ;\n\n if (updatedQuantity >= this._minValue && updatedQuantity<=this.props.max) {\n invokeCallback = true;\n }\n if (invokeCallback && this.props.onChange) {\n if (this.props.onChange(updatedQuantity)) {\n this.setState({ currentInput: updatedQuantity });\n }\n }\n this.converage=coverage2;\n }\n\n private _handleNstChange(e: React.ChangeEvent): void {\n let invokeCallback = false;\n let nst2 = Number.parseInt(e.target.value, 10);\n let area = this._fixPercision(nst2*this.conversion);\n if (area >= this._minValue && area<=this.props.max) {\n invokeCallback = true;\n }\n\n if (invokeCallback && this.props.onChange) {\n if (this.props.onChange(area)) {\n this.setState({ currentInput: area });\n }\n }\n\n this.converage = area;\n this.nst=nst2;\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","/*!\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 {\r\n AddToOrderTemplateComponent,\r\n IAddToOrderTemplateDialogResources,\r\n IDuplicateItemsWhenAddingToOrderTemplateDialogResources,\r\n IItemAddedToOrderTemplateDialogResources,\r\n IOrderTemplateActionErrorResult,\r\n IOrderTemplateNameDialogResources\r\n} from '@msdyn365-commerce/components';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n getConfigureErrors,\r\n IBuyboxCallbacks,\r\n IBuyboxCommonResources,\r\n IBuyboxData,\r\n IBuyboxState,\r\n IBuyboxViewProps\r\n} from '@msdyn365-commerce-modules/buybox';\r\nimport * as React from 'react';\r\n\r\nimport { IRwbBuyboxProps as IRwbBuyboxExtentionProps } from '../../definition-extensions/rwb-buybox.ext.props.autogenerated';\r\n\r\n/**\r\n * To generate AddToOrderTemplateDialog resources.\r\n * @param resources - The resources.\r\n * @returns -- Returns the list of AddToOrderTemplateDialog resources..\r\n */\r\nfunction generateAddToOrderTemplateDialogResources(resources: IBuyboxCommonResources): IAddToOrderTemplateDialogResources {\r\n return {\r\n addToOrderTemplateHeader: resources.addToOrderTemplateHeader,\r\n\r\n noOrderTemplatesMessage: resources.noOrderTemplatesMessage,\r\n noOrderTemplatesDescription: resources.noOrderTemplatesDescription,\r\n\r\n createAnOrderTemplateButtonText: resources.createAnOrderTemplateButtonText,\r\n createNewOrderTemplateButtonText: resources.createNewOrderTemplateButtonText,\r\n cancelOrderTemplateCreationButtonText: resources.cancelOrderTemplateCreationButtonText,\r\n\r\n selectTemplatesText: resources.selectTemplatesText,\r\n addToTemplateButtonText: resources.addToTemplateButtonText,\r\n lineItemsText: resources.lineItemsText\r\n };\r\n}\r\n\r\n/**\r\n * To generate OrderTemplateNameDialog resources.\r\n * @param resources - The resources.\r\n * @returns -- Returns the list of OrderTemplateNameDialog resources..\r\n */\r\nfunction generateOrderTemplateNameDialogResources(resources: IBuyboxCommonResources): IOrderTemplateNameDialogResources {\r\n return {\r\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\r\n orderTemplateTitleLabel: resources.orderTemplateTitle,\r\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\r\n orderTemplateDescription: resources.createOrderTemplateDescription,\r\n\r\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\r\n\r\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\r\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\r\n };\r\n}\r\n\r\n/**\r\n * To generate ItemAddedToOrderTemplateDialog resources.\r\n * @param resources - The resources.\r\n * @returns -- Returns the list of ItemAddedToOrderTemplateDialog resources..\r\n */\r\nfunction generateItemAddedToOrderTemplateDialogResources(resources: IBuyboxCommonResources): IItemAddedToOrderTemplateDialogResources {\r\n return {\r\n viewOrderTemplateButtonText: resources.viewOrderTemplateButtonText,\r\n continueShoppingButtonText: resources.continueShoppingButtonText,\r\n itemAddedToOrderTemplateHeaderItemOneText: resources.itemAddedToOrderTemplateHeaderItemOneText,\r\n itemAddedToOrderTemplateHeaderItemFormatText: resources.itemAddedToOrderTemplateHeaderItemFormatText,\r\n itemAddedToOrderTemplateHeaderMessageText: resources.itemAddedToOrderTemplateHeaderMessageText,\r\n freePriceText: resources.priceFree,\r\n originalPriceText: resources.originalPriceText,\r\n currentPriceText: resources.currentPriceText\r\n };\r\n}\r\n\r\n/**\r\n * To generate DuplicateItemsWhenAddingToOrderTemplateDialog resources.\r\n * @param resources - The resources.\r\n * @returns -- Returns the list of DuplicateItemsWhenAddingToOrderTemplateDialog resources..\r\n */\r\nfunction generateDuplicateItemsWhenAddingToOrderTemplateDialogResources(\r\n resources: IBuyboxCommonResources\r\n): IDuplicateItemsWhenAddingToOrderTemplateDialogResources {\r\n return {\r\n duplicatedProductsHeader: resources.duplicatedProductsHeader,\r\n duplicatedProductsDescription: resources.duplicatedProductsDescription,\r\n updateQuantityButtonText: resources.updateQuantityButtonText,\r\n cancelDuplicateItemsButtonText: resources.cancelDuplicateItemsButtonText\r\n };\r\n}\r\n\r\n/**\r\n * Add to wishlist failed function.\r\n * @param callbacks -Buybox callbacks.\r\n * @param resources -Buybox resources.\r\n * @param product -Simple product.\r\n * @returns Update error state.\r\n */\r\nconst onAddToOrderTemplateFailed = (callbacks: IBuyboxCallbacks, resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (\r\n result: IOrderTemplateActionErrorResult\r\n) => {\r\n callbacks.updateErrorState({\r\n errorHost: 'ORDER_TEMPLATE',\r\n configureErrors:\r\n result.status === 'MISSING_DIMENSION' ? getConfigureErrors(result.missingDimensions, resources, product?.IsGiftCard) : {}\r\n });\r\n};\r\n\r\n/**\r\n * RenderAddToOrderTemplateButton.\r\n * @param props - Buybox view props.\r\n * @param state - Buybox state.\r\n * @param callbacks - Buybox callbacks.\r\n * @param product - Product data.\r\n * @returns -- Returns JSX element.\r\n */\r\nexport const renderAddToOrderTemplateButton = (\r\n props: IBuyboxViewProps & IRwbBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks,\r\n product: SimpleProduct\r\n): React.ReactNode => {\r\n const {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\r\n id,\r\n typeName,\r\n context,\r\n data: {\r\n orderTemplates: { result: orderTemplates },\r\n customerInformation: { result: customerInformation }\r\n },\r\n resources\r\n } = props;\r\n\r\n const { quantity } = state;\r\n\r\n const isShowButtonText = true;\r\n\r\n return (\r\n orderTemplates && (\r\n \r\n )\r\n );\r\n};\r\n","/*!\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 { AddToWishlistComponent, IWishlistActionErrorResult } from '@msdyn365-commerce/components';\r\nimport { format, ItemAvailability, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { IStoreInfo } from '@msdyn365-commerce-modules/bopis-utilities';\r\nimport {\r\n getConfigureErrors,\r\n IBuyboxAddToCartViewProps,\r\n IBuyboxCallbacks,\r\n IBuyboxCommonResources,\r\n IBuyboxData,\r\n IBuyboxKeyInPriceViewProps,\r\n IBuyboxProductConfigureDropdownViewProps,\r\n IBuyboxProductConfigureViewProps,\r\n IBuyboxProductQuantityViewProps,\r\n IBuyboxResources as IBuyboxExtentionResources,\r\n IBuyboxShopSimilarLookViewProps,\r\n IBuyboxState//,\r\n //IBuyboxViewProps\r\n} from '@msdyn365-commerce-modules/buybox';\r\n\r\nimport {\r\n IRwbBuyboxViewProps\r\n} from '../../../modules/rwb-buybox/rwb-buybox';\r\nimport {\r\n ArrayExtensions,\r\n getFullAvailableInventoryNearby,\r\n GetFullAvailableInventoryNearbyInput,\r\n IFullOrgUnitAvailability\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport { //IncrementalQuantity,\r\n INodeProps, ITelemetryContent, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { RwbIncrementalQuantity } from '../../../modules/rwb-incremental-quantity';\r\nimport { reaction } from 'mobx';\r\nimport * as React from 'react';\r\nimport { IRwbBuyboxFindInStoreViewProps } from '../../../modules/rwb-buybox/components/rwb-buybox-find-in-store';\r\nimport {\r\n IRwbBuyboxProps as IRwbBuyboxExtentionProps//,\r\n //IRwbBuyboxResources as IRwbBuyboxExtentionResources\r\n} from '../definition-extensions/rwb-buybox.ext.props.autogenerated';\r\n//import { IBuyboxProps as IBuyboxExtentionProps, IBuyboxProps } from '../definition-extensions/buybox.ext.props.autogenerated';\r\nimport { renderAddToOrderTemplateButton } from './components/rwb-buybox-add-to-order-template';\r\n\r\n/**\r\n * BuyBoxConstants enum.\r\n */\r\nexport enum BuyBoxConstants {\r\n zero = 0\r\n}\r\n\r\n/**\r\n * On Change function.\r\n * @param callbacks -Callbacks.\r\n * @returns Update quantity.\r\n */\r\nconst onChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number): boolean => {\r\n if (callbacks.updateQuantity) {\r\n return callbacks.updateQuantity(newValue);\r\n }\r\n return true;\r\n};\r\n\r\n\r\n/**\r\n * RenderQuantity.\r\n * @param quantityComponent - QuantityComponent.\r\n * @param callbacks - Callbacks.\r\n * @param props - Props.\r\n * @param state - State.\r\n * @param extentionResources - ExtentionResources.\r\n * @param quantityLimitsMessages - QuantityLimitsMessages.\r\n * @param max - Max.\r\n * @param telemetryContent - TelemetryContent.\r\n * @param unitOfMeasure - Unit Of Measure.\r\n * @returns -- Returns.\r\n */\r\nconst renderQuantity = (\r\n quantityComponent: IBuyboxProductQuantityViewProps,\r\n callbacks: IBuyboxCallbacks,\r\n props: IRwbBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n extentionResources: IBuyboxExtentionResources,\r\n quantityLimitsMessages: React.ReactNode,\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n max: number | undefined,\r\n telemetryContent?: ITelemetryContent,\r\n unitOfMeasure?: React.ReactNode\r\n): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\r\n\r\n const { resources\r\n ,data\r\n } = props;\r\n\r\n const { quantity } = state;\r\n\r\n const extensionProperties = data.product.result?.ExtensionProperties;\r\n const defaultUOM = data.product.result?.DefaultUnitOfMeasure;\r\n\r\n var uomCollecton = undefined;\r\n if (extensionProperties && defaultUOM =='SQFT') {\r\n uomCollecton = extensionProperties[3]?.Value?.StringValue;\r\n }\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n \r\n {unitOfMeasure}\r\n {quantityLimitsMessages}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render key in price function.\r\n * @param keyInPrice - KeyInPrice.\r\n * @returns -- Returns.\r\n */\r\nconst renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\r\n\r\n return (\r\n \r\n {heading}\r\n {input}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderAddToCart.\r\n * @param addToCart - AddToCart.\r\n * @returns -- Returns.\r\n */\r\nconst renderAddToCart = (addToCart: IBuyboxAddToCartViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n const { ContainerProps, errorBlock, button } = addToCart;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderFindInStore.\r\n * @param findInStore - FindInStore.\r\n * @returns -- Returns.\r\n */\r\nconst renderFindInStore = (findInStore: IRwbBuyboxFindInStoreViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n const { ContainerProps, storeSelector, heading, description, inventory,errors, button, button2, modal, productPickupOptionList } = findInStore;\r\n\r\n return (\r\n \r\n {storeSelector}\r\n {heading}\r\n {productPickupOptionList}\r\n {inventory}\r\n {description}\r\n {errors}\r\n {button}\r\n {button2}\r\n {modal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderAddToOrderTemplate.\r\n * @param props - Buybox view props.\r\n * @param state - Buybox state.\r\n * @param callbacks - Buybox callbacks.\r\n * @returns -- Returns.\r\n */\r\nconst renderAddToOrderTemplate = (\r\n props: IRwbBuyboxViewProps & IRwbBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks\r\n): JSX.Element | null => {\r\n const product = props.data.product.result;\r\n if (!props.addToOrderTemplate || !product) {\r\n return null;\r\n }\r\n\r\n const orderTemplateButton = renderAddToOrderTemplateButton(props, state, callbacks, product);\r\n\r\n return (\r\n \r\n {props.addToOrderTemplate.errorBlock}\r\n {orderTemplateButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Add to wishlist failed function.\r\n * @param callbacks -Buybox callbacks.\r\n * @param resources -Buybox resources.\r\n * @param product -Simple product.\r\n * @returns Update error state.\r\n */\r\nconst onAddToWishlistFailed = (callbacks: IBuyboxCallbacks, resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (\r\n result: IWishlistActionErrorResult\r\n) => {\r\n callbacks.updateErrorState({\r\n errorHost: 'WISHLIST',\r\n configureErrors:\r\n result.status === 'MISSINGDIMENSION' ? getConfigureErrors(result.missingDimensions, resources, product?.IsGiftCard) : {}\r\n });\r\n};\r\n\r\n/**\r\n * RenderAddToWishlist.\r\n * @param props - Buybox view props.\r\n * @param state - Buybox state.\r\n * @param callbacks - Buybox callbacks.\r\n * @param product - Product data.\r\n * @returns -- Returns.\r\n */\r\nconst renderAddtoWishlistButton = (\r\n props: IRwbBuyboxViewProps & IRwbBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks,\r\n product: SimpleProduct\r\n): React.ReactNode => {\r\n const { context, resources } = props;\r\n const wishlists = props.data.wishlists.result;\r\n const isShowWishlitButtonText = true;\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderAddToWishlist.\r\n * @param props - Buybox viewprops.\r\n * @param state - Buybox state.\r\n * @param callbacks - Buybox callbacks.\r\n * @returns -- Returns.\r\n */\r\nconst renderAddToWishlist = (\r\n props: IRwbBuyboxViewProps & IRwbBuyboxExtentionProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks\r\n): JSX.Element | null => {\r\n const product = props.data.product.result;\r\n if (!props.addToWishlist || !product) {\r\n return null;\r\n }\r\n\r\n if (!props.config.enableWishlist) {\r\n return null;\r\n }\r\n\r\n const wishlistButton = renderAddtoWishlistButton(props, state, callbacks, product);\r\n return (\r\n \r\n {props.addToWishlist.errorBlock}\r\n {wishlistButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RRenderShopSimilarItem.\r\n * @param shopSimilarItem - ShopSimilarItem.\r\n * @returns -- Returns.\r\n */\r\nconst renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n const { ContainerProps, errors, input } = shopSimilarItem;\r\n\r\n return (\r\n \r\n {errors}\r\n {input}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderSocialShare.\r\n * @param socialShare - Social share react node array.\r\n * @returns -- Returns.\r\n */\r\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!socialShare || socialShare.length === 0) {\r\n return undefined;\r\n }\r\n\r\n return <>{socialShare[0]};\r\n};\r\n\r\n/**\r\n * RenderConfigureDropdown.\r\n * @param dropdown - Buybox product configure dropdown view props.\r\n * @returns -- Returns JSX.Element.\r\n */\r\nconst renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n\r\n return (\r\n \r\n {heading}\r\n {select}\r\n {errors}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * RenderConfigure.\r\n * @param configure - Buybox product configure view props.\r\n * @returns -- Returns JSX.Element.\r\n */\r\nconst renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\r\n const { ContainerProps, dropdowns } = configure;\r\n\r\n return {dropdowns.map(renderConfigureDropdown)};\r\n};\r\n\r\n/**\r\n * BuyboxView.\r\n * @param props - Props.\r\n * @returns -- Returns.\r\n */\r\nconst BuyboxView: React.FC> = props => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n const {\r\n ModuleProps,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n MediaGalleryContainerProps,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n ProductInfoContainerProps,\r\n addToCart,\r\n addToOrderTemplate,\r\n addToWishlist,\r\n productComparisonButton,\r\n configure,\r\n description,\r\n findInStore,\r\n quantity,\r\n price,\r\n title,\r\n rating,\r\n inventoryLabel,\r\n shopSimilarLook,\r\n keyInPrice,\r\n shopSimilarDescription,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n max,\r\n unitOfMeasure,\r\n callbacks,\r\n state,\r\n resources,\r\n quantityLimitsMessages,\r\n telemetryContent,\r\n app: { config: appConfig }\r\n } = props;\r\n let skuText: string = props.resources.skuText;\r\n skuText += props.data.product.result?.ItemId;\r\n const preferredStoreInfo: IStoreInfo | undefined = props.data.storeSelectorStateManager.result?.preferredStore;\r\n const preferredStoreId = preferredStoreInfo?.StoreId ? preferredStoreInfo.StoreId : '';\r\n const preferredStoreName = preferredStoreInfo?.StoreName ? preferredStoreInfo.StoreName : '';\r\n\r\n const [availability, setAvailability] = React.useState('');\r\n const [isStoreChange, setIsStoreChange] = React.useState(false);\r\n\r\n /**\r\n * GetStockInventoryLabel.\r\n * @param availabilityWithHours - Stock availability with hours.\r\n * @returns -- Returns.\r\n */\r\n const getStockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\r\n if (availabilityWithHours && ArrayExtensions.hasElements(availabilityWithHours.ProductInventoryInformation)) {\r\n for (const productInventoryInformation of availabilityWithHours.ProductInventoryInformation) {\r\n if (\r\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\r\n productInventoryInformation.InventLocationId\r\n ) {\r\n return productInventoryInformation.StockLevelLabel;\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n const getInventory = React.useCallback(async () => {\r\n const input = new GetFullAvailableInventoryNearbyInput(\r\n props.data.product.result?.RecordId,\r\n BuyBoxConstants.zero,\r\n BuyBoxConstants.zero,\r\n BuyBoxConstants.zero,\r\n BuyBoxConstants.zero,\r\n true\r\n );\r\n\r\n /**\r\n * IsProductInStock.\r\n * @param itemAvailabilities - Item availability array.\r\n * @returns -- Returns.\r\n */\r\n const isProductInStock = (itemAvailabilities: ItemAvailability[] | undefined): boolean => {\r\n if (!appConfig.enableStockCheck) {\r\n return true;\r\n }\r\n\r\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\r\n return itemAvailabilities[BuyBoxConstants.zero].AvailableQuantity! > BuyBoxConstants.zero;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n await getFullAvailableInventoryNearby(input, props.context.actionContext)\r\n .catch((error: Error) => {\r\n props.telemetry.error(error.message);\r\n })\r\n .then(response => {\r\n if (response && ArrayExtensions.hasElements(response)) {\r\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\r\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreId;\r\n const filteredFullOrgUnitAvailability = response.filter(isPreferredStore);\r\n const preferredStoreAvailability = ArrayExtensions.hasElements(filteredFullOrgUnitAvailability)\r\n ? filteredFullOrgUnitAvailability[BuyBoxConstants.zero]\r\n : undefined;\r\n const stockStatusLabel: string | undefined = getStockInventoryLabel(preferredStoreAvailability);\r\n const isInStock = isProductInStock(preferredStoreAvailability?.OrgUnitAvailability?.ItemAvailabilities);\r\n const resourceLabel = isInStock ? props.resources.inStockText : props.resources.outOfStockText;\r\n const stockText: string | undefined = stockStatusLabel ? stockStatusLabel : resourceLabel;\r\n const preferredStoreAvailabilityText = `${format(\r\n props.resources.availabilityAtPreferredStoreText,\r\n preferredStoreName\r\n )} ${stockText}`;\r\n setAvailability(preferredStoreAvailabilityText);\r\n\r\n var btn:any = document.getElementById('rwb-add-to-cart');\r\n if (!preferredStoreAvailability) {\r\n if (btn)\r\n btn.removeAttribute(\"disabled\");\r\n }\r\n else {\r\n if (stockText.toLowerCase() =='out of stock') {\r\n if (btn)\r\n btn.disabled = true;\r\n } else {\r\n if (btn)\r\n btn.removeAttribute(\"disabled\");\r\n }\r\n }\r\n }\r\n });\r\n\r\n setIsStoreChange(false);\r\n }, [\r\n props.data.product.result?.RecordId,\r\n appConfig.enableStockCheck,\r\n preferredStoreId,\r\n preferredStoreName,\r\n props.context.actionContext,\r\n props.resources.availabilityAtPreferredStoreText,\r\n props.resources.inStockText,\r\n props.resources.outOfStockText,\r\n props.telemetry\r\n ]);\r\n\r\n React.useEffect(() => {\r\n if (props.config.displayStockAvailability) {\r\n getInventory().catch((error: Error) => {\r\n props.telemetry.error(error.message);\r\n });\r\n }\r\n }, [getInventory, isStoreChange, props.telemetry, props.config.displayStockAvailability]);\r\n\r\n reaction(\r\n () => props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\r\n () => {\r\n setIsStoreChange(true);\r\n }\r\n );\r\n\r\n /**\r\n * RenderAvailabiltyAtPreferredStore.\r\n * @returns -- Returns.\r\n */\r\n const renderAvailabilityAtPreferredStore = (): JSX.Element | undefined => {\r\n const hasProductDimensions = ArrayExtensions.hasElements(props.data.product.result?.Dimensions);\r\n if (hasProductDimensions && props.data.product.result?.MasterProductId === undefined) {\r\n return undefined;\r\n }\r\n const containerProps: INodeProps = {\r\n className: 'ms-buybox__preferred-store-availability',\r\n tag: 'span'\r\n };\r\n\r\n return {availability};\r\n };\r\n return (\r\n \r\n {props.mediaGallery}\r\n \r\n {title}\r\n \r\n
{skuText}
\r\n {rating}\r\n
\r\n \r\n
{props.resources.priceText}
\r\n {price}\r\n
\r\n {configure && renderConfigure(configure)}\r\n {keyInPrice && renderKeyInPrice(keyInPrice)}\r\n \r\n
\r\n {quantity &&\r\n renderQuantity(\r\n quantity,\r\n callbacks,\r\n props,\r\n state,\r\n resources,\r\n quantityLimitsMessages,\r\n max,\r\n telemetryContent,\r\n unitOfMeasure\r\n )}\r\n {props.bulkPurchaseLink}\r\n
\r\n
\r\n {props.config.displayStockAvailability && preferredStoreId && renderAvailabilityAtPreferredStore()}\r\n {inventoryLabel}\r\n {renderAddToCart(addToCart)}\r\n {findInStore && renderFindInStore(findInStore)}\r\n {addToWishlist && renderAddToWishlist(props, state, callbacks)}\r\n {productComparisonButton}\r\n {addToOrderTemplate && renderAddToOrderTemplate(props, state, callbacks)}\r\n {findInStore?.productPickupOptionList ? (\r\n
{findInStore.productPickupOptionList}
\r\n ) : null}\r\n {_renderSocialShare(props.slots && props.slots.socialShare)}\r\n
{props.resources.shopText}
\r\n \r\n {shopSimilarLook && renderShopSimilarItem(shopSimilarLook)}\r\n {shopSimilarDescription && renderShopSimilarItem(shopSimilarDescription)}\r\n \r\n \r\n
{props.resources.descriptionText}
\r\n {description}\r\n
\r\n {ArrayExtensions.hasElements(props.slots.productSpecification) ? (\r\n {props.slots.productSpecification[0]}\r\n ) : null}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default BuyboxView;\r\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['rwb-buybox'] = {\n c: () => require('partner/modules/rwb-buybox/rwb-buybox.tsx'),\n $type: 'containerModule',\n da: [{name:'availabilitiesWithHours', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby', runOn: 1},{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orderTemplates', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview', runOn: 1},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'productAvailableQuantity', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant', runOn: 0},{name:'productDimensions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant', runOn: 0},{name:'productPrice', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant', runOn: 0},{name:'ratingsSummary', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary', runOn: 1},{name:'storeLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'rwb-buybox',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/rwb-buybox'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\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 const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\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|rwb-buybox|rwb-buybox'] = {\n c: () => require('partner/modules/rwb-buybox/rwb-buybox.view.tsx'),\n cn: '__local__-__local__-rwb-buybox'\n };\nviewDictionary['__local__|__local__|themes|rwb-adventureworks|views|rwb-buybox'] = {\n c: () => require('partner/themes/rwb-adventureworks/views/rwb-buybox.view.tsx'),\n cn: '__local__-__local__-rwb-buybox'\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 MsDyn365, { IActionContext } from '@msdyn365-commerce/core';\nimport { action, computed, observable } from 'mobx';\n\nimport {\n IListMapViewState,\n ILoadMapApiInput,\n IStoreInfo,\n IStoreSelectionStateContext,\n IStoreSelectorLocation,\n IStoreSelectorStateManager\n} from './i-store-selection-state-manager';\n\n/**\n * Abstract instance of IStoreSelectorStateManager with base implementation\n * of everything except the geoLocate function.\n */\nexport abstract class BaseStoreSelectorStateManager implements IStoreSelectorStateManager {\n @computed public get isDialogOpen(): Readonly {\n return this._context !== undefined;\n }\n\n @computed public get context(): Readonly {\n return this._context;\n }\n\n @observable public isMapApiLoaded?: boolean;\n\n @observable public selectedStoreLocationId?: string;\n\n @observable public preferredStore?: IStoreInfo;\n\n @observable public listMapViewState: IListMapViewState = { displayList: true, displayMap: false };\n\n @observable public isMapModuleLoaded?: boolean;\n\n @observable public lastInlineShownStoreInfo?: IStoreInfo;\n\n @observable protected _context?: IStoreSelectionStateContext;\n\n private readonly preferredStoreLocalStorageKey: string = '_msdyn365__preferredStore_';\n\n constructor() {\n this.isMapModuleLoaded = false;\n const value = this._readFromToCookie(this.preferredStoreLocalStorageKey);\n try {\n const storeInfo: IStoreInfo | undefined = value ? JSON.parse(value) : undefined;\n if (storeInfo) {\n this.preferredStore = storeInfo;\n }\n } catch {\n this.preferredStore = undefined;\n }\n }\n\n public abstract geoLocate(searchTerm: string, actionContext: IActionContext): Promise;\n\n public abstract loadMapApi(input: ILoadMapApiInput): Promise;\n\n @action\n public async toggleListMapViewState(): Promise {\n this.listMapViewState = {\n displayList: !this.listMapViewState.displayList,\n displayMap: !this.listMapViewState.displayMap\n };\n }\n\n @action\n public async setMapModuleLoaded(input: boolean): Promise {\n this.isMapModuleLoaded = input;\n }\n\n @action\n public async setOrgUnitStoreInformation(input: IStoreSelectionStateContext): Promise {\n this._context = input;\n }\n\n @action\n public async setSelectedStoreLocationId(storeId: string | undefined): Promise {\n this.selectedStoreLocationId = storeId;\n }\n\n @action\n public async setPreferredStoreLocation(\n storeId?: string,\n storeName?: string | undefined,\n writeToCookie: boolean = false,\n latitude?: number,\n longitude?: number\n ): Promise {\n const storeInfo: IStoreInfo = { StoreId: storeId, StoreName: storeName, Latitude: latitude, Longitude: longitude };\n this.preferredStore = storeInfo;\n if (writeToCookie) {\n this._writeToCookie(this.preferredStoreLocalStorageKey, JSON.stringify(storeInfo));\n }\n }\n\n @action\n public async setLastInlineStoreInfo(latitude?: number, longitude?: number): Promise {\n const storeInfo: IStoreInfo = { StoreId: '', StoreName: '', Latitude: latitude, Longitude: longitude };\n this.lastInlineShownStoreInfo = storeInfo;\n }\n\n @action\n public async clearPreferredStore(writeToCookie: boolean): Promise {\n this.preferredStore = undefined;\n if (writeToCookie) {\n this._removeCookie(this.preferredStoreLocalStorageKey);\n }\n }\n\n @action\n public async openDialog(input: IStoreSelectionStateContext): Promise {\n if (this._context && this._context.id === input.id) {\n throw new Error('Dialog is already opened');\n }\n\n this._context = input;\n }\n\n @action\n public async closeDialog(): Promise {\n this._context = undefined;\n }\n\n private _removeCookie(key: string): void {\n if (!key) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.removeItem(key);\n }\n }\n\n private _writeToCookie(key: string, value: string | undefined): void {\n if (!key || !value) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.setItem(key, value);\n }\n }\n\n private _readFromToCookie(key: string): string | undefined {\n if (!key) {\n return undefined;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n const cookieValue = storage.getItem(key);\n if (cookieValue) {\n return cookieValue;\n }\n }\n\n return undefined;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { action } from 'mobx';\n\nimport { BaseStoreSelectorStateManager } from './base-store-selector-state-manager';\nimport { ILoadMapApiInput, IStoreSelectorLocation } from './i-store-selection-state-manager';\nimport { IMapWindow, MapLocationsResult } from './models/map-data';\n\ndeclare const window: IMapWindow;\n\n/**\n * Instance of IStoreSelectorStateManager manager that uses Map service\n * for geo location.\n */\nexport class MapStoreSelectorStateManager extends BaseStoreSelectorStateManager {\n private readonly SERVICE_ENDPOINT: string = 'https://dev.virtualearth.net/REST/v1/';\n\n private readonly MAP_API_ENDPOINT: string = 'https://www.bing.com/api/maps/mapcontrol?callback=mapAPIReady';\n\n @action\n public async geoLocate(searchTerm: string, actionContext: IActionContext): Promise {\n if (\n !searchTerm ||\n !actionContext.requestContext.channel ||\n !actionContext.requestContext.channel.BingMapsApiKey ||\n !actionContext.requestContext.channel.BingMapsEnabled\n ) {\n return undefined;\n }\n\n let searchContent: string = searchTerm;\n\n const jsonp = `mapSearchCallback_${crypto.getRandomValues(new Uint32Array(1))[0]}`;\n\n if (actionContext.requestContext.channel.ChannelCountryRegionISOCode) {\n searchContent = `${searchTerm.trim()} ${actionContext.requestContext.channel.ChannelCountryRegionISOCode}`;\n }\n\n const query = encodeURI(searchContent);\n const key = encodeURI(actionContext.requestContext.channel.BingMapsApiKey);\n\n const geolocationApiUrl =\n actionContext.requestContext.app &&\n actionContext.requestContext.app.config &&\n actionContext.requestContext.app.config.geolocationApiUrl;\n const requestUrl = `${\n geolocationApiUrl ? geolocationApiUrl : this.SERVICE_ENDPOINT\n }/Locations?query=${query}&key=${key}&jsonp=${jsonp}`;\n\n return new Promise(resolve => {\n const script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n script.setAttribute('src', requestUrl);\n\n window[jsonp] = (data: MapLocationsResult) => {\n delete window[jsonp];\n script.remove();\n\n if (data && data.resourceSets && data.resourceSets.length > 0 && data.resourceSets[0].resources.length > 0) {\n resolve({\n latitude: data.resourceSets[0].resources[0].point.coordinates[0],\n longitude: data.resourceSets[0].resources[0].point.coordinates[1]\n });\n }\n\n resolve(undefined);\n };\n\n document.body.appendChild(script);\n });\n }\n\n @action\n public async loadMapApi(input: ILoadMapApiInput): Promise {\n if (StringExtensions.isNullOrEmpty(input.key)) {\n return Promise.resolve();\n }\n\n const isScriptAlreadyLoaded = !!document?.getElementById('msdyn_map-api-script');\n\n if (isScriptAlreadyLoaded) {\n if (window) {\n const currentWindowAPI = window.mapAPIReady;\n window.mapAPIReady = () => {\n if (currentWindowAPI) {\n currentWindowAPI();\n }\n this.isMapApiLoaded = true;\n };\n }\n // Prevents from loading multiple script into the body\n return Promise.resolve();\n }\n\n const url = `${this.MAP_API_ENDPOINT}${input.key ? `&key=${input.key}` : ''}${input.lang ? `&setLang=${input.lang}` : ''}${\n input.market ? `&setMkt=${input.market}` : ''\n }`;\n\n return new Promise((resolve, reject) => {\n const script = document?.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n script.id = 'msdyn_map-api-script';\n if (window) {\n window.mapAPIReady = () => {\n this.isMapApiLoaded = true;\n resolve();\n };\n }\n script.addEventListener('error', (error: string | Event) => {\n reject(error);\n });\n document?.body?.appendChild(script);\n });\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IStoreSelectorStateManager } from './i-store-selection-state-manager';\nimport { MapStoreSelectorStateManager } from './map-store-selector-state-manager';\n\nexport function createStoreSelectorStateInput(result: IStoreSelectorStateManager): GenericInput {\n return new GenericInput('mapSSSM', result, 'IStoreSelectorStateManager');\n}\n\nconst createStoreSelectorStateInputInternal = (inputData: ICreateActionContext>): IActionInput => {\n return createStoreSelectorStateInput(new MapStoreSelectorStateManager());\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n action: >getGenericAction,\n input: createStoreSelectorStateInputInternal\n});\n\nexport default getGenericActionDataAction;\n","module.exports = React;","module.exports = ReactDOM;"],"names":["getTotalInventory","props","state","_props$data$storeSele","typeName","totalInventoryClassName","toLocaleLowerCase","_getClassNamePrefix","totalInventory","storeNum","preferredStore","data","storeSelectorStateManager","result","preferredStoreInventory","preferredStoreName","availabilities","availabilitiesWithHours","forEach","availability","_availability$OrgUnit","_availability$OrgUnit2","itemAvailabilities","OrgUnitAvailability","ItemAvailabilities","inventory","AvailableQuantity","OrgUnitLocation","InventoryLocationId","StoreId","StoreName","React","className","modalCloseButtonReference","onClickFindInStoreHandler","callbacks","async","findInStoreOnClick","onClickFindInStoreHandler2","cart","productAvailableQuantity","storeLocations","resources","context","selectedProduct","quantity","dataProduct","product","preferredStoreInfo","preferredStoreId","missingDimensions","Dimensions","filter","dimension","DimensionValue","Value","length","_props$context2","Promise","resolve","shouldHideInventory","behavior","app","config","addToCartBehavior","storeLocationList","undefined","_storeLocation$OrgUni","_props$data$deliveryO","_deliveryOptions$","storeLocation","find","location","_location$OrgUnitAvai","OrgUnitNumber","orgUnitLocation","deliveryOptions","DeliveryOptions","deliveryMode","Code","addProductToCart","count","then","status","substatus","productAvailability","changeModalOpen","ProductAvailableQuantity","ArrayExtensions","hasElements","shippingInventory","shipping","deliveryType","DeliveryMode","pickup","failureResult","failureReason","cartActionResult","updateErrorState","errorHost","configureErrors","otherError","getGenericError","navigationUrl","getUrlSync","actionContext","AddToCartBehavior","goToCart","window","assign","showModal","showNotification","_props$data$productPr3","defaultImageSettings","viewports","xs","q","w","h","lg","xl","lazyload","telemetryContent","getTelemetryObject","request","telemetryPageName","friendlyName","telemetry","dialogStrings","goToCartText","buyBoxGoToCartText","continueShoppingText","buyBoxContinueShoppingText","closeNotificationLabel","headerItemOneText","buyBoxSingleItemText","headerItemFormatText","buyBoxMultiLineItemFormatText","headerMessageText","buyBoxHeaderMessageText","freePriceText","priceFree","originalPriceText","currentPriceText","addedQuantityText","notification","ItemSuccessfullyAddedToCartNotification","gridSettings","productPrice","id","NotificationsManager","instance","addNotification","catch","error","exception","debug","getConfigureErrors","findInStoreOnClick2","getBuyboxFindInStore","_data$product","_data$productPrice","_data$cart","_data$deliveryOptions","_data$productAvailabl","_data$featureState","_data$channelDelivery","_product$Dimensions","_props$data$product","_props$data$productPr","slots","storeSelector","findInStoreHeaderText","descriptionTextToShowAllPickupOptions","channel","PickupDeliveryModeCode","price","retailMulitplePickupMFeatureState","featureState","Name","IsEnabled","channelDeliveryOptionConfig","_dimension$DimensionV","errorState","quantityError","modalOpen","isSectionDisabled","buttonText","buttonText2","description","isStockCheck","buyboxResources","isLoading","pickupInventory","findInStoreLinkText","findInStoreDescriptionText","isAggregatedInventory","_pickupInventory","IsProductAvailable","findInStoreNotAvailableTextButton","findInStoreNotAvailableDescription","getFindInStoreInventorySettings","enableStockCheck","matchDeliveryOptions","productdeliveryOptions","storePickUpOptionList","deliveryOption","map","delivery","deliveryCode","push","PickupDeliveryModeCodes","option","priceComponent","PriceComponent","popupProps","imageSettings","productQuantity","setModalOpen","renderModalPopup","Popup","Object","ContainerProps","openFindInStoreDialog","heading","Heading","headingTag","text","productPickupOptionList","item","Description","key","errors","BuyboxErrorBlock","showError","button","onClick","color","ref","disabled","title","button2","modal","_props$data","modules","storeSelectorId","keys","openDialog","parentElementRef","onLocationSelected","_props$context","_props$data$productPr2","message","Buybox","constructor","super","dimensionUpdateQueue","FinitePromiseQueue","dimensions","buyboxCallbacks","updateQuantity","newQuantity","_objectSpread","this","setState","newErrorState","updateSelectedProduct","newSelectedProduct","newInventory","newPrice","newDeliveryOptions","productDeliveryOptions","_updatePrice","dimensionSelectedAsync","selectedDimensionId","selectedDimensionValueId","enqueue","_updateDimensions","FinitePromiseQueueError","ProcessWasDiscardedFromTheQueue","getDropdownName","dimensionType","_getDropdownName","isModalOpen","changeUpdatingDimension","isUpdatingDimension","changeUpdatingDeliveryOptions","isUpdatingDeliveryOptions","updateKeyInPrice","customPrice","customAmountError","isPriceKeyedIn","keyInPriceAmount","_onBulkPurchaseLinkClick","bulkPurchaseModule","boundingRect","getBoundingClientRect","scrollTo","left","top","productDimensions","hasProductDimensions","dimensionsToUpdate","clearErrorState","previousState","_getProductVariant","productVariant","productVariantPromise","promises","_getDimensionsForSelectedVariant","mappedDimensions","_hydrateInventoryInfo","_hydratePrice","_hydrateDeliveryOptions","_updateQuantitiesInState","all","_this$props$data$prod","isGiftCard","IsGiftCard","productDimensionTypeColor","productDimensionTypeConfiguration","productDimensionTypeSize","productDimensionTypeAmount","productDimensionTypeStyle","min","max","ItemTypeValue","ReleasedProductType","Service","isServiceItem","maxRecentlyViewedItemsCount","RecentlyViewedState","RecordId","render","_this$props$data$prod2","mediaGallery","productComparisonButton","inventoryLevel","dimensionValuesWithInventory","flatten","validValues","value","hasAvailableProducts","some","getInventoryLevelCodeFromDimensionValue","InventoryLevelValues","outOfStock","viewProps","ModuleProps","moduleProps","classnames","ProductInfoContainerProps","MediaGalleryContainerProps","getBuyboxProductTitle","getBuyboxProductDescription","bulkPurchaseLink","_renderBuyboxBulkPurchaseLink","unitOfMeasure","getBuyboxProductUnitOfMeasure","configure","getBuyboxProductConfigure","findInStore","getBuyboxProductPrice","addToCart","getBuyboxAddToCart","getBuyboxProductComparisonButton","getCatalogId","addToOrderTemplate","getBuyboxProductAddToOrderTemplate","addToWishlist","getBuyboxProductAddToWishlist","rating","hideRating","getBuyboxProductRating","getBuyboxProductQuantity","inventoryLabel","getBuyBoxInventoryLabel","shopSimilarLook","enableShopSimilarLooks","getBuyboxShopSimilarButton","ShopSimiliarButtonType","Looks","shopSimilarDescription","enableShopSimilarDescription","keyInPrice","enableKeyInPrice","isCustomPriceSelected","getBuyboxKeyInPrice","quantityLimitsMessages","getQuantityLimitsMessages","renderView","isBulkPurchaseEnabled","msdyn365Commerce","isBrowser","bulkPurchaseModules","Array","from","document","getElementsByClassName","BulkPurchase","Button","bulkPurchaseLinkText","arguments","CustomerContextualPrice","apiSettings","channelId","_ref","_dimension$dimensionV","_dimensions$find$Dime","_dimensions$find","DimensionValues","DimensionTypeValue","_value$DimensionValue","toString","ExtensionProperties","setDimensionValuesToQuery","requestContext","url","requestUrl","selectedProductPromise","getSelectedVariant","SelectedVariantInput","MasterProductId","getDimensionsForSelectedVariant","GetDimensionsForSelectedVariantInput","_productVariant$Dimen","newAvailableQuantity","getProductAvailabilitiesForSelectedVariant","ProductAvailabilitiesForSelectedVariantInput","newShippingQuantity","toLowerCase","getPriceForSelectedVariant","PriceForSelectedVariantInput","_this$props$data$feat","retailMultiplePickupFeatureState","getDeliveryOptionsForSelectedVariant","GetDeliveryOptionsForSelectedVariantInput","_product$Behavior","_product$Behavior2","_product$Behavior3","_product$Behavior4","_isOrderQuantityLimitsFeatureEnabled","Behavior","MinimumQuantity","MaximumQuantity","maxQuantityForCartLineItem","_this$props$context","_featureStatuses$find","defaultOrderQuantityLimitsFeatureConfig","platform","enableDefaultOrderQuantityLimits","featureStatuses","RetailDefaultOrderQuantityLimitsFeatureName","customerInfo","customerInformation","information","IsB2b","_renderAddToCart","errorBlock","Node","_renderAddToOrderTemplate","_renderAddToWishlist","_renderConfigure","dropdowns","_renderConfigureDropdown","_renderSocialShare","socialShare","dropdown","LabelContainerProps","select","_renderFindInStore","_renderQuantity","input","_renderKeyInPrice","_renderShopSimilarItem","shopSimilarItem","Module","RwbIncrementalQuantity","RwbIncrementalQuantity_1","_props$currentCount","_this$props$min","converage","nst","conversion","inputRef","isMobileView","isMobileCheck","isMobile","variant","VariantType","Browser","sm","md","_validateMin","Number","isNaN","currentInput","_minValue","currentValue","Math","currentCount","isUpdating","UOMCollection","split","element","found","match","parseFloat","_onIncrement","bind","_onDecrement","_handleChange","_handleCoverageChange","_handleNstChange","payLoad","getPayloadObject","defaultProps","_fixPercision","onChange","_props$applyDefaultOr","nextState","_props$currentCount2","applyDefaultOrderSettings","_this$props$inputQuan","glyphMinusClassName","decrementGlyphClass","glyphPlusClassName","incrementGlyphClass","decrementDisabled","incrementDisabled","contentAction","etext","TelemetryConstant","DecrementQuantity","decrementAttributes","getTelemetryAttributes","IncrementQuantity","incrementAttributes","ariaLablelText","inputQuantityAriaLabel","extraClassDecrement","extraClassIncrement","_this$props$inputQuan2","_this$props$inputQuan3","calcTitle","type","name","colSpan","toFixed","decrementButtonAriaLabel","pattern","readOnly","onBlur","role","incrementButtonAriaLabel","invokeCallback","currQuantity","updatedQuantity","num","round","e","coverage2","parseInt","target","ceil","nst2","area","_debounce","inputElement","current","HTMLInputElement","setAttribute","__decorate","observer","generateAddToOrderTemplateDialogResources","addToOrderTemplateHeader","noOrderTemplatesMessage","noOrderTemplatesDescription","createAnOrderTemplateButtonText","createNewOrderTemplateButtonText","cancelOrderTemplateCreationButtonText","selectTemplatesText","addToTemplateButtonText","lineItemsText","generateOrderTemplateNameDialogResources","orderTemplateHeaderLabel","createOrderTemplateHeader","orderTemplateTitleLabel","orderTemplateTitle","orderTemplateNameAriaLabel","orderTemplateDescription","createOrderTemplateDescription","defaultOrderTemplateName","orderTemplateButtonLabel","createOrderTemplateButtonText","orderTemplateCancelButtonLabel","cancelNewOrderTemplateCreationButtonText","generateItemAddedToOrderTemplateDialogResources","viewOrderTemplateButtonText","continueShoppingButtonText","itemAddedToOrderTemplateHeaderItemOneText","itemAddedToOrderTemplateHeaderItemFormatText","itemAddedToOrderTemplateHeaderMessageText","generateDuplicateItemsWhenAddingToOrderTemplateDialogResources","duplicatedProductsHeader","duplicatedProductsDescription","updateQuantityButtonText","cancelDuplicateItemsButtonText","onAddToOrderTemplateFailed","BuyBoxConstants","onChangeHandler","newValue","renderAddToOrderTemplate","orderTemplateButton","renderAddToOrderTemplateButton","orderTemplates","AddToOrderTemplateComponent","addToOrderTemplateButtonText","addToOrderTemplateButtonTooltip","addToOrderTemplateDialogResources","createOrderTemplateDialogResources","itemAddedToOrderTemplateDialogResources","duplicateItemsWhenAddingToOrderTemplateDialogResources","onError","shouldShowButtonFailedTooltip","showButtonTooltip","showButtonText","onAddToWishlistFailed","renderAddToWishlist","enableWishlist","wishlistButton","renderAddtoWishlistButton","wishlists","AddToWishlistComponent","addToWishlistButtonText","removeFromWishlistButtonText","addToWishlistMessage","removedFromWishlistMessage","addItemToWishlistError","removeItemFromWishlistError","nameOfWishlist","ariaRole","getSelectedProduct","renderShopSimilarItem","renderConfigureDropdown","_props$data$product$r","_props$data$product$r3","appConfig","skuText","ItemId","setAvailability","isStoreChange","setIsStoreChange","getInventory","_props$data$product$r2","GetFullAvailableInventoryNearbyInput","zero","getFullAvailableInventoryNearby","response","_preferredStoreAvaila","isPreferredStore","_value$OrgUnitAvailab","filteredFullOrgUnitAvailability","preferredStoreAvailability","stockStatusLabel","availabilityWithHours","ProductInventoryInformation","productInventoryInformation","_availabilityWithHour","InventLocationId","StockLevelLabel","getStockInventoryLabel","resourceLabel","inStockText","outOfStockText","stockText","preferredStoreAvailabilityText","format","availabilityAtPreferredStoreText","btn","getElementById","removeAttribute","displayStockAvailability","reaction","_props$data$storeSele2","selectedStoreLocationId","priceText","renderConfigure","renderKeyInPrice","renderQuantity","quantityComponent","extentionResources","_data$product$result","_data$product$result2","_data$product$result3","extensionProperties","defaultUOM","DefaultUnitOfMeasure","_extensionProperties$","uomCollecton","StringValue","minQuantityText","maxQuantityText","AdjustedPrice","renderAvailabilityAtPreferredStore","_props$data$product$r4","_props$data$product$r5","tag","renderAddToCart","renderFindInStore","shopText","descriptionText","productSpecification","binding","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","c","require","$type","da","path","runOn","iNM","ns","n","p","pdp","__bindings__","viewDictionary","cn","BaseStoreSelectorStateManager","listMapViewState","displayList","displayMap","preferredStoreLocalStorageKey","isMapModuleLoaded","_readFromToCookie","storeInfo","JSON","parse","_unused","_context","storeId","storeName","writeToCookie","Latitude","Longitude","_writeToCookie","stringify","latitude","longitude","lastInlineShownStoreInfo","_removeCookie","MsDyn365","localStorage","removeItem","setItem","cookieValue","getItem","computed","observable","action","MapStoreSelectorStateManager","SERVICE_ENDPOINT","MAP_API_ENDPOINT","searchTerm","BingMapsApiKey","BingMapsEnabled","searchContent","jsonp","crypto","getRandomValues","Uint32Array","ChannelCountryRegionISOCode","trim","query","encodeURI","geolocationApiUrl","script","createElement","remove","resourceSets","point","coordinates","body","appendChild","_document","StringExtensions","isNullOrEmpty","currentWindowAPI","mapAPIReady","isMapApiLoaded","lang","market","reject","_document2","_document3","defer","src","addEventListener","createStoreSelectorStateInput","GenericInput","getGenericActionDataAction","createObservableDataAction","getGenericAction","inputData","module","exports","ReactDOM"],"sourceRoot":""}