{"version":3,"file":"static/js/6bfbe7a1fdb52afc06c6.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/components/product-list-component/components/product-list-view-mode.tsx?1dbb","webpack://Msdyn365.Commerce.Online/./src/shared-utils/cookie-utilities.ts?6237","webpack://Msdyn365.Commerce.Online/./src/themes/dlvry-adventureworks/views/cart.view.tsx?c52d","webpack://Msdyn365.Commerce.Online/./lib/cart/module-registration.js?d21f","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/cart.view.tsx?ac8f","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/cart.view.tsx?3909","webpack://Msdyn365.Commerce.Online/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online/external var \"ReactDOM\"?853b"],"sourcesContent":["import React from \"react\";\r\nimport Button from \"reactstrap/lib/Button\";\r\nimport classname from \"classnames\";\r\n\r\nexport enum ProductListViewMode {\r\n cardView = 0,\r\n listView = 1\r\n}\r\n\r\nexport interface IProductListViewModeProps {\r\n className: string;\r\n viewMode: ProductListViewMode | undefined;\r\n cardButtonTxt: string;\r\n listButtonTxt: string;\r\n setListViewMode: (() => void);\r\n setCardViewMode: (() => void);\r\n}\r\n\r\nexport const ProductListViewModeComponent: React.FC = (props: IProductListViewModeProps) => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { ICookieValue, ICookieContext } from '@msdyn365-commerce/core';\r\n\r\nexport const GetCookie = (cookies: ICookieContext, cookieName: string): string | undefined => {\r\n const marketCookie = cookies.get(cookieName) as ICookieValue | undefined;\r\n\r\n if (marketCookie && marketCookie.value && marketCookie.value.length > 0) {\r\n return marketCookie.value;\r\n } else {\r\n return undefined;\r\n }\r\n};\r\n\r\nexport const SetCookie = (cookies: ICookieContext, value: string, cookieName: string, exp: number): void => {\r\n if (value) {\r\n cookies.set(cookieName, value, { path: '/', maxAge: exp });\r\n }\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport {\r\n ICartLineItemViewProps,\r\n ICartlinesViewProps,\r\n ICartResources,\r\n IOrderSummaryErrors\r\n} from '@msdyn365-commerce-modules/cart';\r\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\r\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes, ILabeledDropdownOption,\r\n INodeProps,\r\n ITelemetryContent, LabeledDropdown,\r\n Node,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { AsyncResult, ChannelInventoryConfiguration } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\nimport {\r\n ProductListViewMode,\r\n ProductListViewModeComponent\r\n} from '../../../components/product-list-component/components/product-list-view-mode';\r\nimport {\r\n cartLines2ProductList,\r\n ProductListComponent,\r\n ProductListProduct\r\n} from '../../../components/product-list-component/product-list-component';\r\nimport { GetCookie, SetCookie } from '../../../shared-utils/cookie-utilities';\r\nimport { ICartProps as ICartExtensionProps } from '../definition-extensions/cart.ext.props.autogenerated';\r\nimport { ILabeledDropdownOnChangeNotification } from '@msdyn365-commerce-modules/utilities';\r\nimport { ISortByViewProps } from '../../../modules/dlvry-search-result-container/dlvry-search-result-container';\r\nimport { useState } from 'react';\r\nimport { ICartViewProps } from '../../../modules/dlvry-cart/dlvry-cart';\r\nimport { hasAgreementProducts } from '../../../shared-utils/agreement-product-utils';\r\n\r\nexport interface ICartExtData {\r\n channelInventoryConfiguration: AsyncResult;\r\n}\r\n\r\nconst cartViewModeCookieName = 'i_365_cartViewMode_cookie';\r\nconst cartSortOptionCookieName = 'i_365_cartSortOptione_cookie';\r\n\r\nconst getViewModeFromCookie = (props: ICartViewProps): ProductListViewMode => {\r\n const viewMode = GetCookie(props.context.request.cookies, cartViewModeCookieName);\r\n return viewMode ? +viewMode : ProductListViewMode.listView;\r\n};\r\nconst getSortOptionFromCookie = (props: ICartViewProps): string => {\r\n const SortOption = GetCookie(props.context.request.cookies, cartSortOptionCookieName);\r\n return SortOption ? SortOption : 'sortByOptionNameAsc';\r\n};\r\n\r\n/**\r\n * Toggle Bopis Function.\r\n * @param cartLine -CartLine.\r\n * @param isBopisSelected -Boolean.\r\n * @returns Toggle Bopis.\r\n */\r\nconst toggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\r\n cartLine.pickUpInStore?.callbacks.toggleBopis(!isBopisSelected);\r\n};\r\n\r\n/**\r\n * Change Store Function.\r\n * @param cartLine -CartLine.\r\n * @returns Toggle Bopis.\r\n */\r\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\r\n cartLine.pickUpInStore?.callbacks.toggleBopis(true);\r\n};\r\n\r\n/**\r\n * Render Bopis block.\r\n * @param cartLine - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param storeSelector - Store selector element.\r\n * @param telemetryContent - The telemetry object.\r\n * @param emailDeliveryModeCode - The email delivery mode code.\r\n * @returns JSX Element.\r\n */\r\nconst renderBopisBlock = (\r\n cartLine: ICartlinesViewProps,\r\n resources: ICartResources,\r\n storeSelector: React.ReactNode | undefined,\r\n telemetryContent?: ITelemetryContent,\r\n emailDeliveryModeCode?: string\r\n): JSX.Element | null => {\r\n // If it is electronic item cart line, then return null for BOPISBlock.\r\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\r\n return null;\r\n }\r\n\r\n const {\r\n shipInsteadDisplayText,\r\n shipToAddressDisplayText,\r\n pickItUpDisplayText,\r\n pickUpAtStoreWithLocationText,\r\n changeStoreDisplayText\r\n } = resources;\r\n\r\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n \r\n
\r\n {isBopisSelected ? (\r\n {pickUpAtStoreWithLocationText}\r\n ) : (\r\n {shipToAddressDisplayText}\r\n )}\r\n
\r\n {isBopisSelected && (\r\n
\r\n {cartLine.pickUpInStore.orgUnitName}\r\n \r\n
\r\n )}\r\n \r\n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\r\n \r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Render Bopis block.\r\n * @param cartLine - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param storeSelector - Store selector element.\r\n * @param telemetryContent - The telemetry object.\r\n * @param emailDeliveryModeCode - The email delivery mode code.\r\n * @returns JSX Element.\r\n */\r\nconst renderGroupBopisBlock = (\r\n cartLine: ICartlinesViewProps,\r\n resources: ICartResources,\r\n storeSelector: React.ReactNode | undefined,\r\n telemetryContent?: ITelemetryContent,\r\n emailDeliveryModeCode?: string\r\n): JSX.Element | null => {\r\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\r\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\r\n return null;\r\n }\r\n\r\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\r\n\r\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n <>\r\n {isBopisSelected ? (\r\n \r\n ) : null}\r\n \r\n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Cart Lines.\r\n * @param cartLine - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param storeSelector - Store selector element.\r\n * @param telemetryContent - The telemetry object.\r\n * @param isMultiplePickUp - FLag to check if there multiple pickups.\r\n * @param emailDeliveryModeCode - The email delivery mode code.\r\n * @returns JSX Element.\r\n */\r\nconst renderCartLine = (\r\n cartLine: ICartlinesViewProps,\r\n resources: ICartResources,\r\n storeSelector: React.ReactNode | undefined,\r\n telemetryContent?: ITelemetryContent,\r\n isMultiplePickUp?: boolean,\r\n emailDeliveryModeCode?: string\r\n): JSX.Element => {\r\n if (cartLine.error === resources.outOfStockErrorMessage) {\r\n return (\r\n \r\n {cartLine.addToWishlist}\r\n {cartLine.remove}\r\n \r\n );\r\n }\r\n\r\n if (isMultiplePickUp) {\r\n return (\r\n \r\n {renderGroupBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\r\n {cartLine.addToOrderTemplate}\r\n {cartLine.addToWishlist}\r\n {cartLine.remove}\r\n \r\n );\r\n }\r\n\r\n if (cartLine.addToOrderTemplate) {\r\n return (\r\n \r\n {cartLine.addToOrderTemplate}\r\n {cartLine.addToWishlist}\r\n {cartLine.remove}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {cartLine.addToWishlist}\r\n {cartLine.remove}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Cart Lines.\r\n * @param cartLines - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param storeSelector - Store selector element.\r\n * @param telemetryContent - The telemetry object.\r\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\r\n * @param emailDeliveryModeCode - The email delivery mode code.\r\n * @returns JSX Element.\r\n */\r\nconst renderCartlinesInternal = (\r\n cartLines: ICartlinesViewProps[],\r\n resources: ICartResources,\r\n storeSelector: React.ReactNode | undefined,\r\n telemetryContent?: ITelemetryContent,\r\n isMultiplePickUp?: boolean,\r\n emailDeliveryModeCode?: string\r\n): JSX.Element[] | JSX.Element => {\r\n return cartLines.map((cartLine, index) => {\r\n const itemIndex = index;\r\n return (\r\n
\r\n {cartLine.cartline}\r\n \r\n {isMultiplePickUp\r\n ? null\r\n : renderBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\r\n {renderCartLine(cartLine, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\r\n \r\n
\r\n );\r\n });\r\n};\r\n\r\n/**\r\n * Render Cart Lines group title.\r\n * @param cartLine - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param count - Count of products.\r\n * @returns JSX Element.\r\n */\r\n// Unused per Task 2890\r\n// @ts-ignore\r\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\r\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\r\n const { itemLabel, itemsLabel } = resources;\r\n const itemCountOne: number = 1;\r\n const suffix = count > itemCountOne ? itemsLabel : itemLabel;\r\n const countTitle = `(${count} ${suffix})`;\r\n return (\r\n <>\r\n \r\n {isBopisSelected ? (\r\n

\r\n {cartLine.pickUpInStore?.deliveryOption}\r\n {', '}\r\n {cartLine.pickUpInStore?.orgUnitName}\r\n

\r\n ) : null}\r\n

{countTitle}

\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Cart Lines group title.\r\n * @param cartLine - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param count - Count of products.\r\n * @param emailDeliveryModeCode - The email delivery mode code.\r\n * @returns JSX Element.\r\n */\r\nconst renderCartLinesGroupHeader = (\r\n cartLine: ICartlinesViewProps,\r\n resources: ICartResources,\r\n count: number,\r\n emailDeliveryModeCode?: string\r\n) => {\r\n return null;\r\n // Removed per Task 2890\r\n\r\n /* const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\r\n const { pickUpText, shippingText, emailshippingText } = resources;\r\n let groupTitle: string;\r\n\r\n groupTitle = isBopisSelected ? pickUpText : shippingText;\r\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\r\n\r\n return (\r\n <>\r\n
\r\n

\r\n

{groupTitle}

\r\n {renderCartLinesGroupTitle(cartLine, resources, count)}\r\n
\r\n \r\n ); */\r\n};\r\n\r\n/**\r\n * Returns count of products.\r\n * @param cartLine - The cart line view props.\r\n * @returns Number of products.\r\n */\r\nconst countItems = (cartLine: ICartlinesViewProps[]): number => {\r\n let countItem = 0;\r\n const defaultItemCount = 0;\r\n countItem = cartLine.reduce((count, item) => {\r\n return count + (item.data?.cartline.Quantity ?? defaultItemCount);\r\n }, defaultItemCount);\r\n return countItem;\r\n};\r\n\r\n/**\r\n * Render error block.\r\n * @param errorData - Error component.\r\n * @returns JSX Element.\r\n */\r\nconst renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\r\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\r\n return null;\r\n }\r\n return (\r\n \r\n {errorData.header}\r\n {errorData.errors}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render invoice summary.\r\n * @param invoiceSummaryLines - Invoice summary component.\r\n * @param orderSummaryItems - Order summary component.\r\n * @param props - The module props.\r\n * @returns JSX Element.\r\n */\r\nconst renderInvoiceSummarylines = (\r\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\r\n orderSummaryItems: INodeProps,\r\n props: ICartViewProps\r\n): JSX.Element | null => {\r\n if (!invoiceSummaryLines) {\r\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {invoiceSummaryLines.invoices}\r\n {invoiceSummaryLines.giftCard}\r\n {invoiceSummaryLines.loyalty}\r\n {invoiceSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render order summary.\r\n * @param orderSummaryLines - Order summary component.\r\n * @param orderSummaryItems - Order summary items component.\r\n * @param props - The module props.\r\n * @returns JSX Element.\r\n */\r\nconst renderOrderSummarylines = (\r\n orderSummaryLines: IOrderSummaryLines | undefined,\r\n orderSummaryItems: INodeProps,\r\n props: ICartViewProps\r\n): JSX.Element | null => {\r\n if (!orderSummaryLines) {\r\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {orderSummaryLines.subtotal}\r\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\r\n {orderSummaryLines.shipping}\r\n {orderSummaryLines.otherCharge}\r\n {orderSummaryLines.tax}\r\n {orderSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render error block.\r\n * @param promotions - The module view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\r\n return (\r\n <>\r\n \r\n {promotions.promotionMessage}\r\n {promotions.promotionSeeAllLink}\r\n {promotions.promotionDialog}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render order summary checkout.\r\n * @param props - The module view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderOrderSummaryCheckout = (props: ICartViewProps & ICartExtensionProps): JSX.Element | undefined => {\r\n return (\r\n \r\n {props.cart?.hasInvoiceLine || !props.config.displayPromoCodeBlock ? null : props.promoCode}\r\n \r\n {props.checkoutAsSignInUserButton}\r\n {props.checkoutAsGuestButton}\r\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\r\n {props.expressCheckoutButton}\r\n ) : null}\r\n \r\n {props.createTemplateFromCartButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render order summary checkout button.\r\n * @param props - The module view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderOrderSummaryCheckoutButton = (props: ICartViewProps): JSX.Element | undefined => {\r\n return (\r\n \r\n {props.checkoutAsSignInUserButton}\r\n {props.checkoutAsGuestButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render cart view.\r\n * @param props - The module view props.\r\n * @returns JSX Element.\r\n */\r\nconst CartView: React.FC> = (props: ICartViewProps & ICartExtensionProps) => {\r\n const {\r\n context,\r\n data: { organizationInformation }\r\n } = props;\r\n const sortByDropdownOptions: ILabeledDropdownOption[] = [\r\n { key: 'sortByOptionNameAsc', value: props.resources.sortByOptionNameAsc },\r\n { key: 'sortByOptionNameDesc', value: props.resources.sortByOptionNameDesc },\r\n { key: 'sortByOptionPriceAsc', value: props.resources.sortByOptionPriceAsc },\r\n { key: 'sortByOptionPriceDesc', value: props.resources.sortByOptionPriceDesc },\r\n { key: 'sortByOptionLineAmountAsc', value: props.resources.sortByOptionLineAmountAsc },\r\n { key: 'sortByOptionLineAmountDesc', value: props.resources.sortByOptionLineAmountDesc }\r\n ];\r\n const [viewMode, setViewMode] = React.useState(getViewModeFromCookie(props));\r\n const [sortedBy, setSortedBy] = useState(getSortOptionFromCookie(props));\r\n const totalItemCountOne: number = 1;\r\n const updatedTitle = (\r\n

\r\n {props.resources.cartTitle}\r\n \r\n {` (${Number(props.cart?.totalItemsInCart)} ${props.cart?.totalItemsInCart !== totalItemCountOne ? 'items' : 'item'})`}\r\n \r\n

\r\n );\r\n\r\n const _onProductRemove = async (product: ProductListProduct) => {\r\n const line = props.cartlines?.find(cartLine => cartLine?.data?.product?.RecordId === product.RecordId);\r\n\r\n if (!line || !line.data?.cartline) {\r\n return;\r\n }\r\n\r\n props.removeItemClickHandler(line.data.cartline);\r\n };\r\n\r\n /**\r\n * Render Cart Lines.\r\n * @param props - The cart line props.\r\n * @param cartLines - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @param storeSelector - Store selector element.\r\n * @param waitingComponent - Waiting component element.\r\n * @param cartLoadingStatus - Cart loading status string.\r\n * @param isCartDataResult - Flag to check if there is cart data.\r\n * @param telemetryContent - The telemetry object.\r\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\r\n * @param emailDeliveryModeCode - The email delivery mode code.\r\n * @returns JSX Element.\r\n */\r\n const renderCartlines = (\r\n props: ICartViewProps & ICartExtensionProps,\r\n cartLines: ICartlinesViewProps[] | undefined,\r\n resources: ICartResources,\r\n storeSelector: React.ReactNode | undefined,\r\n waitingComponent: React.ReactNode,\r\n cartLoadingStatus: string,\r\n isCartDataResult: boolean,\r\n telemetryContent?: ITelemetryContent,\r\n isMultiplePickUp?: boolean,\r\n emailDeliveryModeCode?: string\r\n ): JSX.Element[] | JSX.Element => {\r\n if (cartLoadingStatus) {\r\n return <>{cartLoadingStatus};\r\n }\r\n\r\n const actionsAvailable = {\r\n removeAction: true,\r\n addToWishlistAction: true\r\n };\r\n\r\n // Props.CartlinesWrapper is only required on cart lines and when multiple pickup mode is disabled. This is also required to handle the empty cart styling.\r\n // Else, empty cart multiple pickup mode is disabled falls under the other cart line wrapper which is creating issue with Empty cart scenario.\r\n if (cartLines && viewMode == ProductListViewMode.cardView) {\r\n return props.multiplePickUpEnabled ? (\r\n renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)\r\n ) : (\r\n \r\n {renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\r\n \r\n );\r\n } else if (cartLines && viewMode == ProductListViewMode.listView) {\r\n props.cartlines?.sort((a, b) => {\r\n if (sortedBy === 'sortByOptionNameAsc' && a.data?.product?.Name && b.data?.product?.Name) {\r\n return a.data?.product?.Name.localeCompare(b.data.product.Name);\r\n } else if (sortedBy === 'sortByOptionNameDesc' && a.data?.product?.Name && b.data?.product?.Name) {\r\n return b.data?.product?.Name.localeCompare(a.data.product.Name);\r\n } else if (sortedBy === 'sortByOptionPriceAsc' && a.data?.product?.Price && b.data?.product?.Price) {\r\n return a.data?.product?.Price - b.data.product.Price;\r\n } else if (sortedBy === 'sortByOptionPriceDesc' && a.data?.product?.Name && b.data?.product?.Name) {\r\n return b.data?.product?.Price - a.data.product.Price;\r\n } else if (sortedBy === 'sortByOptionLineAmountAsc' && a.data?.cartline.NetAmountWithoutTax && b.data?.cartline.NetAmountWithoutTax) {\r\n return a.data.cartline.NetAmountWithoutTax - b.data.cartline.NetAmountWithoutTax;\r\n } else if (sortedBy === 'sortByOptionLineAmountDesc' && a.data?.cartline.NetAmountWithoutTax && b.data?.cartline.NetAmountWithoutTax) {\r\n return b.data.cartline.NetAmountWithoutTax - a.data.cartline.NetAmountWithoutTax;\r\n } else {\r\n return -0;\r\n }\r\n });\r\n return (\r\n \r\n );\r\n }\r\n\r\n return isCartDataResult ? (\r\n
\r\n
{props.slots.emptyCart}
\r\n
\r\n ) : (\r\n <>{waitingComponent}\r\n );\r\n };\r\n\r\n /**\r\n * Render Cart Lines group.\r\n * @param props - The cart line view props.\r\n * @param resources - Module resource strings.\r\n * @returns JSX Element.\r\n */\r\n const renderCartLinesGroup = (props: ICartViewProps & ICartExtensionProps, resources: ICartResources): JSX.Element | undefined => {\r\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\r\n return (\r\n
\r\n {props.cartLinesGroup.map(cartlines => {\r\n return (\r\n
\r\n {renderCartLinesGroupHeader(\r\n cartlines[0],\r\n resources,\r\n countItems(cartlines),\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\r\n )}\r\n {renderCartlines(\r\n props,\r\n cartlines,\r\n props.resources,\r\n props.storeSelector,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult,\r\n props.telemetryContent,\r\n props.multiplePickUpEnabled,\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\r\n )}\r\n
\r\n );\r\n })}\r\n
\r\n );\r\n }\r\n return props.cartDataResult ? (\r\n
\r\n
{props.slots.emptyCart}
\r\n
\r\n ) : (\r\n <>{props.waitingComponent}\r\n );\r\n };\r\n\r\n const setCardViewMode = () => {\r\n setViewMode(ProductListViewMode.cardView);\r\n updateCurrentViewMode(ProductListViewMode.cardView);\r\n };\r\n\r\n const setListViewMode = () => {\r\n setViewMode(ProductListViewMode.listView);\r\n updateCurrentViewMode(ProductListViewMode.listView);\r\n };\r\n\r\n const updateCurrentViewMode = (_viewMode: ProductListViewMode) => {\r\n const cookieAge: number = 31536000000;\r\n const newCookieValue: string = String(_viewMode);\r\n SetCookie(props.context.request.cookies, newCookieValue, cartViewModeCookieName, cookieAge);\r\n };\r\n const updateSortOptionMode = (_SortOption: any) => {\r\n const cookieAge: number = 31536000000;\r\n const newCookieValue: string = String(_SortOption);\r\n SetCookie(props.context.request.cookies, newCookieValue,cartSortOptionCookieName , cookieAge);\r\n };\r\n\r\n const viewModeProps = {\r\n viewMode: viewMode,\r\n cardButtonTxt: 'Varekort',\r\n listButtonTxt: 'Liste',\r\n className: 'ms-search-result-container__category-nav-section__view-modes',\r\n setCardViewMode: setCardViewMode,\r\n setListViewMode: setListViewMode\r\n };\r\n\r\n const _updateSortByDropdown = (notification: ILabeledDropdownOnChangeNotification): void => {\r\n setSortedBy(notification.selectedOption.key);\r\n updateSortOptionMode(notification.selectedOption.key);\r\n };\r\n const _getSortingDropDown = (): ISortByViewProps => {\r\n const { resources } = props;\r\n const activeDropdown = sortByDropdownOptions.find((sortOption)=>{\r\n return sortOption.key===sortedBy\r\n });\r\n const dropdown = (\r\n \r\n );\r\n return {\r\n SortingContainer: { className: 'ms-search-result-container__Sort-by-category' },\r\n sortByDropDown: dropdown\r\n };\r\n };\r\n const renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\r\n const { SortingContainer, sortByDropDown } = props;\r\n if (sortByDropDown && !isRecoSearchPage) {\r\n return {sortByDropDown};\r\n }\r\n return null;\r\n };\r\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\r\n\r\n return (\r\n
\r\n {updatedTitle}\r\n
{props.orderSummaryLineitems?.orderTotal}
\r\n {renderOrderSummaryCheckoutButton(props)}\r\n {!props.cart?.hasInvoiceLine && props.promotionOptions && renderPromotions(props.promotionOptions)}\r\n
\r\n
\r\n {!isRecoSearchPage && viewMode === ProductListViewMode.listView && renderSort(_getSortingDropDown())}\r\n
\r\n \r\n {props.multiplePickUpEnabled && viewMode != ProductListViewMode.listView\r\n ? renderCartLinesGroup(props, props.resources)\r\n : renderCartlines(\r\n props,\r\n props.cartlines,\r\n props.resources,\r\n props.storeSelector,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult\r\n )}\r\n
\r\n {props.orderSummaryHeading && (\r\n \r\n \r\n {props.orderSummaryHeading}\r\n {props.cart?.hasInvoiceLine\r\n ? renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\r\n : renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\r\n {renderErrorBlock(props.OrderSummaryErrors)}\r\n \r\n {renderOrderSummaryCheckout(props)}\r\n \r\n )}\r\n {props.storeSelector}\r\n
\r\n );\r\n};\r\n\r\nexport default CartView;\r\n","const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['cart'] = {\n c: () => require('@msdyn365-commerce-modules/cart/dist/lib/modules/cart/cart'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'cartConfiguration', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-cart-configuration', runOn: 0},{name:'cartLinesPickUpOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-pickup-options-for-cartlines', 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:'customerBalances', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance', 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-cartlines', 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:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 0},{name:'productAvailabilites', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines', runOn: 0},{name:'products', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1},{name:'wishlistItems', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist', runOn: 1},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'cart',\n p: 'cart',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/cart/dist/lib/modules/cart'\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-availabilities-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-cart-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-cart-configuration');\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-customer-balance';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines');\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-items-in-wishlist';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-pickup-options-for-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-pickup-options-for-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart');\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-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\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__|themes|dlvry-adventureworks|views|cart'] = {\n c: () => require('partner/themes/dlvry-adventureworks/views/cart.view.tsx'),\n cn: '__local__-__local__-cart'\n };\nviewDictionary['@msdyn365-commerce-modules|cart|modules|cart|cart'] = {\n c: () => require('@msdyn365-commerce-modules/cart/dist/lib/modules/cart/cart.view.js'),\n cn: '@msdyn365-commerce-modules-cart-cart'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|cart'] = {\n c: () => require('@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/cart.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-cart'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|cart'] = {\n c: () => require('@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/cart.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-cart'\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 MsDyn365 from '@msdyn365-commerce/core';\nimport { ICartlinesViewProps, ICartResources, ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart';\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/dist/types/modules/cart/components/cart-line-items-promotion';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst CartView: React.FC = (props: ICartViewProps) => (\n
\n {props.title}\n {props.promotionOptions && _renderPromotions(props.promotionOptions)}\n {props.cart?.hasInvoiceLine || props.multiplePickUpEnabled ? (\n _renderCartLinesGroup(props, props.resources)\n ) : (\n \n {_renderCartlines(\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n \n )}\n {props.orderSummaryHeading && (\n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {_renderErrorBlock(props.OrderSummaryErrors)}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n {props.backToShoppingButton}\n {props.createTemplateFromCartButton}\n \n )}\n {props.storeSelector}\n
\n);\n\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n <>\n \n {promotions.promotionMessage}\n {promotions.promotionSeeAllLink}\n {promotions.promotionDialog}\n \n \n );\n};\n\nconst _renderCartlines = (\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n backToShoppingButton: React.ReactNode,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n cartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n mulitplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n const { emptyCartText } = resources;\n\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n if (cartLines) {\n return cartLines.map((cartLine, index) => {\n return (\n
\n {cartLine.cartline}\n {mulitplePickUp ? null : _renderBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {mulitplePickUp ? (\n \n {_renderGroupBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n ) : cartLine.addToOrderTemplate ? (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n ) : (\n <>\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n )}\n
\n );\n });\n }\n return cartDataResult ? (\n
\n

{emptyCartText}

\n {backToShoppingButton}\n
\n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * On Toggle function.\n * @param cartLine -Cartline.\n * @param isBopisSelected -Boolean.\n * @returns Set state of button.\n */\nconst onToggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * On change store function.\n * @param cartLine -CartLine items prop.\n * @returns Set state of button.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(true);\n};\n\nconst _renderBOPISBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const {\n shipInsteadDisplayText,\n shipToAddressDisplayText,\n pickItUpDisplayText,\n pickUpAtStoreWithLocationText,\n changeStoreDisplayText\n } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n
\n {isBopisSelected ? (\n {pickUpAtStoreWithLocationText}\n ) : (\n {shipToAddressDisplayText}\n )}\n
\n {isBopisSelected && (\n
\n {cartLine.pickUpInStore.orgUnitName}\n \n
\n )}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n
\n );\n};\n\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || errorData.errors.length === 0) {\n return null;\n }\n return (\n \n {errorData.header}\n {errorData.errors}\n \n );\n};\n\nconst _renderOrderSummarylines = (\n orderSummaryLines: IOrderSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!orderSummaryLines) {\n return null;\n }\n return (\n \n {props.promoCode}\n {orderSummaryLines.subtotal}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\nconst _renderInvoiceSummarylines = (\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!invoiceSummaryLines) {\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {invoiceSummaryLines.invoices}\n {invoiceSummaryLines.giftCard}\n {invoiceSummaryLines.loyalty}\n {invoiceSummaryLines.orderTotal}\n \n );\n};\n\nconst _renderCartLinesGroup = (props: ICartViewProps, resources: ICartResources): JSX.Element | undefined => {\n if (props.cartLinesGroup && props.cartLinesGroup.length > 0) {\n return (\n
\n {props.cartLinesGroup.map(cartlines => {\n return (\n
\n {_renderCartLinesGroupHeader(\n cartlines[0],\n props.storeSelector,\n resources,\n _countItems(cartlines),\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {_renderCartlines(\n cartlines,\n props.resources,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n
\n );\n })}\n
\n );\n }\n return props.cartDataResult ? (\n
\n
\n

{props.resources.emptyCartText}

\n {props.backToShoppingButton}\n
\n
\n ) : (\n <>{props.waitingComponent}\n );\n};\nconst _renderCartLinesGroupHeader = (\n cartLine: ICartlinesViewProps,\n storeSelector: React.ReactNode | undefined,\n resources: ICartResources,\n count: number,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { pickUpText, shippingText, emailshippingText, payInvoicesDisplayText } = resources;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n if (cartLine.data && cartLine.data.cartline.IsInvoiceLine) {\n groupTitle = payInvoicesDisplayText;\n } else if (!StringExtensions.isNullOrEmpty(emailDeliveryModeCode)) {\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\n }\n\n return (\n <>\n
\n

\n

{groupTitle}

\n {_renderCartLinesGroupTitle(cartLine, resources, count)}\n
\n \n );\n};\n\nconst _renderGroupBOPISBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? (\n \n ) : null}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n \n );\n};\n\nconst _countItems = (cartLine: ICartlinesViewProps[]): number => {\n let countItem = 0;\n countItem = cartLine.reduce((count, item) => {\n return count + (item.data?.cartline.Quantity || 0);\n }, 0);\n return countItem;\n};\n\nconst _renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const suffix = count > 1 ? itemsLabel : itemLabel;\n return (\n <>\n \n {isBopisSelected ? (\n

\n {cartLine.pickUpInStore?.deliveryOption}\n {', '}\n {cartLine.pickUpInStore?.orgUnitName}\n

\n ) : null}\n

\n ({count}\n {` `}\n {suffix})\n

\n
\n \n );\n};\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ICartLineItemViewProps,\n ICartlinesViewProps,\n ICartResources,\n ICartViewProps,\n IOrderSummaryErrors\n} from '@msdyn365-commerce-modules/cart';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartProps as ICartExtensionProps } from '../definition-extensions/cart.ext.props.autogenerated';\n\n/**\n * Toggle Bopis Function.\n * @param cartLine -CartLine.\n * @param isBopisSelected -Boolean.\n * @returns Toggle Bopis.\n */\nconst toggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * Change Store Function.\n * @param cartLine -CartLine.\n * @returns Toggle Bopis.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(true);\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const {\n shipInsteadDisplayText,\n shipToAddressDisplayText,\n pickItUpDisplayText,\n pickUpAtStoreWithLocationText,\n changeStoreDisplayText\n } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n
\n {isBopisSelected ? (\n {pickUpAtStoreWithLocationText}\n ) : (\n {shipToAddressDisplayText}\n )}\n
\n {isBopisSelected && (\n
\n {cartLine.pickUpInStore.orgUnitName}\n \n
\n )}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n
\n );\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderGroupBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? (\n \n ) : null}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - FLag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLine = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element => {\n if (cartLine.error === resources.outOfStockErrorMessage) {\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (isMultiplePickUp) {\n return (\n \n {renderGroupBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (cartLine.addToOrderTemplate) {\n return (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlinesInternal = (\n cartLines: ICartlinesViewProps[],\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n return cartLines.map((cartLine, index) => {\n const itemIndex = index;\n return (\n
\n {cartLine.cartline}\n \n {isMultiplePickUp\n ? null\n : renderBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {renderCartLine(cartLine, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n
\n );\n });\n};\n\n/**\n * Render Cart Lines.\n * @param props - The cart line props.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param waitingComponent - Waiting component element.\n * @param cartLoadingStatus - Cart loading status string.\n * @param isCartDataResult - Flag to check if there is cart data.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlines = (\n props: ICartViewProps & ICartExtensionProps<{}>,\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n isCartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n\n // Props.CartlinesWrapper is only required on cart lines and when multiple pickup mode is disabled. This is also required to handle the empty cart styling.\n // Else, empty cart multiple pickup mode is disabled falls under the other cart line wrapper which is creating issue with Empty cart scenario.\n if (cartLines) {\n return props.multiplePickUpEnabled ? (\n renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)\n ) : (\n \n {renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n );\n }\n\n return isCartDataResult ? (\n
\n
{props.slots.emptyCart}
\n
\n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const itemCountOne: number = 1;\n const suffix = count > itemCountOne ? itemsLabel : itemLabel;\n const countTitle = `(${count} ${suffix})`;\n return (\n <>\n \n {isBopisSelected ? (\n

\n {cartLine.pickUpInStore?.deliveryOption}\n {', '}\n {cartLine.pickUpInStore?.orgUnitName}\n

\n ) : null}\n

{countTitle}

\n
\n \n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupHeader = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n count: number,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { pickUpText, shippingText, emailshippingText, payInvoicesDisplayText } = resources;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n if (cartLine.data && cartLine.data.cartline.IsInvoiceLine) {\n groupTitle = payInvoicesDisplayText;\n } else if (!StringExtensions.isNullOrEmpty(emailDeliveryModeCode)) {\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\n }\n\n return (\n <>\n
\n

\n

{groupTitle}

\n {renderCartLinesGroupTitle(cartLine, resources, count)}\n
\n \n );\n};\n\n/**\n * Returns count of products.\n * @param cartLine - The cart line view props.\n * @returns Number of products.\n */\nconst countItems = (cartLine: ICartlinesViewProps[]): number => {\n let countItem = 0;\n const defaultItemCount = 0;\n countItem = cartLine.reduce((count, item) => {\n return count + (item.data?.cartline.Quantity ?? defaultItemCount);\n }, defaultItemCount);\n return countItem;\n};\n\n/**\n * Render Cart Lines group.\n * @param props - The cart line view props.\n * @param resources - Module resource strings.\n * @returns JSX Element.\n */\nconst renderCartLinesGroup = (props: ICartViewProps & ICartExtensionProps<{}>, resources: ICartResources): JSX.Element | undefined => {\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\n return (\n
\n {props.cartLinesGroup.map(cartlines => {\n return (\n
\n {renderCartLinesGroupHeader(\n cartlines[0],\n resources,\n countItems(cartlines),\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {renderCartlines(\n props,\n cartlines,\n props.resources,\n props.storeSelector,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n
\n );\n })}\n
\n );\n }\n return props.cartDataResult ? (\n
\n
{props.slots.emptyCart}
\n
\n ) : (\n <>{props.waitingComponent}\n );\n};\n\n/**\n * Render error block.\n * @param errorData - Error component.\n * @returns JSX Element.\n */\nconst renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\n return null;\n }\n return (\n \n {errorData.header}\n {errorData.errors}\n \n );\n};\n\n/**\n * Render invoice summary.\n * @param invoiceSummaryLines - Invoice summary component.\n * @param orderSummaryItems - Order summary component.\n * @param props - The module props.\n * @returns JSX Element.\n */\nconst renderInvoiceSummarylines = (\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\n orderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!invoiceSummaryLines) {\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {invoiceSummaryLines.invoices}\n {invoiceSummaryLines.giftCard}\n {invoiceSummaryLines.loyalty}\n {invoiceSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Render order summary.\n * @param orderSummaryLines - Order summary component.\n * @param orderSummaryItems - Order summary items component.\n * @param props - The module props.\n * @returns JSX Element.\n */\nconst renderOrderSummarylines = (\n orderSummaryLines: IOrderSummaryLines | undefined,\n orderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!orderSummaryLines) {\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {orderSummaryLines.subtotal}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Render error block.\n * @param promotions - The module view props.\n * @returns JSX Element.\n */\nconst renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n <>\n \n {promotions.promotionMessage}\n {promotions.promotionSeeAllLink}\n {promotions.promotionDialog}\n \n \n );\n};\n\n/**\n * Render order summary checkout.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst renderOrderSummaryCheckout = (props: ICartViewProps): JSX.Element | undefined => {\n return (\n \n {props.cart?.hasInvoiceLine ? null : props.promoCode}\n \n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n \n {props.createTemplateFromCartButton}\n \n );\n};\n\n/**\n * Render order summary checkout button.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst renderOrderSummaryCheckoutButton = (props: ICartViewProps): JSX.Element | undefined => {\n return (\n \n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n \n );\n};\n\n/**\n * Render cart view.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst CartView: React.FC> = (props: ICartViewProps & ICartExtensionProps<{}>) => {\n const totalItemCountOne: number = 1;\n const updatedTitle = (\n

\n {props.resources.cartTitle}\n \n {` (${Number(props.cart?.totalItemsInCart)} ${props.cart?.totalItemsInCart !== totalItemCountOne ? 'items' : 'item'})`}\n \n

\n );\n return (\n
\n {props.checkoutBlockedDueToUnavailableFunds}\n {updatedTitle}\n
{props.orderSummaryLineitems?.orderTotal}
\n {renderOrderSummaryCheckoutButton(props)}\n {!props.cart?.hasInvoiceLine && props.promotionOptions && renderPromotions(props.promotionOptions)}\n {props.cart?.hasInvoiceLine || props.multiplePickUpEnabled\n ? renderCartLinesGroup(props, props.resources)\n : renderCartlines(\n props,\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n {props.orderSummaryHeading && (\n \n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {renderErrorBlock(props.OrderSummaryErrors)}\n \n {renderOrderSummaryCheckout(props)}\n \n )}\n {props.storeSelector}\n
\n );\n};\n\nexport default CartView;\n","module.exports = React;","module.exports = ReactDOM;"],"names":["ProductListViewMode","ProductListViewModeComponent","props","React","className","Button","classname","viewMode","cardView","title","cardButtonTxt","role","onClick","setCardViewMode","listView","listButtonTxt","setListViewMode","GetCookie","cookies","cookieName","marketCookie","get","value","length","SetCookie","exp","set","path","maxAge","cartViewModeCookieName","cartSortOptionCookieName","toggleBopisHandler","cartLine","isBopisSelected","_cartLine$pickUpInSto","pickUpInStore","callbacks","toggleBopis","onChangeStoreHandler","_cartLine$pickUpInSto2","renderCartLine","resources","storeSelector","telemetryContent","isMultiplePickUp","emailDeliveryModeCode","error","outOfStockErrorMessage","Node","addToWishlist","remove","renderGroupBopisBlock","_cartLine$data2","data","cartline","DeliveryMode","changeStoreDisplayText","shipInsteadDisplayText","pickItUpDisplayText","payLoad","getPayloadObject","TelemetryConstant","PickupInStore","puckUpinStoreAttribute","getTelemetryAttributes","Object","assign","addToOrderTemplate","renderCartlinesInternal","cartLines","map","index","itemIndex","key","renderBopisBlock","_cartLine$data","shipToAddressDisplayText","pickUpAtStoreWithLocationText","ContainerProps","orgUnitName","_props$cart2","_props$cart3","_props$context$action3","_props$orderSummaryLi","_props$cart4","_props$cart5","context","organizationInformation","sortByDropdownOptions","sortByOptionNameAsc","sortByOptionNameDesc","sortByOptionPriceAsc","sortByOptionPriceDesc","sortByOptionLineAmountAsc","sortByOptionLineAmountDesc","setViewMode","request","getViewModeFromCookie","sortedBy","setSortedBy","useState","getSortOptionFromCookie","updatedTitle","cartTitle","Number","cart","totalItemsInCart","_onProductRemove","async","_props$cartlines","_line$data","line","cartlines","find","_cartLine$data3","product","RecordId","removeItemClickHandler","renderCartlines","waitingComponent","cartLoadingStatus","isCartDataResult","actionsAvailable","removeAction","addToWishlistAction","multiplePickUpEnabled","CartlinesWrapper","_props$cartlines2","sort","a","b","_a$data","_b$data","_a$data3","_b$data2","_a$data4","_b$data4","_a$data6","_b$data5","_a$data7","_b$data7","_a$data8","_b$data8","_a$data2","_b$data3","_a$data5","_b$data6","Name","localeCompare","Price","NetAmountWithoutTax","ProductListComponent","products","cartLines2ProductList","productAvailabilites","result","undefined","simpleProducts","customerInformation","moduleType","typeName","moduleId","id","allowBackNavigation","isPriceMinMaxEnabled","cartViewProps","showAvailability","showAgreementProduct","hasAgreementProducts","onProductRemove","slots","emptyCart","updateCurrentViewMode","_viewMode","newCookieValue","String","viewModeProps","_updateSortByDropdown","notification","selectedOption","_SortOption","updateSortOptionMode","isRecoSearchPage","actionContext","requestContext","query","recommendation","renderModuleAttributes","orderSummaryLineitems","orderTotal","checkoutAsSignInUserButton","checkoutAsGuestButton","renderOrderSummaryCheckoutButton","hasInvoiceLine","promotionOptions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","renderSort","SortingContainer","sortByDropDown","_getSortingDropDown","activeDropdown","sortOption","LabeledDropdown","labelClassname","labelText","sortByDropdownLabel","dropdownId","dropdownClassname","toggleColor","dropdownOptions","onSelectOption","renderCartLinesGroup","cartLinesGroup","ArrayExtensions","hasElements","_props$context$action","_props$context$action2","cartlineId","countItem","reduce","count","item","_item$data$cartline$Q","_item$data","Quantity","countItems","channel","EmailDeliveryModeCode","cartDataResult","orderSummaryHeading","OrderSummaryWrapper","renderInvoiceSummarylines","invoiceSummaryLines","orderSummaryItems","invoices","giftCard","loyalty","telemetry","invoiceSummaryLineitems","OrderSummaryItems","renderOrderSummarylines","orderSummaryLines","subtotal","totalDiscounts","shipping","otherCharge","tax","errorData","OrderSummaryErrors","errors","Wrapper","header","_props$cart","config","displayPromoCodeBlock","promoCode","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","renderOrderSummaryCheckout","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","c","require","$type","da","name","runOn","iNM","ns","n","p","pdp","md","window","__bindings__","_objectSpread","viewDictionary","cn","BaseStoreSelectorStateManager","constructor","listMapViewState","displayList","displayMap","preferredStoreLocalStorageKey","this","isMapModuleLoaded","_readFromToCookie","storeInfo","JSON","parse","preferredStore","_unused","_context","input","storeId","selectedStoreLocationId","storeName","writeToCookie","arguments","StoreId","StoreName","Latitude","Longitude","_writeToCookie","stringify","latitude","longitude","lastInlineShownStoreInfo","_removeCookie","MsDyn365","isBrowser","localStorage","removeItem","setItem","cookieValue","getItem","__decorate","computed","observable","action","MapStoreSelectorStateManager","SERVICE_ENDPOINT","MAP_API_ENDPOINT","searchTerm","BingMapsApiKey","BingMapsEnabled","searchContent","jsonp","crypto","getRandomValues","Uint32Array","ChannelCountryRegionISOCode","trim","encodeURI","geolocationApiUrl","app","requestUrl","Promise","resolve","script","document","createElement","setAttribute","resourceSets","point","coordinates","body","appendChild","_document","StringExtensions","isNullOrEmpty","getElementById","currentWindowAPI","mapAPIReady","isMapApiLoaded","url","lang","market","reject","_document2","_document3","type","defer","src","addEventListener","createStoreSelectorStateInput","GenericInput","getGenericActionDataAction","createObservableDataAction","getGenericAction","inputData","_renderPromotions","_renderCartlines","backToShoppingButton","mulitplePickUp","emptyCartText","toString","_renderBOPISBlock","_renderGroupBOPISBlock","onToggleBopisHandler","_renderErrorBlock","_renderOrderSummarylines","_renderInvoiceSummarylines","_renderCartLinesGroup","_renderCartLinesGroupHeader","_countItems","pickUpText","shippingText","emailshippingText","payInvoicesDisplayText","groupTitle","IsInvoiceLine","toLowerCase","_renderCartLinesGroupTitle","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","itemLabel","itemsLabel","suffix","deliveryOption","renderCartLinesGroupHeader","_cartLine$pickUpInSto6","replace","renderCartLinesGroupTitle","_cartLine$pickUpInSto5","countTitle","_props$cart6","checkoutBlockedDueToUnavailableFunds","module","exports","ReactDOM"],"sourceRoot":""}