{"version":3,"sources":["webpack:///src/modules/content-block/components/additional-content.tsx?1a32","webpack:///src/modules/content-block/components/links.tsx?5056","webpack:///src/modules/content-block/content-block.tsx?8675","webpack:///./lib/content-block/module-registration.js?4cb2","webpack:///external \"React\"?c481","webpack:///external \"ReactDOM\"?4b2d","webpack:///src/modules/content-block/content-block.view.tsx?a86e"],"names":["assembleNode","item","props","itemIndex","heading","additionalContentHeading","requestContext","React","Msdyn365","text","tag","className","editProps","onEdit","event","handleAdditionalTextChange","renderHeading","subtext","additionalContentParagraphText","renderParagraph","links","map","ctaLink","index","linkIndex","editableLink","ariaLabel","linkText","linkUrl","destinationUrl","openInNewTab","role","key","link","onTextChange","handleAdditionalLinkTextChange","renderLinks","additionalContentItemContainer","additionalContentItemLinks","contentBlockAdditionalContent","additionalContent","reactNodes","push","additionalContentNode","additionalContentItems","ContentCardLinks","constructor","_mapEditableLinks","linkdata","length","editableLinks","forEach","payLoad","getPayloadObject","this","telemetryContent","contentAction","etext","attributes","getTelemetryAttributes","btnClass","additionalProperties","onClick","onTelemetryClick","render","ContentBlock","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","handleTextChange","config","target","value","handleParagraphChange","paragraph","handleLinkTextChange","Number","image","imageAriaLabel","contentBlockTitle","imageProps","gridSettings","imageSettings","contentBlockLinks","ArrayExtensions","hasElements","LinksComponent","msdyn365__moduleLayout","contentBlockText","contentBlockImage","moduleType","typeName","imagePropertyName","moduleId","id","layout","shouldSkipToMainImage","error","contentBlockviewProps","title","moduleClass","contentBlockContainer","moduleProps","classnames","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","_getImageLink","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","renderView","additionalContentObject","actionableRegion","binding","modules","dataActions","c","require","$type","da","iNM","ns","n","p","pdp","md","window","__bindings__","viewDictionary","cn","module","exports","ReactDOM","renderAdditionalContent","Node","ContentBlockView","Module","href"],"mappings":"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","file":"static/js/68.69d67d5ff13e1f92f2c8.chunk.js","sourcesContent":["/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 }, requestContext\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 }, requestContext\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 = (props: IContentBlockAdditionalContentProps): 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","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 ? : 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. All rights reserved.\n * See License.txt 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(this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry);\n\n public render(): JSX.Element | null {\n const {\n heading,\n paragraph,\n image,\n links,\n className,\n imageAriaLabel\n } = this.props.config;\n const contentBlockTitle = heading && (\n \n );\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings ?? {},\n imageSettings: image?.imageSettings\n };\n const contentBlockLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n const contentBlockText = paragraph && (\n \n );\n const contentBlockImage = (\n \n );\n\n if (\n !contentBlockTitle &&\n !contentBlockText &&\n !contentBlockLinks\n ) {\n this.props.context.telemetry.error(\n 'Content block content is empty, module wont render.'\n );\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 },\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 }),\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 = (this.props.config.additionalContent &&\n ArrayExtensions.hasElements(this.props.config.additionalContent) && this.props.config.additionalContent[Number(index)]) || {};\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 }\n return null;\n\n }\n}\n\nexport default ContentBlock;\n","const binding = { modules: {}, dataActions: {} };\n\n (binding.modules['content-block'] = {\n c: () => require('@msdyn365-commerce-modules/content-block/dist/lib/modules/content-block/content-block'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'content-block',\n p: 'content-block',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/content-block/dist/lib/modules/content-block'\n });\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['@msdyn365-commerce-modules|content-block|modules|content-block|content-block'] = {\n c: () => require('@msdyn365-commerce-modules/content-block/dist/lib/modules/content-block/content-block.view.js'),\n cn: '@msdyn365-commerce-modules-content-block-content-block'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|content-block'] = {\n c: () => require('@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/content-block.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-content-block'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","module.exports = React;","module.exports = ReactDOM;","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 \n {item.links}\n \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 \n {image}\n \n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n\n};\n\nexport default ContentBlockView;\n"],"sourceRoot":""}