{"version":3,"file":"static/js/24.1d24ddffba1551829919.chunk.js","mappings":"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","sources":["webpack://msdyn365.commerce.online/./src/modules/cookbook-tagline/cookbook-tagline.tsx?306e","webpack://msdyn365.commerce.online/./src/modules/event-description/event-description.tsx?64c9","webpack://msdyn365.commerce.online/./src/modules/home-carousel/home-carousel.tsx?b448","webpack://msdyn365.commerce.online/./src/modules/overflow-container/overflow-container.tsx?712b","webpack://msdyn365.commerce.online/./src/modules/overflow-container/overflow-container.view.tsx?9ac9","webpack://msdyn365.commerce.online/./src/themes/blend/views/overflow-container.view.tsx?d603","webpack://msdyn365.commerce.online/./src/themes/elicit/views/overflow-container.view.tsx?33f3","webpack://msdyn365.commerce.online/./src/themes/fth/views/overflow-container.view.tsx?b001","webpack://msdyn365.commerce.online/./src/themes/stemichelle-new/views/overflow-container.view.tsx?598c","webpack://msdyn365.commerce.online/./src/themes/wine-estates/views/overflow-container.view.tsx?22ae","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/default-page-summary/default-page-summary.tsx?0c78"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nimport { ICookbookTaglineData } from './cookbook-tagline.data';\r\nimport { ICookbookTaglineProps } from './cookbook-tagline.props.autogenerated';\r\n\r\n/**\r\n *\r\n * CookbookTagline component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CookbookTagline extends React.PureComponent<\r\n ICookbookTaglineProps\r\n> {\r\n private _productCookbookTagLine: string = 'COOKBOOKTAGLINE';\r\n public render(): JSX.Element | null {\r\n const content: ICookbookTaglineData = this.props.data;\r\n if (\r\n !(\r\n content &&\r\n content.productSpecificationData &&\r\n content.productSpecificationData.result\r\n )\r\n ) {\r\n return null;\r\n }\r\n const productAttributes = content.productSpecificationData.result;\r\n const productAttribute = productAttributes.filter(\r\n attribute =>\r\n attribute.Name!.toUpperCase() === this._productCookbookTagLine\r\n );\r\n if (\r\n productAttribute &&\r\n productAttribute.length &&\r\n productAttribute[0].TextValue\r\n ) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n }\r\n}\r\n\r\nexport default CookbookTagline;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { IEventDescriptionData } from './event-description.data';\r\nimport { IEventDescriptionProps } from './event-description.props.autogenerated';\r\n\r\n/**\r\n *\r\n * EventDescription component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass EventDescription extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n const { eventDescription } = this.props.data;\r\n if (eventDescription.result && (eventDescription.result.intro || eventDescription.result.body)) {\r\n return (\r\n
\r\n
\r\n {eventDescription.result.intro && this._renderEventDescription(eventDescription.result.intro, 'intro')}\r\n {eventDescription.result.body && this._renderEventDescription(eventDescription.result.body, 'body')}\r\n
\r\n
\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n private _renderEventDescription(eventDescription: string, className: string): JSX.Element {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default EventDescription;\r\n","import { IImageData, IImageSettings, Image, RichTextComponent } from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { IHomeCarouselProps, IHomeCarouselSlidesData, ILinkData } from './home-carousel.props.autogenerated';\r\n\r\n/**\r\n *\r\n * HomeCarousel component\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass HomeCarousel extends React.Component> {\r\n\r\n //==========================================================================\r\n // VARIABLES\r\n //==========================================================================\r\n\r\n @observable private currentSlide: number;\r\n private slides: IHomeCarouselSlidesData[];\r\n private scrollThreshold: number;\r\n private scrollStart: number | undefined;\r\n private cycleInterval?: ReturnType;\r\n private defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=24&h=24&m=6`, w: 0, h: 0 },\r\n lg: { q: `w=24&h=24&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n //==========================================================================\r\n // LIFE CYCLE\r\n //==========================================================================\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n constructor(props: IHomeCarouselProps<{}>) {\r\n super(props);\r\n this.currentSlide = 0;\r\n this.slides = props.config.homeCarouselSlides ? props.config.homeCarouselSlides.filter(slide => (!slide.hidden)) : [];\r\n this.scrollThreshold = 100;\r\n this._randomizeStart = this._randomizeStart.bind(this);\r\n this._autoAdvance = this._autoAdvance.bind(this);\r\n this._restartAutoAdvance = this._restartAutoAdvance.bind(this);\r\n this._previousSlide = this._previousSlide.bind(this);\r\n this._nextSlide = this._nextSlide.bind(this);\r\n this._handleTouchStart = this._handleTouchStart.bind(this);\r\n this._handleTouchEnd = this._handleTouchEnd.bind(this);\r\n this._handleKeyPress = this._handleKeyPress.bind(this);\r\n this._selectorSlideChange = this._selectorSlideChange.bind(this);\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n public componentDidMount(): void {\r\n document.addEventListener('keyup', this._handleKeyPress);\r\n\r\n if (this.props.config.homeCarouselRandomize && this.slides) {\r\n this._randomizeStart(this.slides.length);\r\n }\r\n\r\n if (this.props.config.homeCarouselInterval && this.slides) {\r\n this._autoAdvance();\r\n }\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n public componentWillUnmount(): void {\r\n document.removeEventListener('keyup', this._handleKeyPress);\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n public render(): JSX.Element | null {\r\n if (!this.slides) {\r\n return null;\r\n }\r\n return this._getCarousel;\r\n }\r\n\r\n //==========================================================================\r\n // RENDER METHODS\r\n //==========================================================================\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private get _getCarousel(): JSX.Element {\r\n const currentClassName = this.slides && this.slides[this.currentSlide].className;\r\n const selectorList = [] as JSX.Element[];\r\n const indicatorList = [] as JSX.Element[];\r\n const slideList = [] as JSX.Element[];\r\n this.slides.map((slide, index) => {\r\n selectorList.push(\r\n this._getSelector(slide, index)\r\n );\r\n indicatorList.push(\r\n this._getIndicator(index)\r\n );\r\n slideList.push(\r\n this._getSlide(slide, index)\r\n );\r\n });\r\n return (\r\n \r\n
\r\n {selectorList}\r\n {this._getNext(this.props.resources.homeCarousel_next)}\r\n
\r\n
\r\n {slideList}\r\n
\r\n
\r\n {indicatorList}\r\n
\r\n \r\n );\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _getSelector(slide: IHomeCarouselSlidesData, index: number): JSX.Element {\r\n const isCurrentSelector = index === this.currentSlide;\r\n return (\r\n \r\n
{slide.slideSelector}
\r\n \r\n );\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _getNext(text: string): JSX.Element {\r\n return (\r\n \r\n
\r\n
{text}
\r\n
\r\n );\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _getIndicator(index: number): JSX.Element {\r\n const isCurrentIndicator = index === this.currentSlide;\r\n return (\r\n \r\n );\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _getSlide(slide: IHomeCarouselSlidesData, index: number): JSX.Element {\r\n const isCurrentSlide = index === this.currentSlide;\r\n return (\r\n \r\n
\r\n
\r\n {this._getLogo(slide.logo)}\r\n \r\n {this._getLink(slide.link)}\r\n
\r\n
\r\n {this._getBackgroundImage(slide.backgroundImage)}\r\n
\r\n
\r\n
\r\n
\r\n {this._getLogo(slide.logoMobile || slide.logo)}\r\n
\r\n
\r\n {this._getBackgroundImage(slide.backgroundImageMobile)}\r\n
\r\n
\r\n \r\n );\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _getLink(link: ILinkData | undefined): JSX.Element | null {\r\n if (link && link.linkUrl.destinationUrl && link.linkText) {\r\n return (\r\n \r\n {link.linkText}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _getLogo(image: IImageData | undefined): JSX.Element | null {\r\n if (image) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _getBackgroundImage(image: IImageData | undefined): JSX.Element | null {\r\n if (image) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n //==========================================================================\r\n // HANDLE METHODS\r\n //==========================================================================\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _randomizeStart(max: number): void {\r\n // tslint:disable-next-line:insecure-random\r\n const startSlide: number = Math.round(Math.random() * (max - 1));\r\n this.currentSlide = startSlide;\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _autoAdvance(): void {\r\n const { homeCarouselInterval } = this.props.config;\r\n if (homeCarouselInterval && this.slides) {\r\n this.cycleInterval = setInterval(this._nextSlide, homeCarouselInterval);\r\n }\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _restartAutoAdvance(): void {\r\n if (this.cycleInterval) {\r\n clearInterval(this.cycleInterval);\r\n this._autoAdvance();\r\n }\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _selectorSlideChange(element: React.MouseEvent): void {\r\n const index = element.currentTarget.getAttribute('data-id')!;\r\n this.currentSlide = +index;\r\n this._restartAutoAdvance();\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _previousSlide(): void {\r\n this.currentSlide = (this.currentSlide > 0) ? this.currentSlide - 1 : this.slides.length - 1;\r\n this._restartAutoAdvance();\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _nextSlide(): void {\r\n this.currentSlide = (this.currentSlide < this.slides.length - 1) ? this.currentSlide + 1 : 0;\r\n this._restartAutoAdvance();\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _handleTouchStart(event: React.TouchEvent): void {\r\n if (event.touches.length === 0) {\r\n this.scrollStart = undefined;\r\n } else {\r\n this.scrollStart = event.touches[0].screenX;\r\n }\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _handleTouchEnd(event: React.TouchEvent): void {\r\n if (event.changedTouches.length > 0 && this.scrollStart !== undefined) {\r\n const newTarget: number = event.changedTouches[0].screenX;\r\n const delta = newTarget - this.scrollStart;\r\n\r\n if (delta > this.scrollThreshold) {\r\n this._previousSlide();\r\n }\r\n\r\n if (delta < -this.scrollThreshold) {\r\n this._nextSlide();\r\n }\r\n }\r\n\r\n this.scrollStart = undefined;\r\n\r\n return;\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n // tslint:disable-next-line:no-any\r\n private _handleKeyPress = (event: any) => {\r\n if (event.keyCode === 37) {\r\n this._previousSlide();\r\n } else if (event.keyCode === 39) {\r\n this._nextSlide();\r\n }\r\n };\r\n}\r\n\r\nexport default HomeCarousel;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IOverflowContainerProps } from './overflow-container.props.autogenerated';\r\n\r\nexport interface IOverflowContainerViewProps extends IOverflowContainerProps<{}> {\r\n content: React.ReactNode;\r\n btn: React.ReactNode;\r\n currentClass: string;\r\n}\r\n\r\ninterface IOverflowContainerData {\r\n isOverflowExpandedState: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * OverflowContainer component\r\n * @extends {React.PureComponent, IOverflowContainerData>}\r\n */\r\nclass OverflowContainer extends React.PureComponent, IOverflowContainerData> {\r\n private readonly _OPENED_CLASS: string = 'overflow-container-opened';\r\n private readonly _CLOSED_CLASS: string = 'overflow-container-closed';\r\n\r\n constructor(props: IOverflowContainerProps<{}>) {\r\n super(props);\r\n\r\n this.state = {\r\n isOverflowExpandedState: !!this.props.config.openByDefault\r\n };\r\n\r\n this._toggleExpansion = this._toggleExpansion.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (this.props.config.closeOnClickOff) {\r\n document.body && document.body.addEventListener('mousedown', this._handleClickOutsideOverflow);\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (this.props.config.closeOnClickOff) {\r\n document.body && document.body.removeEventListener('mousedown', this._handleClickOutsideOverflow, false);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const props: IOverflowContainerViewProps = {\r\n ...this.props,\r\n content: this._jsxContent,\r\n btn: this._jsxBtn,\r\n currentClass: this._currentClass\r\n };\r\n return this.props.renderView(props) as JSX.Element;\r\n }\r\n\r\n private _toggleExpansion(): void {\r\n this.setState({\r\n isOverflowExpandedState: !this.state.isOverflowExpandedState\r\n });\r\n }\r\n\r\n // tslint:disable-next-line:no-any\r\n private _handleClickOutsideOverflow = (event: any) => {\r\n const overflow:boolean = event.target.className === 'overflow-container-btn';\r\n const pulldownElement = document.getElementById('overflow-container-content');\r\n if (this.state.isOverflowExpandedState && !pulldownElement?.contains(event.target) && !overflow && event.target.nodeName !== 'A') {\r\n this.setState({\r\n isOverflowExpandedState: false\r\n });\r\n }\r\n };\r\n\r\n private get _jsxContent(): JSX.Element | null {\r\n const content = this.props.slots.content;\r\n\r\n return (\r\n
\r\n {content && content.map((module, index) => (\r\n \r\n {module}\r\n \r\n ))}\r\n
\r\n );\r\n }\r\n\r\n private get _currentClass(): string {\r\n return (this.state.isOverflowExpandedState) ? this._OPENED_CLASS : this._CLOSED_CLASS;\r\n }\r\n\r\n private get _jsxBtn(): JSX.Element {\r\n const btn = this.props.config.btn;\r\n const btnText = (this.state.isOverflowExpandedState) ? btn?.openText || 'Close' : btn?.closeText || 'Expand';\r\n return ();\r\n }\r\n}\r\n\r\nexport default OverflowContainer;\r\n","\r\nimport * as React from 'react';\r\nimport { IOverflowContainerViewProps } from './overflow-container';\r\n\r\nconst OverflowContainerView: React.FC = props => {\r\n const { content, currentClass, btn, config: { cssClassName } } = props;\r\n\r\n return (\r\n
\r\n {props.config.showToggleButton ? btn : <>}\r\n {content}\r\n
\r\n );\r\n};\r\n\r\nexport default OverflowContainerView;","\r\nimport * as React from 'react';\r\nimport { IOverflowContainerViewProps } from '../../../modules/overflow-container/overflow-container';\r\n\r\nconst OverflowContainerView: React.FC = props => {\r\n const { btn, content, currentClass, config: { cssClassName } } = props;\r\n\r\n return (\r\n
\r\n {btn}\r\n {content}\r\n
\r\n );\r\n};\r\n\r\nexport default OverflowContainerView;","\r\nimport * as React from 'react';\r\nimport { IOverflowContainerViewProps } from '../../../modules/overflow-container/overflow-container';\r\n\r\nconst OverflowContainerView: React.FC = props => {\r\n const { btn, content, currentClass, config: { cssClassName } } = props;\r\n\r\n return (\r\n
\r\n {btn}\r\n {content}\r\n
\r\n );\r\n};\r\n\r\nexport default OverflowContainerView;","import classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { IOverflowContainerViewProps } from '../../../modules/overflow-container/overflow-container';\r\n\r\nconst OverflowContainerView: React.FC = props => {\r\n const { btn, content, currentClass, config: { cssClassName } } = props;\r\n\r\n return (\r\n
\r\n {btn}\r\n {content}\r\n
\r\n );\r\n};\r\n\r\nexport default OverflowContainerView;\r\n","import classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { IOverflowContainerViewProps } from '../../../modules/overflow-container/overflow-container';\r\n\r\nconst OverflowContainerView: React.FC = props => {\r\n const { btn, content, currentClass, config: { cssClassName } } = props;\r\n\r\n return (\r\n
\r\n {btn}\r\n {content}\r\n
\r\n );\r\n};\r\n\r\nexport default OverflowContainerView;\r\n","import classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { IOverflowContainerViewProps } from '../../../modules/overflow-container/overflow-container';\r\n\r\nconst OverflowContainerView: React.FC = props => {\r\n const { btn, content, currentClass, config: { cssClassName } } = props;\r\n\r\n return (\r\n
\r\n {btn}\r\n {content}\r\n
\r\n );\r\n};\r\n\r\nexport default OverflowContainerView;\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 { 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":["CookbookTagline","React","constructor","_productCookbookTagLine","render","content","this","props","data","productSpecificationData","result","productAttribute","filter","attribute","Name","toUpperCase","length","TextValue","className","RichTextComponent","text","EventDescription","eventDescription","intro","body","_renderEventDescription","HomeCarousel","super","defaultImageSettings","viewports","xs","q","w","h","lg","lazyload","_handleKeyPress","event","keyCode","_previousSlide","_nextSlide","currentSlide","slides","config","homeCarouselSlides","slide","hidden","scrollThreshold","_randomizeStart","bind","_autoAdvance","_restartAutoAdvance","_handleTouchStart","_handleTouchEnd","_selectorSlideChange","componentDidMount","document","addEventListener","homeCarouselRandomize","homeCarouselInterval","componentWillUnmount","removeEventListener","_getCarousel","currentClassName","selectorList","indicatorList","slideList","map","index","push","_getSelector","_getIndicator","_getSlide","classnames","onTouchStart","onTouchEnd","_getNext","resources","homeCarousel_next","isCurrentSelector","role","onClick","key","slideSelector","isCurrentIndicator","_slide$link","_slide$link2","_slide$link3","isCurrentSlide","href","link","linkUrl","destinationUrl","ariaLabel","target","openInNewTab","undefined","rel","_getLogo","logo","_getLink","_getBackgroundImage","backgroundImage","logoMobile","backgroundImageMobile","linkText","image","Image","Object","assign","gridSettings","context","request","imageSettings","max","startSlide","Math","round","random","cycleInterval","setInterval","clearInterval","element","currentTarget","getAttribute","touches","scrollStart","screenX","changedTouches","delta","__decorate","observable","observer","OverflowContainer","_OPENED_CLASS","_CLOSED_CLASS","_handleClickOutsideOverflow","overflow","pulldownElement","getElementById","state","isOverflowExpandedState","contains","nodeName","setState","openByDefault","_toggleExpansion","closeOnClickOff","_objectSpread","_jsxContent","btn","_jsxBtn","currentClass","_currentClass","renderView","slots","module","btnText","openText","closeText","cssClassName","showToggleButton","getBackgroundRepeatProperty","size","repeat","getBackgroundSizeProperty","buildBackgroundImageStylesByViewport","_request$gridSettings","containerType","configs","styles","largestGridSettingViewportName","getLargestGridSettingViewportName","authoringViewPorts","getAuthoringViewport","moduleName","layout","msdyn365Commerce","isBrowser","authoringHelper","window","_msdyn365","constructViewportInformationForImage","themeSettings","imgSettings","_cloneDeep2","sm","md","xl","skipWidthAndHeightSettings","keys","vp","_imgSettings$viewport","viewport","minMaxWidth","getMinMaxWidth","urlSrc","getImageResizeUrl","src","externalProvider","apiSettings","maxWidth","minWidth","min","minHeight","backgroundRepeat","backgroundSize","backgroundPosition","setStyleAttribute","currentStyle","style","getDataBgSetAttribute","dataBgSetAttributes","join","BACKGROUND_IMAGE_CLASS_NAME","BackgroundImage","stylesByViewport","_onChangeHandler","_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","_getDefaultAttributes","_unused","lazyLoad","getBackgroundImageLazyloadAttributes","getBackgroundImageAttributes","binding","eventTarget","$type","value","selectedStyle","_isEqual2","winInnerWidth","innerWidth","_this$stylesByViewpor","_this$stylesByViewpor2","_this$stylesByViewpor3","_this$stylesByViewpor4","Number","MAX_SAFE_INTEGER","_getDefaultStyle","_this$props$image3","disableLazyLoad","getContainerType","Container","typeName","id","backgroundImageRepeat","backgroundImageSize","moduleLayout","backgroundColor","customClassName","containerContent","containerStyle","HeadingComponent","tag","headingText","textSize","Tag","classNameWithHeading","Text","editProps","onEdit","handleTextChange","requestContext","Default2SlotContainer","heading","_getColClassName","classNames","getColClassArray","reduce","memo","_ref","left","right","telemetry","log","LogLevel","Debug","values","slotsClassNames","Warning","headingProps","msdyn365__moduleLayout","showErrors","slice","slot","Default3SlotContainer","center","DefaultContainer","_getChildColClassName","childrenWidth","_getWidthClass","s","colWidths","get","sizePattern","getColumnSizes","exec","cols","split","translatedSize","prefix","toLowerCase","translatePrefix","sizePrefix","colWidth","isDebug","isEditor","params","options","xsmall","small","medium","large","Boolean","Map","DefaultPageSummary","pageSummary","Error","title","description","keywords","sharingImageUrl","faviconUrl","canonicalUrl","sharingImage","pageTitle","_constructPageTitle","app","HtmlHeadInclude","name","disableOgTags","_renderOgTags","disableTwitterTags","_renderTwitterTags","property","moduleConfig","ignoreTitleSuffixPrefix","appConfig","platform","pageTitlePrefix","pageTitleSuffix"],"sourceRoot":""}