{"version":3,"file":"static/js/11.51c7ed80518c98229065.chunk.js","mappings":"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","sources":["webpack://Citta2.0/./src/modules/citta-b2b-account-welcome-tile/citta-b2b-account-welcome-tile.tsx?46ed","webpack://Citta2.0/./src/modules/citta-b2b-account-welcome-tile/citta-b2b-account-welcome-tile.view.tsx?f855","webpack://Citta2.0/./src/modules/citta-product-video/citta-product-video.tsx?bc8d","webpack://Citta2.0/./src/modules/citta-product-video/citta-product-video.view.tsx?ed50","webpack://Citta2.0/./src/themes/citta/views/checkout-guest-profile.view.tsx?7905","webpack://Citta2.0/./src/themes/citta/views/footer-item.view.tsx?8324","webpack://Citta2.0/./src/components/container-background-image/container-background-image-helper.ts?ce2e","webpack://Citta2.0/./src/components/container-background-image/container-backgroud-image.tsx?e863","webpack://Citta2.0/./src/components/base-components.tsx?daec","webpack://Citta2.0/./src/modules/default-container-2-slots/default-container-2-slots.tsx?8065","webpack://Citta2.0/./src/modules/default-container-3-slots/default-container-3-slots.tsx?ac77","webpack://Citta2.0/./src/modules/default-container/default-container.tsx?01c3","webpack://Citta2.0/./src/utils/classnames.ts?a0ff","webpack://Citta2.0/./src/modules/default-page-summary/default-page-summary.tsx?0c78","webpack://Citta2.0/./src/modules/product-specification/components/product-specification-table-stucture.tsx?c1c4","webpack://Citta2.0/./src/modules/product-specification/product-specification.tsx?6583","webpack://Citta2.0/./src/modules/product-specification/product-specification.view.tsx?7490"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { ICittaB2bAccountWelcomeTileData } from './citta-b2b-account-welcome-tile.data';\r\nimport { ICittaB2bAccountWelcomeTileProps } from './citta-b2b-account-welcome-tile.props.autogenerated';\r\n\r\nexport interface IAccountWelcomeTileViewProps extends ICittaB2bAccountWelcomeTileProps {\r\n AccountWelcomeTile: IModuleProps;\r\n className: string;\r\n heading?: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * AccountWelcome component.\r\n * @extends {React.PureComponent>}\r\n */\r\nclass AccountWelcomeTile extends React.PureComponent> {\r\n public render(): JSX.Element {\r\n const { config, data } = this.props;\r\n const { className } = config;\r\n\r\n const accountInfo = data.accountInformation.result;\r\n const heading = {\r\n ...config.heading,\r\n ...{\r\n text: `${config.heading.text ? config.heading.text : ''} ${\r\n accountInfo && accountInfo.Name ? accountInfo.Name : ''\r\n }`\r\n }\r\n };\r\n\r\n const viewProps = {\r\n ...this.props,\r\n className,\r\n AccountWelcomeTile: {\r\n moduleProps: this.props,\r\n className: classnames('ms-account-welcome-tile', config.className)\r\n },\r\n heading: heading && heading.text && (\r\n \r\n )\r\n };\r\n\r\n return this.props.renderView(viewProps) 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\r\nexport default AccountWelcomeTile;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAccountWelcomeTileViewProps } from './citta-b2b-account-welcome-tile';\r\n\r\nconst AccountWelcomeTileView: React.FC = props => {\r\n const { AccountWelcomeTile, heading } = props;\r\n\r\n return {heading};\r\n};\r\n\r\nexport default AccountWelcomeTileView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n// import { reaction } from 'mobx';\r\nimport * as React from 'react';\r\n// import { IVideoMetadata } from '@msdyn365-commerce/components';\r\n\r\nimport { ICittaProductVideoData } from './citta-product-video.data';\r\nimport { ICittaProductVideoProps } from './citta-product-video.props.autogenerated';\r\n\r\nimport {\r\n IModuleProps,\r\n INodeProps\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\n\r\nimport { IImageData } from '@msdyn365-commerce/core';\r\n\r\nimport { IMediaGalleryData, IMediaGalleryProps } from '@msdyn365-commerce-modules/media-gallery';\r\n// import { IPlayerResources } from '@msdyn365-commerce/components/dist/types/videoplayer/components/data/player-resources';\r\n// import { IPlayerData } from '@msdyn365-commerce/components/dist/types/videoplayer/players/player/Player.props';\r\n// import * as MsDyn365 from '@msdyn365-commerce/core';\r\n// import { getValidProductImages } from './utils';\r\n\r\nexport const enum imageSource {\r\n pageContext = 'pageContext',\r\n productId = 'productId'\r\n}\r\nexport interface IMediaGalleryState {\r\n animating: boolean;\r\n activeIndex: number;\r\n mediaGalleryItems: IImageData[] | undefined;\r\n isImageZoomed: boolean;\r\n modalIsOpen: boolean;\r\n lastUpdate?: number;\r\n}\r\n\r\nexport interface IMediaGalleryThumbnailsViewProps {\r\n ThumbnailsContainerProps: INodeProps;\r\n SingleSlideCarouselComponentProps: INodeProps;\r\n items?: IMediaGalleryThumbnailItemViewProps[];\r\n}\r\n\r\nexport interface IMediaGalleryThumbnailItemViewProps {\r\n ThumbnailItemContainerProps: INodeProps;\r\n Picture: React.ReactElement;\r\n}\r\n\r\nexport interface IMediaGalleryViewProps extends IMediaGalleryProps {\r\n state: IMediaGalleryState;\r\n MediaGallery: IModuleProps;\r\n CarouselProps: INodeProps;\r\n Thumbnails: IMediaGalleryThumbnailsViewProps;\r\n Modal?:React.ReactElement|null;\r\n}\r\n\r\n\r\nexport interface ICittaProductVideoViewProps extends ICittaProductVideoProps<{}> {\r\n player: INodeProps;\r\n ProductVideoContainer: IModuleProps\r\n}\r\n\r\n/**\r\n * Media gallery component\r\n */\r\nclass CittaProductVideo extends React.Component, IMediaGalleryState> {\r\n public render(): JSX.Element | null {\r\n const {\r\n className\r\n } = this.props.config;\r\n\r\n const content: ICittaProductVideoData = this.props.data;\r\n\r\n const attributes = content.attributes.result;\r\n if (!attributes) {\r\n return null;\r\n }\r\n \r\n const srcAttribute = attributes?.find(attribute => attribute.Name === this.props.resources.attributeName);\r\n\r\n if (!srcAttribute || !srcAttribute.TextValue) {\r\n return null;\r\n }\r\n \r\n const viewProps = {\r\n ...this.props,\r\n ProductVideoContainer: {\r\n moduleProps: this.props,\r\n className: classnames('product-video-container', className)\r\n },\r\n player: \r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n}\r\n\r\nexport default CittaProductVideo;","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport { ICittaProductVideoViewProps } from './citta-product-video';\r\n\r\nexport default (props: ICittaProductVideoViewProps) => {\r\n return (\r\n \r\n { /* @ts-ignore */ }\r\n {props.player}\r\n \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\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAddContactInfo, ICheckoutGuestProfileViewProps, IShowContactInfo } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-guest-profile/./checkout-guest-profile';\r\n\r\nexport const ShowContactInfo: React.FC = ({ showInfoProps, email, editButton }) => (\r\n \r\n {email}\r\n {editButton}\r\n \r\n);\r\nexport const AddContactInfo: React.FC = ({\r\n addFormProps,\r\n submitButton,\r\n cancelButton,\r\n inputGroupProps,\r\n label,\r\n error,\r\n input\r\n}) => (\r\n \r\n \r\n {'Email Address'}\r\n {error}\r\n {input}\r\n \r\n {submitButton}\r\n {cancelButton}\r\n \r\n);\r\n\r\nconst CheckoutGuestProfileView: React.FC = ({ moduleProps, showContactInfo, addContactInfo }) => {\r\n return (\r\n \r\n {showContactInfo && }\r\n {addContactInfo && }\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutGuestProfileView;\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\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const { FooterItem } = this.props;\r\n return(\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n const {heading, HeadingContainer,Link, linkText, image} = props;\r\n if(heading) {\r\n return ( {heading} );\r\n } else if(Link && this._formatLinkData(Link)) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n return(\r\n <>\r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n\r\n private _formatLinkData = (Link: INodeProps) => {\r\n if(Link.href === undefined) {\r\n return Link;\r\n }\r\n\r\n const path: string = (Link.href as Msdyn365.ILinkData).destinationUrl || (Link.href as string);\r\n const newUrl = new URL(path, this.props.context.request.url.requestUrl).href;\r\n Link.href = newUrl;\r\n return Link;\r\n }\r\n}\r\n\r\nexport default FooterItemView;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce, {\n constructViewportInformationForImage,\n getImageResizeUrl,\n getLargestGridSettingViewportName,\n getMinMaxWidth,\n IAny,\n IGeneric,\n IViewPort,\n Viewport\n} from '@msdyn365-commerce/core-internal';\nimport { cloneDeep as _cloneDeep } from 'lodash';\nimport {\n BackgroundImageRepeat,\n BackgroundImageSize,\n IBackgroundImageAttributes,\n IBackgroundImageLazyloadAttributes,\n IBackgroundImageProps,\n IBackgroundImageStyle\n} from './container-background-image-interfaces';\n\nconst getBackgroundRepeatProperty = (size: string | undefined, repeat: string | undefined): BackgroundImageRepeat => {\n if (!size || size === 'cover') {\n return 'no-repeat';\n }\n switch (repeat) {\n case 'noRepeat':\n return 'no-repeat';\n case 'repeat':\n return 'repeat';\n default:\n return 'no-repeat';\n }\n};\n\nconst getBackgroundSizeProperty = (size: string | undefined): BackgroundImageSize => {\n switch (size) {\n case 'cover':\n return 'cover';\n case 'contain':\n return 'contain';\n case 'default':\n default:\n return undefined;\n }\n};\n\nconst getDefaultViewports = (): IViewPort => {\n return {\n xs: {\n w: 800,\n h: 600\n },\n sm: {\n w: 1200,\n h: 900\n },\n md: {\n w: 1600,\n h: 900\n },\n lg: {\n w: 1600,\n h: 700\n },\n xl: {\n w: 1600,\n h: 700\n }\n };\n};\n\nconst getAuthoringViewport = (moduleName: string | undefined, layout: string | undefined): IViewPort | undefined => {\n if (!msdyn365Commerce.isBrowser) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const authoringHelper = (window as any)._msdyn365.authoringHelper;\n if (!authoringHelper) {\n return;\n }\n\n // if authoring helper is setup, component is rendering from site builder. Build viewport based on layout selected.\n return constructViewportInformationForImage(moduleName, layout, 'backgroundImage', authoringHelper?.themeSettings) as IViewPort;\n};\n\nexport const buildBackgroundImageStylesByViewport = (props: IBackgroundImageProps): IGeneric => {\n const { containerType, image, request, configs } = props;\n\n const gridSettings = request.gridSettings ?? {};\n const imageSettings = image.imageSettings;\n\n const styles: IGeneric = {};\n\n const largestGridSettingViewportName = getLargestGridSettingViewportName(gridSettings);\n if (largestGridSettingViewportName && imageSettings) {\n // in site builder the layout may change, so use authoring viewports.\n const authoringViewPorts = getAuthoringViewport(containerType, configs?.layout);\n const imgSettings = {\n ...imageSettings,\n viewports: { ..._cloneDeep(authoringViewPorts || imageSettings.viewports || getDefaultViewports()) }\n };\n\n // Skip resizing width and height for background images.\n const skipWidthAndHeightSettings = true;\n Object.keys(imgSettings.viewports).map(vp => {\n const viewport = vp as Viewport;\n const minMaxWidth = getMinMaxWidth(gridSettings, imgSettings, viewport, largestGridSettingViewportName);\n const urlSrc = getImageResizeUrl(\n image.src,\n // eslint-disable-next-line security/detect-object-injection -- bracket object notation with user input present leads to eslint security issue.\n imgSettings.viewports[viewport],\n imgSettings,\n skipWidthAndHeightSettings,\n image?.externalProvider,\n request?.apiSettings\n );\n // eslint-disable-next-line security/detect-object-injection -- bracket object notation with user input present leads to eslint security issue.\n styles[viewport] = {\n maxWidth: minMaxWidth.max,\n minWidth: minMaxWidth.min,\n // eslint-disable-next-line security/detect-object-injection -- bracket object notation with user input present leads to eslint security issue.\n minHeight: imgSettings.viewports[viewport]?.h,\n backgroundImage: urlSrc,\n backgroundRepeat: getBackgroundRepeatProperty(configs?.size, configs?.repeat),\n backgroundSize: getBackgroundSizeProperty(configs?.size),\n backgroundPosition: 'center center'\n };\n });\n }\n\n return styles;\n};\n\nexport const setStyleAttribute = (currentStyle: IBackgroundImageStyle): IGeneric => {\n let style: IGeneric = {};\n if (currentStyle) {\n style = { ...currentStyle };\n style['minWidth'] = undefined;\n style['width'] = '100%';\n if (currentStyle.backgroundImage) {\n style['backgroundImage'] = `url('${currentStyle.backgroundImage}')`;\n }\n }\n return style;\n};\n\nexport const getBackgroundImageLazyloadAttributes = (\n className: string,\n currentStyle: IBackgroundImageStyle | undefined,\n styles: IGeneric\n): IBackgroundImageLazyloadAttributes => {\n const attributes = {\n role: 'img',\n className: `${className} lazyload`,\n 'data-bgset': getDataBgSetAttribute(styles)\n };\n\n if (currentStyle) {\n attributes['style'] = setStyleAttribute(currentStyle);\n // On lazyload, lazysizes plugin should pick which background image to use based on data-bgset attribute.\n attributes['style']['backgroundImage'] = undefined;\n }\n return attributes;\n};\n\nexport const getBackgroundImageAttributes = (\n className: string,\n currentStyle: IBackgroundImageStyle | undefined\n): IBackgroundImageAttributes => {\n const attributes = {\n role: 'img',\n className\n };\n\n if (currentStyle) {\n attributes['style'] = setStyleAttribute(currentStyle);\n }\n return attributes;\n};\n\nexport const getBgSetMinMaxWidthAttribute = (style: IBackgroundImageStyle): string => {\n if (style.maxWidth) {\n return `[(max-width: ${style.maxWidth}px)]`;\n }\n return '';\n};\n\nexport const getDataBgSetAttribute = (styles: IGeneric): string => {\n const dataBgSetAttributes: string[] = [];\n Object.keys(styles).map(vp => {\n // eslint-disable-next-line security/detect-object-injection -- bracket object notation with user input present leads to eslint security issue.\n if (styles[vp].backgroundImage) {\n // eslint-disable-next-line security/detect-object-injection -- bracket object notation with user input present leads to eslint security issue.\n dataBgSetAttributes.push(`${styles[vp].backgroundImage} ${getBgSetMinMaxWidthAttribute(styles[vp])}`);\n }\n });\n\n return dataBgSetAttributes.join(' | ');\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport msdyn365Commerce, { getLargestGridSettingViewportName, IGeneric, isAuthoringEditEnabled } from '@msdyn365-commerce/core-internal';\nimport * as React from 'react';\nimport { isEqual as _isEqual } from 'lodash';\nimport {\n buildBackgroundImageStylesByViewport,\n getBackgroundImageAttributes,\n getBackgroundImageLazyloadAttributes\n} from './container-background-image-helper';\nimport {\n IBackgroundImageAttributes,\n IBackgroundImageProps,\n IBackgroundImageState,\n IBackgroundImageStyle\n} from './container-background-image-interfaces';\n\nconst BACKGROUND_IMAGE_CLASS_NAME = 'ms-container-background-image';\n\n/**\n * BackgroundImage component\n * @extends {React.PureComponent}\n */\nexport class BackgroundImage extends React.PureComponent {\n private stylesByViewport: IGeneric;\n private currentStyle: IBackgroundImageStyle | undefined;\n private mounted: boolean;\n\n constructor(props: IBackgroundImageProps, state: IBackgroundImageState) {\n super(props);\n this.stylesByViewport = buildBackgroundImageStylesByViewport(this.props);\n this._onChangeHandler = this._onChangeHandler.bind(this);\n this.currentStyle = this._getCurrentStyle();\n this.mounted = false;\n this._componentResize = this._componentResize.bind(this);\n this._getCurrentStyle = this._getCurrentStyle.bind(this);\n this.state = { updateAttributes: false };\n }\n\n public componentDidMount(): void {\n if (msdyn365Commerce.isBrowser) {\n window.addEventListener('resize', this._componentResize);\n this.mounted = true;\n this._componentResize();\n }\n }\n\n public componentWillUnmount(): void {\n if (msdyn365Commerce.isBrowser) {\n window.removeEventListener('resize', this._componentResize);\n this.mounted = false;\n }\n }\n\n public shouldComponentUpdate(nextProps: IBackgroundImageProps, nextState: { updateAttributes: boolean }): boolean {\n if (\n this.state !== nextState ||\n this.props.request?.gridSettings !== nextProps.request?.gridSettings ||\n this.props.configs.repeat !== nextProps.configs.repeat ||\n this.props.configs.size !== nextProps.configs.size ||\n this.props.configs.layout !== nextProps.configs.layout ||\n this.props.image?.imageSettings !== nextProps.image?.imageSettings ||\n this.props.image?.src !== nextProps.image?.src\n ) {\n return true;\n }\n return false;\n }\n\n public render(): JSX.Element | null {\n const { children } = this.props;\n\n try {\n this.stylesByViewport = buildBackgroundImageStylesByViewport(this.props);\n this.currentStyle = this._getCurrentStyle();\n\n if (this.currentStyle) {\n const backgroundImageClassName = isAuthoringEditEnabled(this.props.request)\n ? `${BACKGROUND_IMAGE_CLASS_NAME} ms-editable-field enabled`\n : BACKGROUND_IMAGE_CLASS_NAME;\n const processedAtributes = this._processAttributes(\n backgroundImageClassName,\n this.currentStyle,\n this.stylesByViewport,\n this._isLazyload()\n );\n const attributes = this._getAttributes(processedAtributes);\n const eventHandlers = isAuthoringEditEnabled(this.props.request) ? { onDoubleClick: this._onChangeHandler } : {};\n\n if (this.state.updateAttributes) {\n // Update component with the latest attributes.\n return (\n
\n {children}\n
\n );\n } else if (this._isLazyload()) {\n // On lazyload, only include the class name on the first render.\n return (\n
\n {children}\n
\n );\n } else {\n // On lazyload disabled, render the default attributes from server side.\n return (\n
\n {children}\n
\n );\n }\n } else {\n // in no style is found, return the container content.\n return <>{children};\n }\n } catch {\n // in case of any failure, return the container content.\n return <>{children};\n }\n }\n\n private _processAttributes(\n className: string,\n currentStyle: IBackgroundImageStyle,\n stylesByViewport: IGeneric,\n lazyLoad: boolean\n ) {\n if (lazyLoad) {\n return getBackgroundImageLazyloadAttributes(className, currentStyle, stylesByViewport);\n } else {\n return getBackgroundImageAttributes(className, currentStyle);\n }\n }\n\n private _getAttributes(processedAtributes: IBackgroundImageAttributes) {\n return { ...processedAtributes, style: { ...processedAtributes?.style } };\n }\n\n private _onChangeHandler(event: React.SyntheticEvent | { target: { value: string } }): void {\n if (event.target === (event as React.SyntheticEvent).currentTarget) {\n const binding: any = this.props.image;\n const eventTarget: any = event.target;\n binding.$type = eventTarget.value;\n }\n }\n\n private _componentResize(): void {\n if (msdyn365Commerce.isBrowser) {\n const selectedStyle = this._getCurrentStyle();\n\n if (this.mounted || (selectedStyle && !_isEqual(this.currentStyle, selectedStyle))) {\n this.setState({ updateAttributes: true });\n }\n }\n }\n\n private _getCurrentStyle(): IBackgroundImageStyle | undefined {\n if (msdyn365Commerce.isBrowser) {\n const winInnerWidth: number = window.innerWidth;\n let selectedStyle: IBackgroundImageStyle | undefined;\n Object.keys(this.stylesByViewport).map(vp => {\n if (\n // eslint-disable-next-line security/detect-object-injection -- bracket object notation with user input present leads to eslint security issue.\n (this.stylesByViewport[vp]?.minWidth || this.stylesByViewport[vp]?.maxWidth) &&\n // eslint-disable-next-line security/detect-object-injection -- bracket object notation with user input present leads to eslint security issue.\n (this.stylesByViewport[vp]?.minWidth || 0) <= winInnerWidth &&\n // eslint-disable-next-line security/detect-object-injection -- bracket object notation with user input present leads to eslint security issue.\n winInnerWidth <= (this.stylesByViewport[vp]?.maxWidth || Number.MAX_SAFE_INTEGER)\n ) {\n // eslint-disable-next-line security/detect-object-injection -- bracket object notation with user input present leads to eslint security issue.\n selectedStyle = this.stylesByViewport[vp];\n }\n });\n return selectedStyle;\n } else {\n return this._getDefaultStyle();\n }\n }\n\n private _isLazyload(): boolean {\n // Lazyload by default if nothing is specified\n return !this.props.image?.imageSettings?.disableLazyLoad;\n }\n\n private _getDefaultStyle(): IBackgroundImageStyle | undefined {\n const { request } = this.props;\n const largestGridSettingViewportName = getLargestGridSettingViewportName(request.gridSettings ?? {});\n // eslint-disable-next-line security/detect-object-injection -- bracket object notation with user input present leads to eslint security issue.\n return this.stylesByViewport[largestGridSettingViewportName];\n }\n\n private _getDefaultAttributes(): IBackgroundImageAttributes {\n const style = this._getDefaultStyle();\n const processedAtributes = style\n ? this._processAttributes(BACKGROUND_IMAGE_CLASS_NAME, style, this.stylesByViewport, this._isLazyload())\n : {};\n return this._getAttributes(processedAtributes);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ContentEditableEvent, IImageData, IRequestContext, Text } from '@msdyn365-commerce/core';\nimport * as React from 'react';\nimport { BackgroundImage } from './container-background-image/container-backgroud-image';\n\n/**\n * Heading options\n */\nexport interface IHeadingComponentProps {\n /**\n * Heading text\n */\n headingText?: string;\n /**\n * Heading tag (h1, h2, h3, h4, h5, h6)\n */\n tag?: HeadingTag;\n /**\n * Heading text size (sm, md, lg, xl)\n */\n textSize?: TextSize;\n\n requestContext: IRequestContext;\n\n handleTextChange(event: ContentEditableEvent): string;\n}\n\nexport type HeadingTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\nexport type TextSize = 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Container class options\n */\nexport interface IContainerProps {\n /**\n * CSS class name\n */\n className?: string;\n /**\n * Bootstrap supported container types\n */\n containerType?: string;\n /**\n * type name\n */\n typeName?: string;\n /**\n * id of container\n */\n id?: string;\n /**\n * React children\n */\n children: React.ReactNode;\n /**\n * Request context\n */\n request?: IRequestContext;\n /**\n * background image\n */\n backgroundImage?: IImageData;\n /**\n * background image repeat property\n */\n backgroundImageRepeat?: string;\n /**\n * background image size property\n */\n backgroundImageSize?: string;\n /**\n * module layout property\n */\n moduleLayout?: string;\n /**\n * background color\n */\n backgroundColor?: string;\n}\n\nconst getContainerType = (containerType: string | undefined) => {\n switch (containerType) {\n case 'container':\n return 'container';\n case 'fluid':\n default:\n return 'fluid';\n }\n};\n\n/**\n * HOC to create bootstrap container div. If no container type is specified children are rendered.\n * @param options IContainerClasses\n */\nexport const Container: React.SFC = (props: IContainerProps): JSX.Element => {\n const {\n containerType,\n className,\n typeName,\n id,\n children,\n backgroundImage,\n request,\n backgroundImageRepeat,\n backgroundImageSize,\n moduleLayout,\n backgroundColor\n } = props;\n const customClassName = className ? ` ${className}` : '';\n\n let containerContent = children;\n if (containerType) {\n containerContent =
{containerContent}
;\n }\n\n if (backgroundImage && backgroundImage.src && backgroundImage.imageSettings && request) {\n containerContent = (\n \n {containerContent}\n \n );\n }\n\n const containerStyle: React.CSSProperties | undefined = backgroundColor ? { backgroundColor } : undefined;\n\n return containerType ? (\n
\n {containerContent}\n
\n ) : (\n
\n {containerContent}\n
\n );\n};\n\nexport const HeadingComponent = (props: IHeadingComponentProps & { className: string }): JSX.Element | null => {\n const { tag, headingText, textSize, className } = props;\n const Tag = tag || 'h2';\n const classNameWithHeading = textSize ? `heading ${textSize} ${className}` : `heading ${className}`;\n return (\n (headingText && (\n \n )) ||\n null\n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ContentEditableEvent } from '@msdyn365-commerce/core';\nimport { LogLevel } from '@msdyn365-commerce/telemetry-internal';\nimport React, { ReactNode } from 'react';\nimport { Container, HeadingComponent, IHeadingComponentProps } from '../../components/base-components';\nimport { getColClassArray, showErrors } from '../../utils/classnames';\nimport { IDefaultContainer2SlotsData } from './default-container-2-slots.data';\nimport { IDefaultContainer2SlotsProps } from './default-container-2-slots.props.autogenerated';\n\ninterface IColSizes {\n left: string[];\n right: string[];\n}\n\n/**\n * Default container that displays 2 modules\n * CoreComponent component\n * @extends {React.PureComponent>}\n */\nclass Default2SlotContainer extends React.PureComponent> {\n constructor(props: IDefaultContainer2SlotsProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { slots, telemetry, context, config, data } = this.props;\n telemetry.log(LogLevel.Debug, \"Default 2 Slot Container rendering for '{id}/{typeName}'\", {\n values: [this.props.id, this.props.typeName]\n });\n\n const content = slots && slots.content;\n const slotsClassNames = this._getColClassName();\n if (content && content.length > 2) {\n telemetry.log(LogLevel.Warning, 'Default 2 Slot Container passed more than 2 slots');\n }\n const heading = config.heading || data.heading;\n const headingProps: IHeadingComponentProps = {\n ...heading,\n handleTextChange: this.handleTextChange,\n requestContext: this.props.context.request\n };\n return (\n \n {heading && }\n {content && content[0] &&
{content[0]}
}\n {content && content[1] &&
{content[1]}
}\n <>\n {showErrors(context) &&\n content &&\n content.slice(2, content.length - 1).map((slot: ReactNode, index: number) => {\n return (\n
\n
\n
\n Slot exceeded maximum number of slots supported by container. (2)\n
\n
\n
\n );\n })}\n \n \n );\n }\n\n public handleTextChange = (event: ContentEditableEvent) => (this.props.config.heading!.headingText = event.target.value);\n /**\n * Captures left and right column classnames from this.props.config. Returns col if no options specified.\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _getColClassName = (): IColSizes => {\n const { config } = this.props;\n\n const classNames = getColClassArray(config);\n\n if (!classNames.length) {\n return {\n left: ['col'],\n right: ['col']\n };\n }\n\n return classNames.reduce(\n (memo: IColSizes, [left, right]: string[]) => {\n memo.left.push(left);\n memo.right.push(right);\n return memo;\n },\n { left: [], right: [] }\n );\n };\n}\n\nexport default Default2SlotContainer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ContentEditableEvent } from '@msdyn365-commerce/core';\nimport { LogLevel } from '@msdyn365-commerce/telemetry-internal';\nimport React, { ReactNode } from 'react';\nimport { Container, HeadingComponent, IHeadingComponentProps } from '../../components/base-components';\nimport { getColClassArray, showErrors } from '../../utils/classnames';\nimport { IDefaultContainer3SlotsData } from './default-container-3-slots.data';\nimport { IDefaultContainer3SlotsProps } from './default-container-3-slots.props.autogenerated';\n\ninterface IColSizes {\n left: string[];\n center: string[];\n right: string[];\n}\n\n/**\n *\n * CoreComponent component\n * @extends {React.PureComponent>}\n */\nclass Default3SlotContainer extends React.PureComponent> {\n constructor(props: IDefaultContainer3SlotsProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { slots, telemetry, context, config, data } = this.props;\n\n const slotsClassNames = this._getColClassName();\n const content = slots && slots.content;\n\n telemetry.log(LogLevel.Debug, \"Default 3 Slot Container rendering for '{id}/{typeName}'\", {\n values: [this.props.id, this.props.typeName]\n });\n if (content && content.length > 3) {\n telemetry.log(LogLevel.Warning, 'Default 3 Slot Container passed more than 3 slots');\n }\n const heading = config.heading || data.heading;\n const headingProps: IHeadingComponentProps = {\n ...heading,\n handleTextChange: this.handleTextChange,\n requestContext: this.props.context.request\n };\n return (\n \n {heading && }\n {content && content[0] &&
{content[0]}
}\n {content && content[1] &&
{content[1]}
}\n {content && content[2] &&
{content[2]}
}\n <>\n {showErrors(context) &&\n content &&\n content.slice(2, content.length - 1).map((slot: ReactNode, index: number) => {\n return (\n
\n
\n
\n Slot exceeded maximum number of slots supported by container. (3)\n
\n
\n
\n );\n })}\n \n \n );\n }\n\n public handleTextChange = (event: ContentEditableEvent) => (this.props.config.heading!.headingText = event.target.value);\n /**\n * Captures left and right column classnames from this.props.config. Returns col if no options specified.\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _getColClassName = (): IColSizes => {\n const { config } = this.props;\n\n const classNames = getColClassArray(config);\n\n if (!classNames.length) {\n return {\n left: ['col'],\n center: ['col'],\n right: ['col']\n };\n }\n\n return classNames.reduce(\n (memo: IColSizes, [left, center, right]: string[]) => {\n memo.left.push(left);\n memo.center.push(center);\n memo.right.push(right);\n return memo;\n },\n { left: [], center: [], right: [] }\n );\n };\n}\n\nexport default Default3SlotContainer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ContentEditableEvent } from '@msdyn365-commerce/core';\nimport { LogLevel } from '@msdyn365-commerce/telemetry-internal';\nimport * as React from 'react';\nimport { Container, HeadingComponent, IHeadingComponentProps } from '../../components/base-components';\nimport { colWidths } from '../../utils/classnames';\nimport { IDefaultContainerData } from './default-container.data';\nimport { childrenWidth as childrenWidthEnum, IDefaultContainerProps, layout as layoutEnum } from './default-container.props.autogenerated';\n\n/**\n *\n * CoreComponent component\n * @extends {React.PureComponent>}\n */\nclass DefaultContainer extends React.PureComponent> {\n constructor(props: IDefaultContainerProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { slots, telemetry, config, data } = this.props;\n telemetry.log(LogLevel.Debug, \"Default Container rendering for '{id}/{typeName}'\", {\n values: [this.props.id, this.props.typeName]\n });\n\n const heading = config.heading || data.heading;\n const headingProps: IHeadingComponentProps = {\n ...heading,\n handleTextChange: this.handleTextChange,\n requestContext: this.props.context.request\n };\n\n return (\n \n {heading && }\n {slots &&\n slots.content &&\n slots.content.map((children: React.ReactNode, index: number) => {\n return (\n
\n {children}\n
\n );\n })}\n \n );\n }\n\n public handleTextChange = (event: ContentEditableEvent) => (this.props.config.heading!.headingText = event.target.value);\n\n private _getChildColClassName(): string {\n const {\n config: { layout, childrenWidth }\n } = this.props;\n switch (layout) {\n case layoutEnum.flow:\n return childrenWidth === childrenWidthEnum.auto ? 'col-12 col-md' : this._getWidthClass(childrenWidth);\n case layoutEnum.stacked:\n default:\n return 'col-12';\n }\n }\n\n private _getWidthClass(s?: childrenWidthEnum): string {\n return colWidths.get(s || childrenWidthEnum.four) || 'col-12';\n }\n}\n\nexport default DefaultContainer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICoreContext } from '@msdyn365-commerce/core';\nimport * as twoSlots from '../modules/default-container-2-slots/default-container-2-slots.props.autogenerated';\nimport * as threeSlots from '../modules/default-container-3-slots/default-container-3-slots.props.autogenerated';\n\n// eslint-disable-next-line security/detect-unsafe-regex\nconst sizePattern = /col(_(\\d|auto){1,2}){2,}/;\n\nexport interface IShowErrorOptions {\n isDebug?: boolean;\n isEditor?: boolean;\n}\n\nexport interface IViewPortOptions {\n xsmall?: threeSlots.xsmall | twoSlots.xsmall;\n small?: threeSlots.small | twoSlots.small;\n medium?: threeSlots.medium | twoSlots.medium;\n large?: threeSlots.large | twoSlots.large;\n}\n\nconst translatePrefix = (prefix: `large` | `medium` | `small` | `xsmall` | undefined) => {\n switch (prefix && prefix.toLowerCase()) {\n case 'large':\n return 'lg';\n case 'medium':\n return 'md';\n case 'small':\n return 'sm';\n case 'xsmall':\n default:\n return '';\n }\n};\n\n/**\n * converts config option and size to bootstrap col class name\n * If size is auto or config option is invalid col-auto will be returned\n * If size is xsmall or size is invalid col-{config} will be returned\n * @param config configuration option e.g. col_12_12\n * @param size bootstrap gridsize\n */\nexport const getColumnSizes = (config: string, size?: `large` | `medium` | `small` | `xsmall`): string[] | boolean => {\n if (!sizePattern.exec(config)) {\n return false;\n }\n const cols = config.split('_').slice(1);\n const translatedSize = translatePrefix(size);\n const sizePrefix = (translatedSize && `-${translatedSize}`) || '';\n return cols.map((colWidth: string) => `col${sizePrefix}-${colWidth}`);\n};\n\nexport const showErrors = (context?: ICoreContext): Boolean => {\n const { isDebug, isEditor }: IShowErrorOptions = (context && context.request && context.request.params) || {};\n return !!isDebug || !!isEditor;\n};\n\n/**\n * Converts viewport configuration into a two dimensional array of class names\n */\nexport const getColClassArray = (options: IViewPortOptions): string[][] =>\n (\n [\n options.xsmall && getColumnSizes(options.xsmall),\n options.small && getColumnSizes(options.small, 'small'),\n options.medium && getColumnSizes(options.medium, 'medium'),\n options.large && getColumnSizes(options.large, 'large')\n ].filter(Boolean)\n );\n\nexport const colWidths = new Map([\n ['one', 'col-md-1'],\n ['two', 'col-md-2'],\n ['three', 'col-md-3'],\n ['four', 'col-md-4'],\n ['six', 'col-md-6'],\n ['twelve', 'col-md-12']\n]);\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 { IDefaultPageSummaryData } from './default-page-summary.data';\nimport { IDefaultPageSummaryProps } from './default-page-summary.props.autogenerated';\n\n/**\n *\n * DefaultPageSummaryMetadata component.\n * @extends {React.PureComponent}\n */\nclass DefaultPageSummary extends React.PureComponent> {\n public render(): JSX.Element {\n if (this.props.data.pageSummary.result === undefined) {\n throw new Error('PageSummaryData input to page-summary is undefined. Unable to generate page-summary');\n }\n let {\n data: {\n pageSummary: {\n result: { title, description, keywords, sharingImageUrl, faviconUrl }\n }\n }\n } = this.props;\n\n const {\n config,\n context,\n data: {\n pageSummary: {\n result: { canonicalUrl }\n }\n }\n } = this.props;\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 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 {!config.disableOgTags && this._renderOgTags(pageTitle, description, sharingImageUrl)}\n {!config.disableTwitterTags && this._renderTwitterTags(pageTitle, description, sharingImageUrl)}\n \n );\n }\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 private _renderTwitterTags(\n title: string | undefined,\n description: string | undefined,\n sharingImageUrl: string | undefined\n ): JSX.Element {\n return (\n \n {title && }\n {description && }\n {sharingImageUrl && }\n \n \n );\n }\n\n private _constructPageTitle(title: string | undefined, app: IGeneric): string | undefined {\n if (!title) {\n title = '';\n }\n\n const moduleConfig = this.props.config;\n if (moduleConfig && moduleConfig.ignoreTitleSuffixPrefix) {\n return title;\n }\n\n const appConfig = app && app.platform;\n if (appConfig) {\n if (appConfig.pageTitlePrefix) {\n title = (appConfig.pageTitlePrefix as string) + title;\n }\n if (appConfig.pageTitleSuffix) {\n title += appConfig.pageTitleSuffix as string;\n }\n }\n\n return title;\n }\n}\n\nexport default DefaultPageSummary;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\n/**\n * Product specification table row.\n */\nexport interface IProductSpecificationTableRow {\n productName?: string;\n cellData?: React.ReactNode;\n className?: string;\n}\n\n/**\n * Product specification table row component.\n * @param props - For product specification table row.\n * @param props.productName - Product name.\n * @param props.cellData - Cell data.\n * @param props.className - Class name.\n * @returns - Returns JSX element.\n */\nexport const ProductSpecificationTableRow: React.FC = ({ productName, cellData, className }) => (\n \n \n {/* eslint-disable-next-line react/no-danger */}\n \n \n {cellData}\n \n);\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 { AttributeValue } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Drawer, IModuleProps, INodeProps, Module } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant } from '../..';\nimport { ProductSpecificationTableRow } from './components/product-specification-table-stucture';\nimport { IProductSpecificationData } from './product-specification.data';\nimport { displayStyle, IProductSpecificationProps } from './product-specification.props.autogenerated';\n\n/**\n * Maintain Drawer State.\n */\nexport interface IProductSpecificationState {\n isDrawerOpen: boolean;\n isAdditionalMediaDrawerOpen: boolean;\n drawerListId: number | undefined;\n}\n\n/**\n * Product specification view props.\n */\nexport interface IProductSpecificationViewProps extends IProductSpecificationProps<{}> {\n ProductSpecification: IModuleProps;\n ProductSpecificationTableProps: INodeProps;\n ProductSpecificationTableBodyProps: INodeProps;\n productSpecificationResult?: (JSX.Element | null)[];\n\n title?: React.ReactNode;\n isAccrodion?: boolean;\n handleText?(event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * Check for display style either accordion or table.\n */\nexport interface IProductSpecificationExtentedProps extends IProductSpecificationProps {\n displayStyle?: displayStyle;\n}\n\n/**\n *\n * ProductSpecification component.\n * @extends {React.Component>}\n */\n@observer\nclass ProductSpecification extends React.Component {\n public constructor(props: IProductSpecificationExtentedProps) {\n super(props);\n this.state = {\n isDrawerOpen: false,\n isAdditionalMediaDrawerOpen: false,\n drawerListId: undefined\n };\n }\n\n public async componentDidMount(): Promise {\n const { context, data, telemetry } = this.props;\n const catalogId = Msdyn365.getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n reaction(\n () => (data.product.result ? data.product.result.RecordId : null),\n () => {\n if (context && data.product.result) {\n const actionInput = new AttributesForSelectedVariantInput(\n data.product.result.RecordId,\n\n +context.actionContext.requestContext.apiSettings.channelId,\n data.product.result,\n catalogId\n );\n\n getAttributesForSelectedVariant(actionInput, this.props.context.actionContext).catch((error: Error) => {\n telemetry.error(error.message);\n telemetry.debug('Unable to update attributes for Product');\n telemetry.error(error.message);\n });\n }\n }\n );\n }\n\n public shouldComponentUpdate(nextProps: IProductSpecificationExtentedProps, nextState: IProductSpecificationState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n let data: IProductSpecificationData;\n try {\n data = this.props.data;\n } catch (error) {\n this.props.telemetry.error(`Something went wrong ------${error}`);\n return
{error}
;\n }\n\n if (!data.productSpecificationData.result || data.productSpecificationData.result.length <= 0) {\n this.props.telemetry.error('Product specification content is empty, module wont render.');\n return null;\n }\n\n const { heading, className } = this.props.config;\n const { productSpecificationData } = this.props.data;\n const isAccrodion = this.props.config.displayStyle === displayStyle.accordion;\n const viewProps = {\n ...this.props,\n handleText: this.handleHeadingChange,\n ProductSpecification: {\n moduleProps: this.props,\n className: classnames('ms-product-specification', className)\n },\n ProductSpecificationTableProps: isAccrodion\n ? {\n moduleProps: this.props,\n className: classnames('ms-product-specification__accordion', className)\n }\n : {\n className: classnames('ms-product-specification__table table-striped table-bordered'),\n tag: 'table'\n },\n isAccrodion,\n ProductSpecificationTableBodyProps: isAccrodion\n ? {}\n : {\n className: '',\n tag: 'tbody'\n },\n title: heading?.text && (\n \n ),\n productSpecificationResult:\n productSpecificationData.result && (isAccrodion ? this._createDrawerBody(data) : this._createTableBody(data))\n } as IProductSpecificationViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle Heading Text Change.\n * @param event - Current event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n private _createTableBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const tableRows = content.productSpecificationData.result!.map((product, index) => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n\n if (!cellData) {\n return null;\n }\n\n return (\n <>\n \n \n );\n });\n\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\n tableRows.push(this._createAdditionalMediaDrawer());\n }\n\n return tableRows;\n }\n\n private _createDrawerBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n\n const drawers = content.productSpecificationData.result!.map(product => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n if (!cellData) {\n return null;\n }\n return (\n \n \n
{cellData}
\n \n
\n );\n });\n\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\n drawers.push(this._createAdditionalMediaDrawer());\n }\n\n return drawers;\n }\n private _createAdditionalMediaDrawer(): JSX.Element {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n\n return (\n \n {\n this.setState(prevState => ({\n ...prevState,\n isAdditionalMediaDrawerOpen: !prevState.isAdditionalMediaDrawerOpen\n }));\n }}\n >\n
\n \n
\n \n
\n );\n }\n\n private readonly _toggle = (drawerListId: number | undefined) => (): void => {\n if (this.state.drawerListId !== drawerListId) {\n this.setState({ drawerListId, isDrawerOpen: true });\n } else {\n this.setState({ drawerListId: undefined, isDrawerOpen: false });\n }\n };\n\n private _renderProductCell(product: AttributeValue): JSX.Element | null {\n switch (product.DataTypeValue) {\n case 0: // None\n // Return span here instead of null so the row still shows\n return ;\n case 1: // Currency\n return this._renderCurrencyCell(product);\n case 2: // DateTime\n return this._renderDateTimeCell(product);\n case 3: // Decimal\n return this._renderDecimalCell(product);\n case 4: // Integer\n return this._renderIntegerCell(product);\n case 5: // Text\n return this._renderTextCell(product);\n case 6: // TrueFalse\n return this._renderTrueFalseCell(product);\n case 40: // Video\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case 41: // 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 ${product.DataTypeValue} so skipping line`);\n return null;\n }\n }\n\n private _renderCurrencyCell(product: AttributeValue): JSX.Element | null {\n if (product.CurrencyValue !== null && product.CurrencyValue !== undefined) {\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n return null;\n }\n\n private _renderDateTimeCell(product: AttributeValue): JSX.Element | null {\n if (product.DateTimeOffsetValue?.toUTCString) {\n return {product.DateTimeOffsetValue.toUTCString()};\n }\n\n return null;\n }\n\n private _renderIntegerCell(product: AttributeValue): JSX.Element | null {\n if (product.IntegerValue !== null && product.IntegerValue !== undefined) {\n return {product.IntegerValue};\n }\n\n return null;\n }\n\n private _renderDecimalCell(product: AttributeValue): JSX.Element | null {\n if (product.FloatValue !== null && product.FloatValue !== undefined) {\n return {product.FloatValue};\n }\n\n return null;\n }\n\n private _renderTextCell(product: AttributeValue): JSX.Element | null {\n if (product.TextValue !== null && product.TextValue !== undefined) {\n // eslint-disable-next-line react/no-danger\n return ;\n }\n\n return null;\n }\n\n private _renderTrueFalseCell(product: AttributeValue): JSX.Element | null {\n // TODO 20369885 setting to default value is needed to work around a platform bug where\n // config string value does not get its default value.\n if (product.BooleanValue) {\n return {this.props.resources.trueValueText ? this.props.resources.trueValueText : 'Yes'};\n }\n return {this.props.resources.falseValueText ? this.props.resources.falseValueText : 'No'};\n }\n}\n\nexport default ProductSpecification;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductSpecificationViewProps } from './product-specification';\n\nconst ProductSpecificationView: React.FC = props => {\n const { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\n const rowdata =\n productSpecificationResult &&\n ArrayExtensions.hasElements(productSpecificationResult) &&\n productSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row));\n\n return rowdata && ArrayExtensions.hasElements(rowdata) ? (\n \n {props.title}\n \n {rowdata}\n \n \n ) : null;\n};\n\nexport default ProductSpecificationView;\n"],"names":["AccountWelcomeTile","React","constructor","handleHeadingChange","event","this","props","config","heading","text","target","value","render","data","className","accountInfo","accountInformation","result","_objectSpread","Name","viewProps","moduleProps","classnames","Msdyn365","tag","editProps","onEdit","requestContext","context","request","renderView","Module","Object","assign","imageSource","CittaProductVideo","attributes","srcAttribute","find","attribute","resources","attributeName","TextValue","ProductVideoContainer","player","width","src","controls","ShowContactInfo","_ref","showInfoProps","email","editButton","Node","AddContactInfo","_ref2","addFormProps","submitButton","cancelButton","inputGroupProps","label","error","input","_ref3","showContactInfo","addContactInfo","FooterItemView","_formatLinkData","Link","undefined","href","path","destinationUrl","newUrl","URL","url","requestUrl","FooterItem","_renderElement","HeadingContainer","linkText","image","role","getBackgroundRepeatProperty","size","repeat","getBackgroundSizeProperty","buildBackgroundImageStylesByViewport","_request$gridSettings","containerType","configs","gridSettings","imageSettings","styles","largestGridSettingViewportName","getLargestGridSettingViewportName","authoringViewPorts","getAuthoringViewport","moduleName","layout","msdyn365Commerce","isBrowser","authoringHelper","window","_msdyn365","constructViewportInformationForImage","themeSettings","imgSettings","viewports","_cloneDeep2","xs","w","h","sm","md","lg","xl","skipWidthAndHeightSettings","keys","map","vp","_imgSettings$viewport","viewport","minMaxWidth","getMinMaxWidth","urlSrc","getImageResizeUrl","externalProvider","apiSettings","maxWidth","max","minWidth","min","minHeight","backgroundImage","backgroundRepeat","backgroundSize","backgroundPosition","setStyleAttribute","currentStyle","style","getDataBgSetAttribute","dataBgSetAttributes","push","join","BACKGROUND_IMAGE_CLASS_NAME","BackgroundImage","state","super","stylesByViewport","_onChangeHandler","bind","_getCurrentStyle","mounted","_componentResize","updateAttributes","componentDidMount","addEventListener","componentWillUnmount","removeEventListener","shouldComponentUpdate","nextProps","nextState","_this$props$request","_nextProps$request","_this$props$image","_nextProps$image","_this$props$image2","_nextProps$image2","children","backgroundImageClassName","isAuthoringEditEnabled","processedAtributes","_processAttributes","_isLazyload","_getAttributes","eventHandlers","onDoubleClick","_getDefaultAttributes","_unused","lazyLoad","getBackgroundImageLazyloadAttributes","getBackgroundImageAttributes","currentTarget","binding","eventTarget","$type","selectedStyle","_isEqual2","setState","winInnerWidth","innerWidth","_this$stylesByViewpor","_this$stylesByViewpor2","_this$stylesByViewpor3","_this$stylesByViewpor4","Number","MAX_SAFE_INTEGER","_getDefaultStyle","_this$props$image3","disableLazyLoad","getContainerType","Container","typeName","id","backgroundImageRepeat","backgroundImageSize","moduleLayout","backgroundColor","customClassName","containerContent","containerStyle","HeadingComponent","headingText","textSize","Tag","classNameWithHeading","Text","handleTextChange","Default2SlotContainer","_getColClassName","classNames","getColClassArray","length","reduce","memo","left","right","slots","telemetry","log","LogLevel","Debug","values","content","slotsClassNames","Warning","headingProps","msdyn365__moduleLayout","showErrors","slice","slot","index","key","Default3SlotContainer","center","DefaultContainer","_getChildColClassName","childrenWidth","_getWidthClass","s","colWidths","get","sizePattern","getColumnSizes","exec","cols","split","translatedSize","prefix","toLowerCase","translatePrefix","sizePrefix","colWidth","isDebug","isEditor","params","options","xsmall","small","medium","large","filter","Boolean","Map","DefaultPageSummary","pageSummary","Error","title","description","keywords","sharingImageUrl","faviconUrl","canonicalUrl","sharingImage","pageTitle","_constructPageTitle","app","HtmlHeadInclude","name","rel","disableOgTags","_renderOgTags","disableTwitterTags","_renderTwitterTags","property","moduleConfig","ignoreTitleSuffixPrefix","appConfig","platform","pageTitlePrefix","pageTitleSuffix","ProductSpecificationTableRow","productName","cellData","scope","dangerouslySetInnerHTML","getRichTextHtml","ProductSpecification","_toggle","drawerListId","isDrawerOpen","isAdditionalMediaDrawerOpen","async","catalogId","validateCatalogId","reaction","product","RecordId","actionInput","AttributesForSelectedVariantInput","actionContext","channelId","getAttributesForSelectedVariant","catch","message","debug","_heading$tag","productSpecificationData","isAccrodion","displayStyle","handleText","ProductSpecificationTableProps","ProductSpecificationTableBodyProps","productSpecificationResult","_createDrawerBody","_createTableBody","_this$props$context$r","_this$props$data$addi","tableRows","_renderProductCell","OmniChannelMedia","additionalMediaLocations","_createAdditionalMediaDrawer","_this$props$context$r2","_this$props$data$addi2","accordionItemContainer","drawers","_product$Name","Drawer","collapseProps","timeout","isOpen","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","onToggle","additionalDownloadsText","prevState","mediaLocation","Uri","download","AltText","DataTypeValue","_renderCurrencyCell","_renderDateTimeCell","_renderDecimalCell","_renderIntegerCell","_renderTextCell","_renderTrueFalseCell","warning","CurrencyValue","CurrencyCode","_product$DateTimeOffs","DateTimeOffsetValue","toUTCString","IntegerValue","FloatValue","BooleanValue","trueValueText","falseValueText","__decorate","observer","rowdata","ArrayExtensions","hasElements","row","ObjectExtensions","isNullOrUndefined"],"sourceRoot":""}