{"version":3,"file":"static/js/06c19bfa8bd54375fbcf.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