{"version":3,"file":"static/js/c3d78229c925c24be000.bundle.js","mappings":"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","sources":["webpack://Dobbies.Commerce/./src/themes/dobbies/views/content-block.view.tsx?ef71","webpack://Dobbies.Commerce/./lib/content-block/module-registration.js?4cb2","webpack://Dobbies.Commerce/./src/modules/content-block/components/additional-content.tsx?d5f9","webpack://Dobbies.Commerce/./src/modules/content-block/components/links.tsx?abbf","webpack://Dobbies.Commerce/./src/modules/content-block/content-block.tsx?3084","webpack://Dobbies.Commerce/./src/modules/content-block/content-block.view.tsx?1773","webpack://Dobbies.Commerce/./src/modules/adventureworks/views/content-block.view.tsx?0db4","webpack://Dobbies.Commerce/external var \"React\"?0d3b","webpack://Dobbies.Commerce/external var \"ReactDOM\"?853b"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IContentBlockViewProps } from '@msdyn365-commerce-modules/content-block/src/modules/content-block/./content-block';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport MsDyn365, { ICoreContext, Image } from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { IContentBlockProps } from '../definition-extensions/content-block.ext.props.autogenerated';\r\nimport { IContentBlockData } from './content-block.data';\r\nimport { ICategoryHierarchyViewProps } from '../../../modules/dobbies-search-result-container/dobbies-search-result-container';\r\nimport { Link, Separator } from '../../../modules/dobbies-search-result-container/components';\r\nimport {\r\n CategoryHierarchy as CategoryHierarchyData\r\n} from '@msdyn365-commerce/commerce-entities';\r\nconst ContentBlockView: React.FC> = props => {\r\n const {\r\n config: { isCategoryNameTitle, hideClubPlusBanner, clubPlusTierId },\r\n data: {\r\n modulesSharedState: { result: modulesSharedState }\r\n },\r\n contentBlockContainer,\r\n imageContainer,\r\n detailsContainer,\r\n text,\r\n links,\r\n image,\r\n contentBlockAnchorTag,\r\n imageLink,\r\n imageAriaLabel,\r\n context,\r\n title\r\n } = props;\r\n\r\n const {\r\n request: {\r\n urlTokens: { pageType }\r\n }\r\n } = context;\r\n\r\n /* VSI Cutomization - START - 11/11/20 */\r\n const [isMobile, SetIsMobile] = useState(false);\r\n const [categoryName, SetCategoryName] = useState();\r\n const [isClubPlus, SetIsClubPlus] = useState(undefined);\r\n const [isImageAvailable, setIsImageAvailable] = useState();\r\n\r\n const _getCategoryHierarchy = (): ICategoryHierarchyViewProps => {\r\n const { data } = props;\r\n const categoryHierarchy = data.categoryHierarchy.result;\r\n const categoryLinks =\r\n categoryHierarchy &&\r\n categoryHierarchy.map((value: CategoryHierarchyData, index: number) => {\r\n return (\r\n \r\n );\r\n });\r\n const categoryLinkSeparator = ;\r\n\r\n return {\r\n CategoryHierarchyContainer: { tag: 'nav', className: 'ms-search-result-container__category-hierarchy' },\r\n categoryHierarchyList: categoryLinks,\r\n categoryHierarchySeparator: categoryLinkSeparator\r\n };\r\n };\r\n\r\n const renderCategoryHierarchy = (categoryHeirarchyData: ICategoryHierarchyViewProps): JSX.Element | null => {\r\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = categoryHeirarchyData;\r\n if (categoryHierarchyList) {\r\n return (\r\n \r\n {categoryHierarchyList.map((category, index) => (\r\n \r\n {category}\r\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n \r\n return null;\r\n };\r\n\r\n useEffect(() => {\r\n const _isMobile = isMobileView(context);\r\n SetIsMobile(_isMobile);\r\n\r\n // Check if pageType is Category and state is not set yet, get its category name\r\n if (categoryName === undefined && pageType && pageType.toLowerCase() === 'category') {\r\n if (isCategoryNameTitle) {\r\n SetCategoryName(modulesSharedState?.categoryName);\r\n }\r\n if (isImageAvailable === undefined) {\r\n const isImage = props.config.image ? true : false;\r\n setIsImageAvailable(isImage);\r\n }\r\n }\r\n // Check if clubplus banner is set to hide on my account page for club plus members and state is not set yet i.e. undefined\r\n if (hideClubPlusBanner && isClubPlus === undefined) {\r\n modulesSharedState?.customerLoyaltyTierId === clubPlusTierId?.toLowerCase() ? SetIsClubPlus(true) : SetIsClubPlus(false);\r\n }\r\n });\r\n\r\n // Dont show banner for club plus members on my account or if tier id is not set yet\r\n if (hideClubPlusBanner && (isClubPlus === undefined || isClubPlus === true)) {\r\n return <>;\r\n }\r\n\r\n const mobileImage = _renderImageForMobile(props);\r\n\r\n const categoryHeading = title;\r\n\r\n // const doNoImageMagic = isImageAvailable === false && !isMobile;\r\n\r\n // const checkMobileImageAvailable = isImageAvailable === false && isMobile === true;\r\n // const detailsStyles = checkMobileImageAvailable ? {display : 'none'}: {}\r\n // const detailsStyles = doNoImageMagic ? {} : { display: 'none' };\r\n\r\n /* VSI Cutomization - END */\r\n const checkClassName = () => {\r\n if (isImageAvailable === true && isMobile === false) {\r\n return classnames(contentBlockContainer.className, '');\r\n } else if (isImageAvailable === true && isMobile === true) {\r\n return classnames(contentBlockContainer.className, '');\r\n } else if (isImageAvailable === false && isMobile === false) {\r\n return classnames(contentBlockContainer.className, '');\r\n } else if (isImageAvailable === false && isMobile === true) {\r\n return classnames(contentBlockContainer.className, '');\r\n } else {\r\n return classnames(contentBlockContainer.className, '');\r\n }\r\n };\r\n let hasSearchResultsContainer;\r\n if (MsDyn365.isBrowser && window) {\r\n const hasContentBlockImage = !document.getElementsByClassName('no-image-categories')?.length;\r\n hasSearchResultsContainer = document.getElementsByClassName('ms-search-result-container__product-section') && document.getElementsByClassName('ms-search-result-container__product-section').length && hasContentBlockImage;\r\n if (!hasSearchResultsContainer) {\r\n hasSearchResultsContainer = document.getElementsByClassName('ms-search-result-container__Products') && document.getElementsByClassName('ms-search-result-container__Products').length && hasContentBlockImage; \r\n }\r\n }\r\n const categoryHeirarchy = _getCategoryHierarchy();\r\n if (imageLink) {\r\n return (\r\n <>\r\n {hasSearchResultsContainer ?
{renderCategoryHierarchy(categoryHeirarchy)}
: <>}\r\n \r\n \r\n {/* VSI Cutomization - START - 11/11/20 */}\r\n {isMobile === true && mobileImage ? mobileImage : image}\r\n {/* VSI Cutomization - END */}\r\n \r\n \r\n {/* {!(hasSearchResultsContainer && hasSearchResultsContainer.length) ? categoryHeading : <>} */}\r\n {categoryHeading}\r\n {text}\r\n {links}\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n <>\r\n {hasSearchResultsContainer ?
{renderCategoryHierarchy(categoryHeirarchy)}
: <>}\r\n \r\n {/* VSI Cutomization - START - 11/11/20 */}\r\n {isMobile === true && mobileImage ? mobileImage : image}\r\n {/* VSI Cutomization - END */}\r\n \r\n {/* {!(hasSearchResultsContainer && hasSearchResultsContainer.length) ? categoryHeading : <>} */}\r\n {categoryHeading}\r\n {text}\r\n {links}\r\n \r\n \r\n \r\n );\r\n }\r\n};\r\n\r\n/* VSI Cutomization - START - 11/11/20 */\r\n\r\n/* Following function renders if mobile view has different image than that of desktop image.\r\nThis function is specifically written for sale banner on homepage but can be used anywhere user want to add separate image for mobile. */\r\nconst _renderImageForMobile = (props: IContentBlockViewProps & IContentBlockProps<{}>): JSX.Element | undefined => {\r\n const {\r\n config: { imageForMobile },\r\n context: { request }\r\n } = props;\r\n if (imageForMobile === undefined) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\n/* Following function checks device type and handles state accordingly if view changes, state will be updated and view will be shown according to device. */\r\nconst isMobileView = (context: ICoreContext): boolean => {\r\n if (typeof window !== undefined && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return true;\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return false;\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return false;\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return false;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\n/* VSI Cutomization - END */\r\n\r\nexport default ContentBlockView;\r\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['__local__|__local__|themes|dobbies|views|content-block'] = {\n c: () => require('partner/themes/dobbies/views/content-block.view.tsx'),\n cn: '__local__-__local__-content-block'\n };\nviewDictionary['@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 };","/*!\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 {\n IContentBlockAdditionalContentItemViewProps,\n IContentBlockAdditionalContentViewProps,\n IContentBlockViewProps\n} from '@msdyn365-commerce-modules/content-block';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\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\n/**\n * Render View.\n * @param props - The view props.\n * @returns -The JSX Element.\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 // @ts-expect-error HTML element need to be clear on run time.\n const hasImage: boolean = image.props.src;\n const imageClass: string = hasImage ? `${detailsContainer.className} withImage` : `${detailsContainer.className} withoutImage`;\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","module.exports = React;","module.exports = ReactDOM;"],"names":["_renderImageForMobile","props","config","imageForMobile","context","request","undefined","React","Image","Object","assign","className","gridSettings","imageSettings","loadFailureBehavior","role","id","isMobileView","window","innerWidth","xs","w","sm","md","lg","isCategoryNameTitle","hideClubPlusBanner","clubPlusTierId","data","modulesSharedState","result","contentBlockContainer","imageContainer","detailsContainer","text","links","image","contentBlockAnchorTag","imageLink","imageAriaLabel","title","urlTokens","pageType","isMobile","SetIsMobile","useState","categoryName","SetCategoryName","isClubPlus","SetIsClubPlus","isImageAvailable","setIsImageAvailable","renderCategoryHierarchy","categoryHeirarchyData","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","Node","map","category","index","key","useEffect","_isMobile","toLowerCase","isImage","customerLoyaltyTierId","mobileImage","categoryHeading","checkClassName","classnames","hasSearchResultsContainer","MsDyn365","isBrowser","_document$getElements","hasContentBlockImage","document","getElementsByClassName","length","categoryHeirarchy","_getCategoryHierarchy","categoryHierarchy","tag","value","Link","Name","ariaLabel","href","Url","Separator","separator","Module","binding","modules","dataActions","c","require","$type","da","iNM","ns","n","p","pdp","__bindings__","_objectSpread","viewDictionary","cn","assembleNode","item","itemIndex","_item$links","heading","renderHeading","additionalContentHeading","requestContext","Msdyn365","editProps","onEdit","event","handleAdditionalTextChange","subtext","renderParagraph","additionalContentParagraphText","ctaLink","renderLinks","linkIndex","editableLink","linkText","linkUrl","destinationUrl","openInNewTab","link","onTextChange","handleAdditionalLinkTextChange","additionalContentItemContainer","additionalContentItemLinks","contentBlockAdditionalContent","additionalContent","reactNodes","push","additionalContentNode","additionalContentItems","ContentCardLinks","constructor","_mapEditableLinks","linkdata","editableLinks","forEach","payLoad","getPayloadObject","this","telemetryContent","contentAction","etext","attributes","getTelemetryAttributes","btnClass","additionalProperties","onClick","onTelemetryClick","render","ContentBlock","getTelemetryObject","telemetryPageName","friendlyName","telemetry","handleTextChange","target","handleParagraphChange","paragraph","handleLinkTextChange","Number","_heading$tag","_this$props$context$r","_this$props$config$im","contentBlockTitle","contentBlockLinks","ArrayExtensions","hasElements","LinksComponent","msdyn365__moduleLayout","contentBlockText","contentBlockImageSettings","backgroundColor","imageProps","contentBlockImage","preserveImageSpace","moduleType","typeName","imagePropertyName","moduleId","layout","shouldSkipToMainImage","contentBlockContainerStyle","error","contentBlockviewProps","moduleClass","moduleProps","style","_getImageLink","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","renderView","additionalContentObject","actionableRegion","renderAdditionalContent","_additionalContent$ad","imageClass","src","module","exports","ReactDOM"],"sourceRoot":""}