{"version":3,"file":"static/js/8.ab6ffda5166097adb6c3.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/finance-calculator/finance-calculator.tsx?48ba","webpack://Msdyn365.Commerce.Online/./src/modules/finance-calculator/finance-calculator.view.tsx?d9b5","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-tiles/navigation-tiles.tsx?f4dc","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-tiles/components/NavTile.tsx?84ab","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-tiles/navigation-tiles.view.tsx?c70d","webpack://Msdyn365.Commerce.Online/./src/modules/two-column-layout/two-column-layout.tsx?f2c1","webpack://Msdyn365.Commerce.Online/./src/modules/two-column-layout/two-column-layout.view.tsx?49ab","webpack://Msdyn365.Commerce.Online/./src/modules/warranty/warranty.tsx?d58a","webpack://Msdyn365.Commerce.Online/./src/modules/warranty/warranty.view.tsx?2e6d","webpack://Msdyn365.Commerce.Online/./src/components/container-background-image/container-background-image-helper.ts?ce2e","webpack://Msdyn365.Commerce.Online/./src/components/container-background-image/container-backgroud-image.tsx?e863","webpack://Msdyn365.Commerce.Online/./src/components/base-components.tsx?daec","webpack://Msdyn365.Commerce.Online/./src/modules/default-container-2-slots/default-container-2-slots.tsx?8065","webpack://Msdyn365.Commerce.Online/./src/modules/default-container-3-slots/default-container-3-slots.tsx?ac77","webpack://Msdyn365.Commerce.Online/./src/modules/default-container/default-container.tsx?01c3","webpack://Msdyn365.Commerce.Online/./src/utils/classnames.ts?a0ff","webpack://Msdyn365.Commerce.Online/./src/modules/notifications-list/notifications-list.tsx?8377","webpack://Msdyn365.Commerce.Online/./src/modules/notifications-list/notifications-list.view.tsx?d466","webpack://Msdyn365.Commerce.Online/./src/modules/default-page-summary/default-page-summary.tsx?0c78"],"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\nimport * as React from 'react';\r\n\r\nimport { IFinanceCalculatorData } from './finance-calculator.data';\r\nimport { IFinanceCalculatorProps } from './finance-calculator.props.autogenerated';\r\nimport * as Msdyn365 from \"@msdyn365-commerce/core\";\r\n\r\nexport interface IFinanceCalculatorViewProps extends IFinanceCalculatorProps {\r\n title?: React.ReactNode;\r\n text?: React.ReactNode;\r\n moduleClass?: string;\r\n}\r\n\r\n/**\r\n *\r\n * FinanceCalculator component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass FinanceCalculator extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n const { heading, paragraph} = this.props.config;\r\n const financialCalculatorTitle = heading && (\r\n \r\n );\r\n const financialCalculatorText = paragraph && (\r\n \r\n );\r\n const financialCalculatorViewProps = {\r\n ...this.props,\r\n title: financialCalculatorTitle,\r\n text: financialCalculatorText,\r\n moduleClass: this.props.config.className || \"\"\r\n };\r\n return this.props.renderView(financialCalculatorViewProps) as React.ReactElement;\r\n }\r\n}\r\n\r\nexport default FinanceCalculator;\r\n","/*!\r\n * Example of how this should work!\r\n * https://www.bgefinancial.com/calculator\r\n */\r\n\r\nimport * as React from 'react';\r\nimport {IFinanceCalculatorViewProps} from './finance-calculator';\r\nimport {useEffect, useState} from \"react\";\r\n\r\nconst FinancialCalculatorBlockView: React.FC = props => {\r\n\tconst {title, text, moduleClass} = props;\r\n\tconst [query, setQuery] = useState(\"\");\r\n\tconst [cost, setCost] = useState([\"\"]);\r\n\tconst [buying, setBuying] = useState(\"\");\r\n\tconst [power, setPower] = useState(\"\");\r\n\tconst prime_rate:number = 8.5;\r\n\tconst rates: {year: number;rate: number}[] = [\r\n\t\t{year:2, rate:2.5},\r\n\t\t{year:3, rate:3.0},\r\n\t\t{year:4, rate:4.0},\r\n\t\t{year:5, rate:5.0}\r\n\t];\r\n\tconst formatter = new Intl.NumberFormat('en-US', {\r\n\t\tstyle: 'currency', currency: 'USD', minimumFractionDigits: 2\r\n\t})\r\n\r\n\tuseEffect(() => {\r\n\t\tconst timeOut = setTimeout(()=> {\r\n\t\t\tconst principal:number = Number(query);\r\n\t\t\t//Don't run calculations on values less than $999\r\n\t\t\tif(principal <= 999) {\r\n\t\t\t\tsetCost([\"\", \"\", \"\", \"\"]);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t//We have a valid number, run calculations ((10,000 * .085 * 5)+10,000)/5 = 2850 yearly payments\r\n\t\t\tconst payments:string[] = [];\r\n\t\t\tfor(const data of rates){\r\n\t\t\t\tconst rate = (prime_rate + data.rate)/100;\r\n\t\t\t\tpayments.push(`${formatter.format( ((principal * rate * data.year)+principal)/data.year )} yearly`);\r\n\t\t\t}\r\n\t\t\tsetCost(payments);\r\n\t\t}, 500);\r\n\t\treturn () => clearTimeout(timeOut);\r\n\t}, [query]);\r\n\tuseEffect(() => {\r\n\t\tconst timeOut = setTimeout(() => {\r\n\t\t\t//We have a valid number, run calculation ((tY)/(rt+1) = Initial Principal (inverse of the above equation)\r\n\t\t\tconst rate:number = (prime_rate + rates[3].rate)/100;\r\n\t\t\tsetPower((!(buying && buying.length > 3) ? \"\" : `${formatter.format( (5 * Number(buying)) / (rate * 5 +1) )}`));\r\n\t\t}, 500);\r\n\t\treturn () => clearTimeout(timeOut);\r\n\t}, [buying]);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t{title}\r\n\t\t\t{text}\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\tCalculate Payments by Purchase Price\r\n\t\t\t\t\t setQuery(event.target.value)}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
  • 2 years: {cost[0]}
  • \r\n\t\t\t\t\t\t
  • 3 years: {cost[1]}
  • \r\n\t\t\t\t\t\t
  • 4 years: {cost[2]}
  • \r\n\t\t\t\t\t\t
  • 5 years: {cost[3]}
  • \r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\tPurchasing Power by Yearly Budget\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t$\r\n\t\t\t\t\t\t setBuying(event.target.value)}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
