{"version":3,"file":"static/js/11.4ae2430f99f288624602.chunk.js","mappings":"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","sources":["webpack://Citta2.0/./src/modules/citta-product-attribute-companion-product/citta-product-attribute-companion-product.tsx?6020","webpack://Citta2.0/./src/modules/citta-product-attribute-companion-product/citta-product-attribute-companion-product.view.tsx?891b","webpack://Citta2.0/./src/modules/citta-product-collection/components/product-component.tsx?9602","webpack://Citta2.0/./src/modules/citta-product-collection/citta-product-collection.props.autogenerated.ts?6b89","webpack://Citta2.0/./src/modules/citta-product-collection/citta-product-collection.tsx?3cdb","webpack://Citta2.0/./src/modules/citta-product-collection/citta-product-collection.view.tsx?3b99","webpack://Citta2.0/./src/modules/citta-product-eoq/citta-product-eoq.tsx?a3a1","webpack://Citta2.0/./src/modules/citta-product-eoq/citta-product-eoq.view.tsx?e80c","webpack://Citta2.0/./src/themes/citta/citta.tsx?4a09","webpack://Citta2.0/./src/modules/place-holder-for-container-preview/place-holder-for-container-preview.tsx?605e","webpack://Citta2.0/./src/modules/back-top-footer/back-top-footer.tsx?f47e","webpack://Citta2.0/./src/modules/html-block/html-block.tsx?c080","webpack://Citta2.0/./src/modules/html-block/html-block.view.tsx?b072","webpack://Citta2.0/./src/modules/product-page-summary/product-page-summary.tsx?2924","webpack://Citta2.0/./src/modules/starter/starter.tsx?aade"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\n\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\nimport { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { ICittaProductAttributeCompanionProductData } from './citta-product-attribute-companion-product.data';\r\nimport { ICittaProductAttributeCompanionProductProps } from './citta-product-attribute-companion-product.props.autogenerated';\r\n\r\nexport interface ICittaProductAttributeCompanionProductViewProps extends ICittaProductAttributeCompanionProductProps {\r\n linkItem?: INodeProps;\r\n className?: string;\r\n contentBlockContainer: IModuleProps;\r\n}\r\n/**\r\n *\r\n * ContentCard component\r\n * @extends {React.PureComponent}\r\n */\r\n\r\nclass CittaProductAttributeCompanionProduct extends React.PureComponent> {\r\n //const attributeName\r\n public render(): JSX.Element | null {\r\n const {\r\n className\r\n } = this.props.config;\r\n\r\n const content: ICittaProductAttributeCompanionProductData = this.props.data;\r\n\r\n const attributes = content.attributes.result;\r\n const linkAttribute = attributes?.find(attribute => attribute.Name === this.props.config.attributeName);\r\n if (!linkAttribute || !linkAttribute.TextValue) {\r\n return null;\r\n }\r\n\r\n const attribute = linkAttribute.TextValue.split('|');\r\n const attributeName = attribute[0];\r\n const attributeLink = attribute[1];\r\n\r\n const contentBlockviewProps = {\r\n ...this.props,\r\n linkItem: this._renderLink(attributeLink, attributeName),\r\n contentBlockContainer: {\r\n moduleProps: this.props,\r\n className: classnames('product-attribute-companion-product', className),\r\n }\r\n };\r\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\r\n }\r\n\r\n private _renderLink = (linkUrl: String, attributeName: String) => {\r\n return (\r\n this._goToLink(linkUrl)}\r\n >\r\n {attributeName}\r\n \r\n )\r\n };\r\n\r\n private _goToLink = (linkUrl: String) => {\r\n if (MsDyn365.isBrowser && typeof window !== 'undefined') {\r\n const baseUrl = window.location.origin;\r\n if (baseUrl.length) {\r\n window.location.assign(`${baseUrl}/${linkUrl}`);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default CittaProductAttributeCompanionProduct;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { ICittaProductAttributeCompanionProductViewProps } from './citta-product-attribute-companion-product';\r\n\r\nconst ContentBlockView: React.FC = (props) => {\r\n const {\r\n contentBlockContainer,\r\n linkItem\r\n } = props;\r\n\r\n if (linkItem) {\r\n return (\r\n \r\n { /* @ts-ignore */ }\r\n {linkItem}\r\n \r\n );\r\n } else {\r\n return (null);\r\n }\r\n};\r\n\r\nexport default ContentBlockView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport {\r\n IComponent, IComponentProps, ICoreContext, IGridSettings,\r\n IImageData, IImageSettings, Image, IRequestContext, msdyn365Commerce\r\n} from '@msdyn365-commerce/core';\r\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\r\nimport { getProductPageUrlSync } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { format, getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nexport interface IProductComponentProps extends IComponentProps<{ product?: ProductSearchResult }> {\r\n className?: string;\r\n imageSettings?: IImageSettings;\r\n savingsText?: string;\r\n freePriceText?: string;\r\n originalPriceText?: string;\r\n currentPriceText?: string;\r\n ratingAriaLabel?: string;\r\n allowBack?: boolean;\r\n telemetryContent?: ITelemetryContent;\r\n quickViewButton?: React.ReactNode;\r\n}\r\n\r\nexport interface IProductComponent extends IComponent { }\r\n\r\nconst PriceComponentActions = {};\r\n\r\nconst ProductCard: React.FC = ({\r\n data,\r\n context,\r\n imageSettings,\r\n ratingAriaLabel,\r\n allowBack,\r\n telemetryContent,\r\n quickViewButton\r\n}) => {\r\n const product = data.product;\r\n if (!product) {\r\n return null;\r\n }\r\n\r\n let productUrl = getProductPageUrlSync(product.Name || '', product.RecordId, context && context.actionContext, undefined);\r\n if (allowBack) {\r\n productUrl = updateProductUrl(productUrl, context);\r\n }\r\n\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', telemetryContent!, '', product.RecordId.toString());\r\n\r\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- -- Do not need type check for appsettings\r\n const isUnitOfMeasureEnabled = context.app.config && context.app.config.unitOfMeasureDisplayType === 'buyboxAndBrowse';\r\n\r\n /**\r\n * Gets the react node for product unit of measure display.\r\n * @param unitOfMeasure - DefaultUnitOfMeasure property from product.\r\n * @returns The node representing markup for unit of measure component.\r\n */\r\n function renderProductUnitOfMeasure(unitOfMeasure?: string): JSX.Element | null {\r\n\r\n if (!unitOfMeasure) {\r\n return null;\r\n }\r\n return (\r\n
\r\n \r\n {unitOfMeasure}\r\n \r\n
\r\n );\r\n\r\n }\r\n\r\n return (\r\n <>\r\n \r\n
\r\n {renderProductPlacementImage(\r\n imageSettings, context.request.gridSettings, product.PrimaryImageUrl, product.Name, context.actionContext.requestContext)}\r\n
\r\n
\r\n

\r\n {product.Name}\r\n

\r\n {isUnitOfMeasureEnabled && renderProductUnitOfMeasure(product.DefaultUnitOfMeasure)}\r\n {renderDescription(product.Description)}\r\n
\r\n \r\n {quickViewButton && renderQuickView(quickViewButton, product.RecordId)}\r\n \r\n );\r\n};\r\n\r\nfunction renderLabel(name?: string, price?: string, rating?: number, ratingAriaLabel?: string): string {\r\n name = name || '';\r\n price = price || '';\r\n return (`${name} ${price} ${getRatingAriaLabel(rating, ratingAriaLabel)}`);\r\n}\r\n\r\nfunction renderDescription(description?: string): JSX.Element | null {\r\n return (

\r\n {description}\r\n

);\r\n}\r\n\r\nfunction renderQuickView(quickview: React.ReactNode, item?: number): JSX.Element | undefined {\r\n if (quickview === null) {\r\n return undefined;\r\n }\r\n return React.cloneElement(quickview as React.ReactElement, { selectedProductId: item });\r\n}\r\n\r\nfunction getRatingAriaLabel(rating?: number, ratingAriaLabel?: string): string {\r\n if (rating && ratingAriaLabel) {\r\n const roundedRating = rating.toFixed(2);\r\n return format(ratingAriaLabel || '', roundedRating, '5');\r\n }\r\n return '';\r\n}\r\n\r\nfunction updateProductUrl(productUrl: string, context: ICoreContext): string {\r\n const srcUrl = new URL(productUrl, context.request.apiSettings.baseUrl);\r\n const queryString = 'back=true';\r\n if (srcUrl.search) {\r\n srcUrl.search += `&${queryString}`;\r\n } else {\r\n srcUrl.search += queryString;\r\n }\r\n\r\n const updatedUrl = new URL(srcUrl.href);\r\n return updatedUrl.pathname + srcUrl.search;\r\n}\r\n\r\nfunction renderProductPlacementImage(\r\n imageSettings?: IImageSettings, gridSettings?: IGridSettings, imageUrl?: string, altText?: string, context?: IRequestContext): JSX.Element | null {\r\n\r\n if (!imageUrl || !gridSettings || !imageSettings) {\r\n return null;\r\n }\r\n const img: IImageData = {\r\n src: imageUrl,\r\n altText: altText ? altText : ''\r\n };\r\n const imageProps = {\r\n gridSettings,\r\n imageSettings\r\n };\r\n imageProps.imageSettings.cropFocalRegion = true;\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport const ProductComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n 'Product',\r\n { component: ProductCard, ...PriceComponentActions }\r\n);\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * ICittaProductCollection containerModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nexport const enum layout {\r\n carousel = 'carousel',\r\n grid = 'grid'\r\n}\r\n\r\nexport interface ICittaProductCollectionConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n layout?: layout;\r\n allowBackNavigation?: boolean;\r\n imageSettings?: Msdyn365.IImageSettings;\r\n clientRender?: boolean;\r\n enableAffiliationBasedPricing?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport interface ICittaProductCollectionResources {\r\n priceFree: string;\r\n ratingAriaLabel: string;\r\n flipperNext: string;\r\n flipperPrevious: string;\r\n originalPriceText: string;\r\n currentPriceText: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface ICittaProductCollectionProps extends Msdyn365.IModule {\r\n resources: ICittaProductCollectionResources;\r\n config: ICittaProductCollectionConfig;\r\n slots: {\r\n quickview: React.ReactNode[];\r\n };\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\n// import { ProductComponent } from '@msdyn365-commerce/components';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getCartFromCustomer } from '@msdyn365-commerce/global-state';\r\nimport { ProductPrice, ProductSearchResult, ProjectionDomain } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n getActivePricesAsync\r\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport { getTelemetryObject, IComponentNodeProps, IModuleProps, INodeProps, ISingleSlideCarouselProps, ITelemetryContent, NodeTag, SingleSlideCarousel } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { ICittaProductCollectionData } from './citta-product-collection.data';\r\nimport { ProductComponent } from './components/product-component';\r\n\r\nimport { ICittaProductCollectionProps, layout } from './citta-product-collection.props.autogenerated';\r\n\r\nexport interface IProductCollectionViewProps extends ICittaProductCollectionProps {\r\n heading?: React.ReactNode;\r\n ProductCollectionContainer: IModuleProps;\r\n SingleSlideCarouselComponentProps: INodeProps;\r\n GridComponentProps: INodeProps;\r\n products: IProductComponentViewProps[];\r\n isCarousel: boolean;\r\n productPrices?: ProductPrice[];\r\n}\r\n\r\nexport interface IProductComponentViewProps {\r\n ProductContainer: INodeProps;\r\n productComponent: React.ReactNode;\r\n}\r\nexport interface IProductComponentState {\r\n products: ProductSearchResult[];\r\n}\r\n\r\n/**\r\n * ProductCollection component.\r\n */\r\nclass ProductCollection extends React.PureComponent, IProductComponentState> {\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private productPrices: ProductPrice[];\r\n\r\n constructor(props: ICittaProductCollectionProps) {\r\n super(props);\r\n this.productPrices = [];\r\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (this.props.config.enableAffiliationBasedPricing &&\r\n this.props.context.actionContext.requestContext?.user?.isAuthenticated) {\r\n this._getActivePrice();\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { heading, className } = this.props.config;\r\n const { \r\n resources,\r\n data: {\r\n catelogfeed\r\n }\r\n } = this.props;\r\n const products = catelogfeed && catelogfeed.result;\r\n\r\n const isCarousel = this.props.config.layout === layout.carousel;\r\n const headingComponent = heading && (\r\n \r\n );\r\n\r\n const productCollectionViewProps = {\r\n ...this.props,\r\n heading: headingComponent,\r\n SingleSlideCarouselComponentProps: {\r\n tag: SingleSlideCarousel,\r\n className: '',\r\n flipperPrevLabel: resources.flipperPrevious,\r\n flipperNextLabel: resources.flipperNext,\r\n parentId: this.props.id,\r\n telemetryContent: this.telemetryContent\r\n } as IComponentNodeProps,\r\n ProductCollectionContainer: {\r\n moduleProps: this.props,\r\n className: classnames('ms-product-collection', className)\r\n },\r\n GridComponentProps: {\r\n tag: 'ul' as NodeTag,\r\n className: 'ms-product-collection__items'\r\n },\r\n isCarousel,\r\n products: products && products.length > 0 && products.map((item: ProductSearchResult, index: number) => this._getProduct(item, index)),\r\n productPrices: this.productPrices\r\n };\r\n return this.props.renderView(productCollectionViewProps) as React.ReactElement;\r\n }\r\n\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading!.text = event.target.value;\r\n\r\n private readonly _getProduct = (product: ProductSearchResult, index: number): IProductComponentViewProps | null => {\r\n if (!product || !product.Name) {\r\n this.props.telemetry.trace('[product-collection] Product or product name is null');\r\n return null;\r\n }\r\n const telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n const { imageSettings, allowBackNavigation } = this.props.config;\r\n const resources = this.props.resources;\r\n const breaCrumbType = this.props.context.app.config.breadcrumbType;\r\n const allowBack = allowBackNavigation && (breaCrumbType === 'back' || breaCrumbType === 'categoryAndBack');\r\n const quickviewSlot = this.props.slots && this.props.slots.quickview && this.props.slots.quickview.length > 0 ? this.props.slots.quickview[0] : null;\r\n return {\r\n ProductContainer: {\r\n tag: 'li' as NodeTag,\r\n className: 'ms-product-collection__item',\r\n role: 'listitem',\r\n key: index\r\n },\r\n productComponent: (\r\n \r\n )\r\n };\r\n };\r\n\r\n private readonly _getActivePrice = async (): Promise => {\r\n let products = (this.state.products) || [];\r\n const productRecIds = (products && products.length > 0) ? products.map(prod => prod.RecordId) : [];\r\n const projectDomain: ProjectionDomain = { ChannelId: this.props.context.request.apiSettings.channelId, CatalogId: this.props.context.request.apiSettings.catalogId };\r\n const cart = await getCartFromCustomer(this.props.context.actionContext);\r\n const affliations = cart?.AffiliationLines;\r\n\r\n await getActivePricesAsync(\r\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\r\n projectDomain,\r\n productRecIds,\r\n new Date(),\r\n null,\r\n affliations,\r\n true\r\n ).then((activePricesResponse: ProductPrice[]) => {\r\n this.productPrices = activePricesResponse;\r\n products = products.map(prod => {\r\n const activePrice = activePricesResponse.find(price => price.ProductId === prod.RecordId);\r\n if (activePrice) {\r\n prod.Price = activePrice.CustomerContextualPrice ?? prod.Price;\r\n prod.BasePrice = Math.max(activePrice.BasePrice || 0, activePrice.TradeAgreementPrice || 0, activePrice.AdjustedPrice || 0);\r\n }\r\n return prod;\r\n });\r\n this.setState({\r\n products\r\n });\r\n })\r\n .catch((error: Error) => {\r\n this.props.context.actionContext.trace(error.message);\r\n this.props.context.actionContext.telemetry.exception(error);\r\n this.props.context.actionContext.telemetry.debug('[get Affiliation based price on Product Collection]Error executing action');\r\n throw new Error('[get Affiliation based price on Product Collection]Error executing action');\r\n });\r\n };\r\n}\r\n\r\nexport default ProductCollection;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { INodeProps, Module, Node, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IProductCollectionViewProps, IProductComponentViewProps } from './citta-product-collection';\r\n\r\nconst ProductCollectionView: React.FC = props => {\r\n const { heading, ProductCollectionContainer, products, SingleSlideCarouselComponentProps, GridComponentProps, isCarousel } = props;\r\n if (products) {\r\n return (\r\n \r\n {heading}\r\n {\r\n isCarousel ? _renderCarousel(SingleSlideCarouselComponentProps, products, props) : _renderGrid(GridComponentProps, products)\r\n }\r\n \r\n );\r\n }\r\n props.context.telemetry.error('Product collection content is empty, module wont render.');\r\n return null;\r\n};\r\n\r\nconst _renderCarousel = (carouselContainer: INodeProps, items: IProductComponentViewProps[],PropDetails: React.PropsWithChildren): JSX.Element => {\r\n const isMobile = PropDetails.context && PropDetails.context.request && PropDetails.context.request.device.Type === 'Mobile'\r\n let mobileCarouselContainer = {\r\n tag: 'ul' as NodeTag,\r\n className: 'ms-product-collection__custom-carousel'\r\n }\r\n return (\r\n \r\n {items && items.map(_renderProduct)}\r\n \r\n );\r\n};\r\n\r\nconst _renderGrid = (gridContainer: INodeProps, items: IProductComponentViewProps[]): JSX.Element => {\r\n return (\r\n \r\n {items && items.map(_renderProduct)}\r\n \r\n );\r\n};\r\n\r\nconst _renderProduct = (product: IProductComponentViewProps): JSX.Element => {\r\n const { ProductContainer, productComponent } = product;\r\n\r\n return (\r\n \r\n {productComponent}\r\n \r\n );\r\n};\r\n\r\nexport default ProductCollectionView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport * as React from 'react';\r\n\r\nimport { ICittaProductEoqData } from './citta-product-eoq.data';\r\nimport { ICittaProductEoqProps } from './citta-product-eoq.props.autogenerated';\r\n\r\nexport interface ICittaProductEoqViewProps extends ICittaProductEoqProps {\r\n EoqContainer: IModuleProps\r\n QuantityTitleTextNode: INodeProps;\r\n AvailableTitleTextNode: INodeProps;\r\n QuantityNode: INodeProps;\r\n AvailableNode: INodeProps;\r\n}\r\n\r\n/**\r\n *\r\n * CittaProductEoq component\r\n * @extends {React.PureComponent>}\r\n */\r\n @observer\r\nclass CittaProductEoq extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n\r\n let content: ICittaProductEoqData;\r\n\r\n try {\r\n content = this.props.data;\r\n } catch(e) {\r\n this.props.telemetry.error(`Something went wrong -----${e}`);\r\n return null;\r\n }\r\n \r\n const availableQuantity = content.productAvailability\r\n && content.productAvailability.result && content.productAvailability.result[0] && \r\n // @ts-ignore\r\n content.productAvailability.result[0].ProductAvailableQuantity.AvailableQuantity\r\n\r\n const productEOQ = content.attributes.result && content.attributes.result.find(att => att.Name === \"EOQ\");\r\n const quantityTitleText = this.props.config && this.props.config.quantityTitleText ? this.props.config.quantityTitleText : 'Order Quantity:';\r\n const availableTitleText = this.props.config && this.props.config.availableTitleText ? this.props.config.availableTitleText : 'Available:';\r\n\r\n const className = this.props.config && this.props.config.className ? this.props.config.className : '';\r\n if (productEOQ) {\r\n const productEoqViewProps: ICittaProductEoqViewProps = {\r\n ...(this.props as ICittaProductEoqProps),\r\n EoqContainer: {\r\n moduleProps: this.props,\r\n className: classname('product-eoq', className),\r\n },\r\n QuantityTitleTextNode: {\r\n className: 'product-quantity-title',\r\n children: quantityTitleText\r\n },\r\n AvailableTitleTextNode: {\r\n className: 'product-available-title',\r\n children: availableTitleText\r\n },\r\n QuantityNode: {\r\n className: 'product-quantity-id',\r\n children: productEOQ.TextValue\r\n },\r\n AvailableNode: {\r\n className: 'product-available-id',\r\n children: availableQuantity || '0'\r\n },\r\n };\r\n return this.props.renderView(productEoqViewProps) as React.ReactElement;\r\n }\r\n return null;\r\n }\r\n}\r\n\r\nexport default CittaProductEoq;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport * as React from 'react';\r\nimport { ICittaProductEoqViewProps } from './citta-product-eoq';\r\n\r\nexport default (props: ICittaProductEoqViewProps) => {\r\n const {\r\n EoqContainer,\r\n QuantityTitleTextNode,\r\n AvailableTitleTextNode,\r\n QuantityNode,\r\n AvailableNode\r\n } = props;\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\n// TODO: Current build require at least one tsx file\r\nexport default () =>
;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PlaceholderForContainerPreviewComponent } from '@msdyn365-commerce/core';\n\nexport default PlaceholderForContainerPreviewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { BackToTop, getTelemetryObject, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBackTopFooterProps } from './back-top-footer.props.autogenerated';\n\n/**\n *\n * BackTopFooter component.\n * @extends {React.PureComponent>}\n */\nclass BackTopFooter extends React.PureComponent> {\n private readonly editProps: Msdyn365.ITextEditProps = {\n requestContext: this.props.context.request,\n onEdit: (event: Msdyn365.ContentEditableEvent) => (this.props.config.backtoTopText = event.target.value)\n };\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IBackTopFooterProps<{}>) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n if (!this.props.config.destination) {\n this.props.telemetry.error('BackToTop.destination has not been provided, module wont render.');\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default BackTopFooter;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\n\nimport { IHtmlBlockProps } from './html-block.props.autogenerated';\n\nexport interface IHtmlBlockViewProps extends IHtmlBlockProps<{}> {\n content?: React.ReactNode;\n className?: string;\n}\n\n/**\n *\n * HtmlBlock component\n * @extends {React.PureComponent>}\n */\nclass HtmlBlock extends React.PureComponent> {\n public render(): JSX.Element | null {\n const { content, className } = this.props.config;\n const text = content && (\n \n );\n const htmlBlockViewProps = {\n ...this.props,\n content: text,\n className: classnames('ms-html-block', className)\n };\n return this.props.renderView(htmlBlockViewProps) as React.ReactElement;\n }\n\n public handleTextChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.content = event.target.value);\n}\n\nexport default HtmlBlock;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\nimport { IHtmlBlockViewProps } from './html-block';\n\nconst HtmlBlockView: React.FC = props => (\n
\n {props.content}\n
\n);\n\nexport default HtmlBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { HtmlHeadInclude, IAny, IGeneric } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { IProductPageSummaryData } from './product-page-summary.data';\nimport { IProductPageSummaryProps } from './product-page-summary.props.autogenerated';\n\n/**\n *\n * ProductPageSummary component.\n * @extends {React.PureComponent}\n */\nclass ProductPageSummary extends React.PureComponent> {\n public render(): JSX.Element {\n if (this.props.data.productPageSummary.result === undefined) {\n throw new Error('PageSummaryData input to page-summary is undefined. Unable to generate page-summary');\n }\n let {\n data: {\n productPageSummary: {\n result: { title, description, keywords, sharingImageUrl, faviconUrl }\n }\n }\n } = this.props;\n\n const {\n config,\n context,\n data: {\n productPageSummary: {\n result: { canonicalUrl, productId, productBrand, price }\n }\n }\n } = this.props;\n\n // Product SEO metadata specific information - non-overridable\n const productName = title;\n const productDescription = description;\n const productImageUrl = sharingImageUrl;\n\n // Override values coming from data action if config values are provided\n title = config.title || title;\n description = config.description || description;\n keywords = config.keywords || keywords;\n sharingImageUrl = (config.sharingImage && config.sharingImage.src) || sharingImageUrl;\n faviconUrl = config.faviconUrl || faviconUrl;\n\n // Construct page title with suffix and prefix if provided from app settings\n const pageTitle = this._constructPageTitle(title, context && context.request && context.request.app);\n return (\n <>\n \n {pageTitle && {pageTitle}}\n {description && }\n {keywords && }\n {canonicalUrl && }\n {faviconUrl && }\n \n {this._renderProductMetadata(\n productName,\n productDescription,\n productImageUrl,\n canonicalUrl,\n productId,\n price,\n context.request.channel?.Currency,\n productBrand\n )}\n {!config.disableOgTags && this._renderOgTags(pageTitle, description, sharingImageUrl)}\n {!config.disableTwitterTags && this._renderTwitterTags(pageTitle, description, sharingImageUrl)}\n \n );\n }\n\n /**\n * Renders the facebook and other social media specific metadata tags.\n *\n * @param title Page title.\n * @param description Product description.\n * @param sharingImageUrl Primary product image url.\n */\n private _renderOgTags(title: string | undefined, description: string | undefined, sharingImageUrl: string | undefined): JSX.Element {\n return (\n \n {title && }\n {description && }\n {sharingImageUrl && }\n \n \n );\n }\n\n /**\n * Constructs and renders the JSON-LD tag used to output product specific metadata used by search engine crawlers.\n *\n * @param productName Product name.\n * @param description Product description.\n * @param sharingImageUrl Primary product image url.\n * @param canonicalUrl Product canonical url.\n * @param productId Master product id.\n * @param price Proudct price.\n * @param currencyCode Current channel currency code.\n * @param productBrand Product brand.\n */\n private _renderProductMetadata(\n productName: string | undefined,\n description: string | undefined,\n sharingImageUrl: string | undefined,\n canonicalUrl: string | undefined,\n productId: number | undefined,\n price: number | undefined,\n currencyCode: string | undefined,\n productBrand: string | undefined\n ): JSX.Element {\n // Construct the JSON-LD data that contains the product metadata information used by search enginge crawlers\n const productMetaData = JSON.stringify({\n '@context': 'http://schema.org',\n '@type': 'Product',\n name: productName,\n description,\n image: sharingImageUrl,\n sku: productId,\n brand: {\n '@type': 'Brand',\n name: productBrand\n },\n offers: {\n '@type': 'Offer',\n url: canonicalUrl,\n priceCurrency: currencyCode,\n price\n }\n });\n return (\n \n {/* eslint-disable-next-line react/no-danger -- Implementation is a copy.*/}\n