{"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":""}