{"version":3,"file":"static/js/25.d172436a4ce30f1b3454.chunk.js","mappings":"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","sources":["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-homepage-banner/citta-homepage-banner.view.tsx?a31a","webpack://Citta2.0/./src/themes/citta/views/video-player.view.tsx?eef1","webpack://Citta2.0/./src/modules/accordion-item/accordion-item.tsx?36f7","webpack://Citta2.0/./src/modules/accordion-item/accordion-item.view.tsx?a302","webpack://Citta2.0/./src/modules/accordion/accordion.tsx?78b1","webpack://Citta2.0/./src/modules/accordion/accordion.view.tsx?8c7b","webpack://Citta2.0/./src/modules/interactive-feature-collection/interactive-feature-collection.tsx?96a6","webpack://Citta2.0/./src/modules/interactive-feature-collection/interactive-feature-collection.view.tsx?db52"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\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\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. 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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ControlledDrawer, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { IDrawerState } from '@msdyn365-commerce-modules/utilities/dist/types/drawer/Drawer';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput, interactionStyle } from '../..';\nimport { IAccordionItemData } from './accordion-item.data';\nimport { IAccordionItemProps } from './accordion-item.props.autogenerated';\n\nexport interface IAccordionItemViewProps {\n AccordionItemContainer: IModuleProps;\n drawer: INodeProps;\n accordionSlots: INodeProps;\n AccordionItemContent: INodeProps;\n className: string;\n}\n\nexport interface IAccordionItemExtentedProps extends IAccordionItemProps {\n interactionStyle?: interactionStyle;\n}\n\n/**\n *\n * AccordionItem component.\n * @extends {React.Component}\n */\n@observer\nclass AccordionItem extends React.Component {\n private readonly moduleClassName: string = 'ms-accordion-item';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccordionItemProps) {\n super(props);\n this._onToggle = this._onToggle.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public shouldComponentUpdate(nextProps: IAccordionItemProps): boolean {\n if (this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data } = this.props;\n const accordionExpandedStateResult = data && data.accordionExpandedState && data.accordionExpandedState.result;\n const expanded =\n accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded === undefined\n ? data && config.isExpandedOnInitialLoad\n : accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded;\n const viewProps = {\n ...this.props,\n AccordionItemContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n AccordionItemContent: {\n className: 'ms-accordion-item-content'\n },\n drawer: {\n tag: ControlledDrawer,\n className: `${this.moduleClassName}__drawer`,\n toggleButtonText: (config.accordionItemTitle && config.accordionItemTitle) || '',\n collapseProps: { isOpen: expanded },\n onToggle: this._onToggle,\n onTextChange: this.handleHeadingChange,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n },\n accordionSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.accordionItemTitle = event.target.value);\n\n private _onToggle(state: IDrawerState): void {\n if (!state.isOpen && this.props.interactionStyle === interactionStyle.ExpandOneItemOnly) {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n }\n }\n}\nexport default AccordionItem;\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 { IAccordionItemViewProps } from './accordion-item';\n\nconst AccordionItemView: React.FC = props => {\n const { drawer, accordionSlots, AccordionItemContainer, AccordionItemContent } = props;\n return (\n \n \n \n {accordionSlots &&\n accordionSlots.accordionItemContent &&\n accordionSlots.accordionItemContent.length &&\n _renderAccordionItemContent(accordionSlots.accordionItemContent)}\n \n \n \n );\n};\n\nconst _renderAccordionItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length > 0\n ? items.map((item: React.ReactNode, index: number) => {\n return {item};\n })\n : null}\n \n );\n};\nexport default AccordionItemView;\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 {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput } from '../..';\nimport { IAccordionData } from './accordion.data';\nimport { IAccordionProps } from './accordion.props.autogenerated';\n\n/**\n *\n * Accordion component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\n/**\n * Added interface for state management.\n */\nexport interface IAccordianState {\n isDisabled: boolean;\n}\n\nexport interface IAccordionViewProps extends IAccordionProps<{}> {\n heading?: React.ReactNode;\n AccordionContainer: IModuleProps;\n HeaderSection: INodeProps;\n HeadingWrapper: INodeProps;\n accordianButtonsContainer: INodeProps;\n accordionButtons: React.ReactNode;\n accordionItemContainer: INodeProps;\n accordionItems: React.ReactNode;\n}\n\n/**\n *\n * Accordion component.\n * @extends {React.Component>}\n */\n@observer\nclass Accordion extends React.PureComponent, IAccordianState> {\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private readonly expandAllButtonRef: React.RefObject = React.createRef();\n\n private readonly collapseAllButtonRef: React.RefObject = React.createRef();\n\n constructor(props: IAccordionProps) {\n super(props);\n this._onExpandAll = this._onExpandAll.bind(this);\n this._onCollapseAll = this._onCollapseAll.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n this.state = { isDisabled: false };\n }\n\n public render(): JSX.Element {\n const { slots } = this.props;\n const { heading, className } = this.props.config;\n const headingComponent = heading && heading.text && (\n \n );\n\n const accordionViewProps = {\n ...this.props,\n AccordionContainer: {\n moduleProps: this.props,\n className: classnames('ms-accordion', className)\n },\n HeaderSection: { className: 'ms-accordion-header-section' },\n HeadingWrapper: { className: 'ms-accordion-header-section-container' },\n heading: headingComponent,\n config: this.props && this.props.config,\n accordianButtonsContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-header-section-toggle-button-container'\n },\n accordionButtons: this._renderAccordionButton(),\n accordionItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-item-section'\n },\n accordionItems:\n slots &&\n slots.accordionItems &&\n slots.accordionItems.length > 0 &&\n slots.accordionItems.map((item: React.ReactNode, index: number) => this._getAccordionItem(item, index))\n };\n return this.props.renderView(accordionViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n private _renderAccordionButton(): React.ReactNode | null {\n const { config, resources } = this.props;\n const { heading } = config;\n this.payLoad.contentAction.etext = TelemetryConstant.ExpandAll;\n const attributeExpandAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.CollapseAll;\n const attributeCollapseAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n if (!config.showToggleAll) {\n this.props.context.telemetry.error('Accordion button content is empty, module wont render');\n return null;\n }\n return (\n <>\n \n {resources.expandAllText}\n \n  \n {resources.toggleAllSeparator}\n  \n \n {resources.collapseAllText}\n \n \n );\n }\n\n private _onExpandAll(): void {\n const accordionState = { isAllExpanded: true };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (accordionState.isAllExpanded) {\n this.setState({\n isDisabled: true\n });\n setTimeout(() => {\n this.collapseAllButtonRef.current?.focus();\n }, 50);\n }\n }\n\n private _onCollapseAll(): void {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (!accordionState.isAllExpanded) {\n this.setState({\n isDisabled: false\n });\n setTimeout(() => {\n this.expandAllButtonRef.current?.focus();\n }, 50);\n }\n }\n\n private _getAccordionItem(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, { interactionStyle: this.props.config.interactionStyle })}\n \n );\n }\n}\n\nexport default Accordion;\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 { IAccordionViewProps } from './accordion';\n\nconst accordionView: React.FC = props => {\n const { heading, AccordionContainer, accordionItems } = props;\n if (!props.heading && !props.accordionButtons && !props.accordionItems) {\n props.context.telemetry.error('Accordion content is empty, module wont render');\n return null;\n }\n return (\n \n \n {heading}\n {props.accordionButtons && {props.accordionButtons}}\n \n {accordionItems}\n \n );\n};\n\nexport default accordionView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n getTelemetryObject,\n IComponentNodeProps,\n IModuleProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureCollectionProps } from './interactive-feature-collection.props.autogenerated';\n\n/**\n * Interactive Feature Collection view props.\n */\nexport interface IInteractiveFeatureCollectionViewProps extends IInteractiveFeatureCollectionProps<{}> {\n title: React.ReactNode;\n interactiveFeatureCollectionHeading: INodeProps;\n interactiveFeatureCollectionContainer: IModuleProps;\n interactiveFeatureCollectionDesktopContainer: INodeProps;\n interactiveFeatureCollectionDesktopItems: React.ReactNode[];\n interactiveFeatureCollectionMobileContainer: INodeProps;\n interactiveFeatureCollectionMobileItems: React.ReactNode[];\n singleSlideCarouselComponentProps: INodeProps;\n singleSlideCarouselItemContainer: INodeProps;\n}\n\n/**\n *\n * InteractiveFeatureCollection component.\n * @extends {React.PureComponent>}\n */\nexport class InteractiveFeatureCollection 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 private static _getFeatureItem(item: React.ReactNode, index: number, itemsCounter: number): React.ReactNode {\n const keyIndex = `interactive-feature-mosaic-item__${index}`;\n return (\n \n {React.cloneElement(item as React.ReactElement, { indexItem: index, itemCounter: itemsCounter, isMosaic: true })}\n \n );\n }\n\n public constructor(props: IInteractiveFeatureCollectionProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const interactiveItems = this.props.slots && this.props.slots.interactiveFeatureItems;\n const itemsFeatureCounter = interactiveItems && interactiveItems.length;\n const singleSlideCarouselComponentProps: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n const initItemsFeatureCounter = 0;\n const createHeading = title && (\n \n );\n const viewProps = {\n ...this.props,\n title: createHeading,\n interactiveFeatureCollectionHeading: {\n className: 'ms-interactive-feature-collection__heading'\n },\n interactiveFeatureCollectionContainer: {\n moduleProps: this.props,\n className: classnames('ms-interactive-feature-collection', className)\n },\n interactiveFeatureCollectionDesktopContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-desktop'\n },\n interactiveFeatureCollectionMobileContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mobile'\n },\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel',\n role: 'listitem'\n },\n interactiveFeatureCollectionMobileItems: this.props.slots.interactiveFeatureItems,\n interactiveFeatureCollectionDesktopItems:\n itemsFeatureCounter > initItemsFeatureCounter &&\n interactiveItems.map((item: React.ReactNode, index: number) =>\n InteractiveFeatureCollection._getFeatureItem(item, index, itemsFeatureCounter)\n )\n };\n return this.props.renderView(viewProps) 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.title!.text = event.target.value);\n}\n\nexport default InteractiveFeatureCollection;\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 React, { ReactNode } from 'react';\n\nimport { IInteractiveFeatureCollectionViewProps } from './interactive-feature-collection';\n\n/**\n * Feature Collection View.\n * @param props - Feature Collection view props.\n * @returns Feature Collection View.\n */\nexport const interactiveFeatureCollectionView: React.FC = props => {\n const {\n title,\n interactiveFeatureCollectionHeading,\n interactiveFeatureCollectionContainer,\n interactiveFeatureCollectionDesktopContainer,\n interactiveFeatureCollectionDesktopItems,\n interactiveFeatureCollectionMobileItems,\n interactiveFeatureCollectionMobileContainer,\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer\n } = props;\n return (\n \n {title}\n {interactiveFeatureCollectionDesktopItems}\n \n \n {interactiveFeatureCollectionMobileItems &&\n interactiveFeatureCollectionMobileItems.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `interactive-feature-carousel-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n \n );\n};\n\nexport default interactiveFeatureCollectionView;\n"],"names":["assembleNode","item","props","itemIndex","_item$links","headingNode","heading","renderHeading","additionalContentHeading","requestContext","React","Msdyn365","text","tag","className","editProps","onEdit","event","handleAdditionalTextChange","paragraphNode","subtext","renderParagraph","additionalContentParagraphText","linksNode","links","map","ctaLink","index","renderLinks","linkIndex","editableLink","ariaLabel","linkText","linkUrl","destinationUrl","openInNewTab","role","key","link","onTextChange","handleAdditionalLinkTextChange","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","actionableRegion","textplacement","textalignmentmobile","textalignment","imageplacement","texttheme","textthememobile","HeadingTag","ContentBlock","super","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","handleTextChange","config","target","value","handleParagraphChange","paragraph","handleLinkTextChange","Number","_updateIsMobile","msdyn365Commerce","isBrowser","setState","isMobile","window","innerWidth","state","bind","componentDidMount","addEventListener","componentWillUnmount","removeEventListener","_heading$tag","_this$props$context$r","_this$props$config$im","image","imageAriaLabel","mobileImage","fillbutton","additionalClassNames","contentBlockTitle","imageProps","gridSettings","imageSettings","contentBlockLinks","ArrayExtensions","hasElements","LinksComponent","Object","assign","msdyn365__moduleLayout","contentBlockText","contentBlockImage","preserveImageSpace","moduleType","typeName","imagePropertyName","moduleId","id","layout","shouldSkipToMainImage","_this$props$config$mo","error","contentBlockviewProps","_objectSpread","title","moduleClass","contentBlockContainer","moduleProps","classnames","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","_getImageLink","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","renderView","additionalContentObject","region","imageAndLinks","__decorate","observable","observer","renderAdditionalContent","_additionalContent$ad","Node","Module","href","VideoPlayerView","_renderDesktop","playerResources","playAriaLabel","playLabel","pauseAriaLabel","pauseLabel","muteAriaLabel","muteLabel","unMuteAriaLabel","unMuteLabel","fullScreenAriaLabel","fullScreenLabel","exitFullScreenAriaLabel","exitFullScreenLabel","playingAriaLabel","playingLabel","pausedAriaLabel","pausedLabel","resources","player","_renderMobile","imageSettingsDefault","disableLazyLoad","viewports","xs","q","w","h","_image$imageSettings","Image","src","altText","loadFailureBehavior","_renderVideoPlayerOverlay","buttonText","buttonLink","headerText","horizontalPosition","Button","color","renderModuleAttributes","AccordionItem","moduleClassName","handleHeadingChange","accordionItemTitle","_onToggle","shouldComponentUpdate","nextProps","data","slots","accordionExpandedStateResult","accordionExpandedState","result","expanded","undefined","isAllExpanded","isExpandedOnInitialLoad","AccordionItemContainer","AccordionItemContent","drawer","ControlledDrawer","toggleButtonText","collapseProps","isOpen","onToggle","accordionSlots","interactionStyle","accordionState","actionContext","update","createAccordionStateInput","_renderAccordionItemContent","items","accordionItemContent","Accordion","expandAllButtonRef","collapseAllButtonRef","_onExpandAll","_onCollapseAll","isDisabled","headingComponent","accordionViewProps","AccordionContainer","HeaderSection","HeadingWrapper","accordianButtonsContainer","accordionButtons","_renderAccordionButton","accordionItemContainer","accordionItems","_getAccordionItem","TelemetryConstant","ExpandAll","attributeExpandAll","CollapseAll","attributeCollapseAll","showToggleAll","disabled","expandAllText","ref","toggleAllSeparator","collapseAllText","setTimeout","_this$collapseAllButt","current","focus","_this$expandAllButton","InteractiveFeatureCollection","_telemetryContent","static","itemsCounter","keyIndex","indexItem","itemCounter","isMosaic","_this$props$config$cl","_title$tag","interactiveItems","interactiveFeatureItems","itemsFeatureCounter","singleSlideCarouselComponentProps","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","vertical","createHeading","viewProps","interactiveFeatureCollectionHeading","interactiveFeatureCollectionContainer","interactiveFeatureCollectionDesktopContainer","interactiveFeatureCollectionMobileContainer","singleSlideCarouselItemContainer","interactiveFeatureCollectionMobileItems","interactiveFeatureCollectionDesktopItems","_getFeatureItem","interactiveFeatureCollectionView","tileItem"],"sourceRoot":""}