{"version":3,"file":"static/js/14.db163634e591da84585f.chunk.js","mappings":"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","sources":["webpack://nile.commerce.online/./src/modules/default-page-summary/default-page-summary.tsx?0c78","webpack://nile.commerce.online/./src/modules/default-container/default-container.tsx?01c3","webpack://nile.commerce.online/./src/modules/default-container-2-slots/default-container-2-slots.tsx?8065","webpack://nile.commerce.online/./src/modules/default-container-3-slots/default-container-3-slots.tsx?ac77","webpack://nile.commerce.online/./src/modules/default-external-script/default-external-script.tsx?2a33","webpack://nile.commerce.online/./src/modules/default-inline-script/default-inline-script.tsx?5ccd","webpack://nile.commerce.online/./src/modules/default-inline-style/default-inline-style.tsx?3552","webpack://nile.commerce.online/./src/modules/default-metatags/default-metatags.tsx?97a7","webpack://nile.commerce.online/./src/modules/default-page/default-page.tsx?b382","webpack://nile.commerce.online/./src/modules/fabrikam/fabrikam.tsx?5b10","webpack://nile.commerce.online/./src/modules/starter/starter.tsx?aade","webpack://nile.commerce.online/./src/modules/article-details/article-details.tsx?9949","webpack://nile.commerce.online/./src/modules/article-sustainability/article-sustainability.tsx?145c","webpack://nile.commerce.online/./src/modules/eve-iframe/eve-iframe.tsx?6088","webpack://nile.commerce.online/./src/modules/gtm-body/gtm-body.tsx?9597","webpack://nile.commerce.online/./src/modules/loyalty-auto-enroll/loyalty-auto-enroll.tsx?e9a0","webpack://nile.commerce.online/./src/themes/nile-theme/nile-theme.tsx?a983","webpack://nile.commerce.online/./src/modules/usercentrics-inline-script/usercentrics-inline-script.tsx?6309","webpack://nile.commerce.online/./src/modules/article-details/article-details.view.tsx?4cf2","webpack://nile.commerce.online/./src/modules/article-sustainability/article-sustainability.view.tsx?2b91","webpack://nile.commerce.online/./src/modules/eve-iframe/eve-iframe.view.tsx?d2d5","webpack://nile.commerce.online/./src/modules/gtm-body/gtm-body.view.tsx?be28","webpack://nile.commerce.online/./src/modules/loyalty-auto-enroll/loyalty-auto-enroll.view.tsx?4d58","webpack://nile.commerce.online/./src/components/container-background-image/container-background-image-helper.ts?ce2e","webpack://nile.commerce.online/./src/components/container-background-image/container-backgroud-image.tsx?e863","webpack://nile.commerce.online/./src/components/base-components.tsx?daec","webpack://nile.commerce.online/./src/utils/classnames.ts?a0ff","webpack://nile.commerce.online/./src/utils/script-utils.ts?cb52"],"sourcesContent":["/*!\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<DefaultPageSummaryProps>}\n */\nclass DefaultPageSummary extends React.PureComponent<IDefaultPageSummaryProps<IDefaultPageSummaryData>> {\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                <HtmlHeadInclude>\n                    {pageTitle && <title>{pageTitle}</title>}\n                    {description && <meta name='description' content={description} />}\n                    {keywords && <meta name='keywords' content={keywords} />}\n                    {canonicalUrl && <link rel='canonical' href={canonicalUrl} />}\n                    {faviconUrl && <link rel='shortcut icon' href={faviconUrl} />}\n                </HtmlHeadInclude>\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            <HtmlHeadInclude>\n                {title && <meta property='og:title' content={title} />}\n                {description && <meta property='og:description' content={description} />}\n                {sharingImageUrl && <meta property='og:image' content={sharingImageUrl} />}\n                <meta property='og:type' content='website' />\n            </HtmlHeadInclude>\n        );\n    }\n\n    private _renderTwitterTags(\n        title: string | undefined,\n        description: string | undefined,\n        sharingImageUrl: string | undefined\n    ): JSX.Element {\n        return (\n            <HtmlHeadInclude>\n                {title && <meta name='twitter:title' content={title} />}\n                {description && <meta name='twitter:description' content={description} />}\n                {sharingImageUrl && <meta name='twitter:image' content={sharingImageUrl} />}\n                <meta name='twitter:card' content='summary' />\n            </HtmlHeadInclude>\n        );\n    }\n\n    private _constructPageTitle(title: string | undefined, app: IGeneric<IAny>): string | undefined {\n        if (!title) {\n            title = '';\n        }\n\n        const moduleConfig = this.props.config;\n        if (moduleConfig && moduleConfig.ignoreTitleSuffixPrefix) {\n            return title;\n        }\n\n        const appConfig = app && app.platform;\n        if (appConfig) {\n            if (appConfig.pageTitlePrefix) {\n                title = (appConfig.pageTitlePrefix as string) + title;\n            }\n            if (appConfig.pageTitleSuffix) {\n                title += appConfig.pageTitleSuffix as string;\n            }\n        }\n\n        return title;\n    }\n}\n\nexport default DefaultPageSummary;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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<IDefaultContainerProps<IDefaultContainerData>>}\n */\nclass DefaultContainer extends React.PureComponent<IDefaultContainerProps<IDefaultContainerData>> {\n    constructor(props: IDefaultContainerProps<IDefaultContainerData>) {\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            <Container\n                containerType={config.containerType}\n                className={config.className}\n                typeName={this.props.typeName}\n                id={this.props.id}\n                request={this.props.context.request}\n                backgroundImage={config?.backgroundImage}\n                backgroundImageRepeat={config?.backgroundImageRepeat}\n                backgroundImageSize={config?.backgroundImageSize}\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n                moduleLayout={(config as any)?.msdyn365__moduleLayout}\n                backgroundColor={this.props.config.backgroundColor}\n            >\n                {heading && <HeadingComponent className='container-heading' {...headingProps} />}\n                {slots &&\n                    slots.content &&\n                    slots.content.map((children: React.ReactNode, index: number) => {\n                        return (\n                            <div className={this._getChildColClassName()} key={index}>\n                                {children}\n                            </div>\n                        );\n                    })}\n            </Container>\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 { 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<IDefaultContainer2SlotsConfig<IDefaultContainer2SlotsData>>}\n */\nclass Default2SlotContainer extends React.PureComponent<IDefaultContainer2SlotsProps<IDefaultContainer2SlotsData>> {\n    constructor(props: IDefaultContainer2SlotsProps<IDefaultContainer2SlotsData>) {\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            <Container\n                containerType={config.containerType}\n                className={config.className}\n                typeName={this.props.typeName}\n                id={this.props.id}\n                request={this.props.context.request}\n                backgroundImage={config?.backgroundImage}\n                backgroundImageRepeat={config?.backgroundImageRepeat}\n                backgroundImageSize={config?.backgroundImageSize}\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n                moduleLayout={(config as any)?.msdyn365__moduleLayout}\n                backgroundColor={this.props.config.backgroundColor}\n            >\n                {heading && <HeadingComponent className='container-heading' {...headingProps} />}\n                {content && content[0] && <div className={slotsClassNames.left.join(' ')}>{content[0]}</div>}\n                {content && content[1] && <div className={slotsClassNames.right.join(' ')}>{content[1]}</div>}\n                <>\n                    {showErrors(context) &&\n                        content &&\n                        content.slice(2, content.length - 1).map((slot: ReactNode, index: number) => {\n                            return (\n                                <div className='col-12' key={index}>\n                                    <div className='card'>\n                                        <div className='card-header text-white bg-danger'>\n                                            Slot exceeded maximum number of slots supported by container. (2)\n                                        </div>\n                                    </div>\n                                </div>\n                            );\n                        })}\n                </>\n            </Container>\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<IDefaultContainer3SlotsData<IDefaultContainer3SlotsData>>}\n */\nclass Default3SlotContainer extends React.PureComponent<IDefaultContainer3SlotsProps<IDefaultContainer3SlotsData>> {\n    constructor(props: IDefaultContainer3SlotsProps<IDefaultContainer3SlotsData>) {\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            <Container\n                containerType={config.containerType}\n                className={config.className}\n                typeName={this.props.typeName}\n                id={this.props.id}\n                request={this.props.context.request}\n                backgroundImage={config?.backgroundImage}\n                backgroundImageRepeat={config?.backgroundImageRepeat}\n                backgroundImageSize={config?.backgroundImageSize}\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n                moduleLayout={(config as any)?.msdyn365__moduleLayout}\n                backgroundColor={this.props.config.backgroundColor}\n            >\n                {heading && <HeadingComponent className='container-heading' {...headingProps} />}\n                {content && content[0] && <div className={slotsClassNames.left.join(' ')}>{content[0]}</div>}\n                {content && content[1] && <div className={slotsClassNames.center.join(' ')}>{content[1]}</div>}\n                {content && content[2] && <div className={slotsClassNames.right.join(' ')}>{content[2]}</div>}\n                <>\n                    {showErrors(context) &&\n                        content &&\n                        content.slice(2, content.length - 1).map((slot: ReactNode, index: number) => {\n                            return (\n                                <div className='col-12' key={index}>\n                                    <div className='card'>\n                                        <div className='card-header text-white bg-danger'>\n                                            Slot exceeded maximum number of slots supported by container. (3)\n                                        </div>\n                                    </div>\n                                </div>\n                            );\n                        })}\n                </>\n            </Container>\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 { SDK_FRAGMENT_NAME, msdyn365Commerce } from '@msdyn365-commerce/core-internal';\nimport * as path from 'path';\nimport * as React from 'react';\nimport { isAbsoluteUrl, isRelativeUrl, logDebug, logError } from '../../utils/script-utils';\nimport { IDefaultExternalScriptProps } from './default-external-script.props.autogenerated';\n\n/**\n *\n * DefaultExternalScript component\n * @extends {React.PureComponent<IDefaultExternalScriptProps<{}>>}\n */\nclass DefaultExternalScript extends React.PureComponent<IDefaultExternalScriptProps<{}>> {\n    constructor(props: IDefaultExternalScriptProps<{}>) {\n        super(props);\n    }\n\n    public render(): JSX.Element | null {\n        const { config } = this.props;\n        logDebug(`Adding script tags for '${this.props.id}/${this.props.typeName}'`, this.props.telemetry);\n        let source = config.scriptSource;\n\n        let relativeBaseUrl: string = '';\n        // Construct the relative base url, i.e. the base url from which statics will be served\n        if (this.props.context) {\n            relativeBaseUrl += this.props.context.request.url.staticCdnUrl;\n            relativeBaseUrl += msdyn365Commerce.getEnvironmentVariable('SUBMISSIONID') || '';\n        }\n\n        if (isRelativeUrl(source)) {\n            // If the source is a relative URL prepend the relative base url to the resolved source url for the actual source\n            source = `${relativeBaseUrl}/${path.join(source)}`;\n        } else if (source === '' || !isAbsoluteUrl(source)) {\n            logError(\n                'Invalid external script - not a url. The external source is not an external or relative url, please use default-inline-script if you wish to load inline scripts',\n                this.props.telemetry\n            );\n            return null;\n        }\n        const scriptHtml = `<script src=\"${source}\" async=${!!config.async} defer=${!!config.defer} ></script>`;\n\n        return React.createElement(SDK_FRAGMENT_NAME, { key: this.props.id, dangerouslySetInnerHTML: { __html: scriptHtml } });\n    }\n}\n\nexport default DefaultExternalScript;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { isNonceEnabled, SDK_FRAGMENT_NAME } from '@msdyn365-commerce/core-internal';\nimport * as React from 'react';\nimport { isAbsoluteUrl, isRelativeUrl, logDebug, logError } from '../../utils/script-utils';\nimport { IDefaultInlineScriptProps } from './default-inline-script.props.autogenerated';\n\n/**\n *\n * DefaultScript\n * @extends {React.PureComponent<IDefaultScriptProps<{}>>}\n */\nclass DefaultInlineScript extends React.PureComponent<IDefaultInlineScriptProps<{}>> {\n    constructor(props: IDefaultInlineScriptProps<{}>) {\n        super(props);\n    }\n\n    public render(): JSX.Element | null {\n        const { config } = this.props;\n        logDebug(`Adding script tags for '${this.props.id}/${this.props.typeName}'`, this.props.telemetry);\n        const source = config.inlineScript;\n\n        if (!source || source === '' || isAbsoluteUrl(source) || isRelativeUrl(source)) {\n            logError(\n                'Invalid inline script - Empty inline source defined or a url is being used as a source. Use default-external-script to load scripts from an external or relative url.',\n                this.props.telemetry\n            );\n            return null;\n        }\n\n        if (source.includes('</script>')) {\n            logError('Invalid inline script - inline script should not contain html tags', this.props.telemetry);\n            return null;\n        }\n\n        const nonceToken = this.props.context && isNonceEnabled(this.props.context.request);\n        const scriptHtml = `<script ${nonceToken ? `nonce='${nonceToken}'` : ''}>${source}</script>`;\n        return React.createElement(SDK_FRAGMENT_NAME, { key: this.props.id, dangerouslySetInnerHTML: { __html: scriptHtml } });\n    }\n}\n\nexport default DefaultInlineScript;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { SDK_FRAGMENT_NAME } from '@msdyn365-commerce/core-internal';\nimport * as React from 'react';\nimport { isAbsoluteUrl, isRelativeUrl, logDebug, logError } from '../../utils/script-utils';\nimport { IDefaultInlineStyleProps } from './default-inline-style.props.autogenerated';\n\n/**\n *\n * DefaultStyle\n * @extends {React.PureComponent<IDefaultInlineStyleProps<{}>>}\n */\n\nconst DefaultInlineStyle = (props: IDefaultInlineStyleProps<{}>) => {\n    const { config, id, typeName, telemetry } = props;\n    logDebug(`Adding style tags for '${id}/${typeName}'`, telemetry);\n    const source = config.inlineStyle;\n\n    if (!source || source === '' || isAbsoluteUrl(source) || isRelativeUrl(source)) {\n        logError('Invalid inline style - Empty inline source defined or a url is being used as a source.', telemetry);\n        return null;\n    }\n\n    if (source.includes('</style>')) {\n        logError('Invalid inline style - inline style should not contain html tags', telemetry);\n        return null;\n    }\n\n    const styleHtml = `<style>${source}</style>`;\n    return React.createElement(SDK_FRAGMENT_NAME, { key: id, dangerouslySetInnerHTML: { __html: styleHtml } });\n};\n\nexport default DefaultInlineStyle;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nimport { isNonceEnabled, SDK_FRAGMENT_NAME } from '@msdyn365-commerce/core-internal';\nimport { IDefaultMetatagsData } from './default-metatags.data';\nimport { IDefaultMetatagsProps } from './default-metatags.props.autogenerated';\n\n/**\n *\n * DefaultPageSummaryMetadata component\n * @extends {React.PureComponent<DefaultPageSummaryProps<{}>>}\n */\nclass DefaultMetaTags extends React.PureComponent<IDefaultMetatagsProps<IDefaultMetatagsData>> {\n    public render(): JSX.Element {\n        const { data, config } = this.props;\n        const nonceToken = this.props.context && isNonceEnabled(this.props.context.request);\n        let metaTagsHtml: string = '';\n        let metaTags;\n        if (config.metaTags) {\n            metaTags = nonceToken ? this._addNonceToInlineScript(config.metaTags, nonceToken) : config.metaTags;\n            metaTagsHtml = metaTags && metaTags.join('\\n');\n        } else if (data.metaTags) {\n            metaTags = data.metaTags;\n            let metaTagsText = metaTags.map(simpleText => simpleText.text);\n            metaTagsText = nonceToken ? this._addNonceToInlineScript(metaTagsText, nonceToken) : metaTagsText;\n            metaTagsHtml = metaTagsText && metaTagsText.join('\\n');\n        }\n        return React.createElement(SDK_FRAGMENT_NAME, { key: this.props.id, dangerouslySetInnerHTML: { __html: metaTagsHtml } });\n    }\n\n    private _addNonceToInlineScript(metaTags: string[], nonceToken: string): string[] {\n        const inlineScripRegex = /<script((?:(?!src=).)*?)>(.*?)<\\/script>/g;\n        return metaTags\n            .map(metaTag => {\n                if (inlineScripRegex.test(metaTag)) {\n                    return metaTag.replace(/<script/g, `<script nonce=${nonceToken}`);\n                }\n                return metaTag;\n            })\n            .filter(Boolean);\n    }\n}\n\nexport default DefaultMetaTags;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { LogLevel } from '@msdyn365-commerce/telemetry-internal';\nimport * as React from 'react';\nimport { isEditorialMode } from '@msdyn365-commerce/core-internal';\nimport { IDefaultPageProps } from './default-page.props.autogenerated';\n\n/**\n *\n * CoreComponent component\n * @extends {React.PureComponent<IDefaultPageProps>}\n */\nclass DefaultPageContainer extends React.PureComponent<IDefaultPageProps<{}>> {\n    constructor(props: IDefaultPageProps<{}>) {\n        super(props);\n    }\n\n    public render(): JSX.Element {\n        const { slots, telemetry, id, typeName } = this.props;\n\n        let skipToMainText = this.props.config && this.props.config.skipToMainText;\n        telemetry.log(LogLevel.Debug, \"DefaultPageContainer rendering for '{id}/{typeName}'\", { values: [id, typeName] });\n\n        if (!skipToMainText) {\n            skipToMainText =\n                this.props.context.app && this.props.context.app.platform ? this.props.context.app.platform.skipToMainText : '';\n        }\n\n        const tabIndexSkipToMain = isEditorialMode(this.props.context.actionContext.requestContext) ? -1 : 0;\n\n        return (\n            <React.Fragment>\n                <a className='skip-to-main' href='#main' tabIndex={tabIndexSkipToMain}>\n                    {skipToMainText}\n                </a>\n                <header>\n                    {slots &&\n                        slots.header &&\n                        slots.header.map((children: React.ReactNode) => {\n                            return children;\n                        })}\n                </header>\n                {slots && slots.subheader && (\n                    <div id='subheader'>\n                        {slots.subheader.map((children: React.ReactNode) => {\n                            return children;\n                        })}\n                    </div>\n                )}\n                <main id='main'>\n                    {slots &&\n                        slots.primary &&\n                        slots.primary.map((children: React.ReactNode) => {\n                            return children;\n                        })}\n                </main>\n                {slots && slots.subfooter && (\n                    <div id='subfooter'>\n                        {slots.subfooter.map((children: React.ReactNode) => {\n                            return children;\n                        })}\n                    </div>\n                )}\n                <footer>\n                    {slots &&\n                        slots.footer &&\n                        slots.footer.map((children: React.ReactNode) => {\n                            return children;\n                        })}\n                </footer>\n            </React.Fragment>\n        );\n    }\n}\n\nexport default DefaultPageContainer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\n// TODO: Current build require at least one tsx file\nexport default () => <div />;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\n// TODO: Current build require at least one tsx file\nexport default () => <div />;\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 { IArticleDetailsData } from './article-details.data';\r\nimport { IArticleDetailsProps } from './article-details.props.autogenerated';\r\nimport { ProductsDataActions, AttributeProduct } from '@msdyn365-commerce/retail-proxy/';\r\nexport interface IArticleDetailsViewProps extends IArticleDetailsProps<IArticleDetailsData> {\r\n    productId: string;\r\n    modelInfo: string;\r\n    attributes: AttributeProduct[] | undefined;\r\n}\r\n\r\n/**\r\n *\r\n * ArticleDetails component\r\n * @extends {React.PureComponent<IArticleDetailsProps<IArticleDetailsData>>}\r\n */\r\nclass ArticleDetails extends React.PureComponent<IArticleDetailsProps<IArticleDetailsData>> {\r\n    public render(): JSX.Element | null {\r\n        const {\r\n            data: { product }\r\n        } = this.props;\r\n\r\n        const productId = product.result && product.result.ItemId ? product.result.ItemId : '';\r\n        const attributes = ProductsDataActions.getChannelProductAttributesAsync(this.context);\r\n        const modelInfo = attributes.result ? attributes.result.find(n => n.Name === 'ModelSize') : '';\r\n\r\n        const articleDetailsProps: IArticleDetailsViewProps = {\r\n            ...this.props,\r\n            productId,\r\n            modelInfo: modelInfo && modelInfo.Name ? modelInfo.Name : '',\r\n            attributes: attributes.result\r\n        };\r\n\r\n        return this.props.renderView(articleDetailsProps);\r\n    }\r\n}\r\n\r\nexport default ArticleDetails;\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 { IArticleSustainabilityData } from './article-sustainability.data';\r\nimport { IArticleSustainabilityProps } from './article-sustainability.props.autogenerated';\r\nimport { ProductsDataActions, AttributeProduct } from '@msdyn365-commerce/retail-proxy/';\r\nexport interface IArticleSustainabilityViewProps extends IArticleSustainabilityProps<IArticleSustainabilityData> {\r\n    attributes: AttributeProduct[] | undefined;\r\n}\r\n\r\n/**\r\n *\r\n * ArticleSustainability component\r\n * @extends {React.PureComponent<IArticleSustainabilityProps<IArticleSustainabilityData>>}\r\n */\r\nclass ArticleSustainability extends React.PureComponent<IArticleSustainabilityProps<IArticleSustainabilityData>> {\r\n    public render(): JSX.Element | null {\r\n        const attributes = ProductsDataActions.getChannelProductAttributesAsync(this.context);\r\n\r\n        const articleSustainProps: IArticleSustainabilityViewProps = {\r\n            ...this.props,\r\n            attributes: attributes.result\r\n        };\r\n\r\n        return this.props.renderView(articleSustainProps);\r\n    }\r\n}\r\n\r\nexport default ArticleSustainability;\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 { IEveIframeData } from './eve-iframe.data';\r\nimport { IEveIframeProps } from './eve-iframe.props.autogenerated';\r\n\r\nexport interface IEveIframeViewProps extends IEveIframeProps<IEveIframeData> {}\r\n\r\n/**\r\n *\r\n * EveIframe component\r\n * @extends {React.PureComponent<IEveIframeProps<IEveIframeData>>}\r\n */\r\nclass EveIframe extends React.PureComponent<IEveIframeProps<IEveIframeData>> {\r\n    public render(): JSX.Element | null {\r\n        return this.props.renderView(this.props);\r\n    }\r\n}\r\n\r\nexport default EveIframe;\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 { IGtmBodyData } from './gtm-body.data';\r\nimport { IGtmBodyProps } from './gtm-body.props.autogenerated';\r\n\r\nexport interface IGtmBodyViewProps extends IGtmBodyProps<IGtmBodyData> {}\r\n\r\n/**\r\n *\r\n * GtmBody component\r\n * @extends {React.PureComponent<IGtmBodyProps<IGtmBodyData>>}\r\n */\r\nclass GtmBody extends React.PureComponent<IGtmBodyProps<IGtmBodyData>> {\r\n    public render(): JSX.Element | null {\r\n        return this.props.renderView(this.props);\r\n    }\r\n}\r\n\r\nexport default GtmBody;\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 { ILoyaltyAutoEnrollData } from './loyalty-auto-enroll.data';\r\nimport { ILoyaltyAutoEnrollProps } from './loyalty-auto-enroll.props.autogenerated';\r\nimport { computed } from 'mobx';\r\nimport { issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\r\nexport interface ILoyaltyAutoEnrollViewProps extends ILoyaltyAutoEnrollProps<ILoyaltyAutoEnrollData> {}\r\n\r\n/**\r\n *\r\n * LoyaltyAutoEnroll component\r\n * @extends {React.PureComponent<ILoyaltyAutoEnrollProps<ILoyaltyAutoEnrollData>>}\r\n */\r\nclass LoyaltyAutoEnroll extends React.PureComponent<ILoyaltyAutoEnrollProps<ILoyaltyAutoEnrollData>> {\r\n    @computed\r\n    private get isAuthenticated(): boolean {\r\n        const {\r\n            context: {\r\n                request: { user }\r\n            }\r\n        } = this.props;\r\n        return user && user.isAuthenticated;\r\n    }\r\n\r\n    public render(): JSX.Element | null {\r\n        const {\r\n            data: { loyaltyCard },\r\n            context: {\r\n                request: { apiSettings },\r\n                actionContext\r\n            }\r\n        } = this.props;\r\n        if (this.isAuthenticated && !loyaltyCard?.result?.CardNumber) {\r\n            issueLoyalty(new IssueLoyaltyInput(apiSettings), actionContext).catch(err => console.error(err));\r\n        }\r\n        return null;\r\n    }\r\n}\r\n\r\nexport default LoyaltyAutoEnroll;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\n// TODO: Current build require at least one tsx file\r\nexport default () => <div />;\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 { isNonceEnabled, SDK_FRAGMENT_NAME } from '@msdyn365-commerce/core-internal';\r\nimport * as React from 'react';\r\nimport { IUsercentricsInlineScriptProps } from './usercentrics-inline-script.props.autogenerated';\r\n\r\nimport { IInternalTelemetry, LogLevel } from '@msdyn365-commerce/telemetry-internal';\r\n\r\nconst logDebug = (debugMessage: string, telemetry: IInternalTelemetry | undefined): void => {\r\n    telemetry && telemetry.log(LogLevel.Debug, debugMessage);\r\n};\r\n\r\nconst logError = (errorMessage: string, telemetry: IInternalTelemetry | undefined): void => {\r\n    telemetry && telemetry.log(LogLevel.Error, errorMessage);\r\n};\r\n\r\n/**\r\n * Returns true if the given string matches an URL pattern\r\n *\r\n * @param source The string to check against\r\n */\r\nconst isAbsoluteUrl = (source: string): boolean => {\r\n    return /^(http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?$/.test(source);\r\n};\r\n\r\nconst isRelativeUrl = (source: string): boolean => {\r\n    return /^(?!www\\.|(?:http|ftp)s?:\\/\\/|[A-Za-z]:\\\\|\\/\\/).*(\\.js){1}$/.test(source);\r\n};\r\n\r\n/**\r\n *\r\n * UsercentricsScript\r\n * @extends {React.PureComponent<IUsercentricsScriptProps<{}>>}\r\n */\r\nclass UsercentricsInlineScript extends React.PureComponent<IUsercentricsInlineScriptProps<{}>> {\r\n    constructor(props: IUsercentricsInlineScriptProps<{}>) {\r\n        super(props);\r\n    }\r\n\r\n    public render(): JSX.Element | null {\r\n        const { config } = this.props;\r\n        logDebug(`Adding script tags for '${this.props.id}/${this.props.typeName}'`, this.props.telemetry);\r\n        const source = config.inlineScript;\r\n\r\n        if (!source || source === '' || isAbsoluteUrl(source) || isRelativeUrl(source)) {\r\n            logError(\r\n                'Invalid inline script - Empty inline source defined or a url is being used as a source. Use usercentrics-external-script to load scripts from an external or relative url.',\r\n                this.props.telemetry\r\n            );\r\n            return null;\r\n        }\r\n\r\n        if (source.includes('</script>')) {\r\n            logError('Invalid inline script - inline script should not contain html tags', this.props.telemetry);\r\n            return null;\r\n        }\r\n\r\n        const nonceToken = this.props.context && isNonceEnabled(this.props.context.request);\r\n        const scriptHtml = `<script type=\"text/plain\" data-usercentrics=\"${this.props.config.dataProcessingServiceName}\" ${\r\n            nonceToken ? `nonce='${nonceToken}'` : ''\r\n        }>${source}</script>`;\r\n        return React.createElement(SDK_FRAGMENT_NAME, { key: this.props.id, dangerouslySetInnerHTML: { __html: scriptHtml } });\r\n    }\r\n}\r\n\r\nexport default UsercentricsInlineScript;\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 { IArticleDetailsViewProps } from './article-details';\r\n\r\nexport default (props: IArticleDetailsViewProps) => {\r\n    return (\r\n        <>\r\n            <h2 className={props.config.className}>Details</h2>\r\n\r\n            <p>Article: {props.productId}</p>\r\n            <p>{props.modelInfo}</p>\r\n        </>\r\n    );\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 { IArticleSustainabilityViewProps } from './article-sustainability';\r\n\r\nexport default (props: IArticleSustainabilityViewProps) => {\r\n    return '';\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\nimport { IEveIframeViewProps } from './eve-iframe';\r\n\r\nexport default (props: IEveIframeViewProps) => {\r\n    return (\r\n        <iframe\r\n            //@ts-ignore\r\n            style={{ width: '100%', height: `${props.config.height}px`, border: 'none', overflow: 'auto' }}\r\n            src={props.config.srcURL}\r\n        ></iframe>\r\n    );\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 msdyn365Commerce from '@msdyn365-commerce/core-internal';\r\nimport { IGtmBodyViewProps } from './gtm-body';\r\n\r\nexport default (props: IGtmBodyViewProps) => {\r\n    if (msdyn365Commerce.isBrowser) {\r\n        const url = `https://www.googletagmanager.com/ns.html?id=${props.config.gtmId}`;\r\n        const body = document.querySelector('body');\r\n        const exists = !!document.querySelector('#gtm');\r\n        if (body && !exists) {\r\n            const gtm = document.createElement('noscript');\r\n            gtm.id = 'gtm';\r\n            const ifel = document.createElement('iframe');\r\n            ifel.setAttribute('src', url);\r\n            ifel.setAttribute('height', '0');\r\n            ifel.setAttribute('width', '0');\r\n            ifel.setAttribute('style', 'display: none; visibility: hidden;');\r\n            gtm.appendChild(ifel);\r\n            body.prepend(gtm);\r\n        }\r\n    }\r\n\r\n    return null;\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 { ILoyaltyAutoEnrollViewProps } from './loyalty-auto-enroll';\r\n\r\nexport default (props: ILoyaltyAutoEnrollViewProps) => {\r\n    return null;\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<IBackgroundImageStyle> => {\n    const { containerType, image, request, configs } = props;\n\n    const gridSettings = request.gridSettings ?? {};\n    const imageSettings = image.imageSettings;\n\n    const styles: IGeneric<IBackgroundImageStyle> = {};\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<IAny> => {\n    let style: IGeneric<IAny> = {};\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<IBackgroundImageStyle>\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<IBackgroundImageStyle>): 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<IBackgroundImageProps, IBackgroundImageState>}\n */\nexport class BackgroundImage extends React.PureComponent<IBackgroundImageProps, IBackgroundImageState> {\n    private stylesByViewport: IGeneric<IBackgroundImageStyle>;\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                        <div {...eventHandlers} {...attributes}>\n                            {children}\n                        </div>\n                    );\n                } else if (this._isLazyload()) {\n                    // On lazyload, only include the class name on the first render.\n                    return (\n                        <div {...eventHandlers} className={backgroundImageClassName}>\n                            {children}\n                        </div>\n                    );\n                } else {\n                    // On lazyload disabled, render the default attributes from server side.\n                    return (\n                        <div {...eventHandlers} {...this._getDefaultAttributes()}>\n                            {children}\n                        </div>\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<IBackgroundImageStyle>,\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<IContainerProps> = (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 = <div className='row'>{containerContent}</div>;\n    }\n\n    if (backgroundImage && backgroundImage.src && backgroundImage.imageSettings && request) {\n        containerContent = (\n            <BackgroundImage\n                containerType={typeName}\n                request={request}\n                image={backgroundImage}\n                configs={{\n                    repeat: backgroundImageRepeat,\n                    size: backgroundImageSize,\n                    layout: moduleLayout\n                }}\n            >\n                {containerContent}\n            </BackgroundImage>\n        );\n    }\n\n    const containerStyle: React.CSSProperties | undefined = backgroundColor ? { backgroundColor } : undefined;\n\n    return containerType ? (\n        <div className={`${typeName} ${id} ${getContainerType(containerType)}${customClassName}`} style={containerStyle}>\n            {containerContent}\n        </div>\n    ) : (\n        <div className={`${typeName} ${id}${customClassName}`} style={containerStyle}>\n            {containerContent}\n        </div>\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            <Text\n                className={classNameWithHeading}\n                tag={Tag}\n                text={headingText}\n                editProps={{ onEdit: props.handleTextChange, requestContext: props.requestContext }}\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 { 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    <string[][]>(\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<string, string>([\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 { IInternalTelemetry, LogLevel } from '@msdyn365-commerce/telemetry-internal';\n\nexport const logDebug = (debugMessage: string, telemetry: IInternalTelemetry | undefined): void => {\n    telemetry && telemetry.log(LogLevel.Debug, debugMessage);\n};\n\nexport const logError = (errorMessage: string, telemetry: IInternalTelemetry | undefined): void => {\n    telemetry && telemetry.log(LogLevel.Error, errorMessage);\n};\n\n/**\n * Returns true if the given string matches an URL pattern\n *\n * @param source The string to check against\n */\nexport const isAbsoluteUrl = (source: string): boolean => {\n    // eslint-disable-next-line security/detect-unsafe-regex\n    return /^(http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?$/.test(source);\n};\n\nexport const isRelativeUrl = (source: string): boolean => {\n    return /^(?!www\\.|(?:http|ftp)s?:\\/\\/|[A-Za-z]:\\\\|\\/\\/).*(\\.js){1}$/.test(source);\n};\n"],"names":["DefaultPageSummary","React","render","undefined","this","props","data","pageSummary","result","Error","title","description","keywords","sharingImageUrl","faviconUrl","config","context","canonicalUrl","sharingImage","src","pageTitle","_constructPageTitle","request","app","HtmlHeadInclude","name","content","rel","href","disableOgTags","_renderOgTags","disableTwitterTags","_renderTwitterTags","property","moduleConfig","ignoreTitleSuffixPrefix","appConfig","platform","pageTitlePrefix","pageTitleSuffix","DefaultContainer","constructor","super","handleTextChange","event","heading","headingText","target","value","slots","telemetry","log","LogLevel","Debug","values","id","typeName","headingProps","_objectSpread","requestContext","Container","containerType","className","backgroundImage","backgroundImageRepeat","backgroundImageSize","moduleLayout","msdyn365__moduleLayout","backgroundColor","HeadingComponent","Object","assign","map","children","index","_getChildColClassName","key","layout","childrenWidth","_getWidthClass","s","colWidths","get","Default2SlotContainer","_getColClassName","classNames","getColClassArray","length","reduce","memo","_ref","left","right","push","slotsClassNames","Warning","join","showErrors","slice","slot","Default3SlotContainer","center","DefaultExternalScript","logDebug","source","scriptSource","relativeBaseUrl","url","staticCdnUrl","msdyn365Commerce","getEnvironmentVariable","isRelativeUrl","path","isAbsoluteUrl","logError","scriptHtml","async","defer","SDK_FRAGMENT_NAME","dangerouslySetInnerHTML","__html","DefaultInlineScript","inlineScript","includes","nonceToken","isNonceEnabled","inlineStyle","styleHtml","DefaultMetaTags","metaTags","metaTagsHtml","_addNonceToInlineScript","metaTagsText","simpleText","text","inlineScripRegex","metaTag","test","replace","filter","Boolean","DefaultPageContainer","skipToMainText","tabIndexSkipToMain","isEditorialMode","actionContext","tabIndex","header","subheader","primary","subfooter","footer","ArticleDetails","product","productId","ItemId","attributes","ProductsDataActions","modelInfo","find","n","Name","articleDetailsProps","renderView","ArticleSustainability","articleSustainProps","EveIframe","GtmBody","LoyaltyAutoEnroll","user","isAuthenticated","_loyaltyCard$result","loyaltyCard","apiSettings","CardNumber","issueLoyalty","IssueLoyaltyInput","catch","err","console","error","__decorate","computed","errorMessage","UsercentricsInlineScript","debugMessage","dataProcessingServiceName","style","width","height","border","overflow","srcURL","isBrowser","gtmId","body","document","querySelector","exists","gtm","createElement","ifel","setAttribute","appendChild","prepend","getBackgroundRepeatProperty","size","repeat","getBackgroundSizeProperty","buildBackgroundImageStylesByViewport","_request$gridSettings","image","configs","gridSettings","imageSettings","styles","largestGridSettingViewportName","getLargestGridSettingViewportName","authoringViewPorts","getAuthoringViewport","moduleName","authoringHelper","window","_msdyn365","constructViewportInformationForImage","themeSettings","imgSettings","viewports","_cloneDeep2","xs","w","h","sm","md","lg","xl","skipWidthAndHeightSettings","keys","vp","_imgSettings$viewport","viewport","minMaxWidth","getMinMaxWidth","urlSrc","getImageResizeUrl","externalProvider","maxWidth","max","minWidth","min","minHeight","backgroundRepeat","backgroundSize","backgroundPosition","setStyleAttribute","currentStyle","getDataBgSetAttribute","dataBgSetAttributes","BACKGROUND_IMAGE_CLASS_NAME","BackgroundImage","state","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","backgroundImageClassName","isAuthoringEditEnabled","processedAtributes","_processAttributes","_isLazyload","_getAttributes","eventHandlers","onDoubleClick","_getDefaultAttributes","_unused","lazyLoad","getBackgroundImageLazyloadAttributes","role","getBackgroundImageAttributes","currentTarget","binding","eventTarget","$type","selectedStyle","_isEqual2","setState","winInnerWidth","innerWidth","_this$stylesByViewpor","_this$stylesByViewpor2","_this$stylesByViewpor3","_this$stylesByViewpor4","Number","MAX_SAFE_INTEGER","_getDefaultStyle","_this$props$image3","disableLazyLoad","getContainerType","customClassName","containerContent","containerStyle","tag","textSize","Tag","classNameWithHeading","Text","editProps","onEdit","sizePattern","getColumnSizes","exec","cols","split","translatedSize","prefix","toLowerCase","translatePrefix","sizePrefix","colWidth","isDebug","isEditor","params","options","xsmall","small","medium","large","Map"],"sourceRoot":""}