{"version":3,"file":"static/js/b2d65b30f419ac415a7f.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./lib/default-container-2-slots/module-registration.js?a004","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/utils/classnames.ts?a0ff","webpack://Msdyn365.Commerce.Online/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online/external var \"ReactDOM\"?853b"],"sourcesContent":["const binding = { modules: {}, dataActions: {} };\n\n (binding.modules['default-container-2-slots'] = {\n c: () => require('@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container-2-slots/default-container-2-slots'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-container-2-slots',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container-2-slots'\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 * 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\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 } = 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 return containerType ? (\n
{containerContent}
\n ) : (\n
{containerContent}
\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 { 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","module.exports = React;","module.exports = ReactDOM;"],"names":["binding","modules","dataActions","c","require","$type","da","iNM","ns","n","p","pdp","md","window","__bindings__","_objectSpread","getBackgroundRepeatProperty","size","repeat","getBackgroundSizeProperty","buildBackgroundImageStylesByViewport","props","_request$gridSettings","containerType","image","request","configs","gridSettings","imageSettings","styles","largestGridSettingViewportName","getLargestGridSettingViewportName","authoringViewPorts","getAuthoringViewport","moduleName","layout","msdyn365Commerce","isBrowser","authoringHelper","_msdyn365","constructViewportInformationForImage","themeSettings","imgSettings","viewports","_cloneDeep2","xs","w","h","sm","lg","xl","skipWidthAndHeightSettings","Object","keys","map","vp","_imgSettings$viewport","viewport","minMaxWidth","getMinMaxWidth","urlSrc","getImageResizeUrl","src","externalProvider","apiSettings","maxWidth","max","minWidth","min","minHeight","backgroundImage","backgroundRepeat","backgroundSize","backgroundPosition","setStyleAttribute","currentStyle","style","undefined","getDataBgSetAttribute","dataBgSetAttributes","push","join","BACKGROUND_IMAGE_CLASS_NAME","BackgroundImage","React","constructor","state","super","this","stylesByViewport","_onChangeHandler","bind","_getCurrentStyle","mounted","_componentResize","updateAttributes","componentDidMount","addEventListener","componentWillUnmount","removeEventListener","shouldComponentUpdate","nextProps","nextState","_this$props$request","_nextProps$request","_this$props$image","_nextProps$image","_this$props$image2","_nextProps$image2","render","children","backgroundImageClassName","isAuthoringEditEnabled","processedAtributes","_processAttributes","_isLazyload","attributes","_getAttributes","eventHandlers","onDoubleClick","assign","className","_getDefaultAttributes","_unused","lazyLoad","getBackgroundImageLazyloadAttributes","role","getBackgroundImageAttributes","event","target","currentTarget","eventTarget","value","selectedStyle","_isEqual2","setState","winInnerWidth","innerWidth","_this$stylesByViewpor","_this$stylesByViewpor2","_this$stylesByViewpor3","_this$stylesByViewpor4","Number","MAX_SAFE_INTEGER","_getDefaultStyle","_this$props$image3","disableLazyLoad","getContainerType","Container","typeName","id","backgroundImageRepeat","backgroundImageSize","moduleLayout","customClassName","containerContent","HeadingComponent","tag","headingText","textSize","Tag","classNameWithHeading","Text","text","editProps","onEdit","handleTextChange","requestContext","Default2SlotContainer","config","heading","_getColClassName","classNames","getColClassArray","length","reduce","memo","_ref","left","right","slots","telemetry","context","data","log","LogLevel","Debug","values","content","slotsClassNames","Warning","headingProps","msdyn365__moduleLayout","showErrors","slice","slot","index","key","sizePattern","getColumnSizes","exec","cols","split","translatedSize","prefix","toLowerCase","translatePrefix","sizePrefix","colWidth","isDebug","isEditor","params","options","xsmall","small","medium","large","filter","Boolean","colWidths","Map","module","exports","ReactDOM"],"sourceRoot":""}