{"version":3,"file":"static/js/59d2a9e5deb671fdbcc1.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/buybox/actions/DataServiceEntities.g.ts?0a69","webpack://Msdyn365.Commerce.Online/./src/modules/buybox/actions/DataActionExtension.g.ts?83ea","webpack://Msdyn365.Commerce.Online/./src/modules/buybox/components/buybox-find-in-store.tsx?322c","webpack://Msdyn365.Commerce.Online/./src/modules/buybox/buybox.tsx?e884","webpack://Msdyn365.Commerce.Online/./src/modules/buybox/buybox.view.tsx?e499","webpack://Msdyn365.Commerce.Online/./src/themes/fabrikam/views/buybox.view.tsx?e8f6","webpack://Msdyn365.Commerce.Online/./lib/buybox/module-registration.js?bcce","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/./src/modules/fabrikam/views/buybox.view.tsx?aec4","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/buybox-add-to-order-template.tsx?ceb4","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/buybox.view.tsx?98cf","webpack://Msdyn365.Commerce.Online/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online/external var \"ReactDOM\"?853b"],"sourcesContent":["// @ts-ignore -- Unused import\r\nimport * as EntityClasses from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceModels.g';\r\n//import * as Entities from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n// @ts-ignore -- Unused import\r\nimport { jsonLightReadStringPropertyValue } from '@msdyn365-commerce/retail-proxy/dist/externals';\r\n\r\n/**\r\n * GetConfigParamEntity entity interface.\r\n */\r\nexport interface IGetConfigParamEntity {\r\n id: string;\r\n ErrorPageURL?: string;\r\n}\r\n\r\n/**\r\n * ValidateTokenEntity entity interface.\r\n */\r\nexport interface IValidateTokenEntity {\r\n id: string;\r\n issuingParty?: string;\r\n code?: string;\r\n batchNumber?: string;\r\n status?: string;\r\n expiryDateUtc: Date;\r\n category?: string;\r\n type?: string;\r\n title?: string;\r\n errors?: IError[];\r\n errorPageURL?: string;\r\n prodID?: string;\r\n prodName?: string;\r\n userDefinedProperties?: IUserdefinedproperty[];\r\n}\r\n\r\n/**\r\n * Userdefinedproperty entity interface.\r\n */\r\nexport interface IUserdefinedproperty {\r\n id: string;\r\n values?: string[];\r\n}\r\n\r\n/**\r\n * Error entity interface.\r\n */\r\nexport interface IError {\r\n code?: string;\r\n message?: string;\r\n}\r\n\r\n/**\r\n * GetConfigParamEntity entity class.\r\n */\r\nexport class GetConfigParamEntityExtensionClass implements IGetConfigParamEntity {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public id: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ErrorPageURL: string;\r\n\r\n // Navigation properties names\r\n\r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.id = odataObject.id;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ErrorPageURL = odataObject.ErrorPageURL;\r\n }\r\n}\r\n\r\n/**\r\n * ValidateTokenEntity entity class.\r\n */\r\nexport class ValidateTokenEntityExtensionClass implements IValidateTokenEntity {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public id: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public issuingParty: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public code: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public batchNumber: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public status: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public expiryDateUtc: Date;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public category: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public type: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public title: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public errors: IError[];\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public errorPageURL: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public prodID: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public prodName: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public userDefinedProperties: IUserdefinedproperty[];\r\n\r\n // Navigation properties names\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public static userDefinedPropertiesPropertyName: string = 'userDefinedProperties';\r\n\r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.id = odataObject.id;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.issuingParty = odataObject.issuingParty;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.code = odataObject.code;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.batchNumber = odataObject.batchNumber;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.status = odataObject.status;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.expiryDateUtc =\r\n odataObject.expiryDateUtc instanceof Date\r\n ? odataObject.expiryDateUtc\r\n : odataObject.expiryDateUtc\r\n ? jsonLightReadStringPropertyValue(odataObject.expiryDateUtc, 'Edm.DateTimeOffset', false)\r\n : undefined;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.category = odataObject.category;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.type = odataObject.type;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.title = odataObject.title;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.errors = undefined;\r\n if (odataObject.errors) {\r\n this.errors = [];\r\n for (var i = 0; i < odataObject.errors.length; i++) {\r\n if (odataObject.errors[i]) {\r\n if (odataObject.errors[i]['@odata.type']) {\r\n var className: string = odataObject.errors[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat('Class');\r\n if (EntityClasses[className]) {\r\n this.errors[i] = new EntityClasses[className](odataObject.errors[i]);\r\n }\r\n } else {\r\n this.errors[i] = new ErrorExtensionClass(odataObject.errors[i]);\r\n }\r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.errors[i] = undefined;\r\n }\r\n }\r\n }\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.errorPageURL = odataObject.errorPageURL;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.prodID = odataObject.prodID;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.prodName = odataObject.prodName;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.userDefinedProperties = undefined;\r\n if (odataObject.userDefinedProperties) {\r\n this.userDefinedProperties = [];\r\n for (var k = 0; k < odataObject.userDefinedProperties.length; k++) {\r\n if (odataObject.userDefinedProperties[k]) {\r\n if (odataObject.userDefinedProperties[k]['@odata.type']) {\r\n var classNameUD: string = odataObject.userDefinedProperties[k]['@odata.type'];\r\n classNameUD = classNameUD.substr(classNameUD.lastIndexOf('.') + 1).concat('Class');\r\n if (EntityClasses[classNameUD]) {\r\n this.userDefinedProperties[k] = new EntityClasses[classNameUD](odataObject.userDefinedProperties[k]);\r\n }\r\n } else {\r\n this.userDefinedProperties[k] = new UserdefinedpropertyExtensionClass(odataObject.userDefinedProperties[k]);\r\n }\r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.userDefinedProperties[k] = undefined;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Userdefinedproperty entity class.\r\n */\r\nexport class UserdefinedpropertyExtensionClass implements IUserdefinedproperty {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public id: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public values: string[];\r\n\r\n // Navigation properties names\r\n\r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.id = odataObject.id;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.values = undefined;\r\n if (odataObject.values) {\r\n this.values = [];\r\n for (var i = 0; i < odataObject.values.length; i++) {\r\n if (odataObject.values[i]) {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.values[i] = odataObject.values[i];\r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.values[i] = undefined;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Error entity class.\r\n */\r\nexport class ErrorExtensionClass implements IError {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public code: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public message: string;\r\n\r\n // Navigation properties names\r\n\r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.code = odataObject.code;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.message = odataObject.message;\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 * THIS FILE IS AN AUTOGENERATED TYPESCRIPT PROXY EXTENSION.\r\n * TO USE THIS FILE, IT MUST BE ADDED TO A D365COMMERCE APPLICATION\r\n */\r\nimport {\r\n AsyncResult,\r\n callActionOrExecute,\r\n DataServiceQuery,\r\n IContext,\r\n IDataServiceRequest,\r\n /*IQueryResultSettings,*/\r\n // @ts-ignore -- Unused import\r\n NullResult\r\n} from '@msdyn365-commerce/retail-proxy';\r\n// @ts-ignore -- Unused import\r\nimport * as EntityClasses from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceModels.g';\r\n// @ts-ignore -- Unused import\r\nimport * as Entities from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport * as DataServiceEntities from './DataServiceEntities.g';\r\n\r\n// @ts-ignore\r\nfunction getConfigParamQuery(id?: string): DataServiceQuery {\r\n const key = id ? { id: id } : null;\r\n return new DataServiceQuery('GetConfigParam', 'GetConfigParamEntity', DataServiceEntities.GetConfigParamEntityExtensionClass, key);\r\n}\r\n\r\nexport function createGetConfigParamValuesInput(paramName: string): IDataServiceRequest {\r\n const query = getConfigParamQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'GetConfigParamValues',\r\n true,\r\n DataServiceEntities.GetConfigParamEntityExtensionClass,\r\n 'false',\r\n { bypassCache: 'none', returnEntity: 'DataServiceEntities.IGetConfigParamEntity' },\r\n { paramName: paramName }\r\n );\r\n}\r\n\r\nexport function getConfigParamValuesAsync(context: IContext, paramName: string): AsyncResult {\r\n const request = createGetConfigParamValuesInput(paramName);\r\n return callActionOrExecute(request, context.callerContext);\r\n}\r\n\r\n// @ts-ignore\r\nfunction validateTokenQuery(id?: string): DataServiceQuery {\r\n const key = id ? { id: id } : null;\r\n return new DataServiceQuery('ValidateToken', 'ValidateTokenEntity', DataServiceEntities.ValidateTokenEntityExtensionClass, key);\r\n}\r\n\r\nexport function createValidateTokenInput(tokenCode: string, version: string, issuingParty: string): IDataServiceRequest {\r\n const query = validateTokenQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'ValidateToken',\r\n true,\r\n DataServiceEntities.ValidateTokenEntityExtensionClass,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IValidateTokenEntity' },\r\n { tokenCode: tokenCode, version: version, issuingParty: issuingParty }\r\n );\r\n}\r\n\r\nexport function validateTokenAsync(\r\n context: IContext,\r\n tokenCode: string,\r\n version: string,\r\n issuingParty: string\r\n): AsyncResult {\r\n const request = createValidateTokenInput(tokenCode, version, issuingParty);\r\n return callActionOrExecute(request, context.callerContext);\r\n}\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable no-duplicate-imports */\nimport {\n AddToCartBehavior,\n IAddToCartFailureResult,\n IAddToCartResources,\n ItemSuccessfullyAddedToCartNotification,\n PriceComponent\n} from '@msdyn365-commerce/components';\nimport { getUrlSync, ICoreContext, IImageSettings } from '@msdyn365-commerce/core';\nimport { ICartActionResult } from '@msdyn365-commerce/global-state';\nimport { DeliveryOption, FeatureState, OrgUnitLocation, ProductAvailableQuantity, ProductDimension } from '@msdyn365-commerce/retail-proxy';\nimport { NotificationsManager } from '@msdyn365-commerce-modules/notifications-core';\nimport {\n ArrayExtensions,\n DeliveryMode,\n IProductInventoryInformation,\n isAggregatedInventory\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, Heading, INodeProps, IPopupProps, Popup } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { BuyboxErrorBlock } from '@msdyn365-commerce-modules/buybox';\nimport { IBuyboxCallbacks, IBuyboxState } from '@msdyn365-commerce-modules/buybox';\nimport { getConfigureErrors, getGenericError } from '@msdyn365-commerce-modules/buybox';\nimport { IBuyboxData } from '../buybox.data';\nimport { IBuyboxProps, IBuyboxResources } from '../buybox.props.autogenerated';\n\nconst modalCloseButtonReference: React.RefObject = React.createRef();\n\n/**\n * FindinStore failure Interface.\n */\nexport interface IFindInStoreFailureResult {\n missingDimensions?: ProductDimension[];\n}\n\n/**\n * BuyBoxFindinStore View Props Interface.\n */\nexport interface IBuyboxFindInStoreViewProps {\n storeSelector?: React.ReactNode;\n heading?: React.ReactNode;\n description?: React.ReactNode;\n errors?: React.ReactNode;\n button?: React.ReactNode;\n productPickupOptionList?: React.ReactNode;\n\n modal?: React.ReactNode;\n\n ContainerProps: INodeProps;\n\n openFindInStoreDialog(): Promise;\n}\n\n/**\n * On click find store handler.\n * @param props -Buybox data.\n * @param state -Buybox state.\n * @param callbacks -Buybox callbacks.\n * @returns Find in store.\n */\nconst onClickFindInStoreHandler = (props: IBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks) => async () => {\n await findInStoreOnClick(props, state, callbacks);\n};\n\n/**\n * Inventory settings based on the inventory policy for aggregated availability.\n */\ninterface IInventorySettingsProps {\n isSectionDisabled: boolean;\n description: string;\n buttonText: string;\n}\n\n/**\n * The function defines the settings values for a given inventory configuration.\n * @param context - The context.\n * @param isStockCheck - Flag to enable inventory validation.\n * @param productAvailability - The product inventory information.\n * @param buyboxResources - The buybox string resources.\n * @param isLoading - Is loading.\n * @returns Boolean.\n */\nfunction getFindInStoreInventorySettings(\n context: ICoreContext,\n isStockCheck: boolean,\n productAvailability: IProductInventoryInformation[] | undefined,\n buyboxResources: IBuyboxResources,\n isLoading?: boolean\n): IInventorySettingsProps {\n // If shouldValidateAggregation is true then is required to check for the product inventory, based on this the messaging will change\n // and the find in store button will be ensbled or disabled\n\n let isSectionDisabled: boolean;\n let buttonText;\n let description: string;\n\n let pickupInventory: IProductInventoryInformation | undefined;\n\n if (!isStockCheck || isLoading) {\n return {\n isSectionDisabled: false,\n buttonText: buyboxResources.findInStoreLinkText,\n description: buyboxResources.findInStoreDescriptionText\n };\n }\n\n if (productAvailability) {\n pickupInventory = productAvailability.find(pickup => pickup.deliveryType === DeliveryMode.pickup);\n }\n\n // If aggregated is enabled, then we need to validate the inventor check for find in store.\n // If an individual is selected, then we will always show a find in store button.\n if (isAggregatedInventory(context.actionContext)) {\n if (productAvailability && pickupInventory?.IsProductAvailable) {\n isSectionDisabled = false;\n buttonText = buyboxResources.findInStoreLinkText;\n description = buyboxResources.findInStoreDescriptionText;\n } else {\n isSectionDisabled = true;\n buttonText = buyboxResources.findInStoreNotAvailableTextButton;\n description = buyboxResources.findInStoreNotAvailableDescription;\n }\n } else {\n isSectionDisabled = false;\n buttonText = buyboxResources.findInStoreLinkText;\n description = buyboxResources.findInStoreDescriptionText;\n }\n\n return {\n isSectionDisabled,\n description,\n buttonText\n };\n}\n\n/**\n * Method to check if we have atleast one common delivery code between product and channel.\n * @param productdeliveryOptions - Product DeliveryOption List.\n * @param storePickUpOptionList - Channel DeliveryOption List.\n * @returns Boolean flag.\n */\nconst matchDeliveryOptions = (\n productdeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: string[] | undefined\n): boolean => {\n const deliveryOption: string[] = [];\n productdeliveryOptions?.map(delivery => {\n const pickup = storePickUpOptionList?.find(deliveryCode => deliveryCode === delivery.Code);\n if (pickup) {\n deliveryOption.push(pickup);\n }\n return deliveryOption;\n });\n\n return ArrayExtensions.hasElements(deliveryOption);\n};\n\nexport function getBuyboxFindInStore(\n props: IBuyboxProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks\n): IBuyboxFindInStoreViewProps | undefined {\n const {\n data,\n slots: { storeSelector },\n resources: {\n priceFree,\n originalPriceText,\n currentPriceText,\n findInStoreHeaderText,\n buyBoxGoToCartText,\n buyBoxContinueShoppingText,\n closeNotificationLabel,\n buyBoxSingleItemText,\n buyBoxMultiLineItemFormatText,\n buyBoxHeaderMessageText,\n descriptionTextToShowAllPickupOptions\n },\n context: {\n request: { channel: { PickupDeliveryModeCode } = { PickupDeliveryModeCode: undefined } }\n }\n } = props;\n\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const product = data?.product?.result;\n const price = data?.productPrice?.result;\n const cart = data?.cart?.result;\n const deliveryOptions = data?.deliveryOptions?.result;\n const productAvailability = data.productAvailableQuantity?.result;\n const retailMulitplePickupMFeatureState = data?.featureState?.result?.find(\n (featureState: FeatureState) => featureState.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n const channelDeliveryOptionConfig = data?.channelDeliveryOptionConfig?.result;\n\n const missingDimensions = product?.Dimensions?.filter(dimension => !dimension.DimensionValue?.Value);\n\n const {\n errorState: { configureErrors, quantityError, otherError, errorHost },\n modalOpen,\n quantity\n } = state;\n\n const { isSectionDisabled, buttonText, description } = getFindInStoreInventorySettings(\n props.context,\n props.context.app.config.enableStockCheck,\n productAvailability,\n props.resources,\n props.data.productAvailableQuantity.status === 'LOADING' || ArrayExtensions.hasElements(missingDimensions)\n );\n\n if (!product || !ArrayExtensions.hasElements(storeSelector)) {\n return undefined;\n }\n\n if (!deliveryOptions || !deliveryOptions.DeliveryOptions) {\n return undefined;\n }\n\n // If no delivery options present on the product, or none of the delivery options\n // match the PickupDeliveryModeCode, that means the item cannot be used for BOPIS\n if (retailMulitplePickupMFeatureState && channelDeliveryOptionConfig) {\n if (!matchDeliveryOptions(deliveryOptions.DeliveryOptions, channelDeliveryOptionConfig?.PickupDeliveryModeCodes)) {\n return undefined;\n }\n } else if (\n !PickupDeliveryModeCode ||\n !deliveryOptions.DeliveryOptions.find((option: DeliveryOption) => option.Code === PickupDeliveryModeCode)\n ) {\n return undefined;\n }\n\n const dialogStrings = {\n goToCartText: buyBoxGoToCartText,\n continueShoppingText: buyBoxContinueShoppingText,\n closeNotificationLabel,\n headerItemOneText: buyBoxSingleItemText,\n headerItemFormatText: buyBoxMultiLineItemFormatText,\n headerMessageText: buyBoxHeaderMessageText,\n freePriceText: priceFree,\n originalPriceText,\n currentPriceText\n };\n\n const priceComponent = price ? (\n \n ) : (\n ''\n );\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=240&h=240&m=6', w: 0, h: 0 },\n lg: { q: 'w=240&h=240&m=6', w: 0, h: 0 },\n xl: { q: 'w=240&h=240&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n const popupProps: IPopupProps = {\n context: props.context,\n className: 'ms-buybox',\n id: props.id,\n typeName: props.typeName,\n data: { product: props.data.product?.result, price: props.data.productPrice?.result },\n dialogStrings,\n imageSettings: defaultImageSettings,\n gridSettings: props.context.request.gridSettings,\n productQuantity: quantity,\n priceComponent,\n navigationUrl: getUrlSync('cart', props.context.actionContext),\n modalOpen,\n setModalOpen: callbacks.changeModalOpen\n };\n const renderModalPopup = ;\n\n return {\n ContainerProps: {\n className: 'ms-buybox__find-in-store'\n },\n\n storeSelector: storeSelector[0],\n\n openFindInStoreDialog: onClickFindInStoreHandler(props, state, callbacks),\n\n heading: ,\n\n description:

{description}

,\n productPickupOptionList:\n retailMulitplePickupMFeatureState && !isSectionDisabled ? (\n <>\n

{descriptionTextToShowAllPickupOptions}

\n
    \n {deliveryOptions.DeliveryOptions.map((item: DeliveryOption) => {\n return (\n
  • \n {item.Description}\n
  • \n );\n })}\n
\n \n ) : null,\n errors: (\n \n ),\n\n button: (\n \n {buttonText}\n \n ),\n\n modal: renderModalPopup\n };\n}\n\n/**\n * Handler for find in store button.\n * @param props - BuyBox data.\n * @param state - BuyBox state.\n * @param callbacks - BuyBox callbacks.\n * @returns - Promise.\n */\nasync function findInStoreOnClick(props: IBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks): Promise {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager },\n cart: { result: cart },\n productAvailableQuantity: { result: productAvailableQuantity }\n },\n resources,\n context,\n modules\n } = props;\n\n const { selectedProduct, quantity } = state;\n\n let dataProduct = props.data.product.result;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const retailMulitplePickupMFeatureState = props.data?.featureState?.result?.find(\n (featureState: FeatureState) => featureState.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n\n if (selectedProduct) {\n dataProduct = (await selectedProduct) || dataProduct;\n }\n\n if (!dataProduct || !storeSelectorStateManager) {\n return;\n }\n\n const product = dataProduct;\n\n const missingDimensions =\n product.Dimensions &&\n product.Dimensions.filter((dimension: ProductDimension) => !(dimension.DimensionValue && dimension.DimensionValue.Value));\n\n let storeSelectorId: string = '';\n if (modules && Object.keys(modules).length > 0 && modules.storeSelector && modules.storeSelector.length > 0) {\n storeSelectorId = modules.storeSelector[0].id;\n }\n\n if (missingDimensions && missingDimensions.length > 0) {\n if (callbacks.updateErrorState) {\n callbacks.updateErrorState({\n errorHost: 'FINDINSTORE',\n configureErrors: getConfigureErrors(missingDimensions, resources)\n });\n }\n } else {\n storeSelectorStateManager\n .openDialog({\n product,\n id: storeSelectorId,\n parentElementRef: modalCloseButtonReference,\n deliveryOptions: retailMulitplePickupMFeatureState ? props.data.deliveryOptions.result : undefined,\n onLocationSelected: async (orgUnitLocation: OrgUnitLocation, deliveryMode: string) => {\n if (!cart) {\n return Promise.resolve();\n }\n\n const behavior = props.context?.app?.config?.addToCartBehavior;\n\n return cart\n .addProductToCart({ product, count: quantity, location: orgUnitLocation, deliveryMode })\n .then((result: ICartActionResult) => {\n if (result.status === 'FAILED' && result.substatus === 'MAXQUANTITY') {\n callbacks.changeModalOpen(false);\n let productAvailability: ProductAvailableQuantity | undefined;\n if (state.productAvailableQuantity) {\n productAvailability = state.productAvailableQuantity.ProductAvailableQuantity;\n } else if (productAvailableQuantity && ArrayExtensions.hasElements(productAvailableQuantity)) {\n const shippingInventory = productAvailableQuantity.find(\n shipping => shipping.deliveryType === DeliveryMode.pickup\n );\n productAvailability = shippingInventory?.ProductAvailableQuantity;\n } else {\n productAvailability = undefined;\n }\n const failureResult: IAddToCartFailureResult = {\n failureReason: 'CARTACTIONFAILED',\n cartActionResult: { status: result.status, substatus: result.substatus }\n };\n callbacks.updateErrorState({\n errorHost: 'ADDTOCART',\n configureErrors: {},\n otherError: getGenericError(\n failureResult,\n cart,\n resources,\n context,\n product,\n productAvailability,\n orgUnitLocation\n )\n });\n } else {\n callbacks.updateErrorState({\n configureErrors: {}\n });\n const navigationUrl = getUrlSync('cart', context.actionContext);\n if (behavior === undefined || behavior === AddToCartBehavior.goToCart) {\n if (result.status === 'SUCCESS' && navigationUrl) {\n window.location.assign(navigationUrl);\n }\n } else if (behavior === AddToCartBehavior.showModal) {\n callbacks.changeModalOpen(true);\n } else if (behavior === AddToCartBehavior.showNotification) {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=240&h=240&m=6', w: 0, h: 0 },\n lg: { q: 'w=240&h=240&m=6', w: 0, h: 0 },\n xl: { q: 'w=240&h=240&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n const telemetryContent = getTelemetryObject(\n props.context.request.telemetryPageName!,\n props.friendlyName,\n props.telemetry\n );\n const dialogStrings: IAddToCartResources = {\n goToCartText: resources.buyBoxGoToCartText,\n continueShoppingText: resources.buyBoxContinueShoppingText,\n closeNotificationLabel: resources.closeNotificationLabel,\n headerItemOneText: resources.buyBoxSingleItemText,\n headerItemFormatText: resources.buyBoxMultiLineItemFormatText,\n headerMessageText: resources.buyBoxHeaderMessageText,\n freePriceText: resources.priceFree,\n originalPriceText: resources.originalPriceText,\n currentPriceText: resources.currentPriceText,\n addedQuantityText: resources.addedQuantityText\n };\n const notification = new ItemSuccessfullyAddedToCartNotification(\n props.context,\n dialogStrings,\n defaultImageSettings,\n props.context.request.gridSettings,\n product,\n props.data.productPrice?.result,\n quantity,\n navigationUrl,\n telemetryContent,\n props.id,\n props.typeName\n );\n NotificationsManager.instance().addNotification(notification);\n }\n }\n })\n .catch((error: Error) => {\n if (props.telemetry) {\n props.telemetry.exception(error);\n props.telemetry.debug('Unable to add product to cart');\n }\n });\n }\n })\n .catch((error: Error) => {\n if (props.telemetry) {\n props.telemetry.error(error.message);\n props.telemetry.debug('Unable to find in store');\n }\n });\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable no-duplicate-imports */\nimport { getCatalogId, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core-internal';\nimport {\n CommerceProperty,\n ProductCatalog,\n ProductDeliveryOptions,\n ProductDimensionValue,\n ProductDimensionValueInventoryAvailability,\n ProductPrice,\n ReleasedProductType,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { BulkPurchase } from '@msdyn365-commerce-modules/bulk-purchase';\nimport {\n ArrayExtensions,\n DeliveryMode,\n FinitePromiseQueue,\n FinitePromiseQueueError,\n getDeliveryOptionsForSelectedVariant,\n GetDeliveryOptionsForSelectedVariantInput,\n getDimensionsForSelectedVariant,\n GetDimensionsForSelectedVariantInput,\n getInventoryLevelCodeFromDimensionValue,\n getPriceForSelectedVariant,\n getProductAvailabilitiesForSelectedVariant,\n getSelectedVariant,\n IDimensionsApp,\n IDimensionValueForSelectedVariant,\n InventoryLevelValues,\n IProductInventoryInformation,\n IPromiseQueue,\n PriceForSelectedVariantInput,\n ProductAvailabilitiesForSelectedVariantInput,\n SelectedVariantInput,\n setDimensionValuesToQuery,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { validateTokenAsync, getConfigParamValuesAsync } from './actions/DataActionExtension.g';\nimport {\n Button,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n updateMaxQuantityForCartLineItem\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport Cookies from 'js-cookie';\n\nimport {\n getBuyboxAddToCart,\n getBuyBoxInventoryLabel,\n getBuyboxKeyInPrice,\n getBuyboxProductAddToOrderTemplate,\n getBuyboxProductAddToWishlist,\n getBuyboxProductComparisonButton,\n getBuyboxProductDescription,\n getBuyboxProductPrice,\n getBuyboxProductQuantity,\n getBuyboxProductRating,\n getBuyboxProductTitle,\n getBuyboxProductUnitOfMeasure,\n getBuyboxShopSimilarButton,\n getQuantityLimitsMessages,\n RetailDefaultOrderQuantityLimitsFeatureName,\n EcommerceQuantityLimitConfigurationsFeatureName\n} from '@msdyn365-commerce-modules/buybox';\nimport { getBuyboxProductConfigure } from '@msdyn365-commerce-modules/buybox';\nimport {\n IBuyboxAddToCartViewProps,\n IBuyboxAddToOrderTemplateViewProps,\n IBuyboxAddToWishlistViewProps,\n IBuyboxCallbacks,\n IBuyboxCommonData,\n IBuyboxExtentedProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductConfigureViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxShopSimilarLookViewProps,\n IBuyboxState,\n IErrorState,\n ShopSimiliarButtonType\n} from '@msdyn365-commerce-modules/buybox';\nimport { IBuyboxData } from './buybox.data';\nimport { IBuyboxProps, IBuyboxResources } from './buybox.props.autogenerated';\nimport { getBuyboxFindInStore, IBuyboxFindInStoreViewProps } from './components/buybox-find-in-store';\nimport { RecentlyViewedState } from '@msdyn365-commerce-modules/buybox';\n//import { isRedirect } from 'node-fetch';\n\nexport interface IBuyboxViewProps extends IBuyboxProps {\n state: IBuyboxState;\n ModuleProps: IModuleProps;\n ProductInfoContainerProps: INodeProps;\n MediaGalleryContainerProps: INodeProps;\n callbacks: IBuyboxCallbacks;\n mediaGallery?: React.ReactNode;\n title?: React.ReactNode;\n description?: React.ReactNode;\n rating?: React.ReactNode;\n price?: React.ReactNode;\n productComparisonButton?: React.ReactNode;\n bulkPurchaseLink?: React.ReactNode;\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps;\n addToWishlist?: IBuyboxAddToWishlistViewProps;\n max: number | undefined;\n addToCart: IBuyboxAddToCartViewProps;\n findInStore?: IBuyboxFindInStoreViewProps;\n quantity?: IBuyboxProductQuantityViewProps;\n configure?: IBuyboxProductConfigureViewProps;\n inventoryLabel?: React.ReactNode;\n shopSimilarLook?: IBuyboxShopSimilarLookViewProps;\n shopSimilarDescription?: IBuyboxShopSimilarLookViewProps;\n quantityLimitsMessages: React.ReactNode;\n telemetryContent?: ITelemetryContent;\n keyInPrice?: IBuyboxKeyInPriceViewProps;\n unitOfMeasure?: React.ReactNode;\n catalogs?: ProductCatalog[] | undefined;\n isChannelMultipleCatalogsFeatureEnabled?: boolean;\n currentCatalogId?: number;\n chargerInstallation?: React.ReactNode;\n}\n\n/**\n * Buybox Module.\n */\nclass Buybox extends React.PureComponent, IBuyboxState> {\n /**\n * A queue of tasks of processing the changes in the dimensions.\n * Limit to two processes:\n * 1 - for the current process, which is under execution at the moment.\n * 2 - next process, which will process the latest version of data.\n * @remark Enqueueing new promises will discard the previous ones (except the one which is under processing).\n */\n private readonly dimensionUpdateQueue: IPromiseQueue = new FinitePromiseQueue(2);\n\n private dimensions: { [id: number]: string } = {};\n\n private readonly buyboxCallbacks: IBuyboxCallbacks = {\n updateQuantity: (newQuantity: number): boolean => {\n const errorState = { ...this.state.errorState };\n errorState.quantityError = undefined;\n errorState.otherError = undefined;\n\n this.setState({ quantity: newQuantity, errorState });\n return true;\n },\n updateErrorState: (newErrorState: IErrorState): void => {\n this.setState({ errorState: newErrorState });\n },\n updateSelectedProduct: (\n newSelectedProduct: Promise,\n newInventory: IProductInventoryInformation | undefined,\n newPrice: ProductPrice | undefined,\n newDeliveryOptions: ProductDeliveryOptions | undefined\n ): void => {\n this.setState({\n selectedProduct: newSelectedProduct,\n productAvailableQuantity: newInventory,\n productDeliveryOptions: newDeliveryOptions\n });\n this._updatePrice(newPrice);\n },\n dimensionSelectedAsync: async (selectedDimensionId: number, selectedDimensionValueId: string): Promise => {\n this.dimensions[selectedDimensionId] = selectedDimensionValueId;\n return this.dimensionUpdateQueue\n .enqueue(async () => {\n return this._updateDimensions();\n })\n .catch((error: unknown) => {\n // Ignore discarded processes.\n if (error !== FinitePromiseQueueError.ProcessWasDiscardedFromTheQueue) {\n throw error;\n }\n });\n },\n getDropdownName: (dimensionType: number, resources: IBuyboxResources): string => {\n return this._getDropdownName(dimensionType, resources);\n },\n changeModalOpen: (isModalOpen: boolean): void => {\n this.setState({ modalOpen: isModalOpen });\n },\n changeUpdatingDimension: (isUpdatingDimension: boolean): void => {\n this.setState({ isUpdatingDimension });\n },\n\n /**\n * Update isUpdatingDeliveryOptions state.\n *\n * @param isUpdatingDeliveryOptions - The status of updating delivery options.\n */\n changeUpdatingDeliveryOptions: (isUpdatingDeliveryOptions: boolean): void => {\n this.setState({ isUpdatingDeliveryOptions });\n },\n\n updateKeyInPrice: (customPrice: number): void => {\n // Remove custom amount error when updating the custom price\n const errorState = { ...this.state.errorState };\n errorState.customAmountError = undefined;\n\n this.setState({ isPriceKeyedIn: true, keyInPriceAmount: customPrice, errorState });\n this._updatePrice(this.state.productPrice, customPrice);\n }\n };\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: IBuyboxProps, state: IBuyboxState) {\n super(props);\n this.state = {\n errorState: {\n configureErrors: {}\n },\n quantity: 1,\n min: undefined,\n max: undefined,\n selectedProduct: undefined,\n productPrice: undefined,\n productDeliveryOptions: undefined,\n\n modalOpen: false,\n isUpdatingDimension: false,\n isUpdatingDeliveryOptions: false,\n isPriceApiCalled: false\n };\n this.telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\n //AVA Store Translated Item names in cookies\n const _translatedItemsName = this.props.data.product.result?.ExtensionProperties?.find(\n (item: any) => item.Key === 'RecommendedProdTransText'\n )?.Value?.StringValue;\n localStorage.setItem('translatednames', _translatedItemsName ? _translatedItemsName : '');\n }\n\n public async componentDidMount(): Promise {\n const {\n data: {\n product: { result: product },\n productPrice\n },\n context\n } = this.props;\n const documentURL = window.location;\n const token = new URLSearchParams(documentURL.search).get('token');\n const issuingparty = new URLSearchParams(documentURL.search).get('issuingparty');\n //AVA Get the Token and Issuingparty from Querystring and pass on to CSU API for validation\n if (token && issuingparty) {\n validateTokenAsync({ callerContext: this.props.context.actionContext }, token, 'v2', issuingparty ? issuingparty : '').then(\n result => {\n if (result && result.issuingParty && result.status?.toLocaleLowerCase() === 'active') {\n Cookies.set('token', token, { secure: true });\n Cookies.set('issuingParty', issuingparty, { secure: true });\n //AVA build dynamic URL and redirect to the page (base url+product name+recid.p)\n const redirectPdpUrl = `${window.location.origin}/${result.prodName}/${result.prodID}.p`;\n window.location.href = redirectPdpUrl;\n } else {\n if (result.errorPageURL) {\n window.location.href = result.errorPageURL;\n }\n }\n }\n );\n }\n let _productIssuingParty: any = '';\n let _cookiesIssuingParty: any = '';\n let _cookiesToken: any = '';\n //let _errorPageUrl: string = 'https://ampcharge.ampol.com.au/authentication-failed';\n let _errorPageUrl: string = '';\n await getConfigParamValuesAsync({ callerContext: this.props.context.actionContext }, 'Redirect URL').then(configValue => {\n if (configValue) {\n _errorPageUrl = configValue.ErrorPageURL ? configValue.ErrorPageURL : '';\n }\n });\n if (product && product.ExtensionProperties && product.ExtensionProperties.length > 0) {\n _productIssuingParty = product.ExtensionProperties.find((product: any) => product.Key === 'IssuingParty')?.Value?.StringValue;\n if (_productIssuingParty && _productIssuingParty !== '') {\n _cookiesIssuingParty = Cookies.get('issuingParty');\n _cookiesToken = Cookies.get('token');\n if (_cookiesIssuingParty && _cookiesIssuingParty !== '' && _cookiesToken && _cookiesToken !== '') {\n if (_cookiesIssuingParty !== _productIssuingParty) {\n //AVA Redirect to external error page\n window.location.href = _errorPageUrl;\n }\n } else {\n //AVA Redirect to external error page\n window.location.href = _errorPageUrl;\n }\n }\n }\n\n // There are multiple sources triggering the callback function dimensionSelectedAsync calling the GetActivePrice api before componentDidMount and after componentDidMount.\n // Set isPriceApiCalled to false here to prevent redundant API call after componentDidMount:\n // If the price has not been hydrated before, this means the component was just loaded for the first time with variant selected.\n // We will skip calling RS API in this case as the price data has already been fetched via module data action in node server.\n this.setState({ isPriceApiCalled: false });\n\n productPrice.then(async result => {\n this._updatePrice(result);\n });\n\n if (product) {\n // Check if the product is service or not by product type\n if (product.ItemTypeValue === ReleasedProductType.Service) {\n this.setState({ isServiceItem: true });\n }\n await this._updateQuantitiesInState(product);\n }\n\n if (product && context.app.config.maxRecentlyViewedItemsCount > 0) {\n RecentlyViewedState.instance(this.props.context, context.app.config.maxRecentlyViewedItemsCount, product.RecordId);\n }\n }\n\n public render(): JSX.Element | null {\n const {\n slots: { mediaGallery, productComparisonButton },\n data: {\n product: { result: product }\n },\n config: { className = '' }\n } = this.props;\n\n const { max } = this.state;\n\n if (!product) {\n this.props.context.telemetry.error('Product content is empty, module wont render');\n return null;\n }\n\n const props = this.props as IBuyboxExtentedProps;\n const defaultMinimumKeyInPrice = 10;\n const defaultMaximumKeyInPrice = 100;\n\n const context = this.props.context as ICoreContext;\n const inventoryLevel = context.app.config.inventoryLevel;\n const dimensionValuesWithInventory = ArrayExtensions.flatten(\n ArrayExtensions.validValues(this.props.data.productDimensions.result?.map(value => value.dimensionValuesWithInventory))\n );\n const hasAvailableProducts =\n !ArrayExtensions.hasElements(dimensionValuesWithInventory) ||\n dimensionValuesWithInventory.some((value: unknown) => {\n const inventoryLevelCode = getInventoryLevelCodeFromDimensionValue(\n value as ProductDimensionValueInventoryAvailability,\n inventoryLevel\n );\n return inventoryLevelCode !== InventoryLevelValues.outOfStock;\n });\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n const viewProps: IBuyboxViewProps = {\n ...(this.props as IBuyboxProps),\n state: this.state,\n mediaGallery: mediaGallery && mediaGallery.length > 0 ? mediaGallery[0] : undefined,\n ModuleProps: {\n moduleProps: this.props,\n className: classnames('ms-buybox test', className)\n },\n ProductInfoContainerProps: {\n className: 'ms-buybox__content alt'\n },\n MediaGalleryContainerProps: {\n className: 'ms-buybox__media-gallery ooo'\n },\n telemetryContent: this.telemetryContent,\n callbacks: this.buyboxCallbacks,\n title: getBuyboxProductTitle(props),\n description: getBuyboxProductDescription(props),\n bulkPurchaseLink: this._renderBuyboxBulkPurchaseLink(),\n unitOfMeasure: getBuyboxProductUnitOfMeasure(props),\n configure: getBuyboxProductConfigure(props, this.state, this.buyboxCallbacks),\n findInStore: getBuyboxFindInStore(this.props, this.state, this.buyboxCallbacks),\n price: getBuyboxProductPrice(props, this.state),\n addToCart: getBuyboxAddToCart(\n props,\n this.state,\n this.buyboxCallbacks,\n defaultMinimumKeyInPrice,\n defaultMaximumKeyInPrice,\n undefined,\n hasAvailableProducts\n ),\n productComparisonButton: ArrayExtensions.hasElements(productComparisonButton)\n ? getBuyboxProductComparisonButton(\n productComparisonButton[0],\n product,\n getCatalogId(this.props.context.request),\n this.state\n )\n : undefined,\n addToOrderTemplate: getBuyboxProductAddToOrderTemplate(\n props,\n this.state,\n this.buyboxCallbacks,\n this._isChannelMultipleCatalogsFeatureEnabled(),\n catalogId\n ),\n addToWishlist: getBuyboxProductAddToWishlist(props, this.state, this.buyboxCallbacks),\n rating: !props.context.app.config.hideRating && getBuyboxProductRating(props),\n quantity: product.IsGiftCard ? undefined : getBuyboxProductQuantity(props, this.state, this.buyboxCallbacks),\n inventoryLabel: getBuyBoxInventoryLabel(props),\n chargerInstallation: getBuyBoxInventoryLabel(props),\n shopSimilarLook:\n this.props.config.enableShopSimilarLooks && !product.IsGiftCard\n ? getBuyboxShopSimilarButton(props, ShopSimiliarButtonType.Looks)\n : undefined,\n shopSimilarDescription:\n this.props.config.enableShopSimilarDescription && !product.IsGiftCard\n ? getBuyboxShopSimilarButton(props, ShopSimiliarButtonType.Description)\n : undefined,\n keyInPrice:\n this.props.config.enableKeyInPrice && this.state.isCustomPriceSelected\n ? getBuyboxKeyInPrice(props, this.state, this.buyboxCallbacks)\n : undefined,\n quantityLimitsMessages: getQuantityLimitsMessages(props, this.state),\n max,\n isChannelMultipleCatalogsFeatureEnabled: this._isChannelMultipleCatalogsFeatureEnabled(),\n currentCatalogId: catalogId,\n catalogs: this._validateCatalogDetails(catalogId)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles anchor click event and scrolls to the given bulk purchase module.\n * @param bulkPurchaseModule - Bulk purchase module.\n * @returns Handler.\n */\n private readonly _onBulkPurchaseLinkClick = (bulkPurchaseModule: Element) => () => {\n const boundingRect = bulkPurchaseModule.getBoundingClientRect();\n const scrollX = boundingRect.left + window.pageXOffset;\n const scrollY = boundingRect.top + window.pageYOffset;\n\n window.scrollTo(scrollX, scrollY);\n };\n private readonly _isChannelMultipleCatalogsFeatureEnabled = (): boolean => {\n let isMultipleCatalogFeatureEnabledInHq = false;\n if (this.props.data.featureState) {\n isMultipleCatalogFeatureEnabledInHq =\n this.props.data.featureState.result?.find(\n feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\n )?.IsEnabled || false;\n }\n return isMultipleCatalogFeatureEnabledInHq;\n };\n\n // private _renderChargerInstallation(): React.ReactNode {\n // return
Charger inssssss
;\n // }\n\n private _renderBuyboxBulkPurchaseLink(): React.ReactNode {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Temporary switch for the feature which is under development.\n if (!this.props.context.app.config.isBulkPurchaseEnabled) {\n return null;\n }\n\n if (!msdyn365Commerce.isBrowser) {\n return null;\n }\n\n const bulkPurchaseModules = Array.from(document.getElementsByClassName(BulkPurchase.className));\n\n if (!ArrayExtensions.hasElements(bulkPurchaseModules)) {\n return null;\n }\n\n return (\n \n {this.props.resources.bulkPurchaseLinkText}\n \n );\n }\n\n private _updatePrice(newPrice: ProductPrice | undefined, customPrice: number | undefined = this.state.keyInPriceAmount): void {\n if (this.state.isCustomPriceSelected && newPrice) {\n newPrice.CustomerContextualPrice = customPrice;\n }\n this.setState({ productPrice: newPrice });\n }\n\n private _getProductVariant(dimensionsToUpdate: { [id: number]: string }) {\n const {\n data: {\n product: { result: product }\n },\n context: {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n }\n } = this.props;\n\n const productDimensions = this.props.data.productDimensions.result!;\n\n // Step 3, Build the actually selected dimensions, prioritizing the information in state\n // over the information in data\n const mappedDimensions = productDimensions\n .map(dimension => {\n const dimensions = (dimension.dimensionValuesWithInventory ??\n dimension.DimensionValues ??\n []) as IDimensionValueForSelectedVariant[];\n return {\n DimensionTypeValue: dimension.DimensionTypeValue,\n DimensionValue:\n dimensions.find(\n value => value.DimensionValue?.RecordId.toString() === dimensionsToUpdate[dimension.DimensionTypeValue]\n )?.DimensionValue ?? dimension.DimensionValue,\n ExtensionProperties: dimension.ExtensionProperties\n };\n })\n .filter(dimension => dimension.DimensionValue);\n setDimensionValuesToQuery(this.props.context.actionContext.requestContext.url.requestUrl, mappedDimensions);\n\n // Step 4. Use these dimensions hydrate the product. Wrap this in a promise\n // so that places like add to cart can await it\n const selectedProductPromise = getSelectedVariant(\n new SelectedVariantInput(\n product!.MasterProductId ? product!.MasterProductId : product!.RecordId,\n channelId,\n undefined,\n undefined,\n this.props.context.request\n ),\n actionContext\n );\n this.setState({ selectedProduct: selectedProductPromise });\n\n return { productVariantPromise: selectedProductPromise, mappedDimensions };\n }\n\n private readonly _updateDimensions = async (): Promise => {\n const product = this.props.data.product.result;\n\n const productDimensions = this.props.data.productDimensions.result;\n\n const hasProductDimensions = ArrayExtensions.hasElements(productDimensions);\n\n if (!product || !hasProductDimensions) {\n return;\n }\n\n const dimensionsToUpdate: { [id: number]: string } = { ...this.dimensions };\n\n this.setState({ isUpdatingDimension: true, isUpdatingDeliveryOptions: true });\n\n // Step 1: Clear error state to display relevant errors\n if (this.state.errorState.otherError || this.state.errorState.quantityError) {\n const clearErrorState = { ...this.state.errorState };\n clearErrorState.otherError = undefined;\n if (this.state.errorState.errorHost === 'ADDTOCART') {\n clearErrorState.quantityError = undefined;\n clearErrorState.errorHost = undefined;\n }\n this.setState({ errorState: clearErrorState });\n }\n\n // Step 2: Clear any errors indicating the dimension wasn't selected\n for (const key of Object.keys(dimensionsToUpdate)) {\n if (this.state.errorState.configureErrors[key]) {\n this.setState(previousState => {\n const errorState = previousState.errorState;\n errorState.configureErrors[key] = undefined;\n return { errorState };\n });\n }\n }\n\n const data = this._getProductVariant(dimensionsToUpdate);\n const productVariant: SimpleProduct | null = await data.productVariantPromise;\n\n if (!productVariant) {\n return;\n }\n\n const promises: Promise[] = [\n this._getDimensionsForSelectedVariant(productVariant, data.mappedDimensions),\n this._hydrateInventoryInfo(productVariant),\n this._hydratePrice(productVariant),\n this._hydrateDeliveryOptions(productVariant),\n this._updateQuantitiesInState(productVariant)\n ];\n\n await Promise.all(promises);\n };\n\n private async _getDimensionsForSelectedVariant(\n productVariant: SimpleProduct,\n mappedDimensions: {\n /* eslint-disable @typescript-eslint/naming-convention -- Retail proxy values */\n DimensionTypeValue: number;\n DimensionValue: ProductDimensionValue | undefined;\n ExtensionProperties: CommerceProperty[] | undefined;\n /* eslint-enable @typescript-eslint/naming-convention -- Retail proxy values */\n }[]\n ): Promise {\n await getDimensionsForSelectedVariant(\n new GetDimensionsForSelectedVariantInput(\n productVariant.MasterProductId ? productVariant.MasterProductId : productVariant.RecordId,\n this.props.context.request.apiSettings.channelId,\n mappedDimensions,\n this.props.context.request\n ),\n this.props.context.actionContext\n );\n }\n\n private async _hydrateInventoryInfo(productVariant: SimpleProduct): Promise {\n // Step 5. Use these dimensions hydrate the inventory. Wrap this in a promise\n // so that places like add to cart can await it\n const newAvailableQuantity = await getProductAvailabilitiesForSelectedVariant(\n new ProductAvailabilitiesForSelectedVariantInput(productVariant.RecordId, this.props.context.request.apiSettings.channelId),\n this.props.context.actionContext\n );\n\n const newShippingQuantity = newAvailableQuantity?.find(\n // @ts-expect-error\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (shipping: { deliveryType: any }) => shipping.deliveryType === DeliveryMode.shipping\n );\n const isCustomPriceSelected = productVariant.Dimensions?.find(\n dimension =>\n dimension.DimensionTypeValue === 4 && dimension.DimensionValue && dimension.DimensionValue.Value?.toLowerCase() === 'custom'\n );\n if (isCustomPriceSelected) {\n this.setState({ isCustomPriceSelected: true });\n } else {\n this.setState(previousState => {\n const errorState = previousState.errorState;\n errorState.customAmountError = undefined;\n return { isCustomPriceSelected: false, isPriceKeyedIn: false, errorState };\n });\n }\n\n if (newShippingQuantity) {\n this.setState({ productAvailableQuantity: newShippingQuantity });\n } else {\n this.setState({ productAvailableQuantity: undefined });\n }\n }\n\n private async _hydratePrice(productVariant: SimpleProduct): Promise {\n // This function is invoked when dimensionSelectedAsync get called.\n // If the price has not been hydrated before, this means the component was just loaded for the first time with variant selected.\n // We will skip calling RS API in this case as the price data has already been fetched via module data action in node server.\n if (!this.state.isPriceApiCalled) {\n this.setState({ isPriceApiCalled: true });\n return;\n }\n\n // Step 6. Use these dimensions hydrate the product price.\n const newPrice = await getPriceForSelectedVariant(\n new PriceForSelectedVariantInput(productVariant.RecordId, this.props.context.request.apiSettings.channelId),\n this.props.context.actionContext\n );\n\n if (newPrice) {\n this._updatePrice(newPrice);\n }\n }\n\n private async _hydrateDeliveryOptions(productVariant: SimpleProduct): Promise {\n const retailMultiplePickupFeatureState = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature'\n );\n\n // Step 7. Use these dimensions hydrate the product delivery options.\n const newDeliveryOptions = await getDeliveryOptionsForSelectedVariant(\n new GetDeliveryOptionsForSelectedVariantInput(\n productVariant.RecordId,\n this.props.context.request.apiSettings.channelId,\n undefined,\n undefined,\n retailMultiplePickupFeatureState?.IsEnabled\n ),\n this.props.context.actionContext\n );\n\n if (newDeliveryOptions) {\n this.setState({ productDeliveryOptions: newDeliveryOptions });\n }\n }\n\n private async _updateQuantitiesInState(product: SimpleProduct): Promise {\n const isOrderQuantityLimitsFeatureEnabled = await this._isOrderQuantityLimitsFeatureEnabled();\n const isChannelLimitsFeatureEnabled = await this._isChannelLimitsFeatureEnabled();\n\n const min: number = this._getMinQuantityForCartLineItem(isOrderQuantityLimitsFeatureEnabled, product);\n const max: number = this._getMaxQuantityForCartLineItem(\n isChannelLimitsFeatureEnabled || isOrderQuantityLimitsFeatureEnabled,\n product\n );\n\n this.setState({\n min,\n max\n });\n }\n\n private _getMinQuantityForCartLineItem(isOrderQuantityLimitsFeatureEnabled: boolean, product: SimpleProduct): number {\n if (isOrderQuantityLimitsFeatureEnabled && product?.Behavior?.MinimumQuantity && product.Behavior.MinimumQuantity > 0) {\n return product.Behavior.MinimumQuantity;\n }\n\n return 1;\n }\n\n private _getMaxQuantityForCartLineItem(isQuantityLimitsFeatureEnabled: boolean, product: SimpleProduct): number {\n if (isQuantityLimitsFeatureEnabled && product?.Behavior?.MaximumQuantity && product.Behavior.MaximumQuantity > 0) {\n return product.Behavior.MaximumQuantity;\n }\n\n return updateMaxQuantityForCartLineItem(this.props.context.app.config.maxQuantityForCartLineItem);\n }\n\n private readonly _getDropdownName = (dimensionType: number, resources: IBuyboxResources): string => {\n const isGiftCard = this.props.data.product.result?.IsGiftCard;\n\n switch (dimensionType) {\n case 1: // ProductDimensionType.Color\n return resources.productDimensionTypeColor;\n case 2: // ProductDimensionType.Configuration\n return resources.productDimensionTypeConfiguration;\n case 3: // ProductDimensionType.Size\n return resources.productDimensionTypeSize;\n case 4: // ProductDimensionType.Style\n return isGiftCard ? resources.productDimensionTypeAmount : resources.productDimensionTypeStyle;\n default:\n return '';\n }\n };\n\n private async _isOrderQuantityLimitsFeatureEnabled(): Promise {\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\n if (defaultOrderQuantityLimitsFeatureConfig === 'none') {\n return false;\n }\n\n const featureStatuses = await this.props.data.featureState;\n const isFeatureEnabledInHq = featureStatuses?.find(\n featureState => featureState.Name === RetailDefaultOrderQuantityLimitsFeatureName\n )?.IsEnabled;\n if (!isFeatureEnabledInHq) {\n return false;\n }\n\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\n return true;\n }\n let customerInfo;\n try {\n customerInfo = await this.props.data.customerInformation;\n } catch (error) {\n this.props.telemetry.information(error);\n this.props.telemetry.debug('Unable to receive Customer Information. May be user is not authorized');\n return false;\n }\n\n return (\n customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b))\n );\n }\n\n private _validateCatalogDetails(catalogId: number): ProductCatalog[] | undefined {\n const catalogs = this.props.data.catalogs?.result?.filter(item => item.RecordId === catalogId);\n if (ArrayExtensions.hasElements(catalogs) && catalogs[0].RecordId === 0) {\n return;\n }\n\n return catalogs;\n }\n\n private async _isChannelLimitsFeatureEnabled(): Promise {\n const featureStatuses = await this.props.data.featureState;\n\n const isChannelLimitsFeatureEnabledInHq = featureStatuses?.find(\n featureState => featureState.Name === EcommerceQuantityLimitConfigurationsFeatureName\n )?.IsEnabled;\n\n return isChannelLimitsFeatureEnabledInHq ?? false;\n }\n}\n\nexport default Buybox;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable no-duplicate-imports */\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IBuyboxAddToCartViewProps,\n IBuyboxAddToOrderTemplateViewProps,\n IBuyboxAddToWishlistViewProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductConfigureDropdownViewProps,\n IBuyboxProductConfigureViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxShopSimilarLookViewProps\n} from '@msdyn365-commerce-modules/buybox';\nimport { IBuyboxViewProps } from './buybox';\nimport { IBuyboxFindInStoreViewProps } from './components/buybox-find-in-store';\n\nconst BuyboxView: React.FC = props => {\n const {\n ModuleProps,\n ProductInfoContainerProps,\n addToCart,\n addToOrderTemplate,\n addToWishlist,\n configure,\n description,\n findInStore,\n quantity,\n price,\n title,\n rating,\n shopSimilarLook,\n keyInPrice,\n shopSimilarDescription,\n unitOfMeasure,\n productComparisonButton,\n chargerInstallation\n } = props;\n return (\n \n \n {title}\n {price}\n {unitOfMeasure}\n {props.bulkPurchaseLink}\n {description}\n {rating}\n {configure && _renderConfigure(configure)}\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\n {quantity && _renderQuantity(quantity)}\n {chargerInstallation}\n {addToCart && _renderAddToCart(addToCart)}\n {findInStore && _renderFindInStore(findInStore)}\n {addToOrderTemplate && _renderAddToOrderTemplate(addToOrderTemplate)}\n {addToWishlist && _renderAddToWishlist(addToWishlist)}\n {_renderSocialShare(props.slots && props.slots.socialShare)}\n {productComparisonButton}\n {shopSimilarLook && _renderShopSimilarItem(shopSimilarLook)}\n {shopSimilarDescription && _renderShopSimilarItem(shopSimilarDescription)}\n \n \n );\n};\n\nconst _renderAddToCart = (addToCart: IBuyboxAddToCartViewProps): JSX.Element => {\n const { ContainerProps, errorBlock, button } = addToCart;\n\n return (\n \n {errorBlock}\n {button}\n \n );\n};\n\nconst _renderAddToOrderTemplate = (addToOrderTemplate: IBuyboxAddToOrderTemplateViewProps): JSX.Element => {\n const { ContainerProps, errorBlock, button } = addToOrderTemplate;\n\n return (\n \n {errorBlock}\n {button}\n \n );\n};\n\nconst _renderAddToWishlist = (addToWishlist: IBuyboxAddToWishlistViewProps): JSX.Element => {\n const { ContainerProps, errorBlock, button } = addToWishlist;\n\n return (\n \n {errorBlock}\n {button}\n \n );\n};\n\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\n const { ContainerProps, dropdowns } = configure;\n\n return {dropdowns.map(_renderConfigureDropdown)};\n};\n\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\n if (!socialShare || socialShare.length === 0) {\n return undefined;\n }\n\n return <>{socialShare[0]};\n};\n\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n \n {heading}\n {errors}\n \n {select}\n \n );\n};\n\nconst _renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\n const { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = findInStore;\n\n return (\n \n {storeSelector}\n {heading}\n {productPickupOptionList}\n {description}\n {errors}\n {button}\n {modal}\n \n );\n};\n\nconst _renderQuantity = (quantity: IBuyboxProductQuantityViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, input, errors } = quantity;\n\n return (\n \n \n {heading}\n {errors}\n \n {input}\n \n );\n};\n\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\n\n return (\n \n {heading}\n {input}\n \n );\n};\n\nconst _renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\n const { ContainerProps, errors, input } = shopSimilarItem;\n\n return (\n \n {errors}\n {input}\n \n );\n};\nexport default BuyboxView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IBuyboxAddToCartViewProps,\n IBuyboxAddToOrderTemplateViewProps,\n IBuyboxAddToWishlistViewProps,\n IBuyboxCallbacks,\n IBuyboxData,\n IBuyboxFindInStoreViewProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductConfigureDropdownViewProps,\n IBuyboxProductConfigureViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxProps,\n IBuyboxShopSimilarLookViewProps,\n IBuyboxState,\n IBuyboxViewProps\n} from '@msdyn365-commerce-modules/buybox';\n//import { addCartLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\n//import { IncrementalQuantity, ITelemetryContent, Module, Node, Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport { IncrementalQuantity, ITelemetryContent, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IBuyboxProps as IBuyboxExtentionProps,\n IBuyboxResources as IBuyboxExtentionResources\n} from '../definition-extensions/buybox.ext.props.autogenerated';\n\nconst BuyboxView: React.FC> = props => {\n const {\n ModuleProps,\n MediaGalleryContainerProps,\n ProductInfoContainerProps,\n addToCart,\n addToOrderTemplate,\n addToWishlist,\n telemetryContent,\n configure,\n description,\n findInStore,\n quantity,\n price,\n title,\n rating,\n callbacks,\n state,\n resources,\n inventoryLabel,\n shopSimilarLook,\n keyInPrice,\n quantityLimitsMessages,\n max,\n shopSimilarDescription,\n unitOfMeasure\n } = props;\n\n return (\n \n {props.mediaGallery}\n \n {title}\n {price}\n {unitOfMeasure}\n {props.bulkPurchaseLink}\n {description}\n {_renderTextBlock(props.slots.textBlocks)}\n {rating}\n {configure && _renderConfigure(configure)}\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\n {quantity && _renderQuantity(quantity, callbacks, props, state, resources, quantityLimitsMessages, max, telemetryContent)}\n {inventoryLabel}\n {_renderCartAndActions(addToCart, addToOrderTemplate, addToWishlist, props)}\n {findInStore && _renderFindInStore(findInStore)}\n {_renderSocialShare(props.slots && props.slots.socialShare)}\n {shopSimilarLook && _renderShopSimilarItem(shopSimilarLook)}\n {shopSimilarDescription && _renderShopSimilarItem(shopSimilarDescription)}\n \n \n );\n};\n\nconst _renderTextBlock = (textBlocks: React.ReactNode[]): JSX.Element | undefined => {\n if (!textBlocks || textBlocks.length === 0) {\n return undefined;\n }\n\n return <>{textBlocks[0]};\n};\n\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\n if (!socialShare || socialShare.length === 0) {\n return undefined;\n }\n\n return <>{socialShare[0]};\n};\n\nconst _renderCartAndActions = (\n addToCart?: IBuyboxAddToCartViewProps,\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps,\n addToWishlist?: IBuyboxAddToWishlistViewProps,\n props?: IBuyboxProps\n): JSX.Element | undefined => {\n const [isChecked, setIsChecked] = React.useState(true);\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n\n React.useEffect(() => {\n sessionStorage.setItem('isChargerRequired', 'true');\n }, []);\n\n const onChange = () => {\n setIsChecked(!isChecked);\n if (isChecked && !isModalOpen) {\n sessionStorage.setItem('isChargerRequired', 'false');\n setIsModalOpen(true); \n } else {\n sessionStorage.setItem('isChargerRequired', 'true');\n }\n }\n\n //AVA TO DO Update the actual content once 50 sales completed\n return (\n
\n {addToCart && addToCart.errorBlock}\n {addToOrderTemplate && addToOrderTemplate.errorBlock}\n {addToWishlist && addToWishlist.errorBlock}\n
\n
Standard Installation
\n
\n I am interested in a Standard Installation. \n
\n
\n

Get a free and non-binding installation estimate from us. Prices start from $1,100 for a Standard Installation.

\n

Once your order is placed, you'll be required to complete an Installation Request Form to determine the works required for your installation.

\n

Please visit our installation page and scroll to the bottom of this page to find out why you should choose our Ampol installation service.

\n

Here's an overview of what's included in a Standard Installation:

\n
    \n
  • Installation and testing of an AmpCharge EV Charger 7kW configured for single phase charging.
  • \n
  • Up to 20 meters of wall/ceiling mounted cable included.
  • \n
  • Supply and install of safety switch and circuit breaker in a location that is easily accessible near the EV Charger.
  • \n
  • Installation in accordance with relevant Australian standards.
  • \n
  • All associated electrical containment and hardware fixings for the installation.
  • \n
\n

Note: Any additional work that exceeds the scope of our Standard Installation will be at extra cost. We will provide you with an individual non-binding estimate for required works and costs. You can then decide if you want to go ahead or not.

\n
\n
\n
\n {addToCart && addToCart.button}\n {addToOrderTemplate && addToOrderTemplate.button}\n {addToWishlist && addToWishlist.button}\n
\n
\n );\n};\n\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\n const { ContainerProps, dropdowns } = configure;\n\n return {dropdowns.map(_renderConfigureDropdown)};\n};\n\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n \n {heading}\n {errors}\n \n {select}\n \n );\n};\n\nconst _renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\n const { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = findInStore;\n\n return (\n \n {storeSelector}\n {heading}\n {productPickupOptionList}\n {description}\n {errors}\n {button}\n {modal}\n \n );\n};\n\n/**\n * On Change function.\n * @param callbacks -Callbacks.\n * @returns Update quantity.\n */\nconst onChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number): boolean => {\n if (callbacks.updateQuantity) {\n return callbacks.updateQuantity(newValue);\n }\n return true;\n};\n\nconst _renderQuantity = (\n quantityComponent: IBuyboxProductQuantityViewProps,\n callbacks: IBuyboxCallbacks,\n props: IBuyboxProps,\n state: IBuyboxState,\n extentionResources: IBuyboxExtentionResources,\n quantityLimitsMessages: React.ReactNode,\n max: number | undefined,\n telemetryContent?: ITelemetryContent\n): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\n\n const { resources } = props;\n\n const { quantity } = state;\n\n return (\n \n \n {heading}\n {errors}\n \n\n \n {quantityLimitsMessages}\n \n );\n};\n\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\n\n return (\n \n {heading}\n {input}\n \n );\n};\n\nconst _renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\n const { ContainerProps, errors, input } = shopSimilarItem;\n\n return (\n \n {errors}\n {input}\n \n );\n};\n\nexport default BuyboxView;\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['buybox'] = {\n c: () => require('partner/modules/buybox/buybox.tsx'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'catalogs', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-catalogs', 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:'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: 'buybox',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/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-catalogs';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-catalogs');\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-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-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|buybox|buybox'] = {\n c: () => require('partner/modules/buybox/buybox.view.tsx'),\n cn: '__local__-__local__-buybox'\n };\nviewDictionary['__local__|__local__|themes|fabrikam|views|buybox'] = {\n c: () => require('partner/themes/fabrikam/views/buybox.view.tsx'),\n cn: '__local__-__local__-buybox'\n };\nviewDictionary['@msdyn365-commerce-modules|buybox|modules|buybox|buybox'] = {\n c: () => require('@msdyn365-commerce-modules/buybox/dist/lib/modules/buybox/buybox.view.js'),\n cn: '@msdyn365-commerce-modules-buybox-buybox'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|buybox'] = {\n c: () => require('@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/buybox.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-buybox'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|buybox'] = {\n c: () => require('@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/buybox.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IBuyboxAddToCartViewProps,\n IBuyboxAddToOrderTemplateViewProps,\n IBuyboxAddToWishlistViewProps,\n IBuyboxCallbacks,\n IBuyboxData,\n IBuyboxFindInStoreViewProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductConfigureDropdownViewProps,\n IBuyboxProductConfigureViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxProps,\n IBuyboxShopSimilarLookViewProps,\n IBuyboxState,\n IBuyboxViewProps\n} from '@msdyn365-commerce-modules/buybox';\nimport { IncrementalQuantity, ITelemetryContent, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IBuyboxProps as IBuyboxExtentionProps,\n IBuyboxResources as IBuyboxExtentionResources\n} from '../definition-extensions/buybox.ext.props.autogenerated';\n\nconst BuyboxView: React.FC> = props => {\n const {\n ModuleProps,\n MediaGalleryContainerProps,\n ProductInfoContainerProps,\n addToCart,\n addToOrderTemplate,\n addToWishlist,\n telemetryContent,\n configure,\n description,\n findInStore,\n quantity,\n price,\n title,\n rating,\n callbacks,\n state,\n resources,\n inventoryLabel,\n shopSimilarLook,\n keyInPrice,\n quantityLimitsMessages,\n min,\n max,\n applyDefaultOrderSettings,\n shopSimilarDescription,\n unitOfMeasure\n } = props;\n\n return (\n \n {props.mediaGallery}\n \n {title}\n {price}\n {unitOfMeasure}\n {props.bulkPurchaseLink}\n {description}\n {_renderTextBlock(props.slots.textBlocks)}\n {rating}\n {configure && _renderConfigure(configure)}\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\n {quantity &&\n _renderQuantity(\n quantity,\n callbacks,\n props,\n state,\n resources,\n quantityLimitsMessages,\n min,\n max,\n applyDefaultOrderSettings,\n telemetryContent\n )}\n {inventoryLabel}\n {_renderCartAndActions(addToCart, addToOrderTemplate, addToWishlist)}\n {findInStore && _renderFindInStore(findInStore)}\n {_renderSocialShare(props.slots && props.slots.socialShare)}\n {shopSimilarLook && _renderShopSimilarItem(shopSimilarLook)}\n {shopSimilarDescription && _renderShopSimilarItem(shopSimilarDescription)}\n \n \n );\n};\n\nconst _renderTextBlock = (textBlocks: React.ReactNode[]): JSX.Element | undefined => {\n if (!textBlocks || textBlocks.length === 0) {\n return undefined;\n }\n\n return <>{textBlocks[0]};\n};\n\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\n if (!socialShare || socialShare.length === 0) {\n return undefined;\n }\n\n return <>{socialShare[0]};\n};\n\nconst _renderCartAndActions = (\n addToCart?: IBuyboxAddToCartViewProps,\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps,\n addToWishlist?: IBuyboxAddToWishlistViewProps\n): JSX.Element | undefined => {\n if (!addToCart && !addToWishlist) {\n return undefined;\n }\n\n return (\n
\n {addToCart && addToCart.errorBlock}\n {addToOrderTemplate && addToOrderTemplate.errorBlock}\n {addToWishlist && addToWishlist.errorBlock}\n
\n {addToCart && addToCart.button}\n {addToOrderTemplate && addToOrderTemplate.button}\n {addToWishlist && addToWishlist.button}\n
\n
\n );\n};\n\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\n const { ContainerProps, dropdowns } = configure;\n\n return {dropdowns.map(_renderConfigureDropdown)};\n};\n\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n \n {heading}\n {errors}\n \n {select}\n \n );\n};\n\nconst _renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\n const { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = findInStore;\n\n return (\n \n {storeSelector}\n {heading}\n {productPickupOptionList}\n {description}\n {errors}\n {button}\n {modal}\n \n );\n};\n\n/**\n * On Change function.\n * @param callbacks -Callbacks.\n * @returns Update quantity.\n */\nconst onChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number): boolean => {\n if (callbacks.updateQuantity) {\n return callbacks.updateQuantity(newValue);\n }\n return true;\n};\n\nconst _renderQuantity = (\n quantityComponent: IBuyboxProductQuantityViewProps,\n callbacks: IBuyboxCallbacks,\n props: IBuyboxProps,\n state: IBuyboxState,\n extentionResources: IBuyboxExtentionResources,\n quantityLimitsMessages: React.ReactNode,\n min: number | undefined,\n max: number | undefined,\n applyDefaultOrderSettings?: boolean,\n telemetryContent?: ITelemetryContent\n): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\n\n const { resources } = props;\n\n const { quantity } = state;\n\n return (\n \n \n {heading}\n {errors}\n \n\n \n {quantityLimitsMessages}\n \n );\n};\n\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\n\n return (\n \n {heading}\n {input}\n \n );\n};\n\nconst _renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\n const { ContainerProps, errors, input } = shopSimilarItem;\n\n return (\n \n {errors}\n {input}\n \n );\n};\n\nexport default BuyboxView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n AddToOrderTemplateComponent,\n IAddToOrderTemplateDialogResources,\n IDuplicateItemsWhenAddingToOrderTemplateDialogResources,\n IItemAddedToOrderTemplateDialogResources,\n IOrderTemplateActionErrorResult,\n IOrderTemplateNameDialogResources\n} from '@msdyn365-commerce/components';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n getConfigureErrors,\n IBuyboxCallbacks,\n IBuyboxCommonResources,\n IBuyboxData,\n IBuyboxState,\n IBuyboxViewProps\n} from '@msdyn365-commerce-modules/buybox';\nimport * as React from 'react';\n\nimport { IBuyboxProps as IBuyboxExtentionProps } from '../../definition-extensions/buybox.ext.props.autogenerated';\n\n/**\n * To generate AddToOrderTemplateDialog resources.\n * @param resources - The resources.\n * @returns -- Returns the list of AddToOrderTemplateDialog resources..\n */\nfunction generateAddToOrderTemplateDialogResources(resources: IBuyboxCommonResources): IAddToOrderTemplateDialogResources {\n return {\n addToOrderTemplateHeader: resources.addToOrderTemplateHeader,\n\n noOrderTemplatesMessage: resources.noOrderTemplatesMessage,\n noOrderTemplatesDescription: resources.noOrderTemplatesDescription,\n\n createAnOrderTemplateButtonText: resources.createAnOrderTemplateButtonText,\n createNewOrderTemplateButtonText: resources.createNewOrderTemplateButtonText,\n cancelOrderTemplateCreationButtonText: resources.cancelOrderTemplateCreationButtonText,\n\n selectTemplatesText: resources.selectTemplatesText,\n addToTemplateButtonText: resources.addToTemplateButtonText,\n lineItemsText: resources.lineItemsText\n };\n}\n\n/**\n * To generate OrderTemplateNameDialog resources.\n * @param resources - The resources.\n * @returns -- Returns the list of OrderTemplateNameDialog resources..\n */\nfunction generateOrderTemplateNameDialogResources(resources: IBuyboxCommonResources): IOrderTemplateNameDialogResources {\n return {\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\n orderTemplateTitleLabel: resources.orderTemplateTitle,\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\n orderTemplateDescription: resources.createOrderTemplateDescription,\n\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\n\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\n };\n}\n\n/**\n * To generate ItemAddedToOrderTemplateDialog resources.\n * @param resources - The resources.\n * @returns -- Returns the list of ItemAddedToOrderTemplateDialog resources..\n */\nfunction generateItemAddedToOrderTemplateDialogResources(resources: IBuyboxCommonResources): IItemAddedToOrderTemplateDialogResources {\n return {\n viewOrderTemplateButtonText: resources.viewOrderTemplateButtonText,\n continueShoppingButtonText: resources.continueShoppingButtonText,\n itemAddedToOrderTemplateHeaderItemOneText: resources.itemAddedToOrderTemplateHeaderItemOneText,\n itemAddedToOrderTemplateHeaderItemFormatText: resources.itemAddedToOrderTemplateHeaderItemFormatText,\n itemAddedToOrderTemplateHeaderMessageText: resources.itemAddedToOrderTemplateHeaderMessageText,\n freePriceText: resources.priceFree,\n originalPriceText: resources.originalPriceText,\n currentPriceText: resources.currentPriceText\n };\n}\n\n/**\n * To generate DuplicateItemsWhenAddingToOrderTemplateDialog resources.\n * @param resources - The resources.\n * @returns -- Returns the list of DuplicateItemsWhenAddingToOrderTemplateDialog resources..\n */\nfunction generateDuplicateItemsWhenAddingToOrderTemplateDialogResources(\n resources: IBuyboxCommonResources\n): IDuplicateItemsWhenAddingToOrderTemplateDialogResources {\n return {\n duplicatedProductsHeader: resources.duplicatedProductsHeader,\n duplicatedProductsDescription: resources.duplicatedProductsDescription,\n updateQuantityButtonText: resources.updateQuantityButtonText,\n cancelDuplicateItemsButtonText: resources.cancelDuplicateItemsButtonText\n };\n}\n\n/**\n * Add to wishlist failed function.\n * @param callbacks -Buybox callbacks.\n * @param resources -Buybox resources.\n * @param product -Simple product.\n * @returns Update error state.\n */\nconst onAddToOrderTemplateFailed = (callbacks: IBuyboxCallbacks, resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (\n result: IOrderTemplateActionErrorResult\n) => {\n callbacks.updateErrorState({\n errorHost: 'ORDER_TEMPLATE',\n configureErrors:\n result.status === 'MISSING_DIMENSION' ? getConfigureErrors(result.missingDimensions, resources, product?.IsGiftCard) : {}\n });\n};\n\n/**\n * RenderAddToOrderTemplateButton.\n * @param props - Buybox view props.\n * @param state - Buybox state.\n * @param callbacks - Buybox callbacks.\n * @param product - Product data.\n * @returns -- Returns JSX element.\n */\nexport const renderAddToOrderTemplateButton = (\n props: IBuyboxViewProps & IBuyboxExtentionProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks,\n product: SimpleProduct\n): React.ReactNode => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\n id,\n typeName,\n context,\n data: {\n orderTemplates: { result: orderTemplates },\n customerInformation: { result: customerInformation }\n },\n resources,\n config\n } = props;\n\n const { quantity } = state;\n\n const isShowButtonText = true;\n const isMultipleCatalogsFeatureEnabled = props.isChannelMultipleCatalogsFeatureEnabled || false;\n return (\n orderTemplates && (\n \n )\n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AddToWishlistComponent, IWishlistActionErrorResult } from '@msdyn365-commerce/components';\nimport { format, ItemAvailability, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { IStoreInfo } from '@msdyn365-commerce-modules/bopis-utilities';\nimport {\n getConfigureErrors,\n IBuyboxAddToCartViewProps,\n IBuyboxCallbacks,\n IBuyboxCommonResources,\n IBuyboxData,\n IBuyboxFindInStoreViewProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductConfigureDropdownViewProps,\n IBuyboxProductConfigureViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxResources as IBuyboxExtentionResources,\n IBuyboxShopSimilarLookViewProps,\n IBuyboxState,\n IBuyboxViewProps\n} from '@msdyn365-commerce-modules/buybox';\nimport {\n ArrayExtensions,\n getFullAvailableInventoryNearby,\n GetFullAvailableInventoryNearbyInput,\n IFullOrgUnitAvailability\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { IncrementalQuantity, INodeProps, ITelemetryContent, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport { reaction } from 'mobx';\nimport * as React from 'react';\n\nimport { IBuyboxProps as IBuyboxExtentionProps, IBuyboxProps } from '../definition-extensions/buybox.ext.props.autogenerated';\nimport { renderAddToOrderTemplateButton } from './components/buybox-add-to-order-template';\n\n/**\n * BuyBoxConstants enum.\n */\nexport enum BuyBoxConstants {\n zero = 0\n}\n\n/**\n * On Change function.\n * @param callbacks -Callbacks.\n * @returns Update quantity.\n */\nconst onChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number): boolean => {\n if (callbacks.updateQuantity) {\n return callbacks.updateQuantity(newValue);\n }\n return true;\n};\n\n/**\n * RenderQuantity.\n * @param quantityComponent - QuantityComponent.\n * @param callbacks - Callbacks.\n * @param props - Props.\n * @param state - State.\n * @param extentionResources - ExtentionResources.\n * @param quantityLimitsMessages - QuantityLimitsMessages.\n * @param max - Max.\n * @param telemetryContent - TelemetryContent.\n * @param unitOfMeasure - Unit Of Measure.\n * @returns -- Returns.\n */\nconst renderQuantity = (\n quantityComponent: IBuyboxProductQuantityViewProps,\n callbacks: IBuyboxCallbacks,\n props: IBuyboxProps,\n state: IBuyboxState,\n extentionResources: IBuyboxExtentionResources,\n quantityLimitsMessages: React.ReactNode,\n\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\n min: number | undefined,\n max: number | undefined,\n applyDefaultOrderSettings?: boolean,\n telemetryContent?: ITelemetryContent,\n unitOfMeasure?: React.ReactNode\n): JSX.Element => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\n\n const { resources } = props;\n\n const { quantity } = state;\n\n return (\n \n \n {heading}\n {errors}\n \n\n \n {unitOfMeasure}\n {quantityLimitsMessages}\n \n );\n};\n\n/**\n * Render key in price function.\n * @param keyInPrice - KeyInPrice.\n * @returns -- Returns.\n */\nconst renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\n\n return (\n \n {heading}\n {input}\n \n );\n};\n\n/**\n * RenderAddToCart.\n * @param addToCart - AddToCart.\n * @returns -- Returns.\n */\nconst renderAddToCart = (addToCart: IBuyboxAddToCartViewProps): JSX.Element => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\n const { ContainerProps, errorBlock, button } = addToCart;\n\n return (\n \n {errorBlock}\n {button}\n \n );\n};\n\n/**\n * RenderFindInStore.\n * @param findInStore - FindInStore.\n * @returns -- Returns.\n */\nconst renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\n const { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = findInStore;\n\n return (\n \n {storeSelector}\n {heading}\n {productPickupOptionList}\n {description}\n {errors}\n {button}\n {modal}\n \n );\n};\n\n/**\n * RenderAddToOrderTemplate.\n * @param props - Buybox view props.\n * @param state - Buybox state.\n * @param callbacks - Buybox callbacks.\n * @returns -- Returns.\n */\nconst renderAddToOrderTemplate = (\n props: IBuyboxViewProps & IBuyboxExtentionProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks\n): JSX.Element | null => {\n const product = props.data.product.result;\n if (!props.addToOrderTemplate || !product) {\n return null;\n }\n\n const orderTemplateButton = renderAddToOrderTemplateButton(props, state, callbacks, product);\n\n return (\n \n {props.addToOrderTemplate.errorBlock}\n {orderTemplateButton}\n \n );\n};\n\n/**\n * Add to wishlist failed function.\n * @param callbacks -Buybox callbacks.\n * @param resources -Buybox resources.\n * @param product -Simple product.\n * @returns Update error state.\n */\nconst onAddToWishlistFailed = (callbacks: IBuyboxCallbacks, resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (\n result: IWishlistActionErrorResult\n) => {\n callbacks.updateErrorState({\n errorHost: 'WISHLIST',\n configureErrors:\n result.status === 'MISSINGDIMENSION' ? getConfigureErrors(result.missingDimensions, resources, product?.IsGiftCard) : {}\n });\n};\n\n/**\n * RenderAddToWishlist.\n * @param props - Buybox view props.\n * @param state - Buybox state.\n * @param callbacks - Buybox callbacks.\n * @param product - Product data.\n * @returns -- Returns.\n */\nconst renderAddtoWishlistButton = (\n props: IBuyboxViewProps & IBuyboxExtentionProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks,\n product: SimpleProduct\n): React.ReactNode => {\n const { context, resources } = props;\n const wishlists = props.data.wishlists.result;\n const isShowWishlitButtonText = true;\n return (\n \n );\n};\n\n/**\n * RenderAddToWishlist.\n * @param props - Buybox viewprops.\n * @param state - Buybox state.\n * @param callbacks - Buybox callbacks.\n * @returns -- Returns.\n */\nconst renderAddToWishlist = (\n props: IBuyboxViewProps & IBuyboxExtentionProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks\n): JSX.Element | null => {\n const product = props.data.product.result;\n if (!props.addToWishlist || !product) {\n return null;\n }\n\n if (!props.config.enableWishlist) {\n return null;\n }\n\n const wishlistButton = renderAddtoWishlistButton(props, state, callbacks, product);\n return (\n \n {props.addToWishlist.errorBlock}\n {wishlistButton}\n \n );\n};\n\n/**\n * RRenderShopSimilarItem.\n * @param shopSimilarItem - ShopSimilarItem.\n * @returns -- Returns.\n */\nconst renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\n const { ContainerProps, errors, input } = shopSimilarItem;\n\n return (\n \n {errors}\n {input}\n \n );\n};\n\n/**\n * RenderSocialShare.\n * @param socialShare - Social share react node array.\n * @returns -- Returns.\n */\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\n if (!socialShare || socialShare.length === 0) {\n return undefined;\n }\n\n return <>{socialShare[0]};\n};\n\n/**\n * RenderConfigureDropdown.\n * @param dropdown - Buybox product configure dropdown view props.\n * @returns -- Returns JSX.Element.\n */\nconst renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n {heading}\n {select}\n {errors}\n \n );\n};\n\n/**\n * RenderConfigure.\n * @param configure - Buybox product configure view props.\n * @returns -- Returns JSX.Element.\n */\nconst renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\n const { ContainerProps, dropdowns } = configure;\n\n return {dropdowns.map(renderConfigureDropdown)};\n};\n\n/**\n * BuyboxView.\n * @param props - Props.\n * @returns -- Returns.\n */\nconst BuyboxView: React.FC> = props => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\n const {\n ModuleProps,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\n MediaGalleryContainerProps,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\n ProductInfoContainerProps,\n addToCart,\n addToOrderTemplate,\n addToWishlist,\n productComparisonButton,\n configure,\n description,\n findInStore,\n quantity,\n price,\n title,\n rating,\n inventoryLabel,\n shopSimilarLook,\n keyInPrice,\n shopSimilarDescription,\n min,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\n max,\n applyDefaultOrderSettings,\n unitOfMeasure,\n callbacks,\n state,\n resources,\n quantityLimitsMessages,\n telemetryContent,\n app: { config: appConfig },\n catalogs\n } = props;\n let skuText: string = props.resources.skuText;\n skuText += props.data.product.result?.ItemId;\n const preferredStoreInfo: IStoreInfo | undefined = props.data.storeSelectorStateManager.result?.preferredStore;\n const preferredStoreId = preferredStoreInfo?.StoreId ? preferredStoreInfo.StoreId : '';\n const preferredStoreName = preferredStoreInfo?.StoreName ? preferredStoreInfo.StoreName : '';\n\n const [availability, setAvailability] = React.useState('');\n const [isStoreChange, setIsStoreChange] = React.useState(false);\n\n /**\n * GetStockInventoryLabel.\n * @param availabilityWithHours - Stock availability with hours.\n * @returns -- Returns.\n */\n const getStockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (availabilityWithHours && ArrayExtensions.hasElements(availabilityWithHours.ProductInventoryInformation)) {\n for (const productInventoryInformation of availabilityWithHours.ProductInventoryInformation) {\n if (\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n productInventoryInformation.InventLocationId\n ) {\n return productInventoryInformation.StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n\n const getInventory = React.useCallback(async () => {\n const input = new GetFullAvailableInventoryNearbyInput(\n props.data.product.result?.RecordId,\n BuyBoxConstants.zero,\n BuyBoxConstants.zero,\n BuyBoxConstants.zero,\n BuyBoxConstants.zero,\n true\n );\n\n /**\n * IsProductInStock.\n * @param itemAvailabilities - Item availability array.\n * @returns -- Returns.\n */\n const isProductInStock = (itemAvailabilities: ItemAvailability[] | undefined): boolean => {\n if (!appConfig.enableStockCheck) {\n return true;\n }\n\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[BuyBoxConstants.zero].AvailableQuantity! > BuyBoxConstants.zero;\n }\n\n return false;\n };\n\n await getFullAvailableInventoryNearby(input, props.context.actionContext)\n .catch((error: Error) => {\n props.telemetry.error(error.message);\n })\n .then(response => {\n if (response && ArrayExtensions.hasElements(response)) {\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreId;\n const filteredFullOrgUnitAvailability = response.filter(isPreferredStore);\n const preferredStoreAvailability = ArrayExtensions.hasElements(filteredFullOrgUnitAvailability)\n ? filteredFullOrgUnitAvailability[BuyBoxConstants.zero]\n : undefined;\n const stockStatusLabel: string | undefined = getStockInventoryLabel(preferredStoreAvailability);\n const isInStock = isProductInStock(preferredStoreAvailability?.OrgUnitAvailability?.ItemAvailabilities);\n const resourceLabel = isInStock ? props.resources.inStockText : props.resources.outOfStockText;\n const stockText: string | undefined = stockStatusLabel ? stockStatusLabel : resourceLabel;\n const preferredStoreAvailabilityText = `${format(\n props.resources.availabilityAtPreferredStoreText,\n preferredStoreName\n )} ${stockText}`;\n setAvailability(preferredStoreAvailabilityText);\n }\n });\n\n setIsStoreChange(false);\n }, [\n props.data.product.result?.RecordId,\n appConfig.enableStockCheck,\n preferredStoreId,\n preferredStoreName,\n props.context.actionContext,\n props.resources.availabilityAtPreferredStoreText,\n props.resources.inStockText,\n props.resources.outOfStockText,\n props.telemetry\n ]);\n\n React.useEffect(() => {\n if (props.config.displayStockAvailability) {\n getInventory().catch((error: Error) => {\n props.telemetry.error(error.message);\n });\n }\n }, [getInventory, isStoreChange, props.telemetry, props.config.displayStockAvailability]);\n\n reaction(\n () => props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\n () => {\n setIsStoreChange(true);\n }\n );\n\n /**\n * RenderAvailabiltyAtPreferredStore.\n * @returns -- Returns.\n */\n const renderAvailabilityAtPreferredStore = (): JSX.Element | undefined => {\n const hasProductDimensions = ArrayExtensions.hasElements(props.data.product.result?.Dimensions);\n if (hasProductDimensions && props.data.product.result?.MasterProductId === undefined) {\n return undefined;\n }\n const containerProps: INodeProps = {\n className: 'ms-buybox__preferred-store-availability',\n tag: 'span'\n };\n\n return {availability};\n };\n return (\n \n {props.mediaGallery}\n \n {catalogs && catalogs[0].Name}\n {title}\n \n
{skuText}
\n {rating}\n
\n \n
{props.resources.priceText}
\n {price}\n
\n {configure && renderConfigure(configure)}\n {keyInPrice && renderKeyInPrice(keyInPrice)}\n \n
\n {quantity &&\n renderQuantity(\n quantity,\n callbacks,\n props,\n state,\n resources,\n quantityLimitsMessages,\n min,\n max,\n applyDefaultOrderSettings,\n telemetryContent,\n unitOfMeasure\n )}\n {props.bulkPurchaseLink}\n
\n
\n {props.config.displayStockAvailability && preferredStoreId && renderAvailabilityAtPreferredStore()}\n {inventoryLabel}\n {renderAddToCart(addToCart)}\n {findInStore && renderFindInStore(findInStore)}\n {addToWishlist && renderAddToWishlist(props, state, callbacks)}\n {productComparisonButton}\n {addToOrderTemplate && renderAddToOrderTemplate(props, state, callbacks)}\n {findInStore?.productPickupOptionList ? (\n
{findInStore.productPickupOptionList}
\n ) : null}\n {_renderSocialShare(props.slots && props.slots.socialShare)}\n
{props.resources.shopText}
\n \n {shopSimilarLook && renderShopSimilarItem(shopSimilarLook)}\n {shopSimilarDescription && renderShopSimilarItem(shopSimilarDescription)}\n \n \n
{props.resources.descriptionText}
\n {description}\n
\n {ArrayExtensions.hasElements(props.slots.productSpecification) ? (\n {props.slots.productSpecification[0]}\n ) : null}\n
\n
\n );\n};\n\nexport default BuyboxView;\n","module.exports = React;","module.exports = ReactDOM;"],"names":["GetConfigParamEntityExtensionClass","constructor","odataObject","this","id","ErrorPageURL","ValidateTokenEntityExtensionClass","issuingParty","code","batchNumber","status","expiryDateUtc","Date","jsonLightReadStringPropertyValue","undefined","category","type","title","errors","i","length","className","substr","lastIndexOf","concat","EntityClasses","ErrorExtensionClass","errorPageURL","prodID","prodName","userDefinedProperties","k","classNameUD","UserdefinedpropertyExtensionClass","userDefinedPropertiesPropertyName","values","message","createGetConfigParamValuesInput","paramName","key","DataServiceQuery","DataServiceEntities","getConfigParamQuery","createDataServiceRequestForOperation","bypassCache","returnEntity","createValidateTokenInput","tokenCode","version","validateTokenQuery","modalCloseButtonReference","React","onClickFindInStoreHandler","props","state","callbacks","async","_props$data","data","storeSelectorStateManager","result","cart","productAvailableQuantity","resources","context","modules","selectedProduct","quantity","dataProduct","product","multiplePickupStoreSwitchName","retailMulitplePickupMFeatureState","featureState","find","Name","IsEnabled","missingDimensions","Dimensions","filter","dimension","DimensionValue","Value","storeSelectorId","Object","keys","storeSelector","updateErrorState","errorHost","configureErrors","getConfigureErrors","openDialog","parentElementRef","deliveryOptions","onLocationSelected","orgUnitLocation","deliveryMode","_props$context","Promise","resolve","behavior","app","config","addToCartBehavior","addProductToCart","count","location","then","substatus","productAvailability","changeModalOpen","ProductAvailableQuantity","ArrayExtensions","hasElements","shippingInventory","shipping","deliveryType","DeliveryMode","pickup","failureResult","failureReason","cartActionResult","otherError","getGenericError","navigationUrl","getUrlSync","actionContext","AddToCartBehavior","goToCart","window","assign","showModal","showNotification","_props$data$productPr2","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","typeName","NotificationsManager","instance","addNotification","catch","error","exception","debug","findInStoreOnClick","getBuyboxFindInStore","_data$product","_data$productPrice","_data$cart","_data$deliveryOptions","_data$productAvailabl","_data$featureState","_data$channelDelivery","_product$Dimensions","_props$data$product","_props$data$productPr","slots","findInStoreHeaderText","descriptionTextToShowAllPickupOptions","channel","PickupDeliveryModeCode","price","channelDeliveryOptionConfig","_dimension$DimensionV","errorState","quantityError","modalOpen","isSectionDisabled","buttonText","description","isStockCheck","buyboxResources","isLoading","pickupInventory","findInStoreLinkText","findInStoreDescriptionText","isAggregatedInventory","_pickupInventory","IsProductAvailable","findInStoreNotAvailableTextButton","findInStoreNotAvailableDescription","getFindInStoreInventorySettings","enableStockCheck","DeliveryOptions","matchDeliveryOptions","productdeliveryOptions","storePickUpOptionList","deliveryOption","map","delivery","deliveryCode","Code","push","PickupDeliveryModeCodes","option","priceComponent","PriceComponent","popupProps","imageSettings","productQuantity","setModalOpen","renderModalPopup","Popup","ContainerProps","openFindInStoreDialog","heading","Heading","headingTag","text","productPickupOptionList","item","Description","BuyboxErrorBlock","showError","button","onClick","color","ref","disabled","modal","Buybox","_this$props$data$prod2","super","dimensionUpdateQueue","FinitePromiseQueue","dimensions","buyboxCallbacks","updateQuantity","newQuantity","_objectSpread","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","scrollX","left","pageXOffset","scrollY","top","pageYOffset","scrollTo","_isChannelMultipleCatalogsFeatureEnabled","isMultipleCatalogFeatureEnabledInHq","_this$props$data$feat","feature","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","isPriceApiCalled","_translatedItemsName","ExtensionProperties","Key","StringValue","localStorage","setItem","documentURL","token","URLSearchParams","search","get","issuingparty","callActionOrExecute","callerContext","validateTokenAsync","_result$status","toLocaleLowerCase","Cookies","set","secure","redirectPdpUrl","origin","href","_productIssuingParty","_cookiesIssuingParty","_cookiesToken","_errorPageUrl","_product$ExtensionPro","getConfigParamValuesAsync","configValue","ItemTypeValue","ReleasedProductType","Service","isServiceItem","maxRecentlyViewedItemsCount","RecentlyViewedState","RecordId","render","_this$props$data$prod3","mediaGallery","productComparisonButton","inventoryLevel","dimensionValuesWithInventory","flatten","validValues","value","hasAvailableProducts","some","getInventoryLevelCodeFromDimensionValue","InventoryLevelValues","outOfStock","catalogId","getCatalogId","validateCatalogId","viewProps","ModuleProps","moduleProps","classnames","ProductInfoContainerProps","MediaGalleryContainerProps","getBuyboxProductTitle","getBuyboxProductDescription","bulkPurchaseLink","_renderBuyboxBulkPurchaseLink","unitOfMeasure","getBuyboxProductUnitOfMeasure","configure","getBuyboxProductConfigure","findInStore","getBuyboxProductPrice","addToCart","getBuyboxAddToCart","getBuyboxProductComparisonButton","addToOrderTemplate","getBuyboxProductAddToOrderTemplate","addToWishlist","getBuyboxProductAddToWishlist","rating","hideRating","getBuyboxProductRating","getBuyboxProductQuantity","inventoryLabel","getBuyBoxInventoryLabel","chargerInstallation","shopSimilarLook","enableShopSimilarLooks","getBuyboxShopSimilarButton","ShopSimiliarButtonType","Looks","shopSimilarDescription","enableShopSimilarDescription","keyInPrice","enableKeyInPrice","isCustomPriceSelected","getBuyboxKeyInPrice","quantityLimitsMessages","getQuantityLimitsMessages","isChannelMultipleCatalogsFeatureEnabled","currentCatalogId","catalogs","_validateCatalogDetails","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","setDimensionValuesToQuery","requestContext","url","requestUrl","selectedProductPromise","getSelectedVariant","SelectedVariantInput","MasterProductId","getDimensionsForSelectedVariant","GetDimensionsForSelectedVariantInput","_productVariant$Dimen","newAvailableQuantity","getProductAvailabilitiesForSelectedVariant","ProductAvailabilitiesForSelectedVariantInput","newShippingQuantity","toLowerCase","getPriceForSelectedVariant","PriceForSelectedVariantInput","_this$props$data$feat2","retailMultiplePickupFeatureState","getDeliveryOptionsForSelectedVariant","GetDeliveryOptionsForSelectedVariantInput","isOrderQuantityLimitsFeatureEnabled","_isOrderQuantityLimitsFeatureEnabled","isChannelLimitsFeatureEnabled","_isChannelLimitsFeatureEnabled","_getMinQuantityForCartLineItem","_getMaxQuantityForCartLineItem","_product$Behavior","Behavior","MinimumQuantity","isQuantityLimitsFeatureEnabled","_product$Behavior2","MaximumQuantity","updateMaxQuantityForCartLineItem","maxQuantityForCartLineItem","_this$props$context","_featureStatuses$find","defaultOrderQuantityLimitsFeatureConfig","platform","enableDefaultOrderQuantityLimits","featureStatuses","RetailDefaultOrderQuantityLimitsFeatureName","customerInfo","customerInformation","information","IsB2b","_this$props$data$cata","_featureStatuses$find2","isChannelLimitsFeatureEnabledInHq","EcommerceQuantityLimitConfigurationsFeatureName","_renderAddToCart","errorBlock","Node","_renderAddToOrderTemplate","_renderAddToWishlist","_renderConfigure","dropdowns","_renderConfigureDropdown","_renderSocialShare","socialShare","dropdown","LabelContainerProps","select","_renderFindInStore","_renderQuantity","input","_renderKeyInPrice","_renderShopSimilarItem","shopSimilarItem","Module","_renderTextBlock","textBlocks","_renderCartAndActions","isChecked","setIsChecked","setIsModalOpen","sessionStorage","style","background","padding","fontWeight","fontSize","marginBottom","name","onChange","checked","margin","textDecoration","onChangeHandler","newValue","quantityComponent","extentionResources","IncrementalQuantity","currentCount","inputQuantityAriaLabel","decrementButtonAriaLabel","incrementButtonAriaLabel","minQuantityText","maxQuantityText","binding","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","c","require","$type","da","path","runOn","iNM","ns","n","p","pdp","md","__bindings__","viewDictionary","cn","BaseStoreSelectorStateManager","listMapViewState","displayList","displayMap","preferredStoreLocalStorageKey","isMapModuleLoaded","_readFromToCookie","storeInfo","JSON","parse","preferredStore","_unused","_context","storeId","selectedStoreLocationId","storeName","writeToCookie","StoreId","StoreName","Latitude","Longitude","_writeToCookie","stringify","latitude","longitude","lastInlineShownStoreInfo","_removeCookie","MsDyn365","removeItem","cookieValue","getItem","__decorate","computed","observable","action","MapStoreSelectorStateManager","SERVICE_ENDPOINT","MAP_API_ENDPOINT","searchTerm","BingMapsApiKey","BingMapsEnabled","searchContent","jsonp","crypto","getRandomValues","Uint32Array","ChannelCountryRegionISOCode","trim","query","encodeURI","geolocationApiUrl","script","createElement","setAttribute","remove","resourceSets","point","coordinates","body","appendChild","_document","StringExtensions","isNullOrEmpty","getElementById","currentWindowAPI","mapAPIReady","isMapApiLoaded","lang","market","reject","_document2","_document3","defer","src","addEventListener","createStoreSelectorStateInput","GenericInput","getGenericActionDataAction","createObservableDataAction","getGenericAction","inputData","applyDefaultOrderSettings","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","renderAddToOrderTemplate","orderTemplateButton","renderAddToOrderTemplateButton","orderTemplates","isMultipleCatalogsFeatureEnabled","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$storeSele","_props$data$product$r3","appConfig","skuText","ItemId","preferredStoreInfo","preferredStoreId","preferredStoreName","availability","setAvailability","isStoreChange","setIsStoreChange","getInventory","_props$data$product$r2","GetFullAvailableInventoryNearbyInput","zero","getFullAvailableInventoryNearby","response","_preferredStoreAvaila","isPreferredStore","_value$OrgUnitAvailab","OrgUnitAvailability","OrgUnitLocation","OrgUnitNumber","filteredFullOrgUnitAvailability","preferredStoreAvailability","stockStatusLabel","availabilityWithHours","ProductInventoryInformation","productInventoryInformation","_availabilityWithHour","InventoryLocationId","InventLocationId","StockLevelLabel","getStockInventoryLabel","resourceLabel","itemAvailabilities","ItemAvailabilities","AvailableQuantity","inStockText","outOfStockText","stockText","preferredStoreAvailabilityText","format","availabilityAtPreferredStoreText","displayStockAvailability","reaction","_props$data$storeSele2","priceText","renderConfigure","renderKeyInPrice","renderQuantity","renderAvailabilityAtPreferredStore","_props$data$product$r4","_props$data$product$r5","tag","renderAddToCart","renderFindInStore","shopText","descriptionText","productSpecification","module","exports","ReactDOM"],"sourceRoot":""}