{"version":3,"file":"static/js/20.ae168181c7347677b586.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/dyn-catalog-search/dyn-catalog-search.tsx?976c","webpack://Msdyn365.Commerce.Online/./src/modules/dyn-catalog-search/dyn-catalog-search.view.tsx?e843","webpack://Msdyn365.Commerce.Online/./src/themes/dyn-tebutheme/views/header.view.tsx?6425","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/components/additional-content.tsx?d5f9","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/components/links.tsx?abbf","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/content-block.tsx?3084","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/content-block.view.tsx?1773","webpack://Msdyn365.Commerce.Online/./src/components/container-background-image/container-background-image-helper.ts?ce2e","webpack://Msdyn365.Commerce.Online/./src/components/container-background-image/container-backgroud-image.tsx?e863","webpack://Msdyn365.Commerce.Online/./src/components/base-components.tsx?daec","webpack://Msdyn365.Commerce.Online/./src/modules/default-container-2-slots/default-container-2-slots.tsx?8065","webpack://Msdyn365.Commerce.Online/./src/modules/default-container-3-slots/default-container-3-slots.tsx?ac77","webpack://Msdyn365.Commerce.Online/./src/modules/default-container/default-container.tsx?01c3","webpack://Msdyn365.Commerce.Online/./src/utils/classnames.ts?a0ff","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/order-history.view.tsx?a21d"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IDynCatalogSearchData } from './dyn-catalog-search.data';\r\nimport { IDynCatalogSearchProps } from './dyn-catalog-search.props.autogenerated';\r\n\r\nexport interface IDynCatalogSearchState {\r\n filter: string;\r\n}\r\n\r\nexport interface IDynCatalogSearchViewProps extends IDynCatalogSearchProps {\r\n handleChange(event: any): void;\r\n catalogSearch(): void;\r\n}\r\n\r\n/**\r\n *\r\n * DynCatalogSearch component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass DynCatalogSearch extends React.PureComponent, IDynCatalogSearchState> {\r\n public _handleChange(event: any): void {\r\n const filter = event.target.value.toString();\r\n const transformedFilter = `${String(filter).includes('::') ? String(filter).split('::')[0] : filter}*`;\r\n this.setState({\r\n filter: transformedFilter\r\n });\r\n }\r\n\r\n public _catalogSearch(): void {\r\n window.location.assign(`${this.props.context.actionContext.requestContext.sitePath}/search?q=${this.state.filter}`);\r\n }\r\n\r\n public constructor(props: IDynCatalogSearchProps) {\r\n super(props);\r\n this.state = { filter: '' };\r\n this._handleChange = this._handleChange.bind(this);\r\n this._catalogSearch = this._catalogSearch.bind(this);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const props: IDynCatalogSearchViewProps = {\r\n ...(this.props as IDynCatalogSearchProps),\r\n handleChange: this._handleChange,\r\n catalogSearch: this._catalogSearch\r\n };\r\n return this.props.renderView(props);\r\n }\r\n}\r\n\r\nexport default DynCatalogSearch;\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 { IDynCatalogSearchViewProps } from './dyn-catalog-search';\r\n\r\nexport default (props: IDynCatalogSearchViewProps) => {\r\n const handleKeyDown = (event: React.KeyboardEvent) => {\r\n if (event.key === 'Enter') {\r\n props.catalogSearch();\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\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 { AsyncResult } from '@msdyn365-commerce/core';\r\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\r\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\r\nimport { Collapse, Drawer, Module, Node, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nconst headerView: React.FC = props => {\r\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider, context } = props;\r\n const TopHeaderContainer: INodeProps = {\r\n className: classnames('header__top', 'row', 'justify-content-between', 'align-items-center')\r\n };\r\n //const contactURL = `${context.request.url.requestUrl.protocol}//${context.request.url.requestUrl.host}${context.request.sitePath??''}/contact`;\r\n const contactURL = `${context.actionContext.requestContext.sitePath ?? ''}/contact`;\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n
Customer Service: +33 1 30 46 39 00
\r\n \r\n \r\n Contact us\r\n \r\n
\r\n
\r\n
\r\n {props.preferredStore}\r\n
\r\n
\r\n {_renderReactFragment(props.siteOptions)}\r\n
\r\n
\r\n {_renderAccountBlock(props, false)}\r\n
\r\n
{props.wishListIconDesktop}
\r\n
\r\n
{props.cartIcon}
\r\n
\r\n
\r\n \r\n {props.logo}\r\n {_renderReactFragment(props.search)}\r\n
\r\n {props.wishListIconDesktop}\r\n {props.cartIcon}\r\n
\r\n {props.navIcon}\r\n
\r\n {_renderCollapseMenu(props)}\r\n {_renderReactFragment(props.menuBar)}\r\n
\r\n
\r\n );\r\n};\r\n\r\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\r\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\r\n return (\r\n \r\n \r\n {_renderReactFragment(props.search)}\r\n {_renderMobileAccountBlock(props, true)}\r\n {props.wishListIconMobile}\r\n {props.siteOptions}\r\n \r\n \r\n {_renderReactFragment(props.menuBar)}\r\n \r\n );\r\n}\r\n\r\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\r\n const customer = accountInformation && accountInformation.result;\r\n return <>{customer ? customer.FirstName || customer.Name : ''};\r\n};\r\n\r\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\r\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames(\r\n 'ms-header__drawer',\r\n AccountInfoDropdownParentContainer.className,\r\n renderForMobile ? 'account-mobile' : 'account-desktop'\r\n );\r\n\r\n if (accountLinks) {\r\n return (\r\n \r\n
\r\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\r\n {signOutLink}\r\n
\r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\r\n const {\r\n AccountInfoDropdownParentContainer,\r\n AccountInfoDropdownPopoverConentContainer,\r\n accountInfoDropdownButton,\r\n signOutLink,\r\n signInLink,\r\n accountLinks\r\n } = props;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames(\r\n AccountInfoDropdownParentContainer.className,\r\n renderForMobile ? 'account-mobile' : 'account-desktop'\r\n );\r\n if (AccountInfoDropdownPopoverConentContainer) {\r\n return (\r\n \r\n {accountInfoDropdownButton}\r\n \r\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\r\n {signOutLink}\r\n \r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\r\n return (\r\n <>\r\n {items && items.length > 0\r\n ? items.map((slot: React.ReactNode, index: number) => {\r\n return {slot};\r\n })\r\n : null}\r\n \r\n );\r\n}\r\n\r\nexport default headerView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAdditionalContentData, ILinksData } from '../content-block.props.autogenerated';\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Component props.\n */\nexport interface IContentBlockAdditionalContentProps {\n requestContext: Msdyn365.IRequestContext;\n additionalContent: IAdditionalContentData[] | undefined;\n handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content view props.\n */\nexport interface IContentBlockAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n additionalContentItems?: IContentBlockAdditionalContentItemViewProps[];\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Item view props.\n */\nexport interface IContentBlockAdditionalContentItemViewProps {\n heading: React.ReactNode;\n text: React.ReactNode;\n links: React.ReactNode;\n additionalContentItemContainer: INodeProps;\n additionalContentItemLinks: INodeProps;\n}\n\n/**\n * Renders additional content heading.\n * @param additionalContentHeading - Additional content heading.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param additionalContentParagraphText - Additional content paragraph text.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IContentBlockAdditionalContentProps, itemIndex: number, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'ms-content-block__details__additional-content-cta-links',\n linkText: ctaLink.linkText,\n linkUrl: ctaLink.linkUrl.destinationUrl,\n openInNewTab: ctaLink.openInNewTab,\n role: 'link'\n };\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalLinkTextChange(linkIndex, itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Content block additonal content item props.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns IContentBlockAdditionalContentItemViewProps.\n */\nconst assembleNode = (\n item: IAdditionalContentData,\n props: IContentBlockAdditionalContentProps,\n itemIndex: number\n): IContentBlockAdditionalContentItemViewProps => {\n const headingNode = item.heading && renderHeading(item.heading, props, itemIndex);\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props, itemIndex);\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n return renderLinks(ctaLink, props, itemIndex, index);\n });\n\n return {\n heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentItemContainer: { className: 'ms-content-block__details__additional-content__container' },\n additionalContentItemLinks: { className: 'ms-content-block__details__additional-content-cta' }\n };\n};\n\n/**\n * ContentBlockAdditionalContent component.\n * @param props - Content Block Additional content component props.\n * @returns Content Block Additional content view props.\n */\nexport const contentBlockAdditionalContent = (\n props: IContentBlockAdditionalContentProps\n): IContentBlockAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n const reactNodes: IContentBlockAdditionalContentItemViewProps[] = [];\n additionalContent.map((item, index: number) => {\n return reactNodes.push(assembleNode(item, props, index));\n });\n\n return {\n additionalContentNode: { className: 'ms-content-block__details__additional-content' },\n additionalContentItems: reactNodes\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../content-block.props.autogenerated';\n\nexport interface IContentCardLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n role?: string;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class ContentCardLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n }\n\n private readonly _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: btnClass,\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: this.props.role,\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\nexport default ContentCardLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { contentBlockAdditionalContent, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport LinksComponent from './components/links';\nimport { actionableRegion as region, IContentBlockConfig, IContentBlockProps } from './content-block.props.autogenerated';\n\nexport interface IContentBlockViewProps extends IContentBlockProps<{}> {\n title?: React.ReactNode;\n text?: React.ReactNode;\n image?: React.ReactNode;\n links?: React.ReactNode;\n className?: string;\n contentBlockContainer: IModuleProps;\n imageContainer: INodeProps;\n detailsContainer: INodeProps;\n contentBlockAnchorTag?: INodeProps;\n imageLink?: string;\n imageAriaLabel?: string;\n additionalContent?: IContentBlockAdditionalContentViewProps;\n handleAdditionalText?(): void;\n handleAdditionalParagraph?(): void;\n handleAdditionalLinkTextChange?(): void;\n}\n\n/**\n * Site-builder configuration for the module.\n */\nexport interface IContentBlockFullConfig extends IContentBlockConfig {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- This field comes from SDK.\n msdyn365__moduleLayout?: string;\n}\n\n/**\n * ContentCard component.\n * @extends {React.PureComponent}\n */\nexport class ContentBlock extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public render(): JSX.Element | null {\n const { heading, paragraph, image, links, className, imageAriaLabel } = this.props.config;\n const contentBlockTitle = heading && (\n \n );\n\n const contentBlockLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n const contentBlockText = paragraph && (\n \n );\n\n let contentBlockImageSettings: Msdyn365.IImageSettings | undefined;\n\n if (image && image.imageSettings && !image.imageSettings.backgroundColor && this.props.config.backgroundColor) {\n contentBlockImageSettings = {\n ...image?.imageSettings,\n backgroundColor: this.props.config.backgroundColor\n };\n } else {\n contentBlockImageSettings = image?.imageSettings;\n }\n\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings ?? {},\n imageSettings: contentBlockImageSettings\n };\n\n const contentBlockImage = (\n \n );\n\n const contentBlockContainerStyle: React.CSSProperties | undefined = this.props.config.backgroundColor\n ? { backgroundColor: this.props.config.backgroundColor }\n : undefined;\n\n if (!contentBlockTitle && !contentBlockText && !contentBlockLinks) {\n this.props.context.telemetry.error('Content block content is empty, module wont render.');\n return null;\n }\n const contentBlockviewProps = {\n ...this.props,\n title: contentBlockTitle,\n text: contentBlockText,\n image: contentBlockImage,\n links: contentBlockLinks,\n moduleClass: this.props.config.className,\n contentBlockContainer: {\n moduleProps: this.props,\n className: classnames('ms-content-block', className),\n style: contentBlockContainerStyle\n },\n imageContainer: { className: 'ms-content-block__image' },\n detailsContainer: { className: 'ms-content-block__details' },\n contentBlockAnchorTag: {\n tag: 'a',\n className: 'ms-content-block__link',\n role: 'link'\n },\n imageLink: this._getImageLink(),\n imageAriaLabel,\n additionalContent: contentBlockAdditionalContent({\n requestContext: this.props.context.request,\n additionalContent: this.props.config.additionalContent,\n handleAdditionalTextChange: this.handleAdditionalTextChange,\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n }),\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n };\n\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\n }\n\n /**\n * To handle text change.\n * @param event - To handle text change event.\n * @name - HandleTextChange\n * @public\n * @returns - The Text value.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n /**\n * To handle paragraph change.\n * @param event - To handle text change event.\n * @name - HandleParagraphChange\n * @public\n * @returns - The Paragraph value.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.paragraph = event.target.value);\n\n /**\n * Handle link text change.\n * @param linkIndex - The link index.\n * @returns - Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n public handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].heading = event.target.value;\n }\n }\n\n public handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void {\n const additionalContentObject =\n (this.props.config.additionalContent &&\n ArrayExtensions.hasElements(this.props.config.additionalContent) &&\n this.props.config.additionalContent[Number(index)]) ||\n {};\n if (additionalContentObject.links) {\n additionalContentObject.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n public handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].subtext = event.target.value;\n }\n }\n\n private _getImageLink(): string | null {\n const { imageLink, links, actionableRegion } = this.props.config;\n if (actionableRegion === region.imageAndLinks) {\n if (imageLink?.destinationUrl) {\n return imageLink.destinationUrl;\n } else if (links && ArrayExtensions.hasElements(links) && links[0].linkUrl) {\n return links[0].linkUrl.destinationUrl;\n }\n return null;\n }\n return null;\n }\n}\n\nexport default ContentBlock;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IContentBlockAdditionalContentItemViewProps, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport { IContentBlockViewProps } from './content-block';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\nconst ContentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default ContentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce, {\n constructViewportInformationForImage,\n getImageResizeUrl,\n getLargestGridSettingViewportName,\n getMinMaxWidth,\n IAny,\n IGeneric,\n IViewPort,\n Viewport\n} from '@msdyn365-commerce/core-internal';\nimport { cloneDeep as _cloneDeep } from 'lodash';\nimport {\n BackgroundImageRepeat,\n BackgroundImageSize,\n IBackgroundImageAttributes,\n IBackgroundImageLazyloadAttributes,\n IBackgroundImageProps,\n IBackgroundImageStyle\n} from './container-background-image-interfaces';\n\nconst getBackgroundRepeatProperty = (size: string | undefined, repeat: string | undefined): BackgroundImageRepeat => {\n if (!size || size === 'cover') {\n return 'no-repeat';\n }\n switch (repeat) {\n case 'noRepeat':\n return 'no-repeat';\n case 'repeat':\n return 'repeat';\n default:\n return 'no-repeat';\n }\n};\n\nconst getBackgroundSizeProperty = (size: string | undefined): BackgroundImageSize => {\n switch (size) {\n case 'cover':\n return 'cover';\n case 'contain':\n return 'contain';\n case 'default':\n default:\n return undefined;\n }\n};\n\nconst getDefaultViewports = (): IViewPort => {\n return {\n xs: {\n w: 800,\n h: 600\n },\n sm: {\n w: 1200,\n h: 900\n },\n md: {\n w: 1600,\n h: 900\n },\n lg: {\n w: 1600,\n h: 700\n },\n xl: {\n w: 1600,\n h: 700\n }\n };\n};\n\nconst getAuthoringViewport = (moduleName: string | undefined, layout: string | undefined): IViewPort | undefined => {\n if (!msdyn365Commerce.isBrowser) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const authoringHelper = (window as any)._msdyn365.authoringHelper;\n if (!authoringHelper) {\n return;\n }\n\n // if authoring helper is setup, component is rendering from site builder. Build viewport based on layout selected.\n return constructViewportInformationForImage(moduleName, layout, 'backgroundImage', authoringHelper?.themeSettings) as IViewPort;\n};\n\nexport const buildBackgroundImageStylesByViewport = (props: IBackgroundImageProps): IGeneric => {\n const { containerType, image, request, configs } = props;\n\n const gridSettings = request.gridSettings ?? {};\n const imageSettings = image.imageSettings;\n\n const styles: IGeneric = {};\n\n const largestGridSettingViewportName = getLargestGridSettingViewportName(gridSettings);\n if (largestGridSettingViewportName && imageSettings) {\n // in site builder the layout may change, so use authoring viewports.\n const authoringViewPorts = getAuthoringViewport(containerType, configs?.layout);\n const imgSettings = {\n ...imageSettings,\n viewports: { ..._cloneDeep(authoringViewPorts || imageSettings.viewports || getDefaultViewports()) }\n };\n\n // Skip resizing width and height for background images.\n const skipWidthAndHeightSettings = true;\n Object.keys(imgSettings.viewports).map(vp => {\n const viewport = vp as Viewport;\n const minMaxWidth = getMinMaxWidth(gridSettings, imgSettings, viewport, largestGridSettingViewportName);\n const urlSrc = getImageResizeUrl(\n image.src,\n imgSettings.viewports[viewport],\n imgSettings,\n skipWidthAndHeightSettings,\n image?.externalProvider,\n request?.apiSettings\n );\n styles[viewport] = {\n maxWidth: minMaxWidth.max,\n minWidth: minMaxWidth.min,\n minHeight: imgSettings.viewports[viewport]?.h,\n backgroundImage: urlSrc,\n backgroundRepeat: getBackgroundRepeatProperty(configs?.size, configs?.repeat),\n backgroundSize: getBackgroundSizeProperty(configs?.size),\n backgroundPosition: 'center center'\n };\n });\n }\n\n return styles;\n};\n\nexport const setStyleAttribute = (currentStyle: IBackgroundImageStyle): IGeneric => {\n let style: IGeneric = {};\n if (currentStyle) {\n style = { ...currentStyle };\n style['minWidth'] = undefined;\n style['width'] = '100%';\n if (currentStyle.backgroundImage) {\n style['backgroundImage'] = `url('${currentStyle.backgroundImage}')`;\n }\n }\n return style;\n};\n\nexport const getBackgroundImageLazyloadAttributes = (\n className: string,\n currentStyle: IBackgroundImageStyle | undefined,\n styles: IGeneric\n): IBackgroundImageLazyloadAttributes => {\n const attributes = {\n role: 'img',\n className: `${className} lazyload`,\n 'data-bgset': getDataBgSetAttribute(styles)\n };\n\n if (currentStyle) {\n attributes['style'] = setStyleAttribute(currentStyle);\n // On lazyload, lazysizes plugin should pick which background image to use based on data-bgset attribute.\n attributes['style']['backgroundImage'] = undefined;\n }\n return attributes;\n};\n\nexport const getBackgroundImageAttributes = (\n className: string,\n currentStyle: IBackgroundImageStyle | undefined\n): IBackgroundImageAttributes => {\n const attributes = {\n role: 'img',\n className\n };\n\n if (currentStyle) {\n attributes['style'] = setStyleAttribute(currentStyle);\n }\n return attributes;\n};\n\nexport const getBgSetMinMaxWidthAttribute = (style: IBackgroundImageStyle): string => {\n if (style.maxWidth) {\n return `[(max-width: ${style.maxWidth}px)]`;\n }\n return '';\n};\n\nexport const getDataBgSetAttribute = (styles: IGeneric): string => {\n const dataBgSetAttributes: string[] = [];\n Object.keys(styles).map(vp => {\n if (styles[vp].backgroundImage) {\n dataBgSetAttributes.push(`${styles[vp].backgroundImage} ${getBgSetMinMaxWidthAttribute(styles[vp])}`);\n }\n });\n\n return dataBgSetAttributes.join(' | ');\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport msdyn365Commerce, { getLargestGridSettingViewportName, IGeneric, isAuthoringEditEnabled } from '@msdyn365-commerce/core-internal';\nimport * as React from 'react';\nimport { isEqual as _isEqual } from 'lodash';\nimport {\n buildBackgroundImageStylesByViewport,\n getBackgroundImageAttributes,\n getBackgroundImageLazyloadAttributes\n} from './container-background-image-helper';\nimport {\n IBackgroundImageAttributes,\n IBackgroundImageProps,\n IBackgroundImageState,\n IBackgroundImageStyle\n} from './container-background-image-interfaces';\n\nconst BACKGROUND_IMAGE_CLASS_NAME = 'ms-container-background-image';\n\n/**\n * BackgroundImage component\n * @extends {React.PureComponent}\n */\nexport class BackgroundImage extends React.PureComponent {\n private stylesByViewport: IGeneric;\n private currentStyle: IBackgroundImageStyle | undefined;\n private mounted: boolean;\n\n constructor(props: IBackgroundImageProps, state: IBackgroundImageState) {\n super(props);\n this.stylesByViewport = buildBackgroundImageStylesByViewport(this.props);\n this._onChangeHandler = this._onChangeHandler.bind(this);\n this.currentStyle = this._getCurrentStyle();\n this.mounted = false;\n this._componentResize = this._componentResize.bind(this);\n this._getCurrentStyle = this._getCurrentStyle.bind(this);\n this.state = { updateAttributes: false };\n }\n\n public componentDidMount(): void {\n if (msdyn365Commerce.isBrowser) {\n window.addEventListener('resize', this._componentResize);\n this.mounted = true;\n this._componentResize();\n }\n }\n\n public componentWillUnmount(): void {\n if (msdyn365Commerce.isBrowser) {\n window.removeEventListener('resize', this._componentResize);\n this.mounted = false;\n }\n }\n\n public shouldComponentUpdate(nextProps: IBackgroundImageProps, nextState: { updateAttributes: boolean }): boolean {\n if (\n this.state !== nextState ||\n this.props.request?.gridSettings !== nextProps.request?.gridSettings ||\n this.props.configs.repeat !== nextProps.configs.repeat ||\n this.props.configs.size !== nextProps.configs.size ||\n this.props.configs.layout !== nextProps.configs.layout ||\n this.props.image?.imageSettings !== nextProps.image?.imageSettings ||\n this.props.image?.src !== nextProps.image?.src\n ) {\n return true;\n }\n return false;\n }\n\n public render(): JSX.Element | null {\n const { children } = this.props;\n\n try {\n this.stylesByViewport = buildBackgroundImageStylesByViewport(this.props);\n this.currentStyle = this._getCurrentStyle();\n\n if (this.currentStyle) {\n const backgroundImageClassName = isAuthoringEditEnabled(this.props.request)\n ? `${BACKGROUND_IMAGE_CLASS_NAME} ms-editable-field enabled`\n : BACKGROUND_IMAGE_CLASS_NAME;\n const processedAtributes = this._processAttributes(\n backgroundImageClassName,\n this.currentStyle,\n this.stylesByViewport,\n this._isLazyload()\n );\n const attributes = this._getAttributes(processedAtributes);\n const eventHandlers = isAuthoringEditEnabled(this.props.request) ? { onDoubleClick: this._onChangeHandler } : {};\n\n if (this.state.updateAttributes) {\n // Update component with the latest attributes.\n return (\n
\n {children}\n
\n );\n } else if (this._isLazyload()) {\n // On lazyload, only include the class name on the first render.\n return (\n
\n {children}\n
\n );\n } else {\n // On lazyload disabled, render the default attributes from server side.\n return (\n
\n {children}\n
\n );\n }\n } else {\n // in no style is found, return the container content.\n return <>{children};\n }\n } catch {\n // in case of any failure, return the container content.\n return <>{children};\n }\n }\n\n private _processAttributes(\n className: string,\n currentStyle: IBackgroundImageStyle,\n stylesByViewport: IGeneric,\n lazyLoad: boolean\n ) {\n if (lazyLoad) {\n return getBackgroundImageLazyloadAttributes(className, currentStyle, stylesByViewport);\n } else {\n return getBackgroundImageAttributes(className, currentStyle);\n }\n }\n\n private _getAttributes(processedAtributes: IBackgroundImageAttributes) {\n return { ...processedAtributes, style: { ...processedAtributes?.style } };\n }\n\n private _onChangeHandler(event: React.SyntheticEvent | { target: { value: string } }): void {\n if (event.target === (event as React.SyntheticEvent).currentTarget) {\n const binding: any = this.props.image;\n const eventTarget: any = event.target;\n binding.$type = eventTarget.value;\n }\n }\n\n private _componentResize(): void {\n if (msdyn365Commerce.isBrowser) {\n const selectedStyle = this._getCurrentStyle();\n\n if (this.mounted || (selectedStyle && !_isEqual(this.currentStyle, selectedStyle))) {\n this.setState({ updateAttributes: true });\n }\n }\n }\n\n private _getCurrentStyle(): IBackgroundImageStyle | undefined {\n if (msdyn365Commerce.isBrowser) {\n const winInnerWidth: number = window.innerWidth;\n let selectedStyle: IBackgroundImageStyle | undefined;\n Object.keys(this.stylesByViewport).map(vp => {\n if (\n (this.stylesByViewport[vp]?.minWidth || this.stylesByViewport[vp]?.maxWidth) &&\n (this.stylesByViewport[vp]?.minWidth || 0) <= winInnerWidth &&\n winInnerWidth <= (this.stylesByViewport[vp]?.maxWidth || Number.MAX_SAFE_INTEGER)\n ) {\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 return this.stylesByViewport[largestGridSettingViewportName];\n }\n\n private _getDefaultAttributes(): IBackgroundImageAttributes {\n const style = this._getDefaultStyle();\n const processedAtributes = style\n ? this._processAttributes(BACKGROUND_IMAGE_CLASS_NAME, style, this.stylesByViewport, this._isLazyload())\n : {};\n return this._getAttributes(processedAtributes);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ContentEditableEvent, IImageData, IRequestContext, Text } from '@msdyn365-commerce/core';\nimport * as React from 'react';\nimport { BackgroundImage } from './container-background-image/container-backgroud-image';\n\n/**\n * Heading options\n */\nexport interface IHeadingComponentProps {\n /**\n * Heading text\n */\n headingText?: string;\n /**\n * Heading tag (h1, h2, h3, h4, h5, h6)\n */\n tag?: HeadingTag;\n /**\n * Heading text size (sm, md, lg, xl)\n */\n textSize?: TextSize;\n\n requestContext: IRequestContext;\n\n handleTextChange(event: ContentEditableEvent): string;\n}\n\nexport type HeadingTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\nexport type TextSize = 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Container class options\n */\nexport interface IContainerProps {\n /**\n * CSS class name\n */\n className?: string;\n /**\n * Bootstrap supported container types\n */\n containerType?: string;\n /**\n * type name\n */\n typeName?: string;\n /**\n * id of container\n */\n id?: string;\n /**\n * React children\n */\n children: React.ReactNode;\n /**\n * Request context\n */\n request?: IRequestContext;\n /**\n * background image\n */\n backgroundImage?: IImageData;\n /**\n * background image repeat property\n */\n backgroundImageRepeat?: string;\n /**\n * background image size property\n */\n backgroundImageSize?: string;\n /**\n * module layout property\n */\n moduleLayout?: string;\n}\n\nconst getContainerType = (containerType: string | undefined) => {\n switch (containerType) {\n case 'container':\n return 'container';\n case 'fluid':\n default:\n return 'fluid';\n }\n};\n\n/**\n * HOC to create bootstrap container div. If no container type is specified children are rendered.\n * @param options IContainerClasses\n */\nexport const Container: React.SFC = (props: IContainerProps): JSX.Element => {\n const {\n containerType,\n className,\n typeName,\n id,\n children,\n backgroundImage,\n request,\n backgroundImageRepeat,\n backgroundImageSize,\n moduleLayout\n } = props;\n const customClassName = className ? ` ${className}` : '';\n\n let containerContent = children;\n if (containerType) {\n containerContent =
{containerContent}
;\n }\n\n if (backgroundImage && backgroundImage.src && backgroundImage.imageSettings && request) {\n containerContent = (\n \n {containerContent}\n \n );\n }\n\n return containerType ? (\n
{containerContent}
\n ) : (\n
{containerContent}
\n );\n};\n\nexport const HeadingComponent = (props: IHeadingComponentProps & { className: string }): JSX.Element | null => {\n const { tag, headingText, textSize, className } = props;\n const Tag = tag || 'h2';\n const classNameWithHeading = textSize ? `heading ${textSize} ${className}` : `heading ${className}`;\n return (\n (headingText && (\n \n )) ||\n null\n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ContentEditableEvent } from '@msdyn365-commerce/core';\nimport { LogLevel } from '@msdyn365-commerce/telemetry-internal';\nimport React, { ReactNode } from 'react';\nimport { Container, HeadingComponent, IHeadingComponentProps } from '../../components/base-components';\nimport { getColClassArray, showErrors } from '../../utils/classnames';\nimport { IDefaultContainer2SlotsData } from './default-container-2-slots.data';\nimport { IDefaultContainer2SlotsProps } from './default-container-2-slots.props.autogenerated';\n\ninterface IColSizes {\n left: string[];\n right: string[];\n}\n\n/**\n * Default container that displays 2 modules\n * CoreComponent component\n * @extends {React.PureComponent>}\n */\nclass Default2SlotContainer extends React.PureComponent> {\n constructor(props: IDefaultContainer2SlotsProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { slots, telemetry, context, config, data } = this.props;\n telemetry.log(LogLevel.Debug, \"Default 2 Slot Container rendering for '{id}/{typeName}'\", {\n values: [this.props.id, this.props.typeName]\n });\n\n const content = slots && slots.content;\n const slotsClassNames = this._getColClassName();\n if (content && content.length > 2) {\n telemetry.log(LogLevel.Warning, 'Default 2 Slot Container passed more than 2 slots');\n }\n const heading = config.heading || data.heading;\n const headingProps: IHeadingComponentProps = {\n ...heading,\n handleTextChange: this.handleTextChange,\n requestContext: this.props.context.request\n };\n return (\n \n {heading && }\n {content && content[0] &&
{content[0]}
}\n {content && content[1] &&
{content[1]}
}\n <>\n {showErrors(context) &&\n content &&\n content.slice(2, content.length - 1).map((slot: ReactNode, index: number) => {\n return (\n
\n
\n
\n Slot exceeded maximum number of slots supported by container. (2)\n
\n
\n
\n );\n })}\n \n \n );\n }\n\n public handleTextChange = (event: ContentEditableEvent) => (this.props.config.heading!.headingText = event.target.value);\n /**\n * Captures left and right column classnames from this.props.config. Returns col if no options specified.\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _getColClassName = (): IColSizes => {\n const { config } = this.props;\n\n const classNames = getColClassArray(config);\n\n if (!classNames.length) {\n return {\n left: ['col'],\n right: ['col']\n };\n }\n\n return classNames.reduce(\n (memo: IColSizes, [left, right]: string[]) => {\n memo.left.push(left);\n memo.right.push(right);\n return memo;\n },\n { left: [], right: [] }\n );\n };\n}\n\nexport default Default2SlotContainer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ContentEditableEvent } from '@msdyn365-commerce/core';\nimport { LogLevel } from '@msdyn365-commerce/telemetry-internal';\nimport React, { ReactNode } from 'react';\nimport { Container, HeadingComponent, IHeadingComponentProps } from '../../components/base-components';\nimport { getColClassArray, showErrors } from '../../utils/classnames';\nimport { IDefaultContainer3SlotsData } from './default-container-3-slots.data';\nimport { IDefaultContainer3SlotsProps } from './default-container-3-slots.props.autogenerated';\n\ninterface IColSizes {\n left: string[];\n center: string[];\n right: string[];\n}\n\n/**\n *\n * CoreComponent component\n * @extends {React.PureComponent>}\n */\nclass Default3SlotContainer extends React.PureComponent> {\n constructor(props: IDefaultContainer3SlotsProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { slots, telemetry, context, config, data } = this.props;\n\n const slotsClassNames = this._getColClassName();\n const content = slots && slots.content;\n\n telemetry.log(LogLevel.Debug, \"Default 3 Slot Container rendering for '{id}/{typeName}'\", {\n values: [this.props.id, this.props.typeName]\n });\n if (content && content.length > 3) {\n telemetry.log(LogLevel.Warning, 'Default 3 Slot Container passed more than 3 slots');\n }\n const heading = config.heading || data.heading;\n const headingProps: IHeadingComponentProps = {\n ...heading,\n handleTextChange: this.handleTextChange,\n requestContext: this.props.context.request\n };\n return (\n \n {heading && }\n {content && content[0] &&
{content[0]}
}\n {content && content[1] &&
{content[1]}
}\n {content && content[2] &&
{content[2]}
}\n <>\n {showErrors(context) &&\n content &&\n content.slice(2, content.length - 1).map((slot: ReactNode, index: number) => {\n return (\n
\n
\n
\n Slot exceeded maximum number of slots supported by container. (3)\n
\n
\n
\n );\n })}\n \n \n );\n }\n\n public handleTextChange = (event: ContentEditableEvent) => (this.props.config.heading!.headingText = event.target.value);\n /**\n * Captures left and right column classnames from this.props.config. Returns col if no options specified.\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _getColClassName = (): IColSizes => {\n const { config } = this.props;\n\n const classNames = getColClassArray(config);\n\n if (!classNames.length) {\n return {\n left: ['col'],\n center: ['col'],\n right: ['col']\n };\n }\n\n return classNames.reduce(\n (memo: IColSizes, [left, center, right]: string[]) => {\n memo.left.push(left);\n memo.center.push(center);\n memo.right.push(right);\n return memo;\n },\n { left: [], center: [], right: [] }\n );\n };\n}\n\nexport default Default3SlotContainer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ContentEditableEvent } from '@msdyn365-commerce/core';\nimport { LogLevel } from '@msdyn365-commerce/telemetry-internal';\nimport * as React from 'react';\nimport { Container, HeadingComponent, IHeadingComponentProps } from '../../components/base-components';\nimport { colWidths } from '../../utils/classnames';\nimport { IDefaultContainerData } from './default-container.data';\nimport { childrenWidth as childrenWidthEnum, IDefaultContainerProps, layout as layoutEnum } from './default-container.props.autogenerated';\n\n/**\n *\n * CoreComponent component\n * @extends {React.PureComponent>}\n */\nclass DefaultContainer extends React.PureComponent> {\n constructor(props: IDefaultContainerProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { slots, telemetry, config, data } = this.props;\n telemetry.log(LogLevel.Debug, \"Default Container rendering for '{id}/{typeName}'\", {\n values: [this.props.id, this.props.typeName]\n });\n\n const heading = config.heading || data.heading;\n const headingProps: IHeadingComponentProps = {\n ...heading,\n handleTextChange: this.handleTextChange,\n requestContext: this.props.context.request\n };\n\n return (\n \n {heading && }\n {slots &&\n slots.content &&\n slots.content.map((children: React.ReactNode, index: number) => {\n return (\n
\n {children}\n
\n );\n })}\n \n );\n }\n\n public handleTextChange = (event: ContentEditableEvent) => (this.props.config.heading!.headingText = event.target.value);\n\n private _getChildColClassName(): string {\n const {\n config: { layout, childrenWidth }\n } = this.props;\n switch (layout) {\n case layoutEnum.flow:\n return childrenWidth === childrenWidthEnum.auto ? 'col-12 col-md' : this._getWidthClass(childrenWidth);\n case layoutEnum.stacked:\n default:\n return 'col-12';\n }\n }\n\n private _getWidthClass(s?: childrenWidthEnum): string {\n return colWidths.get(s || childrenWidthEnum.four) || 'col-12';\n }\n}\n\nexport default DefaultContainer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICoreContext } from '@msdyn365-commerce/core';\nimport * as twoSlots from '../modules/default-container-2-slots/default-container-2-slots.props.autogenerated';\nimport * as threeSlots from '../modules/default-container-3-slots/default-container-3-slots.props.autogenerated';\n\nconst sizePattern = /col(_(\\d|auto){1,2}){2,}/;\n\nexport interface IShowErrorOptions {\n isDebug?: boolean;\n isEditor?: boolean;\n}\n\nexport interface IViewPortOptions {\n xsmall?: threeSlots.xsmall | twoSlots.xsmall;\n small?: threeSlots.small | twoSlots.small;\n medium?: threeSlots.medium | twoSlots.medium;\n large?: threeSlots.large | twoSlots.large;\n}\n\nconst translatePrefix = (prefix: `large` | `medium` | `small` | `xsmall` | undefined) => {\n switch (prefix && prefix.toLowerCase()) {\n case 'large':\n return 'lg';\n case 'medium':\n return 'md';\n case 'small':\n return 'sm';\n case 'xsmall':\n default:\n return '';\n }\n};\n\n/**\n * converts config option and size to bootstrap col class name\n * If size is auto or config option is invalid col-auto will be returned\n * If size is xsmall or size is invalid col-{config} will be returned\n * @param config configuration option e.g. col_12_12\n * @param size bootstrap gridsize\n */\nexport const getColumnSizes = (config: string, size?: `large` | `medium` | `small` | `xsmall`): string[] | boolean => {\n if (!sizePattern.exec(config)) {\n return false;\n }\n const cols = config.split('_').slice(1);\n const translatedSize = translatePrefix(size);\n const sizePrefix = (translatedSize && `-${translatedSize}`) || '';\n return cols.map((colWidth: string) => `col${sizePrefix}-${colWidth}`);\n};\n\nexport const showErrors = (context?: ICoreContext): Boolean => {\n const { isDebug, isEditor }: IShowErrorOptions = (context && context.request && context.request.params) || {};\n return !!isDebug || !!isEditor;\n};\n\n/**\n * Converts viewport configuration into a two dimensional array of class names\n */\nexport const getColClassArray = (options: IViewPortOptions): string[][] =>\n (\n [\n options.xsmall && getColumnSizes(options.xsmall),\n options.small && getColumnSizes(options.small, 'small'),\n options.medium && getColumnSizes(options.medium, 'medium'),\n options.large && getColumnSizes(options.large, 'large')\n ].filter(Boolean)\n );\n\nexport const colWidths = new Map([\n ['one', 'col-md-1'],\n ['two', 'col-md-2'],\n ['three', 'col-md-3'],\n ['four', 'col-md-4'],\n ['six', 'col-md-6'],\n ['twelve', 'col-md-12']\n]);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHeader,\n IList,\n IOrderHistoryViewProps,\n IOrderInformation,\n ISalesOrder\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderHistoryOrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n channelName,\n createdDate,\n count,\n amount,\n channelReferenceId\n}) => (\n \n {channelName}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const OrderHistoryGroupDelivery: React.FC = ({\n deliveryProps,\n heading,\n count,\n processing,\n address,\n trackingInfo\n}) => (\n \n {heading}\n {count}\n {processing}\n {address}\n {trackingInfo}\n \n);\n\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n {salesLine.salesLine}\n ))}\n \n )}\n \n);\n\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\n \n {heading}\n {orderCountLabel}\n {extraActions}\n \n);\n\nexport const OrderHistorySalesOder: React.FC = ({\n salesOrderProps,\n orderInfomation,\n groups,\n orderDetailsLink,\n expandProductsButton\n}) => (\n \n {orderInfomation && }\n {groups && }\n {expandProductsButton}\n {orderDetailsLink}\n \n);\n\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\n \n {salesOrders && salesOrders.map((salesOrder, index) => )}\n \n);\n\nconst OrderHistoryView: React.FC = ({\n orderHistoryProps,\n header,\n alert,\n loading,\n emptyMessage,\n backToShoppingLink,\n list,\n table,\n moreButton\n}) => (\n \n {header && }\n {loading}\n {alert && (\n <>\n {alert}\n {backToShoppingLink}\n \n )}\n {emptyMessage && (\n \n {emptyMessage}\n {backToShoppingLink}\n \n )}\n {list && }\n {table}\n {moreButton && moreButton}\n \n);\n\nexport default OrderHistoryView;\n"],"names":["DynCatalogSearch","React","_handleChange","event","filter","target","value","toString","transformedFilter","String","includes","split","this","setState","_catalogSearch","window","location","assign","props","context","actionContext","requestContext","sitePath","state","constructor","super","bind","render","handleChange","catalogSearch","renderView","className","onChange","placeholder","config","catalogSearchSlaceholderText","onKeyDown","key","onClick","renderCustomerName","accountInformation","customer","result","FirstName","Name","_renderReactFragment","items","length","map","slot","index","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","TopHeaderContainer","classnames","contactURL","Module","Object","Node","href","preferredStore","siteOptions","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","signInLink","accountLinks","accountClassName","link","_renderAccountBlock","wishListIconDesktop","cartIcon","logo","search","navIcon","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","isOpen","data","Drawer","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","assembleNode","item","itemIndex","heading","additionalContentHeading","Msdyn365","text","tag","editProps","onEdit","handleAdditionalTextChange","renderHeading","subtext","additionalContentParagraphText","renderParagraph","links","ctaLink","linkIndex","editableLink","ariaLabel","linkText","linkUrl","destinationUrl","openInNewTab","role","onTextChange","handleAdditionalLinkTextChange","renderLinks","additionalContentItemContainer","additionalContentItemLinks","contentBlockAdditionalContent","additionalContent","reactNodes","push","additionalContentNode","additionalContentItems","ContentCardLinks","_mapEditableLinks","linkdata","editableLinks","forEach","payLoad","getPayloadObject","telemetryContent","contentAction","etext","attributes","getTelemetryAttributes","btnClass","additionalProperties","onTelemetryClick","ContentBlock","getTelemetryObject","request","telemetryPageName","friendlyName","telemetry","handleTextChange","handleParagraphChange","paragraph","handleLinkTextChange","Number","image","imageAriaLabel","contentBlockTitle","contentBlockLinks","ArrayExtensions","LinksComponent","msdyn365__moduleLayout","contentBlockText","contentBlockImageSettings","imageSettings","backgroundColor","imageProps","gridSettings","contentBlockImage","preserveImageSpace","moduleType","typeName","imagePropertyName","moduleId","id","layout","shouldSkipToMainImage","contentBlockContainerStyle","undefined","error","contentBlockviewProps","title","moduleClass","contentBlockContainer","moduleProps","style","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","_getImageLink","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","additionalContentObject","actionableRegion","renderAdditionalContent","getBackgroundRepeatProperty","size","repeat","getBackgroundSizeProperty","buildBackgroundImageStylesByViewport","containerType","configs","styles","largestGridSettingViewportName","getLargestGridSettingViewportName","authoringViewPorts","moduleName","msdyn365Commerce","authoringHelper","_msdyn365","constructViewportInformationForImage","themeSettings","getAuthoringViewport","imgSettings","viewports","xs","w","h","sm","md","lg","xl","skipWidthAndHeightSettings","keys","vp","viewport","minMaxWidth","getMinMaxWidth","urlSrc","getImageResizeUrl","src","externalProvider","apiSettings","maxWidth","max","minWidth","min","minHeight","backgroundImage","backgroundRepeat","backgroundSize","backgroundPosition","setStyleAttribute","currentStyle","getDataBgSetAttribute","dataBgSetAttributes","join","BACKGROUND_IMAGE_CLASS_NAME","BackgroundImage","stylesByViewport","_onChangeHandler","_getCurrentStyle","mounted","_componentResize","updateAttributes","componentDidMount","addEventListener","componentWillUnmount","removeEventListener","shouldComponentUpdate","nextProps","nextState","children","backgroundImageClassName","isAuthoringEditEnabled","processedAtributes","_processAttributes","_isLazyload","_getAttributes","eventHandlers","onDoubleClick","_getDefaultAttributes","lazyLoad","getBackgroundImageLazyloadAttributes","getBackgroundImageAttributes","currentTarget","binding","eventTarget","$type","selectedStyle","winInnerWidth","innerWidth","MAX_SAFE_INTEGER","_getDefaultStyle","disableLazyLoad","getContainerType","Container","backgroundImageRepeat","backgroundImageSize","moduleLayout","customClassName","containerContent","HeadingComponent","headingText","textSize","Tag","classNameWithHeading","Text","Default2SlotContainer","_getColClassName","classNames","getColClassArray","reduce","memo","left","right","slots","log","LogLevel","values","content","slotsClassNames","headingProps","showErrors","slice","Default3SlotContainer","center","DefaultContainer","_getChildColClassName","childrenWidth","_getWidthClass","s","colWidths","sizePattern","getColumnSizes","exec","cols","translatedSize","prefix","toLowerCase","translatePrefix","sizePrefix","colWidth","isDebug","isEditor","params","options","xsmall","small","medium","large","Boolean","Map","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","count","amount","channelReferenceId","OrderHistoryGroupDelivery","deliveryProps","processing","address","trackingInfo","OrderHistoryGroup","groupProps","delivery","salesLinesProps","salesLines","salesLine","LineId","OrderHistoryGroups","groupsProps","groups","group","OrderHistoryHeader","headerProps","orderCountLabel","extraActions","OrderHistorySalesOder","salesOrderProps","orderInfomation","orderDetailsLink","expandProductsButton","OrderHistoryList","listProps","salesOrders","salesOrder","orderHistoryProps","header","alert","loading","emptyMessage","backToShoppingLink","list","table","moreButton"],"sourceRoot":""}