\r\n\t\t\t\t\t

Overall Purchasing Power: {power}

\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default FinancialCalculatorBlockView;","import * as React from 'react';\r\nimport { IMenuItemData, INavigationTilesProps } from './navigation-tiles.props.autogenerated';\r\nimport { ContentEditableEvent, IImageSettings, Text } from '@msdyn365-commerce/core';\r\n\r\nexport interface INavigationTilesViewProps extends INavigationTilesProps<{}>{\r\n\theading?:object,\r\n\tnavTiles?: IMenuItemData[],\r\n\tclassName?: string,\r\n\timageSettings:IImageSettings\r\n}\r\n\r\n/**\r\n * NavigationTiles component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass NavigationTiles extends React.PureComponent>{\r\n\r\n\tpublic render(): JSX.Element | null {\r\n\t\tconst {\r\n\t\t\theading,\r\n\t\t\tnavTiles,\r\n\t\t\tclassName\r\n\t\t} = this.props.config;\r\n\r\n\t\tconst buildHeading = ():JSX.Element|null => {\r\n\t\t\tif(heading){\r\n\t\t\t\treturn ()\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn this.props.renderView({\r\n\t\t\t...this.props,\r\n\t\t\theading: buildHeading(),\r\n\t\t\tnavTiles: navTiles,\r\n\t\t\tclassName: className\r\n\t\t}) as React.ReactElement;\r\n\t}\r\n\r\n\tpublic handleTextChange = (event: ContentEditableEvent): void => {this.props.config.heading.text = event.target.value};\r\n}\r\n\r\nexport default NavigationTiles;\r\n","import * as React from 'react';\r\nimport cn from 'classnames';\r\nimport MsDyn365, { IImageData } from '@msdyn365-commerce/core';\r\nimport { IMenuItemData } from '../navigation-tiles.props.autogenerated';\r\n\r\ninterface INavTile{\r\n\tnavData: IMenuItemData;\r\n}\r\n\r\ninterface INavTileState{\r\n\tactive: boolean;\r\n}\r\n\r\nexport class NavTile extends React.Component{\r\n\tprivate readonly node: React.RefObject;\r\n\r\n\tconstructor(props: INavTile){\r\n\t\tsuper(props);\r\n\t\tthis.node = React.createRef();\r\n\t\tthis.state = { active:false };\r\n\t}\r\n\r\n\tpublic componentDidMount(): void{\r\n\t\tif (MsDyn365.isBrowser){\r\n\t\t\tdocument.body.addEventListener('mousedown', this._handleClickOutside);\r\n\t\t\t/*document.body.addEventListener('focusout', this._handleFocusOutside);*/\r\n\t\t}\r\n\t}\r\n\r\n\tpublic componentWillUnmount(): void{\r\n\t\tif (MsDyn365.isBrowser){\r\n\t\t\tdocument.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n\t\t\t/*document.body.removeEventListener('focusout', this._handleFocusOutside, false);*/\r\n\t\t}\r\n\t}\r\n\r\n\t/* Sub Component Builders */\r\n\tprivate _buildButtonImage(imageData: IImageData){\r\n\t\treturn {imageData.altText};\r\n\t}\r\n\r\n\tpublic render(){\r\n\t\tconst { navData } = this.props;\r\n\t\tconst elementID = `${navData.linkText }-dropdown-menu`;\r\n\t\t//Do not render without the main title\r\n\t\tif(!navData.linkText || !navData.image){return null}\r\n\r\n\t\treturn (
\r\n\t\t\t\r\n\t\t\t\t{this._buildButtonImage(navData.image)}\r\n\t\t\t\t{navData.linkText}\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t{navData.subTiles?.map((st,idx) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t{st.image.altText}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{st.linkText}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)\r\n\t\t\t\t})}\r\n\t\t\t
\r\n\t\t
);\r\n\t}\r\n\r\n\tprivate readonly _handleClick = () => this.setState({active: !this.state.active});\r\n\tprivate readonly _handleClickOutside = (e:MouseEvent) => {\r\n\t\tif(this.node.current && !this.node.current.contains(e.target as Node)){\r\n\t\t\tthis.setState({active: false})\r\n\t\t}\r\n\t\te.stopPropagation();\r\n\t}\r\n}\r\n\r\nexport default NavTile;","import * as React from 'react';\r\nimport { INavigationTilesViewProps } from './navigation-tiles';\r\nimport NavTile from './components/NavTile';\r\n\r\nexport class NavigationTilesView extends React.PureComponent{\r\n\tconstructor(props: INavigationTilesViewProps){\r\n\t\tsuper(props);\r\n\t}\r\n\r\n\tpublic render(){\r\n\t\tconst {\r\n\t\t\theading,\r\n\t\t\tnavTiles,\r\n\t\t\tclassName\r\n\t\t} = this.props;\r\n\t\t//If we don't have nav tiles, don't render the element.\r\n\t\tif(!navTiles) {return null}\r\n\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t{heading}\r\n\t\t\t\t
\r\n\t\t\t\t\t{navTiles.map((nt,idx) => {\r\n\t\t\t\t\t\treturn \r\n\t\t\t\t\t})}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}\r\nexport default NavigationTilesView;","/*!\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\n\r\nimport { ITwoColumnLayoutData } from './two-column-layout.data';\r\nimport { ITwoColumnLayoutProps } from './two-column-layout.props.autogenerated';\r\n\r\nexport interface ITwoColumnLayoutViewProps extends ITwoColumnLayoutProps {}\r\n\r\n/**\r\n *\r\n * TwoColumnLayout component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass TwoColumnLayout extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n return this.props.renderView(this.props);\r\n }\r\n}\r\n\r\nexport default TwoColumnLayout;\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\nimport * as React from 'react';\r\nimport { ITwoColumnLayoutViewProps } from './two-column-layout';\r\n\r\nexport default (props: ITwoColumnLayoutViewProps) => {\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{/*
*/}\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t

