{"version":3,"file":"static/js/cc96dc77143c257c2046.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/components/unit-of-measure/utils/humanize-unit-of-measure.ts?110c","webpack://Msdyn365.Commerce.Online/./src/components/unit-of-measure/unit-of-measure.tsx?45a5","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/utils/get-products-in-mini-cart.ts?3c15","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/cart-icon.tsx?4ae8","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/components/flyout-cart-line-items.tsx?f2c4"],"sourcesContent":["import { ICoreContext } from '@msdyn365-commerce/core';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\n\r\nconst translations: { [key: string]: { [key: string]: string } } = {\r\n 'nb-NO': {\r\n 'Flaske-BS': 'Stk',\r\n 'Stk-BS': 'Stk',\r\n 'Stk-M1': 'Krt',\r\n 'Boks-BS': 'Stk',\r\n 'Krt-BS': 'Stk',\r\n 'Krt-M1': 'Krt',\r\n 'Krt-M2': 'Krt',\r\n 'Pose-BS': 'Stk',\r\n 'Kanne-BS': 'Stk',\r\n 'Fat-BS': 'Stk',\r\n 'Glass-BS': 'Stk',\r\n 'Rull-BS': 'Stk',\r\n 'Brett-BS': 'Stk',\r\n 'Brett-M1': 'Brt',\r\n 'Brett-M2': 'Brt',\r\n 'Tube-BS': 'Stk',\r\n 'Sekk-BS': 'Stk',\r\n 'Bunt-BS': 'Stk'\r\n },\r\n 'en-US': {\r\n 'Flaske-BS': 'Pcs',\r\n 'Stk-BS': 'Pcs',\r\n 'Stk-M1': 'Box',\r\n 'Boks-BS': 'Pcs',\r\n 'Krt-BS': 'Pcs',\r\n 'Krt-M1': 'Box',\r\n 'Krt-M2': 'Box',\r\n 'Pose-BS': 'Pcs',\r\n 'Kanne-BS': 'Pcs',\r\n 'Fat-BS': 'Pcs',\r\n 'Glass-BS': 'Pcs',\r\n 'Rull-BS': 'Pcs',\r\n 'Brett-BS': 'Pcs',\r\n 'Brett-M1': 'Try',\r\n 'Brett-M2': 'Try',\r\n 'Tube-BS': 'Pcs',\r\n 'Sekk-BS': 'Pcs',\r\n 'Bunt-BS': 'Pcs'\r\n }\r\n};\r\n\r\nexport function humanizeUnitOfMeasure(locale: ICoreContext | string, unitOfMeasure: string | undefined, simpleProduct?: SimpleProduct): string {\r\n // Check if there is a friendly UOM defined on the SimpleProduct. If so it overrides anything else.\r\n const friendlyUnitOfMeasure = simpleProduct?.ExtensionProperties?.find((extProp) => extProp.Key === 'FRIENDLYUOM');\r\n\r\n if (friendlyUnitOfMeasure && friendlyUnitOfMeasure.Value?.StringValue) {\r\n return friendlyUnitOfMeasure.Value.StringValue;\r\n }\r\n\r\n if (!unitOfMeasure) {\r\n return '';\r\n }\r\n\r\n // Check if locale is a string or an ICoreContext object\r\n if (typeof locale === 'object') {\r\n locale = locale.request.locale;\r\n }\r\n\r\n return translations[locale]?.[unitOfMeasure] || unitOfMeasure;\r\n}\r\n","import * as React from 'react';\r\nimport { ICoreContext } from '@msdyn365-commerce/core';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport { humanizeUnitOfMeasure } from './utils';\r\n\r\ninterface IUnitOfMeasureProps {\r\n context: ICoreContext;\r\n className?: string;\r\n simpleProduct?: SimpleProduct;\r\n unitOfMeasure?: string;\r\n disableTranslate?: boolean;\r\n}\r\n\r\nconst UnitOfMeasure = (props: IUnitOfMeasureProps) => {\r\n const { context } = props;\r\n let { disableTranslate } = props;\r\n\r\n const className = classnames('vinhuset-unit-of-measure', props.className);\r\n\r\n // Check if already disabled\r\n if (!disableTranslate) {\r\n // @ts-expect-error\r\n if (context.app.config.humanizeUnitOfMeasure !== true) {\r\n disableTranslate = true;\r\n } else {\r\n // Disable if disableUnitReplace is present and not 1 or 'true'\r\n const disableUnitReplace = context.request.url.requestUrl.searchParams.get('disableUnitReplace');\r\n disableTranslate = disableUnitReplace === '' || disableUnitReplace === '1' || disableUnitReplace?.toLowerCase() === 'true';\r\n }\r\n }\r\n\r\n let unitOfMeasure = props.unitOfMeasure || props.simpleProduct?.DefaultUnitOfMeasure || '';\r\n unitOfMeasure = disableTranslate\r\n ? unitOfMeasure\r\n : humanizeUnitOfMeasure(context, unitOfMeasure);\r\n\r\n // Check if there is a friendly UOM defined on the SimpleProduct\r\n const friendlyUnitOfMeasure = props.simpleProduct?.ExtensionProperties?.find((extProp) => extProp.Key === 'FRIENDLYUOM');\r\n\r\n if (!disableTranslate && friendlyUnitOfMeasure && friendlyUnitOfMeasure.Value?.StringValue) {\r\n unitOfMeasure = friendlyUnitOfMeasure.Value.StringValue;\r\n }\r\n\r\n return (\r\n \r\n {unitOfMeasure}\r\n \r\n );\r\n};\r\n\r\nexport default UnitOfMeasure;\r\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 { ICartState } from '@msdyn365-commerce/global-state';\nimport { ProductDeliveryOptions, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ActiveCartProductsInput,\n getActiveCartProductsAction,\n getAvailabilitiesForCartLineItems,\n getDeliveryOptionsForCartLineItems,\n IProductInventoryInformation,\n ProductAvailabilitiesForCartLineItems,\n ProductDeliveryOptionsForCartLineItems\n} from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * IMiniCartData entity interface.\n */\nexport interface IMiniCartData {\n products?: SimpleProduct[];\n productAvailabilites?: IProductInventoryInformation[];\n deliveryOptions?: ProductDeliveryOptions[];\n}\n\nexport const createInput = () => {\n return new ActiveCartProductsInput();\n};\n\n/**\n * Calls the Retail API and returns a mini cart data.\n * @param ctx\n * @param cartState\n */\nexport async function getMiniCartData(ctx: IActionContext, cartState: ICartState): Promise {\n const miniCartData: IMiniCartData = {};\n\n const cart = cartState.cart;\n\n // If there are cart lines, make call to get products\n // If there are invocie linese, then there is no products, so don't make call to get products\n if (cart && cart.CartLines && cart.CartLines.length > 0 && !cartState.hasInvoiceLine) {\n await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx)\n .then(products => {\n if (products) {\n miniCartData.products = products;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getAvailabilitiesForCartLineItems(new ProductAvailabilitiesForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(availableQuantity => {\n if (availableQuantity) {\n miniCartData.productAvailabilites = availableQuantity;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getDeliveryOptionsForCartLineItems(new ProductDeliveryOptionsForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(deliveryOptions => {\n if (deliveryOptions) {\n miniCartData.deliveryOptions = deliveryOptions;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n }\n\n return miniCartData;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AddToCartBehavior, CartIconComponent } from '@msdyn365-commerce/components';\nimport { getUrlSync, IDictionary, IImageSettings, msdyn365Commerce, TelemetryEvent } from '@msdyn365-commerce/core';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n CartLineValidationResultsByLineId,\n OrgUnitLocation\n} from '@msdyn365-commerce/retail-proxy';\nimport { validateCartAsync } from '@msdyn365-commerce-modules/cart-utilities';\nimport { ArrayExtensions, validateCartLinesInventory } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant,\n UncontrolledTooltip,\n updateMaxQuantityForCartLineItem,\n urlCheck\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport React from 'react';\n\nimport { ICartIconData } from './cart-icon.data';\nimport { cartLinesSortOrder, ICartIconProps } from './cart-icon.props.autogenerated';\nimport { FlyoutCartLineItems, IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\nimport { getMiniCartData, IMiniCartData } from './utils/get-products-in-mini-cart';\n\nexport interface IMiniCartState {\n miniCartData: IMiniCartData;\n orgUnitLocations?: OrgUnitLocation[];\n isQuantityLimitsFeatureEnabled: boolean;\n isCartValid: boolean;\n}\n\nexport interface ICartIconViewProps extends ICartIconProps {\n className: string;\n cartIcon: React.ReactNode;\n FlyoutContainer?: INodeProps;\n CartlinesWrapper: INodeProps;\n miniCartWrapper: INodeProps;\n miniCartItemWrapper: INodeProps;\n cartlines?: IFlyoutCartLineItemViewProps[];\n flyoutTitle: React.ReactNode;\n totalPrice: React.ReactNode;\n checkoutAsGuestButton?: React.ReactNode;\n checkoutAsSignInUserButton?: React.ReactNode;\n goToCartButton?: React.ReactNode;\n waitingComponent?: React.ReactNode;\n isCartLoading: boolean;\n checkoutBlockedDueToUnavailableFunds?: React.ReactNode;\n\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\n/**\n *\n * Cart component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass CartIcon extends React.Component, IMiniCartState> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly checkoutBySignInAttributes: IDictionary | undefined;\n\n private readonly checkoutByGuestAttributes: IDictionary | undefined;\n\n private readonly viewShoppingBagAttributes: IDictionary | undefined;\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n private lastValidatedCartVersion: number | undefined;\n\n constructor(props: ICartIconProps) {\n super(props);\n this.state = {\n miniCartData: {},\n isCartValid: true,\n isQuantityLimitsFeatureEnabled: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payload = getPayloadObject(TelemetryEvent.CheckOut, this.telemetryContent, TelemetryConstant.Checkout);\n this.checkoutBySignInAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.GuestCheckout;\n this.checkoutByGuestAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.ViewShoppingBag;\n this.viewShoppingBagAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n }\n\n public async componentDidMount(): Promise {\n const context = this.props.context.actionContext;\n\n reaction(\n () => this.props.data.cart.result?.cart.CartLines,\n async () => {\n this.setState({\n miniCartData: await getMiniCartData(context, this.props.data.cart.result!)\n });\n }\n );\n await this._setQuantityLimitsFeatureFlag();\n\n this.setState({\n orgUnitLocations: this.props.data.orgUnitLocations?.result\n });\n\n this._validateCart();\n }\n\n public componentDidUpdate(prevProps: ICartIconProps): void {\n this._validateCart();\n }\n\n public shouldComponentUpdate(nextProps: ICartIconProps, nextState: IMiniCartState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element | null {\n const {\n id,\n typeName,\n config: { enableHoverCart, isAnonymousCheckout },\n context: {\n request: {\n user: { isAuthenticated, signInUrl }\n }\n },\n context,\n resources\n } = this.props;\n\n const cart = (this.props.data.cart && this.props.data.cart.result) || undefined;\n const guestCheckoutUrl = getUrlSync('checkout', this.props.context.actionContext) || '';\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n const checkoutURL = this._getCheckoutURL(isAuthenticated, guestCheckoutUrl, signInUrl || '');\n const isCartEmpty = cart && cart.cart.CartLines && cart.cart.CartLines.length === 0;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- check config.\n const shouldShowMiniCart =\n cart?.isProductAddedToCart && this.props.context.app.config.addToCartBehavior === AddToCartBehavior.showMiniCart;\n const hasInvoiceLine = cart?.hasInvoiceLine;\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n const cartLines = this._getCartLines();\n const validInventoryAcrossCartLines = validateCartLinesInventory(\n cart?.cart.CartLines ?? [],\n this.state.miniCartData.productAvailabilites ?? [],\n this.props.context.actionContext,\n this.state.miniCartData.products ?? [],\n emailDeliveryModeCode\n );\n const hasError =\n !validInventoryAcrossCartLines?.isValid ||\n (!validInventoryAcrossCartLines && !this.state.isCartValid) ||\n (cartLines ? cartLines.some(cartline => cartline.hasError) : false);\n const includeFlyout = this.props.data.cart && this.props.data.cart.status === 'SUCCESS' && enableHoverCart;\n const totalItemsInCart = cart?.totalItemsInCart ? cart.totalItemsInCart : 0;\n const goToCartButtonText = resources.goToCartButtonTitle.replace('{count}', totalItemsInCart.toString());\n const flyoutTitle = resources.flyoutTitle;\n const flyoutTooltip = {\n tag: UncontrolledTooltip,\n shouldShowMiniCart,\n placement: 'bottom-end',\n hideArrow: true,\n className: 'ms-cart-icon__flyout-container',\n trigger: 'hover',\n displayMode: 'FLYOUT',\n target: id,\n shouldShowCloseButton: true,\n cartPageUrl: cartUrl,\n hideAriaHidden: true\n };\n\n // If there are invoice lines, don't update mini cart price\n const price = (cart && !cart.hasInvoiceLine && cart.cart.TotalAmount) || undefined;\n const priceString = price\n ? resources.totalPriceFormatString.replace('{price}', context.cultureFormatter.formatCurrency(price))\n : '';\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\n feature => feature.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n\n const viewProps = {\n ...this.props,\n cartIcon: (\n \n ),\n cartlines: cartLines,\n FlyoutContainer: includeFlyout ? flyoutTooltip : undefined,\n CartlinesWrapper: {\n className: 'ms-cart-icon__cart-lines'\n },\n miniCartWrapper: {\n className: classnames('ms-cart-icon'),\n id: this.props.id\n },\n miniCartItemWrapper: {\n className: classnames('msc-cart-lines-item')\n },\n\n // If there are invoice lines, don't update mini cart checkout button\n // Checkout button will display by default to maintain backward compatibility. When Anonymous user checkout is enabled &&\n // user is authenticated then we will show the checkout button otherwise we will show the guest checkout button.\n checkoutAsSignInUserButton:\n !isCartEmpty && !hasInvoiceLine && (!isAnonymousCheckout || isAuthenticated) ? (\n \n {resources.checkoutButtonTitle}\n \n ) : null,\n checkoutAsGuestButton:\n isAnonymousCheckout && !isCartEmpty && !isAuthenticated ? (\n \n {resources.guestCheckoutButtonTitle}\n \n ) : null,\n goToCartButton: (\n \n {goToCartButtonText}\n \n ),\n checkoutBlockedDueToUnavailableFunds: null,\n flyoutTitle: {flyoutTitle},\n totalPrice:
{priceString}
\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _validateCart(): void {\n const {\n data: { cart }\n } = this.props;\n const cartVersion = cart.result?.cart?.Version ?? undefined;\n if (this.lastValidatedCartVersion === cartVersion) {\n return;\n }\n\n this.lastValidatedCartVersion = cartVersion; // This field is populated to block concurrent requests\n\n if (this.state.isQuantityLimitsFeatureEnabled) {\n validateCartAsync(cart, this.props.telemetry, this.props.context)\n .then((result: CartLineValidationResultsByLineId | undefined) => {\n this.setState({ isCartValid: !ArrayExtensions.hasElements(result?.ValidationResultsPairs) });\n })\n .catch(() => {\n this.setState({ isCartValid: false });\n });\n } else {\n this.setState({ isCartValid: true });\n }\n }\n\n private _getCheckoutURL(isAuthenticated: boolean, guestCheckoutUrl: string, signInUrl: string): string {\n if (isAuthenticated) {\n return guestCheckoutUrl;\n }\n\n const isAbsoluteUrl = urlCheck(guestCheckoutUrl);\n let returnURL = guestCheckoutUrl;\n if (msdyn365Commerce.isBrowser && !isAbsoluteUrl) {\n returnURL = `${window.location.origin}${guestCheckoutUrl}`;\n }\n\n return `${signInUrl}${!signInUrl.includes('?') ? '?' : '&'}ru=${returnURL}`;\n }\n\n /**\n * Sort cartline items.\n * @param cartlines - Cartlines to be sorted.\n * @param sortOrder - Ascending or descending.\n * @returns - Sorted cartlines.\n */\n private readonly getSortedCartLines = (cartlines: CartLine[], sortOrder?: cartLinesSortOrder): CartLine[] => {\n const lines: CartLine[] = [...cartlines];\n const zero: number = 0;\n\n if (sortOrder === cartLinesSortOrder.descending) {\n return lines.sort((item1, item2) => (item2.LineNumber ?? zero) - (item1.LineNumber ?? zero));\n }\n return lines.sort((item1, item2) => (item1.LineNumber ?? zero) - (item2.LineNumber ?? zero));\n };\n\n private _getCartLines(): IFlyoutCartLineItemViewProps[] | null {\n const {\n context: {\n request: { channel: { PickupDeliveryModeCode } = { PickupDeliveryModeCode: undefined } }\n },\n config,\n telemetry,\n resources\n } = this.props;\n\n const imageSettings = this._getImageSettings(config.imageSettings);\n const cart = this.props.data.cart && this.props.data.cart.result;\n\n // Cart-icon could be placed in each page\n // so we check cart content to reduce number of RS calls\n return this.state.miniCartData.products && cart && cart.cart.CartLines && cart.cart.CartLines.length > 0\n ? FlyoutCartLineItems({\n cartlines: this.getSortedCartLines(cart.cart.CartLines, config.cartLinesSortOrder),\n products: this.state.miniCartData.products,\n productAvailabilites: this.state.miniCartData.productAvailabilites,\n productDeliveryOptions: this.state.miniCartData.deliveryOptions,\n imageSettings,\n outOfStockThreshold: this.props.context.app.config.outOfStockThreshold || 0,\n isStockCheckEnabled: this.props.context.app.config.enableStockCheck || false,\n maxCartlineQuantity: updateMaxQuantityForCartLineItem(this.props.context.app.config.maxQuantityForCartLineItem),\n gridSettings: this.props.context.request.gridSettings!,\n context: this.props.context,\n typeName: this.props.typeName,\n id: this.props.id,\n resources: {\n sizeString: resources.productDimensionTypeSize,\n colorString: resources.productDimensionTypeColor,\n configString: resources.productDimensionTypeConfiguration,\n styleString: resources.productDimensionTypeStyle,\n quantityDisplayString: resources.quantityDisplayText,\n salesAgreementPricePrompt: resources.salesAgreementPricePrompt,\n inputQuantityAriaLabel: '', // Not used\n discountStringText: '', // Not used\n originalPriceText: '',\n currentPriceText: '',\n shippingChargesText: '',\n shippingText: resources.shippingText\n },\n telemetry,\n removeButtonText: resources.removeCartButtonText,\n outOfStockText: '', // Not used\n outOfRangeOneText: '', // Not used\n outOfRangeFormatText: '', // Not used\n cartState: cart,\n orgUnitLocations: this.state.orgUnitLocations,\n removeItemClickHandler: this._removeItemFromCartHandler,\n pickupDeliveryModeCode: PickupDeliveryModeCode,\n telemetryContent: this.telemetryContent,\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined,\n isQuantityLimitsFeatureEnabled: this.state.isQuantityLimitsFeatureEnabled,\n catalogs: this.props.data.catalogs?.result\n })\n : null;\n }\n\n private readonly _getImageSettings = (imageSettings: IImageSettings | undefined): IImageSettings => {\n return (\n imageSettings || {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n sm: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true\n }\n );\n };\n\n private readonly _removeItemFromCartHandler = (cartlineToRemove: CartLine) => {\n if (this.props.data.cart.result) {\n const input = {\n cartLineIds: [cartlineToRemove.LineId!.toString()]\n };\n this.props.data.cart.result.removeCartLines(input).catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to Remove Cart Line');\n });\n }\n };\n\n private async _setQuantityLimitsFeatureFlag(): Promise {\n const featureStatuses = await this.props.data.featureState;\n\n const isChannelQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature'\n )?.IsEnabled || false;\n if (isChannelQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n return;\n }\n\n const useSiteBuilderSettings = featureStatuses?.find(\n featureState => featureState.Name === 'RevertToSiteBuilderOrderQuantityLimitsSettings'\n )?.IsEnabled;\n\n if (useSiteBuilderSettings) {\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\n if (!defaultOrderQuantityLimitsFeatureConfig || defaultOrderQuantityLimitsFeatureConfig === 'none') {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n\n try {\n const featureStatuses = await this.props.data.featureState;\n const isQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature'\n )?.IsEnabled || false;\n if (!isQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n } catch (error) {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get feature states');\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n } else {\n this.props.data.customerInformation\n .then(customerInfo => {\n const result =\n !!customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b));\n this.setState({ isQuantityLimitsFeatureEnabled: result });\n })\n .catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get customer info');\n });\n }\n } else {\n const cartConfiguration = await this.props.data.cartConfiguration;\n this.setState({ isQuantityLimitsFeatureEnabled: !(cartConfiguration?.IgnoreOrderSettings ?? false) });\n return;\n }\n }\n}\n\nexport default CartIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLineItemComponent, ICartlineResourceString } from '@msdyn365-commerce/components';\nimport MsDyn365, { ICoreContext, IGridSettings, IImageSettings, ITelemetry, isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n OrgUnitLocation,\n ProductAvailableQuantity,\n ProductDeliveryOptions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { ProductCatalog, ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getProductUrlSync, IProductInventoryInformation } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { getProductByProductId, getProductByProductIdAndWarehouse } from '../../../Common/get-product';\n\nexport interface IFlyoutCartLineItemsProps {\n cartlines: CartLine[];\n cartState: ICartState | undefined;\n orgUnitLocations: OrgUnitLocation[] | undefined;\n resources: ICartlineResourceString;\n productAvailabilites: IProductInventoryInformation[] | undefined;\n products: SimpleProduct[] | undefined;\n productDeliveryOptions: ProductDeliveryOptions[] | undefined;\n pickupDeliveryModeCode?: string;\n catalogs?: ProductCatalog[];\n\n /**\n * GridSettings for the product image in cartline\n */\n gridSettings: IGridSettings;\n\n /**\n * ImageSettings for the product image in cartline\n */\n imageSettings: IImageSettings;\n id: string;\n typeName: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n removeButtonText: string;\n outOfStockText: string;\n outOfRangeOneText: string;\n outOfRangeFormatText: string;\n maxCartlineQuantity: number;\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n isQuantityLimitsFeatureEnabled: boolean;\n\n outOfStockThreshold: number;\n isStockCheckEnabled: boolean;\n telemetryContent?: ITelemetryContent;\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\nexport interface IFlyoutCartLineItemViewProps {\n cartline: React.ReactNode;\n remove: React.ReactNode;\n storeLocation: React.ReactNode;\n hasError: boolean;\n\n data: {\n product: SimpleProduct;\n cartline: CartLine;\n };\n}\n\nconst _getCartItemAvailableQuantity = (\n isStockCheckEnabled: boolean,\n outOfStockThreshold: number,\n productAvailability?: ProductAvailableQuantity\n): number => {\n if (isStockCheckEnabled) {\n if (\n !productAvailability ||\n !productAvailability.AvailableQuantity ||\n productAvailability.AvailableQuantity <= 0 ||\n productAvailability.AvailableQuantity <= outOfStockThreshold\n ) {\n return 0;\n }\n return productAvailability.AvailableQuantity - outOfStockThreshold;\n }\n\n return 0;\n};\n\nconst _getCartItemMaxQuantity = (\n maxQuantityByConfig: number,\n isStockCheckEnabled: boolean,\n availableQuantityInStock: number,\n isQuantityLimitsFeatureEnabled: boolean,\n maxByQuantityLimitsFeature: number\n) => {\n if (isQuantityLimitsFeatureEnabled) {\n let maxByQuantityLimitsFeatureResult = maxByQuantityLimitsFeature;\n\n // If max by feature in not defined when feature is on then we suggest that there is no max by feature\n // and consider available qty if stock check enabled and max from config in site settings.\n if (!maxByQuantityLimitsFeature) {\n maxByQuantityLimitsFeatureResult = maxQuantityByConfig || 10;\n }\n\n return isStockCheckEnabled\n ? maxByQuantityLimitsFeatureResult < availableQuantityInStock\n ? maxByQuantityLimitsFeatureResult\n : availableQuantityInStock\n : maxByQuantityLimitsFeatureResult;\n }\n if (isStockCheckEnabled) {\n return availableQuantityInStock < maxQuantityByConfig ? availableQuantityInStock : maxQuantityByConfig;\n }\n return maxQuantityByConfig;\n};\n\n/**\n * On Remove Click functionality.\n * @param removeItemClickHandler -Remove item click function.\n * @param cartline -CartLine.\n * @returns Remove change value.\n */\nconst onRemoveClickFunction = (removeItemClickHandler: (cartlineToRemove: CartLine) => void, cartline: CartLine) => () => {\n removeItemClickHandler(cartline);\n};\nconst _assembleNode = (\n cartline: CartLine,\n product: SimpleProduct,\n props: IFlyoutCartLineItemsProps,\n index: number,\n foundProductAvailability?: ProductAvailableQuantity,\n foundProductDeliveryOptions?: ProductDeliveryOptions\n): IFlyoutCartLineItemViewProps => {\n const { imageSettings, gridSettings, id, typeName, context, resources, removeButtonText, removeItemClickHandler } = props;\n\n const availableQuantityInStock = _getCartItemAvailableQuantity(\n props.isStockCheckEnabled,\n props.outOfStockThreshold,\n foundProductAvailability\n );\n const maxQuantity =\n product &&\n _getCartItemMaxQuantity(\n props.maxCartlineQuantity,\n props.isStockCheckEnabled,\n availableQuantityInStock,\n props.isQuantityLimitsFeatureEnabled,\n product?.Behavior?.MaximumQuantity || 0\n );\n\n // Check if the product is service or not by product type\n const isServiceItem = product.ItemTypeValue === ReleasedProductType.Service;\n\n const onRemoveClickHandler = onRemoveClickFunction(removeItemClickHandler, cartline);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.RemoveCartItem);\n const removeCartItemAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n\n let productUrl = getProductUrlSync(product, props.context.actionContext, undefined);\n if (MsDyn365.isBrowser && isChannelTypeB2B(props.context.actionContext.requestContext)) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${cartline.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n\n return {\n data: {\n product,\n cartline\n },\n hasError: !isServiceItem && props.isStockCheckEnabled ? cartline.Quantity! > maxQuantity : false,\n cartline: (\n \n ),\n remove: (\n \n {removeButtonText}\n \n ),\n storeLocation: _renderStoreLocation(cartline, props)\n };\n};\n\nconst _renderDeliveryLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): string | undefined => {\n let deliverylocation;\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartLine.ProductId;\n });\n }\n const delivery = foundProductDeliveryOption?.DeliveryOptions?.find(option => option.Code === cartLine.DeliveryMode);\n const location = delivery?.Description;\n\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n if (location) {\n deliverylocation = `${location}, ${orgUnitName}`;\n } else {\n deliverylocation = `${orgUnitName}`;\n }\n } else {\n deliverylocation = props.resources.shippingText;\n }\n return deliverylocation;\n};\n\nconst _renderStoreLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): JSX.Element | null => {\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n if (orgUnitName) {\n return (\n
\n {orgUnitName}\n
\n );\n }\n }\n\n return null;\n};\n\nconst _getOrgUnitName = (fulfillmentStoreId: string | undefined, orgUnitLocations: OrgUnitLocation[] | undefined) => {\n if (!orgUnitLocations || !fulfillmentStoreId || orgUnitLocations.length === 0) {\n return '';\n }\n\n const foundLocation = orgUnitLocations.find(orgUnitLocation => {\n return orgUnitLocation.OrgUnitNumber === fulfillmentStoreId;\n });\n\n if (foundLocation) {\n return foundLocation.OrgUnitName;\n }\n return fulfillmentStoreId;\n};\n\nconst _assembleCartlines = (\n cartlines: CartLine[],\n products: SimpleProduct[] | undefined,\n props: IFlyoutCartLineItemsProps\n): IFlyoutCartLineItemViewProps[] | null => {\n const reactNodes: IFlyoutCartLineItemViewProps[] = [];\n\n if (!products || products.length === 0) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n\n cartlines.map((cartline, index) => {\n let product;\n if (props.isQuantityLimitsFeatureEnabled) {\n // When feature is enabled the same products could have different quantity limits in Behavior so we need\n // to check productId and WarehouseId for identification.\n product = getProductByProductIdAndWarehouse(cartline.ProductId, products, cartline.WarehouseId, props.cartState);\n } else {\n product = getProductByProductId(cartline.ProductId, products);\n }\n let foundProductAvailability;\n if (props.productAvailabilites && props.productAvailabilites.length > 0) {\n foundProductAvailability = props.productAvailabilites.find(productAvailability => {\n return productAvailability.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\n });\n }\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartline.ProductId;\n });\n }\n if (product) {\n reactNodes.push(\n _assembleNode(\n cartline,\n product,\n props,\n index,\n foundProductAvailability?.ProductAvailableQuantity,\n foundProductDeliveryOption\n )\n );\n }\n });\n\n return reactNodes;\n};\n\n/**\n * CartLineItems component.\n */\n\nexport const FlyoutCartLineItems = (props: IFlyoutCartLineItemsProps) => {\n const { products, cartlines } = props;\n return _assembleCartlines(cartlines, products, props);\n};\n"],"names":["translations","humanizeUnitOfMeasure","locale","unitOfMeasure","simpleProduct","_simpleProduct$Extens","_friendlyUnitOfMeasur","_translations$locale","friendlyUnitOfMeasure","ExtensionProperties","find","extProp","Key","Value","StringValue","request","props","_props$simpleProduct","_props$simpleProduct2","context","disableTranslate","className","classnames","app","config","disableUnitReplace","url","requestUrl","searchParams","get","toLowerCase","DefaultUnitOfMeasure","React","async","getMiniCartData","ctx","cartState","miniCartData","cart","CartLines","length","hasInvoiceLine","getActiveCartProductsAction","ActiveCartProductsInput","then","products","catch","error","telemetry","exception","Error","getAvailabilitiesForCartLineItems","ProductAvailabilitiesForCartLineItems","requestContext","apiSettings","availableQuantity","productAvailabilites","getDeliveryOptionsForCartLineItems","ProductDeliveryOptionsForCartLineItems","deliveryOptions","CartIcon","constructor","super","retailMultiplePickUpOptionEnabled","getSortedCartLines","cartlines","sortOrder","lines","sort","item1","item2","_item2$LineNumber","_item1$LineNumber","LineNumber","_item1$LineNumber2","_item2$LineNumber2","_getImageSettings","imageSettings","viewports","xs","q","w","h","sm","lg","lazyload","_removeItemFromCartHandler","cartlineToRemove","this","data","result","input","cartLineIds","LineId","toString","removeCartLines","warning","debug","state","isCartValid","isQuantityLimitsFeatureEnabled","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","payload","getPayloadObject","TelemetryEvent","CheckOut","TelemetryConstant","Checkout","checkoutBySignInAttributes","getTelemetryAttributes","contentAction","etext","GuestCheckout","checkoutByGuestAttributes","ViewShoppingBag","viewShoppingBagAttributes","_this$props$data$orgU","actionContext","reaction","_this$props$data$cart","setState","_setQuantityLimitsFeatureFlag","orgUnitLocations","_validateCart","componentDidUpdate","prevProps","shouldComponentUpdate","nextProps","nextState","render","_this$props$context$r","_cart$cart$CartLines","_this$state$miniCartD","_this$state$miniCartD2","_this$props$data$chan","_this$props$data$feat","id","typeName","enableHoverCart","isAnonymousCheckout","user","isAuthenticated","signInUrl","resources","undefined","guestCheckoutUrl","getUrlSync","cartUrl","checkoutURL","_getCheckoutURL","isCartEmpty","shouldShowMiniCart","isProductAddedToCart","addToCartBehavior","AddToCartBehavior","showMiniCart","emailDeliveryModeCode","channel","EmailDeliveryModeCode","cartLines","_getCartLines","validInventoryAcrossCartLines","validateCartLinesInventory","hasError","isValid","some","cartline","includeFlyout","status","totalItemsInCart","goToCartButtonText","goToCartButtonTitle","replace","flyoutTitle","flyoutTooltip","tag","UncontrolledTooltip","placement","hideArrow","trigger","displayMode","target","shouldShowCloseButton","cartPageUrl","hideAriaHidden","price","TotalAmount","priceString","totalPriceFormatString","cultureFormatter","formatCurrency","channelDeliveryOptionConfig","featureState","feature","Name","IsEnabled","viewProps","_objectSpread","cartIcon","CartIconComponent","cartLabel","cartQtyLabel","FlyoutContainer","CartlinesWrapper","miniCartWrapper","miniCartItemWrapper","checkoutAsSignInUserButton","Button","Object","assign","disabled","href","title","checkoutButtonTitle","checkoutAsGuestButton","guestCheckoutButtonTitle","goToCartButton","checkoutBlockedDueToUnavailableFunds","totalPrice","renderView","_cart$result$cart$Ver","_cart$result","cartVersion","Version","lastValidatedCartVersion","validateCartAsync","ArrayExtensions","hasElements","ValidationResultsPairs","isAbsoluteUrl","urlCheck","returnURL","msdyn365Commerce","isBrowser","window","location","origin","includes","_this$props$data$cata","PickupDeliveryModeCode","FlyoutCartLineItems","cartLinesSortOrder","productDeliveryOptions","outOfStockThreshold","isStockCheckEnabled","enableStockCheck","maxCartlineQuantity","updateMaxQuantityForCartLineItem","maxQuantityForCartLineItem","gridSettings","sizeString","productDimensionTypeSize","colorString","productDimensionTypeColor","configString","productDimensionTypeConfiguration","styleString","productDimensionTypeStyle","quantityDisplayString","quantityDisplayText","salesAgreementPricePrompt","inputQuantityAriaLabel","discountStringText","originalPriceText","currentPriceText","shippingChargesText","shippingText","removeButtonText","removeCartButtonText","outOfStockText","outOfRangeOneText","outOfRangeFormatText","removeItemClickHandler","pickupDeliveryModeCode","catalogs","_featureStatuses$find","_featureStatuses$find2","featureStatuses","_this$props$context","defaultOrderQuantityLimitsFeatureConfig","platform","enableDefaultOrderQuantityLimits","_featureStatuses$find3","customerInformation","customerInfo","IsB2b","_cartConfiguration$Ig","cartConfiguration","IgnoreOrderSettings","__decorate","observer","_renderDeliveryLocation","cartLine","deliverylocation","FulfillmentStoreId","_foundProductDelivery","orgUnitName","_getOrgUnitName","foundProductDeliveryOption","deliveryOption","ProductId","delivery","DeliveryOptions","option","Code","DeliveryMode","Description","_renderStoreLocation","fulfillmentStoreId","foundLocation","orgUnitLocation","OrgUnitNumber","OrgUnitName","_assembleCartlines","reactNodes","map","index","product","foundProductAvailability","_foundProductAvailabi","getProductByProductIdAndWarehouse","WarehouseId","getProductByProductId","productAvailability","_productAvailability$","ProductAvailableQuantity","push","_assembleNode","foundProductDeliveryOptions","_product$Behavior","availableQuantityInStock","AvailableQuantity","_getCartItemAvailableQuantity","maxQuantity","_getCartItemMaxQuantity","maxQuantityByConfig","maxByQuantityLimitsFeature","maxByQuantityLimitsFeatureResult","Behavior","MaximumQuantity","isServiceItem","ItemTypeValue","ReleasedProductType","Service","onRemoveClickHandler","onRemoveClickFunction","payLoad","RemoveCartItem","removeCartItemAttribute","productUrl","getProductUrlSync","MsDyn365","isChannelTypeB2B","_cartline$CatalogId","fullUrl","URL","set","CatalogId","Quantity","CartLineItemComponent","currentQuantity","isOutOfStock","key","isQuantityEditable","primaryImageUrl","PrimaryImageUrl","deliveryLocation","remove","onClick","storeLocation"],"sourceRoot":""}