{"version":3,"file":"static/js/d21290e30ecbbd41af8c.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/components/product-specification-table-stucture.tsx?c1c4","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/product-specification.tsx?6583","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/components/product-specification-table-stucture.tsx?b3b5","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/product-specification.props.autogenerated.ts?b490","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/product-specification.tsx?5f6b","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/product-specification.view.tsx?f7be","webpack://Msdyn365.Commerce.Online/./lib/product-specification/module-registration.js?26aa","webpack://Msdyn365.Commerce.Online/./src/dataActions/get-attributes-for-selected-variant.ts?e4b6","webpack://Msdyn365.Commerce.Online/./src/modules/product-specification/product-specification.view.tsx?7490","webpack://Msdyn365.Commerce.Online/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online/external var \"ReactDOM\"?853b"],"sourcesContent":["/*!\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\n/* eslint-disable no-duplicate-imports */\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","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IProductSpecification contentModule 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\n\r\nexport const enum displayStyle {\r\n accordion = 'accordion',\r\n table = 'table'\r\n}\r\n\r\nexport interface IProductSpecificationConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n displayStyle?: displayStyle;\r\n className?: string;\r\n clientRender?: boolean;\r\n}\r\n\r\nexport interface IProductSpecificationResources {\r\n trueValueText: string;\r\n falseValueText: string;\r\n additionalDownloadsText: 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 IProductSpecificationProps extends Msdyn365.IModule {\r\n resources: IProductSpecificationResources;\r\n config: IProductSpecificationConfig;\r\n}\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable no-duplicate-imports */\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 '@msdyn365-commerce-modules/product-specification';\nimport { ProductSpecificationTableRow } from './components/product-specification-table-stucture';\nimport { IProductSpecificationData } from './product-specification.data';\nimport { displayStyle, IProductSpecificationProps } from './product-specification.props.autogenerated';\n// import { CircularProgressbar, buildStyles } from 'react-circular-progressbar';\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 // @ts-ignore\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 const { heading, className } = this.props.config;\n const { productSpecificationData } = this.props.data;\n const isAccrodion = this.props.config.displayStyle === displayStyle.accordion;\n // @ts-ignore\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 // @ts-ignore\n let description = '';\n if (this.props.data.product.result && this.props.data.product.result['Description']) {\n description = this.props.data.product.result['Description'];\n }\n const spec = this.props.data.productSpecificationData.result ? this.props.data.productSpecificationData.result : [];\n const nutritionSpec = spec.filter(sp => {\n return sp.Name?.toLowerCase() === 'carbs' || sp.Name?.toLowerCase() === 'protein' || sp.Name?.toLowerCase() === 'fat';\n });\n let nutritionValues = [];\n if (nutritionSpec && nutritionSpec.length > 0) {\n nutritionValues = nutritionSpec.filter(value => {\n return Number(value?.TextValue) > 0;\n });\n }\n const blackListedSpecs = [\n 'carbs',\n 'protein',\n 'fat',\n 'products',\n 'featured',\n 'search keywords',\n 'image url',\n 'product info',\n 'shelf life (days)',\n 'hideOOS',\n 'stock status',\n 'sourced region',\n 'quick delivery limit',\n 'ecom_product_name',\n 'ecom_uom'\n ];\n const filteredSpec = spec.filter(sp => {\n return sp.Name && !blackListedSpecs.includes(sp.Name?.toLowerCase()) && sp?.TextValue !== '';\n });\n return (\n <>\n
\n {filteredSpec.map((key, index) => {\n if (key.TextValue && index !== 1) {\n return (\n <>\n
{key.Name}
\n
{key.TextValue}
\n \n );\n } else if (index === 1) {\n return (\n <>\n
{key.Name}
\n
{key.TextValue}
\n {/*
Product Info
\n
{description}
*/}\n {nutritionSpec && nutritionSpec.length > 0 && nutritionValues.length > 0 && (\n <>\n
Nutrition
\n
\n
\n {nutritionSpec.map((nutrition, index) => {\n // const rotationValue = Number(nutrition?.TextValue) / 100;\n return (\n <>\n
\n {nutrition.Name}{' '}\n \n {Number(nutrition.TextValue).toFixed(2)}gms\n \n
\n {/* \n
{nutrition.Name}
*/}\n \n );\n })}\n
\n
\n \n )}\n \n );\n } else {\n return '';\n }\n })}\n
\n \n );\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\n/* eslint-disable no-duplicate-imports */\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","const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['product-specification'] = {\n c: () => require('partner/modules/product-specification/product-specification.tsx'),\n $type: 'contentModule',\n da: [{name:'additionalMediaLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-additional-media-locations-for-selected-variant', runOn: 0},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'productSpecificationData', path:'@msdyn365-commerce-modules/product-specification/dist/lib/dataActions/get-attributes-for-selected-variant', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'product-specification',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/product-specification'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/product-specification/dist/lib/dataActions/get-attributes-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/product-specification/dist/lib/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-additional-media-locations-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-additional-media-locations-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|modules|product-specification|product-specification'] = {\n c: () => require('partner/modules/product-specification/product-specification.view.tsx'),\n cn: '__local__-__local__-product-specification'\n };\nviewDictionary['@msdyn365-commerce-modules|product-specification|modules|product-specification|product-specification'] = {\n c: () => require('@msdyn365-commerce-modules/product-specification/dist/lib/modules/product-specification/product-specification.view.js'),\n cn: '@msdyn365-commerce-modules-product-specification-product-specification'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\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, ProductsDataActions, SimpleProduct, StoreOperationsDataActions } from '@msdyn365-commerce/retail-proxy';\nimport {\n getAttributeValuesByConfiguration,\n getSelectedProductIdFromActionInput,\n getSelectedVariant,\n QueryResultSettingsProxy,\n SelectedVariantInput\n} from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Chains getting the SelectedVariant with GetActivePrice.\n */\nexport class AttributesForSelectedVariantInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n public catalogId: number;\n\n public selectedProduct: SimpleProduct | undefined;\n\n constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, catalogId?: number) {\n this.productId = productId;\n this.channelId = channelId;\n this.selectedProduct = selectedProduct;\n this.catalogId = catalogId || 0;\n }\n\n public getCacheKey = () => 'AttributesForSelectedVariant';\n\n public getCacheObjectType = () => 'ProductAttributeValue';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const createAttributesForSelectedVariantInput = (\n inputData: ICreateActionContext>\n): AttributesForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n const catalogId = getCatalogId(inputData.requestContext);\n\n if (productId) {\n return new AttributesForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId, undefined, catalogId);\n }\n throw new Error('Unable to create PriceForSelectedVariantInput, no productId found on module config or query');\n};\n\n/**\n * Calls the Retail API a get a list of dimension values for a given product.\n * @param input - The input.\n * @param context - The context.\n * @returns The attribute values.\n */\nexport async function getAttributesForSelectedVariantAction(\n input: AttributesForSelectedVariantInput,\n context: IActionContext\n): Promise {\n return Promise.resolve()\n .then(() => {\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\n\n if (!activeProduct) {\n const selectedVariantInput = new SelectedVariantInput(\n input.productId,\n input.channelId,\n undefined,\n undefined,\n context.requestContext\n );\n\n return getSelectedVariant(selectedVariantInput, context);\n }\n\n return activeProduct;\n })\n .then((productResult: SimpleProduct | null) => {\n const activeProduct: SimpleProduct | undefined = productResult;\n\n if (activeProduct) {\n return ProductsDataActions.getAttributeValuesAsync(\n {\n callerContext: context,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context)\n },\n activeProduct.RecordId,\n input.channelId,\n input.catalogId\n );\n }\n\n return null;\n })\n .then(async (attributeValues: AttributeValue[] | null) => {\n const channelInventoryConfiguration = await StoreOperationsDataActions.getInventoryConfigurationAsync({\n callerContext: context\n });\n\n return { attributeValues, channelInventoryConfiguration };\n })\n .then(result => {\n return getAttributeValuesByConfiguration(result.attributeValues, result.channelInventoryConfiguration);\n })\n .catch((error: Error) => {\n context.trace(error.message);\n throw new Error('[getPriceForSelectedVariantAction]Error executing action');\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/product-info/get-attributes-for-selected-variant',\n action: >getAttributesForSelectedVariantAction,\n input: createAttributesForSelectedVariantInput\n});\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","module.exports = React;","module.exports = ReactDOM;"],"names":["ProductSpecificationTableRow","_ref","productName","cellData","className","React","scope","dangerouslySetInnerHTML","getRichTextHtml","ProductSpecification","constructor","props","super","handleHeadingChange","event","this","config","heading","text","target","value","_toggle","drawerListId","state","setState","isDrawerOpen","undefined","isAdditionalMediaDrawerOpen","context","data","telemetry","catalogId","Msdyn365","request","validateCatalogId","reaction","product","result","RecordId","actionInput","AttributesForSelectedVariantInput","actionContext","requestContext","apiSettings","channelId","getAttributesForSelectedVariant","catch","error","message","debug","shouldComponentUpdate","nextProps","nextState","render","_heading$tag","productSpecificationData","length","isAccrodion","displayStyle","viewProps","_objectSpread","handleText","moduleProps","classnames","ProductSpecificationTableProps","tag","ProductSpecificationTableBodyProps","title","editProps","onEdit","productSpecificationResult","_createDrawerBody","_createTableBody","renderView","content","_this$props$context$r","_this$props$data$addi","tableRows","map","index","_renderProductCell","key","Name","app","OmniChannelMedia","additionalMediaLocations","push","_createAdditionalMediaDrawer","_this$props$context$r2","_this$props$data$addi2","accordionItemContainer","drawers","_product$Name","Module","Object","assign","Drawer","collapseProps","timeout","isOpen","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","onToggle","resources","additionalDownloadsText","prevState","mediaLocation","Uri","href","download","AltText","DataTypeValue","_renderCurrencyCell","_renderDateTimeCell","_renderDecimalCell","_renderIntegerCell","_renderTextCell","_renderTrueFalseCell","warning","CurrencyValue","CurrencyCode","_product$DateTimeOffs","DateTimeOffsetValue","toUTCString","IntegerValue","FloatValue","TextValue","BooleanValue","trueValueText","falseValueText","__decorate","observer","HeadingTag","accordion","description","spec","nutritionSpec","filter","sp","_sp$Name","_sp$Name2","_sp$Name3","toLowerCase","nutritionValues","Number","blackListedSpecs","filteredSpec","_sp$Name4","includes","nutrition","toFixed","rowdata","ArrayExtensions","hasElements","row","ObjectExtensions","isNullOrUndefined","Node","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","id","c","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","md","window","__bindings__","viewDictionary","cn","productId","selectedProduct","getCacheKey","getCacheObjectType","dataCacheType","createAttributesForSelectedVariantInput","inputData","getSelectedProductIdFromActionInput","getCatalogId","async","getAttributesForSelectedVariantAction","input","Promise","resolve","then","activeProduct","selectedVariantInput","SelectedVariantInput","getSelectedVariant","productResult","ProductsDataActions","callerContext","queryResultSettings","QueryResultSettingsProxy","getPagingFromInputDataOrDefaultValue","attributeValues","channelInventoryConfiguration","StoreOperationsDataActions","getAttributeValuesByConfiguration","trace","createObservableDataAction","action","module","exports","ReactDOM"],"sourceRoot":""}