{props.config.cusRightIframeHeading}

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\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\nimport * as React from 'react';\r\n\r\nimport { IWarrantyData } from './warranty.data';\r\nimport { IWarrantyProps } from './warranty.props.autogenerated';\r\n\r\nexport interface IWarrantyViewProps extends IWarrantyProps {}\r\n\r\n/**\r\n *\r\n * Warranty component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass Warranty extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n return this.props.renderView(this.props);\r\n }\r\n}\r\n\r\nexport default Warranty;\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\nimport * as React from 'react';\r\nimport { IWarrantyViewProps } from './warranty';\r\n\r\nexport default (props: IWarrantyViewProps) => {\r\n return (\r\n
\r\n
\r\n
\r\n {props.config.cusTextfield}\r\n
\r\n
\r\n
\r\n

{props.config.cusIframeHeading}

\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","/*!\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 MsDyn365 from '@msdyn365-commerce/core';\nimport {\n INotificationComponentsList,\n INotificationComponentsListState,\n INotificationComponentType,\n NotificationComponentsListsManager,\n NotificationEvents,\n NotificationFeedType\n} from '@msdyn365-commerce-modules/notifications-core';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { INotificationsListProps } from './notifications-list.props.autogenerated';\n\n/**\n * View for the notifications list which specifies the container and notifications items.\n */\nexport interface INotificationsListViewProps extends INotificationsListProps<{}> {\n container: IModuleProps;\n notificationsList: React.ReactNode;\n}\n\n/**\n * Configuration to make the list stickable to the page without overlapping any content on top.\n */\nexport interface INotificationComponentStickyConfiguration {\n /**\n * Minimum offset for top (default for the page).\n */\n minTopOffset: number;\n\n /**\n * Maximum offset for top (to limit the top offset while scrolling).\n */\n maxTopOffset: number;\n}\n\n/**\n * Stickable notification list state which defines the top position of the list at the moment.\n */\nexport interface IStickableNotificationComponentsListState extends INotificationComponentsListState {\n /**\n * The top position of the list on the page.\n */\n top?: number;\n}\n\n/**\n * A notification list which is operated by notification manager.\n * It is responsible for rendering the received notifications.\n */\nexport class NotificationComponentsList extends React.Component, IStickableNotificationComponentsListState>\n implements INotificationComponentsList {\n /**\n * The class name to use.\n */\n private static readonly _className: string = 'msc-notifications-list';\n\n /**\n * The feed which the list is responsible for displaying.\n */\n public readonly feed: NotificationFeedType;\n\n /**\n * Configuration which specifies if and how the list should be stickable.\n * If undefined, the configuration will not be used at all. And list will not be stickable.\n */\n private readonly _stickyConfiguration?: INotificationComponentStickyConfiguration;\n\n /**\n * The list of notification which should be shown in the list at the moment.\n * @remarks Should be used to retrieve the latest list of notifications\n * as the list from the state is updated only after rendering.\n */\n private _notificationsComponentList: INotificationComponentType[];\n\n /**\n * Unique identifier of the list.\n * Uses format 'NotificationComponentsList-GUID';.\n */\n private _instanceId?: string;\n\n /**\n * Initializes instance with the given props.\n * @param props - The configuration of the list.\n */\n public constructor(props: INotificationsListProps<{}>) {\n super(props);\n\n this.feed = props.config.feed;\n\n if (\n !ObjectExtensions.isNullOrUndefined(props.config.minTopOffset) &&\n !ObjectExtensions.isNullOrUndefined(props.config.maxTopOffset)\n ) {\n this._stickyConfiguration = {\n minTopOffset: props.config.minTopOffset,\n maxTopOffset: props.config.maxTopOffset\n };\n }\n\n this._notificationsComponentList = [];\n\n this.state = {\n notificationsComponentList: []\n };\n\n this._handleTopUpdate = this._handleTopUpdate.bind(this);\n this._getCurrentTopPosition = this._getCurrentTopPosition.bind(this);\n }\n\n /**\n * Specifies if the component should be re-rendered.\n * @param nextProps - The next configuration the component is receiving.\n * @param nextState - The next state the component is receiving.\n * @returns True if component should be re-rendered, false if component should not be changed.\n */\n public shouldComponentUpdate(\n nextProps: Readonly>,\n nextState: Readonly\n ): boolean {\n const isPropsDifferent =\n this.feed !== nextProps.config.feed ||\n this.props.config.maxNotificationsCount !== nextProps.config.maxNotificationsCount ||\n this.props.config.maxTopOffset !== nextProps.config.maxTopOffset ||\n this.props.config.minTopOffset !== nextProps.config.minTopOffset ||\n this.props.config.className !== nextProps.config.className ||\n this.props.id !== nextProps.id;\n const isStateDifferent =\n this.state.top !== nextState.top ||\n this.state.notificationsComponentList.length !== nextState.notificationsComponentList.length ||\n this.state.notificationsComponentList.every(value =>\n nextState.notificationsComponentList.find(otherValue => otherValue.props.notification.id === value.props.notification.id)\n );\n return isPropsDifferent || isStateDifferent;\n }\n\n /**\n * Adds the current instance to the global list of instances so that it becomes available for the notification manager.\n * In case the list is specified to be stickable, also subscribes to the scroll event to update the offsets.\n */\n public componentDidMount(): void {\n NotificationComponentsListsManager.subscribe(this);\n\n this._instanceId = `NotificationComponentsList-${Random.Guid.generateGuid()}`;\n\n if (MsDyn365.isBrowser && this._stickyConfiguration !== undefined) {\n window.addEventListener('scroll', this._handleTopUpdate);\n }\n }\n\n /**\n * Remove the instance from the global list of instances so that it becomes unavailable for the notification manager.\n * Unsubscribes itself from the notification events and scroll event.\n */\n public componentWillUnmount(): void {\n NotificationComponentsListsManager.unsubscribe(this);\n\n this._notificationsComponentList.forEach(component =>\n component.props.notification.events.getValue(NotificationEvents.RemovedFromList)?.unsubscribe(this._instanceId!)\n );\n\n if (MsDyn365.isBrowser && this._stickyConfiguration !== undefined) {\n window.removeEventListener('scroll', this._handleTopUpdate);\n }\n }\n\n /**\n * Adds a new notification to the list.\n * @param {INotificationComponentType} notificationComponent Data required to render the notification. @see INotificationComponentType.\n */\n public addNotificationComponent(notificationComponent: INotificationComponentType): void {\n if (this._instanceId === undefined) {\n return;\n }\n\n if (\n !ObjectExtensions.isNullOrUndefined(this.props.config.maxNotificationsCount) &&\n this._notificationsComponentList.length >= this.props.config.maxNotificationsCount\n ) {\n throw new Error('Notifications limit reached, cannot show more notifications.');\n }\n\n // Subscribe to the remove event to filter the removed notifications out from the list.\n notificationComponent.props.notification.events.getValue(NotificationEvents.RemovedFromList)?.subscribe({\n instanceId: this._instanceId,\n handler: () => {\n notificationComponent.props.notification.events\n .getValue(NotificationEvents.RemovedFromList)\n ?.unsubscribe(this._instanceId!);\n const newList = this._notificationsComponentList.filter(component => component !== notificationComponent);\n this._notificationsComponentList = newList;\n this.setState({ notificationsComponentList: this._notificationsComponentList });\n }\n });\n\n // Prepend the notification as newest should come to the top.\n this._notificationsComponentList.unshift(notificationComponent);\n this.setState({ notificationsComponentList: this._notificationsComponentList });\n this._handleTopUpdate();\n }\n\n public render(): React.ReactNode {\n const className = classnames(\n NotificationComponentsList._className,\n `${NotificationComponentsList._className}__${this.feed}`,\n this.props.config.className\n );\n\n const viewProps: INotificationsListViewProps = {\n ...this.props,\n container: {\n moduleProps: this.props,\n className,\n id: this._instanceId,\n style: { top: this.state.top }\n },\n notificationsList: this._renderNotificationsList()\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * Renders the list of notifications.\n * @returns React node with a list of notifications.\n */\n private _renderNotificationsList(): React.ReactNode {\n const hasNotifications = ArrayExtensions.hasElements(this.state.notificationsComponentList);\n const containerClassName = classnames(\n `${NotificationComponentsList._className}__scrollable`,\n hasNotifications\n ? `${NotificationComponentsList._className}__has-notifications`\n : `${NotificationComponentsList._className}__empty`\n );\n\n return (\n
\n {this.state.notificationsComponentList.map(component => {\n const ComponentClass = component.componentClass;\n return ;\n })}\n
\n );\n }\n\n /**\n * Retrieves current top offset position by looking at scroll position and rounding it to the stickable limits.\n */\n private _getCurrentTopPosition(): number | undefined {\n const configuration = this._stickyConfiguration;\n\n if (configuration === undefined) {\n return undefined;\n }\n\n let pageYOffset = 0;\n if (MsDyn365.isBrowser) {\n pageYOffset = window.pageYOffset;\n }\n\n return Math.max(Math.min(configuration.maxTopOffset, configuration.maxTopOffset - pageYOffset), configuration.minTopOffset);\n }\n\n /**\n * Updates the top offset on scroll event to make the list stickable.\n */\n private _handleTopUpdate(): void {\n const newTop = this._getCurrentTopPosition();\n this.setState({ top: newTop });\n }\n}\n\nexport default NotificationComponentsList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { INotificationsListViewProps } from './notifications-list';\n\nexport const NotificationsListView: React.FC = props => {\n return {props.notificationsList};\n};\n\nexport default NotificationsListView;\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"],"names":["FinanceCalculator","React","render","_heading$tag","_heading$text","heading","paragraph","this","props","config","financialCalculatorTitle","Msdyn365","className","tag","text","financialCalculatorText","financialCalculatorViewProps","_objectSpread","title","moduleClass","renderView","query","setQuery","useState","cost","setCost","buying","setBuying","power","setPower","rates","year","rate","formatter","Intl","NumberFormat","style","currency","minimumFractionDigits","useEffect","timeOut","setTimeout","principal","Number","payments","data","push","format","clearTimeout","length","id","type","value","onChange","event","target","name","placeholder","NavigationTiles","constructor","handleTextChange","navTiles","buildHeading","Text","editProps","onEdit","requestContext","context","request","NavTile","super","_handleClick","setState","active","state","_handleClickOutside","e","node","current","contains","stopPropagation","componentDidMount","MsDyn365","isBrowser","document","body","addEventListener","componentWillUnmount","removeEventListener","_buildButtonImage","imageData","src","alt","altText","_navData$subTiles","navData","elementID","linkText","image","ref","toLowerCase","cn","onClick","subTiles","map","st","idx","key","href","linkUrl","destinationUrl","ariaLabel","NavigationTilesView","nt","TwoColumnLayout","cusLeftBootstrapClass","cusRightBootstrapClass","cusRightIframeHeading","cusRightIframeSrc","height","cusRightIframeAriaLabel","Warranty","cusBootstrapClassLeft","cusTextfield","cusBootstrapClassRight","cusIframeHeading","cusIframeSrc","cusIframeAriaLabel","getBackgroundRepeatProperty","size","repeat","getBackgroundSizeProperty","buildBackgroundImageStylesByViewport","_request$gridSettings","containerType","configs","gridSettings","imageSettings","styles","largestGridSettingViewportName","getLargestGridSettingViewportName","authoringViewPorts","getAuthoringViewport","moduleName","layout","msdyn365Commerce","authoringHelper","window","_msdyn365","constructViewportInformationForImage","themeSettings","imgSettings","viewports","_cloneDeep2","xs","w","h","sm","md","lg","xl","skipWidthAndHeightSettings","Object","keys","vp","_imgSettings$viewport","viewport","minMaxWidth","getMinMaxWidth","urlSrc","getImageResizeUrl","externalProvider","apiSettings","maxWidth","max","minWidth","min","minHeight","backgroundImage","backgroundRepeat","backgroundSize","backgroundPosition","setStyleAttribute","currentStyle","undefined","getDataBgSetAttribute","dataBgSetAttributes","join","BACKGROUND_IMAGE_CLASS_NAME","BackgroundImage","stylesByViewport","_onChangeHandler","bind","_getCurrentStyle","mounted","_componentResize","updateAttributes","shouldComponentUpdate","nextProps","nextState","_this$props$request","_nextProps$request","_this$props$image","_nextProps$image","_this$props$image2","_nextProps$image2","children","backgroundImageClassName","isAuthoringEditEnabled","processedAtributes","_processAttributes","_isLazyload","attributes","_getAttributes","eventHandlers","onDoubleClick","assign","_getDefaultAttributes","_unused","lazyLoad","getBackgroundImageLazyloadAttributes","role","getBackgroundImageAttributes","currentTarget","binding","eventTarget","$type","selectedStyle","_isEqual2","winInnerWidth","innerWidth","_this$stylesByViewpor","_this$stylesByViewpor2","_this$stylesByViewpor3","_this$stylesByViewpor4","MAX_SAFE_INTEGER","_getDefaultStyle","_this$props$image3","disableLazyLoad","getContainerType","Container","typeName","backgroundImageRepeat","backgroundImageSize","moduleLayout","backgroundColor","customClassName","containerContent","containerStyle","HeadingComponent","headingText","textSize","Tag","classNameWithHeading","Default2SlotContainer","_getColClassName","classNames","getColClassArray","reduce","memo","_ref","left","right","slots","telemetry","log","LogLevel","Debug","values","content","slotsClassNames","Warning","headingProps","msdyn365__moduleLayout","showErrors","slice","slot","index","Default3SlotContainer","center","DefaultContainer","_getChildColClassName","childrenWidth","_getWidthClass","s","colWidths","get","sizePattern","getColumnSizes","exec","cols","split","translatedSize","prefix","translatePrefix","sizePrefix","colWidth","isDebug","isEditor","params","options","xsmall","small","medium","large","filter","Boolean","Map","NotificationComponentsList","feed","ObjectExtensions","isNullOrUndefined","minTopOffset","maxTopOffset","_stickyConfiguration","_notificationsComponentList","notificationsComponentList","_handleTopUpdate","_getCurrentTopPosition","isPropsDifferent","maxNotificationsCount","isStateDifferent","top","every","find","otherValue","notification","NotificationComponentsListsManager","subscribe","_instanceId","Random","Guid","generateGuid","unsubscribe","forEach","component","_component$props$noti","events","getValue","NotificationEvents","RemovedFromList","addNotificationComponent","notificationComponent","_notificationComponen","Error","instanceId","handler","_notificationComponen2","newList","unshift","classnames","_className","viewProps","container","moduleProps","notificationsList","_renderNotificationsList","hasNotifications","ArrayExtensions","hasElements","containerClassName","maxHeight","ComponentClass","componentClass","configuration","pageYOffset","Math","newTop","NotificationsListView","Module","DefaultPageSummary","pageSummary","result","description","keywords","sharingImageUrl","faviconUrl","canonicalUrl","sharingImage","pageTitle","_constructPageTitle","app","HtmlHeadInclude","rel","disableOgTags","_renderOgTags","disableTwitterTags","_renderTwitterTags","property","moduleConfig","ignoreTitleSuffixPrefix","appConfig","platform","pageTitlePrefix","pageTitleSuffix"],"sourceRoot":""}