{"version":3,"file":"static/js/cd51c4e16ad4dc36f763.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-preview/actions/get-products-in-preview-product-comparison.ts?1623","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-preview/product-comparison-preview.tsx?39f6","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-preview/product-comparison-preview.view.tsx?28cb","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-state/base/product-comparison-item.ts?940e","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-state/base/comparison-item.ts?d1df","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-state/product-comparison-state.ts?6916","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-state/comparison-manager.ts?49d5","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/actions/get-products-in-product-comparison.ts?b12d","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/base/product-specification.tsx?75ed","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/base/remove-from-comparison-button.tsx?1d8c","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/product-comparison.tsx?4f74","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/product-comparison.view.tsx?a0a9"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getCustomer, GetCustomerInput, getSimpleProducts, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { ProductComparisonItem, ProductComparisonState } from '../../product-comparison-state';\n\n/**\n * Represents the data for a single product in the comparison.\n */\nexport interface IProductComparisonProductData {\n itemId: string;\n product: SimpleProduct;\n catalogId: number;\n}\n\n/**\n * Input class for GetProductsInProductComparisonInput data action.\n */\nexport class GetProductsInPreviewProductComparisonInput implements IActionInput {\n public readonly items?: ProductComparisonItem[];\n\n public constructor(items?: ProductComparisonItem[]) {\n this.items = items;\n }\n\n /**\n * Cache key.\n * @returns Cache key.\n */\n public getCacheKey = (): string => 'GetProductsInPreviewProductComparisonInput';\n\n /**\n * Cache object type.\n * @returns Cache object type.\n */\n public getCacheObjectType = (): string => 'GetProductsInPreviewProductComparisonInput';\n\n /**\n * Data cache type.\n * @returns Data cache type.\n */\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Creates input for the data action.\n * @param inputData - Action context info.\n * @returns Action input.\n */\nexport const createGetProductsInPreviewProductComparisonInput = (\n inputData: ICreateActionContext>\n): GetProductsInPreviewProductComparisonInput => {\n return new GetProductsInPreviewProductComparisonInput();\n};\n\n/**\n * Retrieves product data for the items in the comparison.\n * @param input - Action input.\n * @param actionContext - Action context.\n * @returns Products data.\n */\nexport const getProductsInPreviewProductComparisonAction = async (\n input: GetProductsInPreviewProductComparisonInput,\n actionContext: IActionContext\n): Promise => {\n const catalogId = getCatalogId(actionContext.requestContext);\n\n let currentItems = input.items;\n if (!ArrayExtensions.hasElements(currentItems)) {\n const accountInformation = await getCustomer(new GetCustomerInput(actionContext.requestContext.apiSettings), actionContext);\n currentItems = ProductComparisonState.instance(actionContext.requestContext, accountInformation).items;\n }\n\n currentItems = currentItems.filter(item => item.catalogId === catalogId);\n if (!ArrayExtensions.hasElements(currentItems)) {\n return [];\n }\n\n const productInputs = currentItems.map(\n item => new ProductInput(item.productId, actionContext.requestContext.apiSettings, undefined, undefined, undefined, item.catalogId)\n );\n\n const simpleProducts = await getSimpleProducts(productInputs, actionContext);\n if (currentItems.length !== simpleProducts.length) {\n throw new Error('Product comparison preview: Failed to retrieve products info.');\n }\n\n return currentItems.map((item, index) => {\n return {\n itemId: ProductComparisonItem.getItemId(item.productId, item.catalogId),\n product: simpleProducts[index],\n catalogId: item.catalogId\n };\n });\n};\n\n/**\n * Data action to retrieve products info for the items in the comparison.\n */\nexport const getProductsInPreviewProductComparisonDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/product-comparison/product-comparison-preview/get-products-in-preview-product-comparison',\n action: getProductsInPreviewProductComparisonAction as IAction,\n input: createGetProductsInPreviewProductComparisonInput\n});\n\nexport default getProductsInPreviewProductComparisonDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce, { getCatalogId, getUrlSync, IImageSettings, Image, isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n convertProductDimensionTypeToDimensionTypes,\n getFallbackImageUrl,\n getProductUrlSync,\n ObjectExtensions,\n Random,\n StringExtensions,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { RemoveFromComparisonButtonComponent } from '../product-comparison';\nimport { ProductComparisonState } from '../product-comparison-state';\nimport {\n getProductsInPreviewProductComparisonAction,\n GetProductsInPreviewProductComparisonInput,\n IProductComparisonProductData\n} from './actions';\nimport { IProductComparisonPreviewData } from './product-comparison-preview.data';\nimport { IProductComparisonPreviewProps } from './product-comparison-preview.props.autogenerated';\n\n/**\n * Represents product comparison view props for main product info.\n */\nexport interface IProductComparisonPreviewProductMainInfo {\n productData: IProductComparisonProductData;\n productNameLink?: string;\n\n removeFromComparisonButton: React.ReactNode;\n productImage: React.ReactNode;\n productLink: React.ReactNode;\n}\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonPreviewViewProps extends IProductComparisonPreviewProps<{}> {\n moduleProps: IModuleProps;\n collapseButton: INodeProps;\n isMainContentReady: boolean;\n\n hasUserInteractedWithComparison?: boolean;\n isExpanded?: boolean;\n subheaderText?: string;\n productsMainInfo?: IProductComparisonPreviewProductMainInfo[];\n previewGreyPlaceHolders?: React.ReactNode;\n\n productComparisonLink?: string;\n goToComparisonButton?: React.ReactNode;\n clearAllButton?: React.ReactNode;\n\n handleCollapseClick?(): void;\n clearAllProductsFromTheComparison?(): void;\n removeProductFromList?(itemId: string): void;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonPreviewState {\n isExpanded?: boolean;\n productsData?: IProductComparisonProductData[];\n greyPlaceHoldersCount?: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonPreviewFullProps extends IProductComparisonPreviewProps {}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonPreview extends React.PureComponent {\n public static readonly className = 'ms-product-comparison-preview';\n\n public static readonly containerClassName = `${ProductComparisonPreview.className}__container`;\n\n public static readonly mainContainerClassName = `${ProductComparisonPreview.containerClassName}__main-container`;\n\n public static readonly headerClassName = `${ProductComparisonPreview.mainContainerClassName}__header`;\n\n public static readonly headerLabelClassName = `${ProductComparisonPreview.headerClassName}__label`;\n\n public static readonly tableClassName = `${ProductComparisonPreview.mainContainerClassName}__table`;\n\n public static readonly tableRowClassName = `${ProductComparisonPreview.tableClassName}__product-row`;\n\n public static readonly footerClassName = `${ProductComparisonPreview.mainContainerClassName}__footer`;\n\n public static readonly collapseButtonClassName = `${ProductComparisonPreview.headerClassName}__collapse`;\n\n public static _displayedInstanceId?: string;\n\n private readonly _instanceId: string;\n\n private _hasUserInteractedWithComparison: boolean;\n\n public constructor(props: IProductComparisonPreviewFullProps) {\n super(props);\n\n this.state = {};\n\n this._instanceId = `${ProductComparisonPreview.className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n ProductComparisonPreview._displayedInstanceId = this._instanceId;\n\n this._hasUserInteractedWithComparison = false;\n }\n\n public componentDidMount(): void {\n if (this._instanceId !== ProductComparisonPreview._displayedInstanceId) {\n return;\n }\n\n this._loadProducts();\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).listModifiedEvent.subscribe(\n {\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this._hasUserInteractedWithComparison = true;\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- Initialize data downloading.\n this._loadProducts();\n }\n }\n );\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode {\n if (this._instanceId !== ProductComparisonPreview._displayedInstanceId) {\n return null;\n }\n\n const viewProps: IProductComparisonPreviewViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: ProductComparisonPreview.className,\n id: this._instanceId\n },\n collapseButton: this._renderCollapseButton(),\n isMainContentReady: false,\n hasUserInteractedWithComparison: this._hasUserInteractedWithComparison\n };\n\n const productData = this._getProdutComparisonDataByCatalogId(this.state.productsData ?? this.props.data.productsData?.result);\n\n if (!ArrayExtensions.hasElements(productData)) {\n return this.props.renderView(viewProps);\n }\n\n viewProps.isMainContentReady = true;\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit)) {\n viewProps.subheaderText = this.props.resources.productComparisonPreviewHeaderTextWithLimit\n .replace('{0}', productData.length.toString())\n .replace('{1}', productsLimit.toString());\n }\n\n viewProps.isExpanded = this.state.isExpanded;\n viewProps.handleCollapseClick = this._handleCollapseClick;\n viewProps.productsMainInfo = this._getProductsMainInfo(productData);\n viewProps.previewGreyPlaceHolders = this._renderGreyPlaceHolders(productData);\n viewProps.productComparisonLink = getUrlSync('product-comparison', this.props.context.actionContext);\n viewProps.clearAllProductsFromTheComparison = this._clearAllProductsFromTheComparison;\n viewProps.removeProductFromList = this._removeProductFromList;\n viewProps.goToComparisonButton = this._renderGoToComparisonButton(viewProps.productComparisonLink);\n viewProps.clearAllButton = this._renderClearAllButton();\n\n return this.props.renderView(viewProps);\n }\n private _getProdutComparisonDataByCatalogId(productData: IProductComparisonProductData[] | undefined): IProductComparisonProductData[] {\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n const productByCatalogId = productData?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n private async _loadProducts(): Promise {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const input = new GetProductsInPreviewProductComparisonInput(items);\n const productData = await getProductsInPreviewProductComparisonAction(input, this.props.context.actionContext);\n const productDataByCatalogId = this._getProdutComparisonDataByCatalogId(productData);\n this.setState({ productsData: productDataByCatalogId });\n this._getGreyPlaceHoldersCount(productDataByCatalogId);\n }\n\n private _getGreyPlaceHoldersCount(productData: IProductComparisonProductData[]): number | undefined {\n if (productData && ArrayExtensions.hasElements(productData)) {\n const limit = this._getProductsLimit();\n if (limit && this.props.context.app.config.displayGreyPlaceHolders) {\n const placeHolder = limit - productData.length;\n this.setState({ greyPlaceHoldersCount: placeHolder });\n return placeHolder;\n }\n }\n return;\n }\n\n private _getProductsMainInfo(products: IProductComparisonProductData[]): IProductComparisonPreviewProductMainInfo[] {\n const productImageContainerClassName = `${ProductComparisonPreview.tableRowClassName}__product-image-container`;\n const productImageClassName = `${productImageContainerClassName}__product-image`;\n const productNameClassName = `${ProductComparisonPreview.tableRowClassName}__product-name`;\n\n return products.map(productData => {\n const product = productData.product;\n\n let productNameLink: string | undefined;\n if (msdyn365Commerce.isBrowser) {\n const productUrl = getProductUrlSync(product, this.props.context.actionContext);\n const fullUrl = new URL(productUrl, window.location.href);\n if (isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n fullUrl.searchParams.set('catalogid', `${productData.catalogId}`);\n }\n product.Dimensions?.map(dimension => {\n const dimensionValue = dimension.DimensionValue?.Value;\n if (!StringExtensions.isNullOrWhitespace(dimensionValue)) {\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimension.DimensionTypeValue);\n fullUrl.searchParams.set(dimensionName, dimensionValue!);\n }\n });\n productNameLink = fullUrl.href;\n }\n\n return {\n productNameLink,\n productData,\n removeFromComparisonButton: (\n \n ),\n productImage: (\n \n {this._renderProductImage(productImageClassName, productData.product)}\n \n ),\n productLink: (\n \n {productData.product.Name}\n \n )\n };\n });\n }\n\n /**\n * Represents product comparison preview view.\n * @returns Elements.\n */\n private _renderGreyPlaceHolders = (productData: IProductComparisonProductData[]): React.ReactNode[] | undefined => {\n const counts = this.state.greyPlaceHoldersCount;\n if (this.props.context.app.config.displayGreyPlaceHolders && counts! > 0) {\n const elements = [];\n for (let index = 0; index < counts!; index++) {\n elements.push(\n \n
\n \n );\n }\n return elements;\n }\n return;\n };\n\n /**\n * Removes the product from a list.\n * @param itemId - The id of a product to remove.\n */\n private readonly _removeProductFromList = (itemId: string): void => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(itemId);\n this.setState(previousState => {\n return {\n productsData: previousState.productsData?.filter(item => item.itemId !== itemId)\n };\n });\n };\n\n /**\n * Toggle collapsing.\n */\n private readonly _handleCollapseClick: () => void = () => {\n this.setState(previousState => {\n return {\n isExpanded: !(previousState.isExpanded ?? this._hasUserInteractedWithComparison)\n };\n });\n };\n\n /**\n * Removes all products from the comparison.\n */\n private readonly _clearAllProductsFromTheComparison = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).clearAll();\n this.setState({ productsData: [] });\n };\n\n private _getProductsLimit(): number | undefined {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Retrieves product image react node.\n * @param className - Class name to use.\n * @param product - Product info.\n * @returns React node.\n */\n private _renderProductImage(className: string, product?: SimpleProduct): React.ReactNode | undefined {\n if (ObjectExtensions.isNullOrUndefined(product)) {\n return undefined;\n }\n\n const defaultImageSettingQ = 'w=140&h=140&m=6';\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: defaultImageSettingQ, w: 0, h: 0 },\n lg: { q: defaultImageSettingQ, w: 0, h: 0 },\n xl: { q: defaultImageSettingQ, w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n }\n\n private _renderCollapseButton(): INodeProps {\n const shouldBeExpanded = this.state.isExpanded ?? this._hasUserInteractedWithComparison;\n const headerContainerClassName = `${ProductComparisonPreview.mainContainerClassName}__header_button`;\n let collapseClassName = `${ProductComparisonPreview.collapseButtonClassName}__expanded`;\n if (!shouldBeExpanded) {\n collapseClassName = `${ProductComparisonPreview.collapseButtonClassName}__collapsed`;\n }\n\n return {\n className: classnames(headerContainerClassName, ProductComparisonPreview.collapseButtonClassName, collapseClassName),\n onClick: this._handleCollapseClick,\n role: 'button',\n tabIndex: 0\n };\n }\n\n private _renderGoToComparisonButton(productComparisonLink: string | undefined): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonCompareProductsButtonText}\n \n );\n }\n\n private _renderClearAllButton(): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonClearAllProductsButtonText}\n \n );\n }\n}\n\nexport default ProductComparisonPreview;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce from '@msdyn365-commerce/core';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IProductComparisonPreviewViewProps, ProductComparisonPreview } from './product-comparison-preview';\n\n/**\n * Represents product comparison preview view.\n * @param props - View props for product comparison preview.\n * @returns Functional component of product comparison preview.\n */\nexport const ProductComparisonPreviewViewFunctionalComponent: React.FC = props => {\n if (!props.isMainContentReady) {\n return null;\n }\n\n const shouldBeExpanded = props.isExpanded ?? props.hasUserInteractedWithComparison;\n\n const containerClassName = classnames(\n ProductComparisonPreview.mainContainerClassName,\n shouldBeExpanded ? '' : `${ProductComparisonPreview.mainContainerClassName}__collapsed`\n );\n\n return (\n \n \n \n \n \n \n \n \n \n {props.resources.productComparisonPreviewHeaderText}\n \n \n {props.subheaderText}\n \n \n \n \n \n \n \n {props.productsMainInfo?.map(info => {\n return (\n \n {info.removeFromComparisonButton}\n {info.productImage}\n \n );\n })}\n {props.previewGreyPlaceHolders}\n \n \n {props.productsMainInfo?.map(info => {\n return (\n \n {msdyn365Commerce.isBrowser ? info.productLink : undefined}\n \n );\n })}\n \n \n \n \n \n {props.clearAllButton}\n {props.goToComparisonButton}\n \n \n \n \n );\n};\n\nexport default ProductComparisonPreviewViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ComparisonItem } from './comparison-item';\n\n/**\n * Represents a product for comparison.\n */\nexport class ProductComparisonItem extends ComparisonItem {\n public readonly productId: number;\n\n public readonly catalogId: number;\n\n public static getItemId(productId: number, catalogId: number): string {\n return `${productId}-${catalogId}`;\n }\n\n public constructor(productId: number, catalogId: number) {\n const itemId = ProductComparisonItem.getItemId(productId, catalogId);\n super(itemId);\n\n this.productId = productId;\n this.catalogId = catalogId;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/**\n * Represents an item for comparison.\n */\nexport abstract class ComparisonItem {\n public readonly addedDate: Date;\n\n public readonly itemId: ItemId;\n\n public constructor(itemId: ItemId) {\n this.itemId = itemId;\n this.addedDate = new Date();\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICookieContext, IRequestContext } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { ProductComparisonItem } from './base';\nimport { ComparisonManager } from './comparison-manager';\n\n/**\n * Represents a product comparison manager which operates a list of products and cookies to store the list.\n */\nexport class ProductComparisonState extends ComparisonManager {\n private static readonly _productComparisonItemsLocalStorageKey: string = '_msdyn365__productComparisonItems_';\n\n private static _instance?: ProductComparisonState;\n\n private readonly _requestContext: IRequestContext;\n\n public static instance(requestContext: IRequestContext, user?: Customer): ProductComparisonState {\n const items = ProductComparisonState._retrieveItemsFromCookies(requestContext, user);\n\n if (!ProductComparisonState._instance) {\n ProductComparisonState._instance = new ProductComparisonState(requestContext, items, user);\n } else if (!ArrayExtensions.equals(ProductComparisonState._instance.items, items)) {\n ProductComparisonState._instance.setItems(items);\n }\n\n return ProductComparisonState._instance;\n }\n\n private static _getCookieStorageKey(requestContext: IRequestContext, user?: Customer) {\n const userId = user?.RecordId ?? requestContext.user.customerAccountNumber ?? '';\n return `${ProductComparisonState._productComparisonItemsLocalStorageKey}__${requestContext.sitePath ?? ''}__${userId}`;\n }\n\n private static _retrieveItemsFromCookies(requestContext: IRequestContext, user?: Customer): ProductComparisonItem[] {\n const items = ProductComparisonState._readFromCookie(\n requestContext.cookies,\n ProductComparisonState._getCookieStorageKey(requestContext, user)\n );\n if (!ArrayExtensions.hasElements(items)) {\n return [];\n }\n return items;\n }\n\n private static _readFromCookie(cookieContext: ICookieContext, cookieKey: string): ProductComparisonItem[] | undefined | null {\n if (!cookieKey) {\n return undefined;\n }\n\n if (!cookieContext.isConsentGiven()) {\n return undefined;\n }\n\n const cookieValue = cookieContext.get(cookieKey);\n\n return cookieValue.value;\n }\n\n private static _writeToCookie(cookieContext: ICookieContext, cookieKey: string, value: ProductComparisonItem[]): void {\n if (!cookieKey) {\n return;\n }\n\n cookieContext.set(cookieKey, value, { secure: true, maxAge: 5_184_000 });\n }\n\n private constructor(requestContext: IRequestContext, items: ProductComparisonItem[], user?: Customer) {\n super(...items);\n\n this._requestContext = requestContext;\n\n this.listModifiedEvent.subscribe({\n /**\n * Unique identifier of the subscriber. Used to identify the subscriber among the other subscribers for the same event.\n */\n instanceId: 'ProductComparisonState instance',\n\n /**\n * Method which should be called once the event is triggered.\n */\n handler: () => {\n ProductComparisonState._writeToCookie(\n this._requestContext.cookies,\n ProductComparisonState._getCookieStorageKey(requestContext, user),\n this.items\n );\n }\n });\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Event } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { ComparisonItem } from './base';\n\n/**\n * Represents base functionality of a comparison manager which operates a list of items for comparison.\n */\nexport class ComparisonManager = ComparisonItem> {\n public readonly listModifiedEvent: Event;\n\n public get lastUpdateDate(): Date {\n return this._lastUpdateDate;\n }\n\n private _lastUpdateDate: Date;\n\n private _comparisonItems: Item[];\n\n public get items(): Item[] {\n return this._comparisonItems;\n }\n\n public constructor(...items: Item[]) {\n this._comparisonItems = items;\n this.listModifiedEvent = new Event();\n this._lastUpdateDate = new Date(Date.now());\n }\n\n public setItems(items: Item[]): void {\n this._comparisonItems = items;\n this._update();\n }\n\n public addItem(item: Item): void {\n this._comparisonItems.push(item);\n this._update();\n }\n\n public clearAll(): void {\n this.setItems([]);\n }\n\n public removeItem(item: Item): void {\n this._comparisonItems = this._comparisonItems.filter(currentItem => currentItem !== item);\n this._update();\n }\n\n public removeItemById(itemId: ItemId): void {\n this._comparisonItems = this._comparisonItems.filter(currentItem => currentItem.itemId !== itemId);\n this._update();\n }\n\n public hasItem(item: Item): boolean {\n return this.items.includes(item);\n }\n\n public hasItemById(itemId: ItemId): boolean {\n return this.items.some(item => item.itemId === itemId);\n }\n\n private _update(): void {\n this._lastUpdateDate = new Date(Date.now());\n this.listModifiedEvent.trigger();\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { FullProduct, RatingsSummary } from '@msdyn365-commerce/commerce-entities';\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { AttributeValue, ProductDimensionValueInventoryAvailability, ProductPrice, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n AttributesForSelectedVariantInput,\n FullProductInput,\n getAttributesForSelectedVariantAction,\n getFullProductsAction,\n getRatingsSummary,\n GetRatingsSummaryInput,\n ProductDetailsCriteria,\n getDimensionAvailabilitiesForProductsAction,\n ProductsDimensionAvailabilitiesInput,\n GetCustomerInput,\n getCustomer\n} from '@msdyn365-commerce-modules/retail-actions';\n\nimport { ProductComparisonItem, ProductComparisonState } from '../../product-comparison-state';\n\n/**\n * Represents the specifications of the product.\n */\nexport interface IProductSpecification {\n productId: number;\n catalogId: number;\n specificationsList: AttributeValue[];\n}\n\n/**\n * Represents the dimension of single product.\n */\nexport interface IDimensionResult {\n result: ProductDimensionValueInventoryAvailability[][];\n}\n\n/**\n * Represents the dimension of the product.\n */\nexport interface IProductDimensionAvailibility {\n dimensions: IDimensionResult[];\n recordId: number;\n masterId: number;\n}\n/**\n * Represents the data for a single product comparison item.\n */\nexport interface IProductComparisonItemData {\n itemId: string;\n productInfo: SimpleProduct;\n catalogId: number;\n price?: ProductPrice;\n rating?: RatingsSummary;\n specifications?: IProductSpecification;\n dimensions?: IProductDimensionAvailibility;\n}\n\n/**\n * Input class for GetProductsInProductComparisonInput data action.\n */\nexport class GetProductsInProductComparisonInput implements IActionInput {\n public readonly items?: ProductComparisonItem[];\n\n public constructor(items?: ProductComparisonItem[]) {\n this.items = items;\n }\n\n /**\n * Cache key.\n * @returns Cache key.\n */\n public getCacheKey = (): string => 'GetProductsInProductComparisonInput';\n\n /**\n * Cache object type.\n * @returns Cache object type.\n */\n public getCacheObjectType = (): string => 'GetProductsInProductComparison';\n\n /**\n * Data cache type.\n * @returns Data cache type.\n */\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Creates input for the data action.\n * @param inputData - Action context info.\n * @returns Action input.\n */\nexport const createGetProductsInProductComparisonInput = (\n inputData: ICreateActionContext>\n): GetProductsInProductComparisonInput => {\n return new GetProductsInProductComparisonInput();\n};\n\n/**\n * Loads full product info for each comparison item.\n * @param input - Data action input.\n * @param actionContext - Action context.\n * @returns Full product info.\n */\nconst loadFullProducts = async (input: GetProductsInProductComparisonInput, actionContext: IActionContext) => {\n const fullProductInput = input.items!.map(\n item =>\n new FullProductInput(\n item.productId,\n actionContext.requestContext.apiSettings,\n new ProductDetailsCriteria(true, true),\n actionContext.requestContext,\n item.catalogId\n )\n );\n\n let productsInfo = await getFullProductsAction(fullProductInput, actionContext);\n productsInfo = ArrayExtensions.validValues(productsInfo);\n\n return productsInfo;\n};\n\n/**\n * Loads ratings for each comparison item.\n * @param input - Data action input.\n * @param actionContext - Action context.\n * @returns Ratings info.\n */\nconst loadRatings = async (input: GetProductsInProductComparisonInput, actionContext: IActionContext) => {\n const apiSettings = actionContext.requestContext.apiSettings;\n const ratingInputs = input.items!.map(\n item => new GetRatingsSummaryInput(item.productId.toString(), apiSettings.rnr.id || '', apiSettings.rnr.url || '')\n );\n\n const ratingsPromises = ratingInputs.map(ratingInput => getRatingsSummary(ratingInput, actionContext));\n let ratings = await Promise.all(ratingsPromises);\n ratings = ArrayExtensions.validValues(ratings);\n\n return ratings;\n};\n\n/**\n * Loads product specification for the given product.\n * @param item - Input item.\n * @param product - Product for specification.\n * @param actionContext - Action context.\n * @returns Product specifications.\n */\nconst loadProductSpecifications = async (item: ProductComparisonItem, product: FullProduct, actionContext: IActionContext) => {\n const apiSettings = actionContext.requestContext.apiSettings;\n const input = new AttributesForSelectedVariantInput(\n product.ProductDetails.RecordId,\n apiSettings.channelId,\n product.ProductDetails,\n item.catalogId\n );\n const specificationsList = await getAttributesForSelectedVariantAction(input, actionContext);\n\n const productSpecification: IProductSpecification = {\n productId: product.ProductDetails.RecordId,\n specificationsList,\n catalogId: item.catalogId\n };\n return productSpecification;\n};\n\n/**\n * Loads product specification for each comparison item.\n * @param input - Action input.\n * @param products - Products for specification.\n * @param actionContext - Action context.\n * @returns Products specifications info.\n */\nconst loadProductsSpecifications = async (\n input: GetProductsInProductComparisonInput,\n products: FullProduct[],\n actionContext: IActionContext\n) => {\n const productsSpecificationsPromises = products.map(async (product, index) => {\n const item = input.items![index];\n return loadProductSpecifications(item, product, actionContext);\n });\n\n let productsSpecifications = await Promise.all(productsSpecificationsPromises);\n productsSpecifications = ArrayExtensions.validValues(productsSpecifications);\n\n return productsSpecifications;\n};\n\n/**\n * Loads product dimension for each comparison item.\n * @param products - Products for specification.\n * @param actionContext - Action context.\n * @returns Products specifications info.\n */\nconst loadProductsDimensions = async (products: FullProduct[], actionContext: IActionContext) => {\n const productsDimensionPromises = products.map(async product => {\n const dimensionResult: IDimensionResult[] = [];\n\n for (const item of product.ProductDetails.Dimensions!) {\n const input = new ProductsDimensionAvailabilitiesInput(\n product.ProductDetails.MasterProductId ?? product.ProductDetails.RecordId,\n item.DimensionTypeValue,\n actionContext.requestContext\n );\n await getDimensionAvailabilitiesForProductsAction([input], actionContext).then(result => {\n dimensionResult.push({ result });\n });\n }\n\n product.ProductDetails.Dimensions?.map(async item => {\n return dimensionResult;\n });\n\n const getUpdatedDimension: IProductDimensionAvailibility | undefined =\n dimensionResult.length > 0\n ? {\n dimensions: dimensionResult,\n recordId: product.ProductDetails.RecordId,\n masterId: product.ProductDetails.MasterProductId!\n }\n : undefined;\n return getUpdatedDimension;\n });\n\n let productsDimensions = await Promise.all(productsDimensionPromises);\n productsDimensions = ArrayExtensions.validValues(productsDimensions);\n return productsDimensions;\n};\n\n/**\n * Retrieves product data for the items in the comparison.\n * @param input - Action input.\n * @param actionContext - Action context.\n * @returns Products data.\n */\nexport const getProductsInProductComparisonAction = async (\n input: GetProductsInProductComparisonInput,\n actionContext: IActionContext\n): Promise => {\n const catalogId = getCatalogId(actionContext.requestContext);\n\n let items = input.items;\n if (!ArrayExtensions.hasElements(items)) {\n const accountInformation = await getCustomer(new GetCustomerInput(actionContext.requestContext.apiSettings), actionContext);\n items = ProductComparisonState.instance(actionContext.requestContext, accountInformation).items;\n }\n\n const newInput: GetProductsInProductComparisonInput = {\n items: items.filter(item => item.catalogId === catalogId),\n getCacheKey: input.getCacheKey,\n getCacheObjectType: input.getCacheObjectType,\n dataCacheType: input.dataCacheType\n };\n\n if (!ArrayExtensions.hasElements(newInput.items)) {\n return [];\n }\n\n const productsPromises = loadFullProducts(newInput, actionContext);\n const ratingsPromises = loadRatings(newInput, actionContext);\n const [products, ratings] = await Promise.all([productsPromises, ratingsPromises]);\n const productDimensions = await loadProductsDimensions(products, actionContext);\n const productsSpecifications = await loadProductsSpecifications(newInput, products, actionContext);\n\n const productsData = newInput.items.map((item, index) => {\n const product = products[index];\n const productData: IProductComparisonItemData = {\n itemId: item.itemId,\n productInfo: product.ProductDetails,\n price: product.ProductPrice,\n catalogId: item.catalogId\n };\n productData.rating = ratings.find(rating => rating.productId === productData.productInfo.RecordId.toString());\n productData.specifications = productsSpecifications.find(\n productSpecifications =>\n productSpecifications.productId === productData.productInfo.RecordId &&\n productSpecifications.catalogId === productData.catalogId\n );\n productData.dimensions = productDimensions.find(dimension => dimension?.recordId === productData.productInfo.RecordId);\n return productData;\n });\n return productsData;\n};\n\n/**\n * Data action to retrieve products info for the items in the comparison.\n */\nexport const getActiveCheckoutCartProductsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/product-comparison/product-comparison/get-products-in-product-comparison',\n action: getProductsInProductComparisonAction as IAction,\n input: createGetProductsInProductComparisonInput\n});\n\nexport default getActiveCheckoutCartProductsActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getRichTextHtml, ICoreContext, ITelemetry } from '@msdyn365-commerce/core';\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\n/**\n * Represents resources for the component.\n */\nexport interface IProductSpecificationResources {\n productComparisonProductItemSpecificationTrue: string;\n productComparisonProductItemSpecificationFalse: string;\n}\n\n/**\n * Represent configuration of the component.\n */\nexport interface IProductSpecificationProps {\n telemetry: ITelemetry;\n specification?: AttributeValue;\n context: ICoreContext;\n\n resources: IProductSpecificationResources;\n}\n\n/**\n * Represents the product specification values that comes from the server.\n */\nexport enum SpecificationDataTypeValues {\n none = 0,\n currency = 1,\n dateTime = 2,\n decimal = 3,\n integer = 4,\n text = 5,\n boolean = 6,\n video = 40,\n image = 41\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductSpecification extends React.PureComponent {\n private static _renderCurrencyCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.CurrencyValue)) {\n return null;\n }\n\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n private static _renderDateTimeCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isFunction(product.DateTimeOffsetValue?.toUTCString)) {\n return null;\n }\n\n return {product.DateTimeOffsetValue!.toUTCString()};\n }\n\n private static _renderIntegerCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.IntegerValue)) {\n return null;\n }\n\n return {product.IntegerValue};\n }\n\n private static _renderDecimalCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.FloatValue)) {\n return null;\n }\n\n return {product.FloatValue};\n }\n\n private static _renderTextCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.TextValue)) {\n return null;\n }\n\n // eslint-disable-next-line react/no-danger -- Implementation is a copy.\n return ;\n }\n\n public constructor(props: IProductSpecificationProps) {\n super(props);\n }\n\n public render(): React.ReactNode | null {\n const specification = this.props.specification;\n if (ObjectExtensions.isNullOrUndefined(specification)) {\n return null;\n }\n\n switch (specification.DataTypeValue) {\n case SpecificationDataTypeValues.none:\n // Return span here instead of null so the row still shows\n return ;\n case SpecificationDataTypeValues.currency:\n return ProductSpecification._renderCurrencyCell(specification);\n case SpecificationDataTypeValues.dateTime:\n return ProductSpecification._renderDateTimeCell(specification);\n case SpecificationDataTypeValues.decimal:\n return ProductSpecification._renderDecimalCell(specification);\n case SpecificationDataTypeValues.integer:\n return ProductSpecification._renderIntegerCell(specification);\n case SpecificationDataTypeValues.text:\n return ProductSpecification._renderTextCell(specification);\n case SpecificationDataTypeValues.boolean:\n return this._renderTrueFalseCell(specification);\n case SpecificationDataTypeValues.video:\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case SpecificationDataTypeValues.image:\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${specification.DataTypeValue ?? 'null'} so skipping line`);\n return null;\n }\n }\n\n private _renderTrueFalseCell(product: AttributeValue): React.ReactNode | null {\n if (product.BooleanValue) {\n return {this.props.resources.productComparisonProductItemSpecificationTrue};\n }\n return {this.props.resources.productComparisonProductItemSpecificationFalse};\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React, { useCallback } from 'react';\n\n/**\n * Resources for the remove from comparison button component.\n */\nexport interface IRemoveFromComparisonButtonResources {\n productComparisonRemoveProductFromListAriaLabel: string;\n}\n\n/**\n * The configuration of the remove from comparison button component.\n */\nexport interface IRemoveFromComparisonButtonComponentProps extends IComponentProps {\n className: string;\n itemId: string;\n\n resources: IRemoveFromComparisonButtonResources;\n\n onClickHandler(itemId: string): void;\n}\n\n/**\n * Represents a button which handles adding to product comparison.\n * @param props - Configuration of the component.\n * @returns React functional component.\n */\nconst RemoveFromComparisonButtonFunctionalComponent: React.FC = (\n props: IRemoveFromComparisonButtonComponentProps\n) => {\n const onClick = useCallback(() => {\n props.onClickHandler(props.itemId);\n }, [props]);\n\n const { className } = props;\n\n return \n );\n }\n\n private readonly _goBack = (): void => {\n const backToShoppingUrl = getUrlSync('home', this.props.context.actionContext) || '';\n if (document.referrer === '') {\n window.location.href = backToShoppingUrl;\n } else {\n window.history.back();\n }\n };\n\n /**\n * Retrieves localized text for dimension.\n * @param dimensionId - Dimension id.\n * @returns Localized text.\n */\n private _getDimensionName(dimensionId: number): string | undefined {\n if (dimensionId === ProductDimensionType.Color) {\n return this.props.resources.productComparisonProductItemColorDimension;\n }\n if (dimensionId === ProductDimensionType.Size) {\n return this.props.resources.productComparisonProductItemSizeDimension;\n }\n\n if (dimensionId === ProductDimensionType.Style) {\n return this.props.resources.productComparisonProductItemStyleDimension;\n }\n return undefined;\n }\n\n private getUpdatedDimensionsProps(dimensionId: number, products: IProductComparisonProductMainInfo[]) {\n const dimensionClassName = `${ProductComparison.dimensionsRowClassName}__dimension-${dimensionId}`;\n const dimensionDescription = this._getDimensionName(dimensionId);\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimensionId);\n let dimensionSelectionType = SelectionType.text;\n\n const dimensionsAsSwatchConfiguration: DimensionTypes[] | undefined = this.props.context.app.config.dimensionsAsSwatchType;\n if (\n ArrayExtensions.hasElements(dimensionsAsSwatchConfiguration) &&\n !dimensionsAsSwatchConfiguration?.includes(DimensionTypes.none) &&\n dimensionsAsSwatchConfiguration?.includes(dimensionName)\n ) {\n dimensionSelectionType = SelectionType.swatch;\n }\n\n const productDimensionValues = products.map(productMainInfo => {\n let dimension: IDimensionResult[] = [];\n let textValue: string = '';\n let renderSwatch: JSX.Element | undefined;\n this.props.data.productsData?.result?.map(productsDimension => {\n if (productsDimension.productInfo.RecordId === productMainInfo.product.productInfo.RecordId) {\n dimension = productsDimension.dimensions?.dimensions ?? [];\n }\n return dimension;\n });\n\n if (dimensionSelectionType === SelectionType.swatch) {\n renderSwatch = (\n
\n {dimension.map(dimensionItems => {\n return (\n \n {dimensionItems.result.map(dimensionItem => {\n let currentDimensionId: number | undefined;\n const swatches =\n dimensionItem.map(swatchItem => {\n let isDefaultDimension: boolean = false;\n const selectedDimensions = productMainInfo.product.productInfo.Dimensions?.filter(\n item => item.DimensionTypeValue === swatchItem.DimensionTypeValue\n );\n selectedDimensions?.map(selectedDimension => {\n if (\n selectedDimension.DimensionValue !== undefined &&\n selectedDimension.DimensionValue.DimensionId ===\n swatchItem.DimensionValue?.DimensionId\n ) {\n isDefaultDimension = true;\n }\n return isDefaultDimension;\n });\n\n if (swatchItem.DimensionTypeValue === dimensionId) {\n currentDimensionId = swatchItem.DimensionTypeValue;\n }\n const dimensionType = dimensionName;\n return {\n itemId: `${swatchItem.DimensionValue?.RecordId ?? ''}-${swatchItem.DimensionValue\n ?.Value ?? ''}`,\n value: swatchItem.DimensionValue?.Value ?? '',\n dimensionType,\n colorHexCode: swatchItem.DimensionValue?.ColorHexCode,\n imageUrl: swatchItem.DimensionValue?.ImageUrl,\n isDefault: isDefaultDimension\n };\n }) ?? [];\n if (currentDimensionId && currentDimensionId === dimensionId) {\n return (\n \n );\n }\n return null;\n })}\n
\n );\n })}\n
\n );\n }\n\n if (dimensionSelectionType === SelectionType.text) {\n dimension.map(item => {\n return item.result.map(items => {\n return items.map(dimensionItem => {\n if (dimensionItem.DimensionTypeValue === dimensionId) {\n const productDimensionSeperatorValue =\n textValue !== ''\n ? this.props.resources.productDimensionSeparator\n : this.props.resources.productDimensionSeparator.replace('/', '');\n textValue = textValue + format(productDimensionSeperatorValue, dimensionItem.DimensionValue?.Value ?? '');\n }\n return textValue;\n });\n });\n });\n }\n\n const dimensionProps = {\n RecordId: productMainInfo.product.productInfo.RecordId,\n Value: textValue,\n DimensionId: dimensionId,\n ImageUrl: productMainInfo.product.productInfo.PrimaryImageUrl\n };\n\n return {\n dimensionProps,\n productMainInfo,\n node: (\n
\n {dimensionSelectionType === SelectionType.swatch ? renderSwatch : dimensionProps.Value}\n
\n )\n };\n });\n return {\n dimensionId,\n dimensionName: dimensionDescription,\n dimensionClassName,\n productDimensionValues\n };\n }\n private _getSpecificationProps(specifications: AttributeValue[], products: IProductComparisonProductMainInfo[]) {\n return specifications.map(specification => {\n const specificationClassName = `${ProductComparison.specificationsRowClassName}__specification-${specification.Name!}`;\n\n const specificationValues = products.map(productMainInfo => {\n const productSpecification = productMainInfo.product.specifications?.specificationsList.find(\n productSpecifications => productSpecifications.Name === specification.Name\n );\n\n return {\n productSpecification,\n productMainInfo,\n node: (\n
\n \n
\n )\n };\n });\n\n return {\n specification,\n specificationClassName,\n specificationValues\n };\n });\n }\n\n private _renderHeading(): React.ReactNode {\n return ;\n }\n\n private _renderLoading(): React.ReactNode {\n return
{this.props.resources.productComparisonLoadingText}
;\n }\n\n private _renderClearAllButton(): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonClearAllButtonText}\n \n );\n }\n\n /**\n * Retrieves unique dimension ids of product.\n * @param products - Product.\n * @returns Unique dimension ids.\n */\n private getProductsDimensionsIds(products: IProductComparisonItemData[]): number[] {\n const dimensions = products.map(product => product.productInfo.Dimensions);\n const allDimensions: ProductDimension[] = ArrayExtensions.flatten(dimensions);\n\n const dimensionIds = ArrayExtensions.validValues(allDimensions.map(dimension => dimension.DimensionTypeValue));\n const uniqueDimensionIds = ArrayExtensions.unique(dimensionIds);\n\n return uniqueDimensionIds;\n }\n\n private _renderPreviousClicker(): React.ReactNode {\n return (\n \n