{"version":3,"file":"static/js/31.8530679765b073509bed.chunk.js","mappings":"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","sources":["webpack://Citta2.0/./src/modules/footer-item/footer-item.tsx?074a","webpack://Citta2.0/./src/modules/citta-homepage-banner/components/additional-content.tsx?b0fc","webpack://Citta2.0/./src/modules/citta-homepage-banner/components/links.tsx?a744","webpack://Citta2.0/./src/modules/citta-homepage-banner/citta-homepage-banner.props.autogenerated.ts?92a1","webpack://Citta2.0/./src/modules/citta-homepage-banner/citta-homepage-banner.tsx?14a5","webpack://Citta2.0/./src/modules/citta-journal-posts/citta-journal-posts.tsx?e969","webpack://Citta2.0/./src/modules/citta-homepage-banner/citta-homepage-banner.view.tsx?a31a","webpack://Citta2.0/./src/modules/citta-journal-posts/citta-journal-posts.view.tsx?9b29","webpack://Citta2.0/./src/themes/citta/views/video-player.view.tsx?eef1","webpack://Citta2.0/./src/modules/footer-item/footer-item.view.tsx?c5af"],"sourcesContent":["/*!\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 {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IFooterItemConfig, IFooterItemProps, IHeadingData, ILinkData } from './footer-item.props.autogenerated';\n\nexport interface IFooterViewProps extends IFooterItemProps {\n heading: React.ReactNode;\n image: React.ReactNode;\n text: React.ReactNode;\n linkText: React.ReactNode;\n className?: string;\n FooterItem: IModuleProps;\n HeadingContainer: INodeProps;\n ItemContainer: INodeProps;\n Link: INodeProps;\n EditableLink: React.ReactNode;\n}\n\n/**\n *\n * FooterItem component.\n * @extends {React.PureComponent>}\n */\nexport class FooterItem extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private attributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: IFooterItemProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n // Construct telemetry attribute to render\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public render(): JSX.Element {\n const { heading, image, link, text } = this.props.config;\n const footerItemClassName = classnames('ms-footer__item', this.props.config.className);\n const linkText = link && link.linkText ? link.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n const viewProps: IFooterViewProps = {\n ...this.props,\n heading: this._createHeading(heading!),\n image: this._createImageMarkup(image!),\n text: this._createText(text!),\n linkText: this._createLinkText(link!),\n EditableLink: this._createLink(link!),\n\n FooterItem: {\n moduleProps: this.props,\n className: footerItemClassName\n },\n\n HeadingContainer: {\n className: 'ms-footer__heading'\n },\n\n ItemContainer: {\n className: 'ms-footer__link__container'\n },\n\n // @ts-expect-error\n Link: link &&\n link.linkUrl &&\n link.linkUrl.destinationUrl && {\n tag: 'a',\n role: 'link',\n className: 'ms-footer__link',\n href: link.linkUrl.destinationUrl,\n title: linkText,\n 'aria-label': link.ariaLabel,\n target: link.openInNewTab ? '_blank' : undefined,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText),\n ...this.attributes\n },\n className: footerItemClassName\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.text = event.target.value);\n\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.link!.linkText = event.target.value);\n\n private _createLink(link: ILinkData): React.ReactNode | null {\n if (link) {\n const linkText = link.linkText ? link.linkText : '';\n\n // TODO: Update the inner tag in the anchor link to span\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-footer__link',\n linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: this.attributes!,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText)\n };\n return (\n \n );\n }\n return null;\n }\n\n private _createLinkText(link: ILinkData): React.ReactNode | null {\n if (!link || !link.linkText) {\n return null;\n }\n\n return {link.linkText};\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _createText(text: string): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createImageMarkup(item: Msdyn365.IImageData, ariaHiddenAttr?: boolean): React.ReactNode | null {\n if (!item || !item.src || item.src.length === 0) {\n return null;\n }\n\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=24&h=24&m=6', w: 0, h: 0 },\n lg: { q: 'w=24&h=24&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n return (\n \n );\n }\n}\n\nexport default FooterItem;\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\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAdditionalContentData, ILinksData } from '../citta-homepage-banner.props.autogenerated';\r\n\r\n/**\r\n * IContentBlockAdditionalContentProps: Interface for\r\n * Content Block Additional Content Component props.\r\n */\r\nexport interface IContentBlockAdditionalContentProps {\r\n requestContext: Msdyn365.IRequestContext;\r\n additionalContent: IAdditionalContentData[] | undefined;\r\n handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void;\r\n handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void;\r\n handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void;\r\n}\r\n\r\n/**\r\n * IContentBlockAdditionalContentProps: Interface for\r\n * Content Block Additional Content view props.\r\n */\r\nexport interface IContentBlockAdditionalContentViewProps {\r\n additionalContentNode: INodeProps;\r\n additionalContentItems?: IContentBlockAdditionalContentItemViewProps[];\r\n}\r\n\r\n/**\r\n * IContentBlockAdditionalContentProps: Interface for\r\n * Content Block Additional Content Item view props.\r\n */\r\nexport interface IContentBlockAdditionalContentItemViewProps {\r\n heading: React.ReactNode;\r\n text: React.ReactNode;\r\n links: React.ReactNode;\r\n additionalContentItemContainer: INodeProps;\r\n additionalContentItemLinks: INodeProps;\r\n}\r\n\r\n/**\r\n * Renders additional content heading.\r\n * @param additionalContentHeading - Additional content heading.\r\n * @param props - Content Block Additional content component props.\r\n * @param itemIndex - Item index.\r\n * @returns Heading Node.\r\n */\r\nconst renderHeading = (additionalContentHeading: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\r\n const requestContext = props.requestContext;\r\n return (\r\n {\r\n props.handleAdditionalTextChange(itemIndex, event);\r\n },\r\n requestContext\r\n }}\r\n />\r\n );\r\n};\r\n\r\n/**\r\n * Renders additional content heading.\r\n * @param additionalContentParagraphText - Additional content paragraph text.\r\n * @param props - Content Block Additional content component props.\r\n * @param itemIndex - Item index.\r\n * @returns Paragraph Node.\r\n */\r\nconst renderParagraph = (additionalContentParagraphText: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\r\n const requestContext = props.requestContext;\r\n return (\r\n {\r\n props.handleAdditionalTextChange(itemIndex, event);\r\n },\r\n requestContext\r\n }}\r\n />\r\n );\r\n};\r\n\r\n/**\r\n * Renders additional content heading.\r\n * @param ctaLink - Additional content link.\r\n * @param props - Content Block Additional content component props.\r\n * @param itemIndex - Item index.\r\n * @param linkIndex - Additional content link index.\r\n * @returns Link Node.\r\n */\r\nconst renderLinks = (ctaLink: ILinksData, props: IContentBlockAdditionalContentProps, itemIndex: number, linkIndex: number) => {\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: ctaLink.ariaLabel,\r\n className: 'ms-content-block__details__additional-content-cta-links',\r\n linkText: ctaLink.linkText,\r\n linkUrl: ctaLink.linkUrl.destinationUrl,\r\n openInNewTab: ctaLink.openInNewTab,\r\n role: 'link'\r\n };\r\n const requestContext = props.requestContext;\r\n return (\r\n {\r\n props.handleAdditionalLinkTextChange(linkIndex, itemIndex, event);\r\n },\r\n requestContext\r\n }}\r\n />\r\n );\r\n};\r\n\r\n/**\r\n * Create node for each additonal content item.\r\n * @param item - Content block additonal content item props.\r\n * @param props - Content Block Additional content component props.\r\n * @param itemIndex - Item index.\r\n * @returns IContentBlockAdditionalContentItemViewProps.\r\n */\r\nconst assembleNode = (\r\n item: IAdditionalContentData,\r\n props: IContentBlockAdditionalContentProps,\r\n itemIndex: number\r\n): IContentBlockAdditionalContentItemViewProps => {\r\n const headingNode = item.heading && renderHeading(item.heading, props, itemIndex);\r\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props, itemIndex);\r\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\r\n return renderLinks(ctaLink, props, itemIndex, index);\r\n });\r\n\r\n return {\r\n heading: headingNode,\r\n text: paragraphNode,\r\n links: linksNode,\r\n additionalContentItemContainer: { className: 'ms-content-block__details__additional-content__container' },\r\n additionalContentItemLinks: { className: 'ms-content-block__details__additional-content-cta' }\r\n };\r\n};\r\n\r\n/**\r\n * ContentBlockAdditionalContent component.\r\n * @param props - Content Block Additional content component props.\r\n * @returns Content Block Additional content view props.\r\n */\r\nexport const contentBlockAdditionalContent = (\r\n props: IContentBlockAdditionalContentProps\r\n): IContentBlockAdditionalContentViewProps | undefined => {\r\n const { additionalContent } = props;\r\n if (!additionalContent) {\r\n return undefined;\r\n }\r\n\r\n const reactNodes: IContentBlockAdditionalContentItemViewProps[] = [];\r\n additionalContent.map((item, index: number) => {\r\n return reactNodes.push(assembleNode(item, props, index));\r\n });\r\n\r\n return {\r\n additionalContentNode: { className: 'ms-content-block__details__additional-content' },\r\n additionalContentItems: reactNodes\r\n };\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ILinksData } from '../citta-homepage-banner.props.autogenerated';\r\n\r\nexport interface IContentCardLinks {\r\n links: ILinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n telemetryContent: ITelemetryContent;\r\n role?: string;\r\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\r\n}\r\n\r\n/**\r\n *\r\n * ContentCardLinks component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class ContentCardLinks extends React.PureComponent {\r\n public render(): JSX.Element {\r\n const editableLinks = this._mapEditableLinks(this.props.links);\r\n return (\r\n
\r\n {editableLinks && editableLinks.length > 0 ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n\r\n private readonly _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\r\n if (!linkdata || linkdata.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n linkdata.forEach((link, index) => {\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\r\n const linkText = link.linkText ? link.linkText : '';\r\n payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\r\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: btnClass,\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: this.props.role,\r\n additionalProperties: attributes,\r\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n };\r\n}\r\nexport default ContentCardLinks;\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * ICittaHomepageBanner contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum actionableRegion {\r\n imageAndLinks = 'imageAndLinks',\r\n linksOnly = 'linksOnly'\r\n}\r\n\r\nexport const enum textplacement {\r\n left = 'left',\r\n right = 'right',\r\n center = 'center'\r\n}\r\n\r\nexport const enum textalignmentmobile {\r\n top = 'top',\r\n bottom = 'bottom',\r\n center = 'center'\r\n}\r\n\r\nexport const enum textalignment {\r\n top = 'top',\r\n bottom = 'bottom',\r\n center = 'center'\r\n}\r\n\r\nexport const enum imageplacement {\r\n top = 'top',\r\n bottom = 'bottom',\r\n right = 'right',\r\n left = 'left'\r\n}\r\n\r\nexport const enum texttheme {\r\n dark = 'dark',\r\n light = 'light'\r\n}\r\n\r\nexport const enum textthememobile {\r\n dark = 'dark',\r\n light = 'light'\r\n}\r\n\r\nexport interface ICittaHomepageBannerConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n paragraph?: Msdyn365.RichText;\r\n image?: Msdyn365.IImageData;\r\n mobileImage?: Msdyn365.IImageData;\r\n links?: ILinksData[];\r\n additionalContent?: IAdditionalContentData[];\r\n actionableRegion?: actionableRegion;\r\n imageLink?: Msdyn365.ILinkData;\r\n imageAriaLabel?: string;\r\n className?: string;\r\n clientRender?: boolean;\r\n textplacement?: textplacement;\r\n textalignmentmobile?: textalignmentmobile;\r\n textalignment?: textalignment;\r\n imageplacement?: imageplacement;\r\n texttheme?: texttheme;\r\n textthememobile?: textthememobile;\r\n fillbutton?: boolean;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface ILinksData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n}\r\n\r\nexport interface IAdditionalContentData {\r\n heading?: string;\r\n subtext?: string;\r\n links?: ILinksData[];\r\n}\r\n\r\nexport interface ILinksData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n}\r\n\r\nexport interface ICittaHomepageBannerProps extends Msdyn365.IModule {\r\n config: ICittaHomepageBannerConfig;\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport msdyn365Commerce, * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport { observable } from 'mobx';\r\n\r\nimport { contentBlockAdditionalContent, IContentBlockAdditionalContentViewProps } from './components/additional-content';\r\nimport LinksComponent from './components/links';\r\nimport { actionableRegion as region, ICittaHomepageBannerConfig, ICittaHomepageBannerProps } from './citta-homepage-banner.props.autogenerated';\r\n\r\nexport interface IContentBlockViewProps extends ICittaHomepageBannerProps<{}> {\r\n title?: React.ReactNode;\r\n text?: React.ReactNode;\r\n image?: React.ReactNode;\r\n links?: React.ReactNode;\r\n className?: string;\r\n contentBlockContainer: IModuleProps;\r\n imageContainer: INodeProps;\r\n detailsContainer: INodeProps;\r\n contentBlockAnchorTag?: INodeProps;\r\n imageLink?: string;\r\n imageAriaLabel?: string;\r\n additionalContent?: IContentBlockAdditionalContentViewProps;\r\n handleAdditionalText?(): void;\r\n handleAdditionalParagraph?(): void;\r\n handleAdditionalLinkTextChange?(): void;\r\n}\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface IContentBlockStates {\r\n \r\n isMobile: boolean;\r\n }\r\n/**\r\n * Site-builder configuration for the module.\r\n */\r\nexport interface IContentBlockFullConfig extends ICittaHomepageBannerConfig {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- This field comes from SDK.\r\n msdyn365__moduleLayout?: string;\r\n}\r\n\r\n/**\r\n * ContentCard component.\r\n * @extends {React.Component}\r\n */\r\n@observer\r\n\r\nexport class ContentBlock extends React.Component, IContentBlockStates> {\r\n @observable\r\n // private viewport: GridSize;\r\n private telemetryContent: ITelemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n\r\n //@ts-ignore\r\n constructor(props) {\r\n super(props);\r\n this.state = {isMobile: false};\r\n this._updateIsMobile = this._updateIsMobile.bind(this);\r\n }\r\n public componentDidMount(): void {\r\n this._updateIsMobile();\r\n window.addEventListener('resize', this._updateIsMobile);\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window.removeEventListener('resize', this._updateIsMobile);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { heading, paragraph, image, links, className, imageAriaLabel, textplacement, textalignment, texttheme, mobileImage, textthememobile, fillbutton, textalignmentmobile } = this.props.config;\r\n\r\n let additionalClassNames = '';\r\n if(textplacement) {\r\n additionalClassNames = ` textplacement__${textplacement}`;\r\n }\r\n if(texttheme) {\r\n additionalClassNames += ` texttheme__${texttheme}`;\r\n }\r\n if(textthememobile) {\r\n additionalClassNames += ` textthememobile__${textthememobile}`;\r\n }\r\n if (textalignment) {\r\n additionalClassNames += ` textalignment__${textalignment}`;\r\n }\r\n if (textalignmentmobile) {\r\n additionalClassNames += ` textalignmentmobile__${textalignmentmobile}`;\r\n }\r\n\r\n if(fillbutton) {\r\n additionalClassNames += ' fillbutton';\r\n }\r\n\r\n const contentBlockTitle = heading && (\r\n \r\n );\r\n const imageProps = {\r\n gridSettings: this.props.context.request.gridSettings ?? {},\r\n imageSettings: image?.imageSettings\r\n };\r\n const contentBlockLinks = links && ArrayExtensions.hasElements(links) && (\r\n \r\n );\r\n const contentBlockText = paragraph && (\r\n \r\n ); \r\n \r\n let contentBlockImage = (\r\n \r\n );\r\n\r\n if (this.state.isMobile) {\r\n contentBlockImage = \r\n }\r\n\r\n if (!contentBlockTitle && !contentBlockText && !contentBlockLinks) {\r\n this.props.context.telemetry.error('Content block content is empty, module wont render.');\r\n return null;\r\n }\r\n const contentBlockviewProps = {\r\n ...this.props,\r\n title: contentBlockTitle,\r\n text: contentBlockText,\r\n image: contentBlockImage,\r\n links: contentBlockLinks,\r\n moduleClass: this.props.config.className,\r\n contentBlockContainer: {\r\n moduleProps: this.props,\r\n className: classnames(`ms-content-block citta-homepage-banner ${additionalClassNames}`, className)\r\n },\r\n imageContainer: { className: 'ms-content-block__image' },\r\n detailsContainer: { className: 'ms-content-block__details' },\r\n contentBlockAnchorTag: {\r\n tag: 'a',\r\n className: 'ms-content-block__link',\r\n role: 'link'\r\n },\r\n imageLink: this._getImageLink(),\r\n imageAriaLabel,\r\n additionalContent: contentBlockAdditionalContent({\r\n requestContext: this.props.context.request,\r\n additionalContent: this.props.config.additionalContent,\r\n handleAdditionalTextChange: this.handleAdditionalTextChange,\r\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\r\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\r\n }),\r\n handleAdditionalText: this.handleAdditionalTextChange,\r\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\r\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\r\n };\r\n\r\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * To handle text change.\r\n * @param event - To handle text change event.\r\n * @name - HandleTextChange\r\n * @public\r\n * @returns - The Text value.\r\n */\r\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\r\n\r\n /**\r\n * To handle paragraph change.\r\n * @param event - To handle text change event.\r\n * @name - HandleParagraphChange\r\n * @public\r\n * @returns - The Paragraph value.\r\n */\r\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.paragraph = event.target.value);\r\n\r\n /**\r\n * Handle link text change.\r\n * @param linkIndex - The link index.\r\n * @returns - Void.\r\n */\r\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\r\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\r\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\r\n }\r\n };\r\n\r\n public handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void {\r\n if (this.props.config.additionalContent) {\r\n this.props.config.additionalContent[Number(index)].heading = event.target.value;\r\n }\r\n }\r\n\r\n public handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void {\r\n const additionalContentObject =\r\n (this.props.config.additionalContent &&\r\n ArrayExtensions.hasElements(this.props.config.additionalContent) &&\r\n this.props.config.additionalContent[Number(index)]) ||\r\n {};\r\n if (additionalContentObject.links) {\r\n additionalContentObject.links[Number(linkIndex)].linkText = event.target.value;\r\n }\r\n }\r\n\r\n public handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void {\r\n if (this.props.config.additionalContent) {\r\n this.props.config.additionalContent[Number(index)].subtext = event.target.value;\r\n }\r\n }\r\n\r\n private _getImageLink(): string | null {\r\n const { imageLink, links, actionableRegion } = this.props.config;\r\n if (actionableRegion === region.imageAndLinks) {\r\n if (imageLink?.destinationUrl) {\r\n return imageLink.destinationUrl;\r\n } else if (links && ArrayExtensions.hasElements(links) && links[0].linkUrl) {\r\n return links[0].linkUrl.destinationUrl;\r\n }\r\n return null;\r\n }\r\n return null;\r\n }\r\n \r\n\r\n private _updateIsMobile = () => {\r\n if (msdyn365Commerce.isBrowser) {\r\n this.setState({\r\n isMobile: window.innerWidth < 768\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default ContentBlock;\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\nimport MsDyn365 from '@msdyn365-commerce/core';\r\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport * as React from 'react';\r\nimport classnames from 'classnames';\r\n\r\nimport { ICittaJournalPostsData } from './citta-journal-posts.data';\r\nimport { ICittaJournalPostsProps } from './citta-journal-posts.props.autogenerated';\r\nimport {IGetJournalPostData } from '../../data-actions/journal/get-journal-posts';\r\n\r\nenum Market {\r\n NZ = 'NZL',\r\n AU = 'AUS',\r\n US = 'USA'\r\n}\r\n\r\nexport interface ICittaJournalPostsViewProps extends ICittaJournalPostsProps {\r\n JournalsWrapper: IModuleProps;\r\n journals: React.ReactNode;\r\n loadMore: React.ReactNode;\r\n search: React.ReactNode;\r\n categories: React.ReactNode;\r\n}\r\n\r\n// const Categories = {\r\n// behindtheproduct: 'Città Behind the product',\r\n// styling: 'Stying'\r\n// }\r\n\r\nexport interface ICittaJournalPostsState {\r\n allJournals: any;\r\n displayedJournals: any;\r\n displayCount: number;\r\n searchTerm: string;\r\n categoryFilter: string;\r\n}\r\n\r\n/**\r\n *\r\n * CittaJournalPosts component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CittaJournalPosts extends React.PureComponent, ICittaJournalPostsState> {\r\n private moduleClassName: string = 'journal-posts-wrapper';\r\n\r\n constructor(props: any) {\r\n super(props);\r\n const { audience } = props.config;\r\n const journals = props.data && props.data.journals && props.data.journals.result;\r\n let journalsFilteredByAudience = journals.posts && journals.posts.filter((post: any) => post.audience.indexOf(audience) != -1);\r\n\r\n this.state = {\r\n allJournals: journalsFilteredByAudience || [],\r\n displayedJournals: (journalsFilteredByAudience || []).slice(0, 6),\r\n displayCount: 6,\r\n searchTerm: '',\r\n categoryFilter: ''\r\n }\r\n this._loadMore = this._loadMore.bind(this);\r\n this._renderSearch = this._renderSearch.bind(this);\r\n this._renderCategoryFilter = this._renderCategoryFilter.bind(this);\r\n this._onType = this._onType.bind(this);\r\n this._getPostUrl = this._getPostUrl.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser && typeof window !== 'undefined') {\r\n const { categories } = this.props.config;\r\n const url: string = decodeURI(window.location.search);\r\n const urlParams = new URLSearchParams(url);\r\n const journalcategory = urlParams.has('journalcategory') ? urlParams.get('journalcategory') : '';\r\n const category = categories?.find((c: String) => c.toLocaleLowerCase() === journalcategory?.toLocaleLowerCase());\r\n category && this._setCategoryFilter(category)\r\n }\r\n\r\n let container = document.querySelector(\".journal-posts-wrapper-categories ul\");\r\n if (container) {\r\n const middle = container.querySelector(\"li.active\") || container.children[Math.floor((container.children.length) / 2)];\r\n // @ts-ignore\r\n container.scrollLeft = middle.offsetLeft + middle.offsetWidth / 2 - container.offsetWidth / 2;\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {displayedJournals, allJournals} = this.state;\r\n\r\n if (!allJournals || !allJournals.length) {\r\n //TODO: create a better page in here for no posts found or something\r\n return
No journals found at the moment
\r\n }\r\n\r\n const viewProps: ICittaJournalPostsViewProps = {\r\n ...(this.props as ICittaJournalPostsProps ),\r\n JournalsWrapper: {\r\n moduleProps: this.props,\r\n className: classnames(this.moduleClassName)\r\n },\r\n journals: this._renderPosts(displayedJournals),\r\n loadMore: this._renderLoadMore(),\r\n search: this._renderSearch(),\r\n categories: this._renderCategoryFilter(),\r\n };\r\n\r\n return this.props.renderView(viewProps);\r\n }\r\n\r\n private _formatDate(date: string): string {\r\n const d = date.split('-');\r\n return `${parseInt(d[2], 10)}.${parseInt(d[1], 10)}.${d[0]}`\r\n }\r\n\r\n private _renderLoadMore = () => {\r\n const {displayedJournals, allJournals } = this.state;\r\n if (displayedJournals.length >= allJournals.length) {\r\n return null;\r\n }\r\n return (\r\n
\r\n Load More\r\n
\r\n )\r\n }\r\n\r\n private _onType = (e: React.ChangeEvent) => {\r\n const { categoryFilter } = this.state;\r\n\r\n const newDisplayCount = 10;\r\n\r\n const list = this._getFilteredJournals(e.target.value.toLowerCase(), categoryFilter)\r\n \r\n this.setState({\r\n displayCount: newDisplayCount,\r\n displayedJournals: list.slice(0, newDisplayCount),\r\n searchTerm: e.target.value,\r\n })\r\n }\r\n\r\n private _getFilteredJournals = (searchTerm: string, categoryFilter: string) => {\r\n const { allJournals } = this.state;\r\n\r\n let list = allJournals.filter((journal: IGetJournalPostData) => {\r\n if (categoryFilter && journal.category !== categoryFilter) {\r\n return null;\r\n }\r\n return journal.title.toLowerCase().indexOf(searchTerm) !== -1 || \r\n journal.subTitle.toLowerCase().indexOf(searchTerm) !== -1 \r\n })\r\n\r\n return list\r\n }\r\n\r\n private _setCategoryFilter = (type: string) => {\r\n const { searchTerm } = this.state;\r\n\r\n const newDisplayCount = 6;\r\n\r\n let list = this._getFilteredJournals(searchTerm, type);\r\n this.setState({\r\n categoryFilter: type,\r\n displayCount: newDisplayCount,\r\n displayedJournals: list.slice(0, newDisplayCount)\r\n })\r\n }\r\n\r\n private _renderCategoryFilter = () => {\r\n const { categories } = this.props.config;\r\n const { categoryFilter } = this.state;\r\n\r\n return (\r\n
\r\n
    \r\n
  • this._setCategoryFilter('')}>All
  • \r\n {categories?.map(category => {\r\n return
  • this._setCategoryFilter(category)}>{category}
  • \r\n })}\r\n
\r\n
\r\n )\r\n }\r\n\r\n private _renderSearch = () => {\r\n return (\r\n
\r\n \r\n
\r\n )\r\n }\r\n\r\n private _loadMore(): void {\r\n const { displayCount, searchTerm, categoryFilter } = this.state;\r\n\r\n const newDisplayCount = displayCount + 3;\r\n let list = this._getFilteredJournals(searchTerm, categoryFilter);\r\n this.setState({\r\n displayCount: newDisplayCount,\r\n displayedJournals: list.slice(0, newDisplayCount)\r\n })\r\n }\r\n\r\n private getMarket = (url: string = ''): string => {\r\n let indexOfCountry = 3;\r\n if (url.indexOf('test.') > 0 || url.indexOf('cittab.') > 0) {\r\n indexOfCountry = 4;\r\n }\r\n let market = (url && url.length > 0) \r\n ? (url.indexOf('//') > -1 \r\n ? ((url.split('/')[indexOfCountry] === undefined || (url.split('/')[indexOfCountry].length > 2 && url.split('/')[indexOfCountry].toLowerCase() !== 'international' && url.split('/')[indexOfCountry].toLowerCase() !== 'us') || url.split('/')[indexOfCountry] === '') \r\n ? Market.NZ \r\n : url.split('/')[indexOfCountry].toUpperCase()) \r\n : Market.NZ) \r\n : '';\r\n\r\n return market;\r\n };\r\n\r\n private _getPostUrl = (postUrl: string) => {\r\n const url = this.props.context.request.url && this.props.context.request.url.requestUrl && this.props.context.request.url.requestUrl.href;\r\n\r\n if (postUrl.indexOf('https://') !== -1) {\r\n return postUrl;\r\n }\r\n\r\n const market = this.getMarket(url);\r\n\r\n if (market === 'AU') {\r\n return `\\/au${postUrl}`\r\n } else if (market.toLowerCase() === 'international' || market.toLowerCase() === 'us') { \r\n return `/${market.toLowerCase()}${postUrl}`\r\n }\r\n \r\n return postUrl;\r\n }\r\n\r\n private _renderPosts = (posts: IGetJournalPostData[]) => {\r\n if (!posts.length) {\r\n return
We can't find any journals to match that
\r\n }\r\n\r\n return posts.map((post: IGetJournalPostData) => {\r\n return (\r\n \r\n );\r\n })\r\n };\r\n}\r\n\r\nexport default CittaJournalPosts;\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\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IContentBlockAdditionalContentItemViewProps, IContentBlockAdditionalContentViewProps } from './components/additional-content';\r\nimport { IContentBlockViewProps } from './citta-homepage-banner';\r\n\r\n/**\r\n * Render Additional Content.\r\n * @param additionalContent - Additional content view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\r\n return (\r\n \r\n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\r\n return (\r\n <>\r\n {item.heading}\r\n \r\n {item.text}\r\n {item.links}\r\n \r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst ContentBlockView: React.FC = props => {\r\n const {\r\n contentBlockContainer,\r\n imageContainer,\r\n detailsContainer,\r\n title,\r\n text,\r\n links,\r\n image,\r\n contentBlockAnchorTag,\r\n imageLink,\r\n imageAriaLabel,\r\n additionalContent\r\n } = props;\r\n\r\n if (imageLink) {\r\n return (\r\n \r\n \r\n {image}\r\n \r\n {title}\r\n {text}\r\n {links}\r\n {additionalContent && renderAdditionalContent(additionalContent)}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {image}\r\n \r\n {title}\r\n {text}\r\n {links}\r\n {additionalContent && renderAdditionalContent(additionalContent)}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ContentBlockView;\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\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport * as React from 'react';\r\nimport { ICittaJournalPostsViewProps } from './citta-journal-posts';\r\n\r\nexport default (props: ICittaJournalPostsViewProps) => {\r\n\r\n return (\r\n \r\n {props.categories}\r\n {props.search}\r\n \r\n
\r\n {props.journals}\r\n
\r\n {props.loadMore}\r\n
\r\n );\r\n};\r\n","/*---------------------------------------------------------------------------------------------\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 { Button } from '@msdyn365-commerce-modules/utilities';\r\nimport { IVideoPlayerViewProps } from '@msdyn365-commerce-modules/video-player/src/modules/video-player/video-player';\r\n// import { IPlayerResources } from '@msdyn365-commerce/components/dist/types/videoplayer/components/data/player-resources';\r\nimport { Image } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { IVideoPlayerProps } from '../definition-extensions/video-player.ext.props.autogenerated';\r\n\r\ninterface IVideoPlayerState {\r\n isMobile: boolean;\r\n }\r\n\r\n/**\r\n *\r\n * VideoPlayer component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class VideoPlayerView extends React.PureComponent, IVideoPlayerState> {\r\n constructor(props: IVideoPlayerViewProps) {\r\n //@ts-ignore\r\n super(props);\r\n this.state = {isMobile: false};\r\n }\r\n\r\n public componentDidMount(): void {\r\n this._updateIsMobile();\r\n window.addEventListener('resize', this._updateIsMobile);\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window.removeEventListener('resize', this._updateIsMobile);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n return (\r\n \r\n
\r\n {this.state.isMobile ? this._renderMobile() : this._renderDesktop()}\r\n {this._renderVideoPlayerOverlay()}\r\n
\r\n \r\n );\r\n }\r\n\r\n private _renderDesktop = (): React.ReactNode | null => {\r\n const playerResources: any = {\r\n playAriaLabel: this.props.config.playLabel ? this.props.config.playLabel : '',\r\n pauseAriaLabel: this.props.config.pauseLabel ? this.props.config.pauseLabel : '',\r\n muteAriaLabel: this.props.config.muteLabel ? this.props.config.muteLabel : '',\r\n unMuteAriaLabel: this.props.config.unMuteLabel ? this.props.config.unMuteLabel: '',\r\n fullScreenAriaLabel: this.props.config.fullScreenLabel ? this.props.config.fullScreenLabel : '',\r\n exitFullScreenAriaLabel: this.props.config.exitFullScreenLabel ? this.props.config.exitFullScreenLabel : '',\r\n playingAriaLabel: this.props.config.playingLabel ? this.props.config.playingLabel : '',\r\n pausedAriaLabel: this.props.config.pausedLabel ? this.props.config.pausedLabel : '',\r\n ...this.props.resources\r\n };\r\n if (this.props.player) {\r\n return React.cloneElement(this.props.player as React.ReactElement, {playerResources});\r\n }\r\n return null;\r\n };\r\n\r\n private _renderMobile = (): React.ReactNode | null => {\r\n const imageSettingsDefault = {\r\n disableLazyLoad: true,\r\n viewports: {\r\n xs: { q: `q=80&w=770&h=500&m=6`, w: 770, h: 500 }\r\n }\r\n };\r\n const image = this.props.config.mobileImage;\r\n\r\n if (image) {\r\n return (\r\n
\r\n {image && }\r\n
\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n private _renderVideoPlayerOverlay = (): React.ReactNode | null => {\r\n const { buttonText, buttonLink, headerText, horizontalPosition } = this.props.config;\r\n if (buttonText || headerText) {\r\n return (\r\n
\r\n { headerText &&
{headerText}
}\r\n { buttonText && {buttonText}\r\n }\r\n
\r\n );\r\n }\r\n return null;\r\n };\r\n\r\n private _updateIsMobile = () => {\r\n this.setState({\r\n isMobile: window.innerWidth < 768\r\n });\r\n }\r\n}\r\n\r\nexport default VideoPlayerView;","/*!\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 { IFooterViewProps } from './footer-item';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return {heading} ;\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\n } else if (Link) {\n return EditableLink;\n }\n return (\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;\n"],"names":["FooterItem","React","constructor","props","super","handleHeadingChange","event","this","config","heading","text","target","value","handleTextChange","handleLinkTextChange","link","linkText","telemetryContent","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","payLoad","getPayloadObject","render","image","footerItemClassName","classnames","className","contentAction","etext","attributes","getTelemetryAttributes","viewProps","_objectSpread","_createHeading","_createImageMarkup","_createText","_createLinkText","EditableLink","_createLink","moduleProps","HeadingContainer","ItemContainer","Link","linkUrl","destinationUrl","tag","role","href","title","ariaLabel","openInNewTab","undefined","onClick","onTelemetryClick","renderView","editableLink","additionalProperties","Msdyn365","editProps","onTextChange","requestContext","length","onEdit","item","ariaHiddenAttr","src","Object","assign","gridSettings","imageSettings","viewports","xs","q","w","h","lg","lazyload","loadFailureBehavior","key","shouldSkipToMainImage","assembleNode","itemIndex","_item$links","headingNode","renderHeading","additionalContentHeading","handleAdditionalTextChange","paragraphNode","subtext","renderParagraph","additionalContentParagraphText","linksNode","links","map","ctaLink","index","renderLinks","linkIndex","handleAdditionalLinkTextChange","additionalContentItemContainer","additionalContentItemLinks","contentBlockAdditionalContent","additionalContent","reactNodes","push","additionalContentNode","additionalContentItems","ContentCardLinks","_mapEditableLinks","linkdata","editableLinks","forEach","btnClass","actionableRegion","textplacement","textalignmentmobile","textalignment","imageplacement","texttheme","textthememobile","HeadingTag","ContentBlock","handleParagraphChange","paragraph","Number","_updateIsMobile","msdyn365Commerce","isBrowser","setState","isMobile","window","innerWidth","state","bind","componentDidMount","addEventListener","componentWillUnmount","removeEventListener","_heading$tag","_this$props$context$r","_this$props$config$im","imageAriaLabel","mobileImage","fillbutton","additionalClassNames","contentBlockTitle","imageProps","contentBlockLinks","ArrayExtensions","hasElements","LinksComponent","msdyn365__moduleLayout","contentBlockText","contentBlockImage","preserveImageSpace","moduleType","typeName","imagePropertyName","moduleId","id","layout","_this$props$config$mo","error","contentBlockviewProps","moduleClass","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","_getImageLink","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","additionalContentObject","region","imageAndLinks","__decorate","observable","observer","Market","CittaJournalPosts","moduleClassName","_renderLoadMore","displayedJournals","allJournals","_loadMore","_onType","e","categoryFilter","list","_getFilteredJournals","toLowerCase","displayCount","slice","searchTerm","filter","journal","category","indexOf","subTitle","_setCategoryFilter","type","_renderCategoryFilter","categories","_renderSearch","onChange","placeholder","getMarket","url","arguments","indexOfCountry","market","split","NZ","toUpperCase","_getPostUrl","postUrl","requestUrl","_renderPosts","posts","post","imageUrl","alt","_formatDate","date","audience","journals","data","result","journalsFilteredByAudience","MsDyn365","decodeURI","location","search","urlParams","URLSearchParams","journalcategory","has","get","find","c","toLocaleLowerCase","container","document","querySelector","middle","children","Math","floor","scrollLeft","offsetLeft","offsetWidth","JournalsWrapper","loadMore","d","parseInt","newDisplayCount","renderAdditionalContent","_additionalContent$ad","Node","Module","VideoPlayerView","_renderDesktop","playerResources","playAriaLabel","playLabel","pauseAriaLabel","pauseLabel","muteAriaLabel","muteLabel","unMuteAriaLabel","unMuteLabel","fullScreenAriaLabel","fullScreenLabel","exitFullScreenAriaLabel","exitFullScreenLabel","playingAriaLabel","playingLabel","pausedAriaLabel","pausedLabel","resources","player","_renderMobile","imageSettingsDefault","disableLazyLoad","_image$imageSettings","Image","altText","_renderVideoPlayerOverlay","buttonText","buttonLink","headerText","horizontalPosition","Button","color","renderModuleAttributes","FooterItemView","_renderElement"],"sourceRoot":""}