{"version":3,"file":"static/js/c98d2d383174231ca555.bundle.js","mappings":"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","sources":["webpack://msdyn365.commerce.online/./lib/video-player/module-registration.js?ce80","webpack://msdyn365.commerce.online/./src/modules/video-player/components/additional-content.tsx?b368","webpack://msdyn365.commerce.online/./src/modules/video-player/video-player.tsx?53e5","webpack://msdyn365.commerce.online/./src/modules/video-player/video-player.view.tsx?fedb","webpack://msdyn365.commerce.online/external var \"React\"?0d3b","webpack://msdyn365.commerce.online/external var \"ReactDOM\"?853b"],"sourcesContent":["const binding = { modules: {}, dataActions: {} };\n\n    (binding.modules['video-player'] = {\n        c: () => require('@msdyn365-commerce-modules/video-player/dist/lib/modules/video-player/video-player'),\n        $type: 'contentModule',\n        da: [],\n        \n        iNM: true,\n        ns: '@msdyn365-commerce-modules',\n        n: 'video-player',\n        p: 'video-player',\n        \n        pdp: '',\n        \n        \n        md: 'node_modules/@msdyn365-commerce-modules/video-player/dist/lib/modules/video-player'\n    });\n        \n\n        \n    window.__bindings__ = window.__bindings__ || {};\n    window.__bindings__.modules = {\n        ...window.__bindings__.modules || {},\n        ...binding.modules\n    };\n    \n        window.__bindings__.dataActions = {\n        ...window.__bindings__.dataActions || {},\n        ...binding.dataActions\n    };\n                        export const viewDictionary = {};\n                        viewDictionary['@msdyn365-commerce-modules|video-player|modules|video-player|video-player'] = {\n                c: () => require('@msdyn365-commerce-modules/video-player/dist/lib/modules/video-player/video-player.view.js'),\n                cn: '@msdyn365-commerce-modules-video-player-video-player'\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 '../video-player.props.autogenerated';\n\n/**\n * IVideoPlayerAdditionalContentProps: Interface for\n * Video Player Additional Content Component props.\n */\nexport interface IVideoPlayerAdditionalContentProps {\n    requestContext: Msdyn365.IRequestContext;\n    additionalContent: IAdditionalContentData | undefined;\n    handleAdditionalTextChange(event: Msdyn365.ContentEditableEvent): void;\n    handleAdditionalParagraphChange(event: Msdyn365.ContentEditableEvent): void;\n    handleAdditionalLinkTextChange(linkIndex: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IVideoPlayerAdditionalContentProps: Interface for\n * Video Player Additional Content view props.\n */\nexport interface IVideoPlayerAdditionalContentViewProps {\n    additionalContentNode: INodeProps;\n    additionalContentItems?: IVideoPlayerAdditionalContentItemViewProps;\n}\n\n/**\n * IVideoPlayerAdditionalContentProps: Interface for\n * Video Player Additional Content Item view props.\n */\nexport interface IVideoPlayerAdditionalContentItemViewProps {\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 - Video Player Additional content component props.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IVideoPlayerAdditionalContentProps) => {\n    const requestContext = props.requestContext;\n    return (\n        <Msdyn365.Text\n            text={additionalContentHeading}\n            tag='p'\n            className='ms-video-player__details__additional-content__text'\n            editProps={{\n                /**\n                 * On edit event for heading text change.\n                 * @param event - Change event.\n                 */\n                onEdit: event => {\n                    props.handleAdditionalTextChange(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 - Video Player Additional content component props.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IVideoPlayerAdditionalContentProps) => {\n    const requestContext = props.requestContext;\n    return (\n        <Msdyn365.Text\n            text={additionalContentParagraphText}\n            tag='p'\n            className='ms-video-player__details__additional-content__paragraph'\n            editProps={{\n                /**\n                 * On edit event for heading text change.\n                 * @param event - Change event.\n                 */\n                onEdit: event => {\n                    props.handleAdditionalParagraphChange(event);\n                },\n                requestContext\n            }}\n        />\n    );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Video Player Additional content component props.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IVideoPlayerAdditionalContentProps, linkIndex: number) => {\n    const editableLink: Msdyn365.ILinksData = {\n        ariaLabel: ctaLink.ariaLabel,\n        className: 'ms-video-player__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        <Msdyn365.Link\n            key={linkIndex}\n            link={editableLink}\n            editProps={{\n                /**\n                 * Handle additional Link Text change.\n                 * @param event - The keyboard event.\n                 */\n                onTextChange: event => {\n                    props.handleAdditionalLinkTextChange(linkIndex, event);\n                },\n                requestContext\n            }}\n        />\n    );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Video Player additonal content item props.\n * @param props - Video Player Additional content component props.\n * @returns IVideoPlayerAdditionalContentItemViewProps.\n */\nconst getAdditionalContentItems = (\n    item: IAdditionalContentData,\n    props: IVideoPlayerAdditionalContentProps\n): IVideoPlayerAdditionalContentItemViewProps => {\n    const headingNode = item.heading && renderHeading(item.heading, props);\n    const paragraphNode = item.subtext && renderParagraph(item.subtext, props);\n    const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n        return renderLinks(ctaLink, props, index);\n    });\n\n    return {\n        heading: headingNode,\n        text: paragraphNode,\n        links: linksNode,\n        additionalContentItemContainer: { className: 'ms-video-player__details__additional-content__container' },\n        additionalContentItemLinks: { className: 'ms-video-player__details__additional-content__cta' }\n    };\n};\n\n/**\n * VideoPlayerAdditionalContent component.\n * @param props - Video Player Additional content component props.\n * @returns Video Player Additional content view props.\n */\nexport const videoPlayerAdditionalContent = (\n    props: IVideoPlayerAdditionalContentProps\n): IVideoPlayerAdditionalContentViewProps | undefined => {\n    const { additionalContent } = props;\n    if (!additionalContent) {\n        return undefined;\n    }\n\n    const reactNodes: IVideoPlayerAdditionalContentItemViewProps = getAdditionalContentItems(additionalContent, props);\n    return {\n        additionalContentNode: { className: 'ms-video-player__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 { IPlayerData, IPlayerOptions, IPlayerResources, IVideoMetadata, Player } from '@msdyn365-commerce/components';\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport {\n    getPayloadObject,\n    getTelemetryAttributes,\n    getTelemetryObject,\n    INodeProps,\n    isMobile,\n    ITelemetryContent,\n    VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IVideoPlayerAdditionalContentViewProps, videoPlayerAdditionalContent } from './components/additional-content';\nimport { ILinksData, IVideoPlayerConfig, IVideoPlayerProps } from './video-player.props.autogenerated';\n\nexport interface IVideoPlayerViewProps extends IVideoPlayerProps<{}> {\n    player: React.ReactNode;\n    title?: React.ReactNode;\n    text?: React.ReactNode;\n    links?: React.ReactNode;\n    detailsContainer?: INodeProps;\n    detailsContainerCta?: INodeProps;\n    additionalContent?: IVideoPlayerAdditionalContentViewProps;\n    handleText?(): void;\n    handleParagraph?(): void;\n    handleAdditionalText?(): void;\n    handleAdditionalParagraph?(): void;\n    handleLink?(): void;\n    handleAdditionalLink?(): void;\n}\n\n/**\n *\n * VideoPlayer component.\n * @extends {React.PureComponent<IVideoPlayerProps<IVideoPlayerData>>}\n */\nclass VideoPlayer extends React.PureComponent<IVideoPlayerProps<IVideoPlayerConfig>> {\n    private readonly telemetryContent: ITelemetryContent;\n\n    private readonly isMobileDevice: boolean;\n\n    public constructor(props: IVideoPlayerProps<IVideoPlayerConfig>) {\n        super(props);\n        this.isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n        this.telemetryContent = getTelemetryObject(\n            this.props.context.request.telemetryPageName!,\n            this.props.friendlyName,\n            this.props.telemetry\n        );\n    }\n\n    public render(): JSX.Element {\n        const options = {\n            ...this.props.config,\n            isMobileDevice: this.isMobileDevice\n        };\n        const video: MsDyn365.IVideoData = this.props.config.video;\n        const playerResources: IPlayerResources = {\n            playAriaLabel: this.props.resources.playLabel,\n            pauseAriaLabel: this.props.resources.pauseLabel,\n            playingAriaLabel: this.props.resources.playingLabel,\n            pausedAriaLabel: this.props.resources.pausedLabel,\n            muteAriaLabel: this.props.resources.muteLabel,\n            unMuteAriaLabel: this.props.resources.unMuteLabel,\n            fullScreenAriaLabel: this.props.resources.fullScreenLabel,\n            exitFullScreenAriaLabel: this.props.resources.exitFullScreenLabel,\n            seekBarLabel: this.props.resources.seekBarLabel,\n            videoTimeDurationLabel: this.props.resources.videoTimeDurationLabel,\n            closedCaptionLabel: this.props.resources.closedCaptionLabel\n        };\n        const videoMetaData: IVideoMetadata = {};\n\n        if (video) {\n            videoMetaData.videoId = video.id;\n            videoMetaData.title = video.title;\n            videoMetaData.duration = video.playTime;\n\n            if (video.thumbnail) {\n                videoMetaData.posterframeUrl = video.thumbnail.src;\n            }\n\n            if (video._links?.binaryReferences) {\n                videoMetaData.videoBinaryReferences = video._links.binaryReferences;\n            }\n        }\n        const videoPlayerData: IPlayerData = { options: options as IPlayerOptions, metaData: videoMetaData };\n        const viewProps = {\n            // Context for telemetry and raw data for C1 to do customization\n            // Including computed data, state data and methods\n            ...this.props,\n\n            player: (\n                <MsDyn365.Video className='' editProps={{ key: this.props.config.video, requestContext: this.props.context.request }}>\n                    <Player\n                        playerData={videoPlayerData}\n                        playerResources={playerResources}\n                        telemetryContent={this.telemetryContent}\n                        isEditor={this.props.context.request.params.isEditor}\n                    />\n                </MsDyn365.Video>\n            ),\n            title: this._getVideoDetailsHeading(),\n            text: this._getVideoDetailsParagraph(),\n            links: this._getVideoDetailsLinks(),\n            detailsContainer: { className: 'ms-video-player__details' },\n            detailsContainerCTA: { className: 'ms-video-player__details__cta' },\n            additionalContent: videoPlayerAdditionalContent({\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            handleText: this.handleTextChange,\n            handleParagraph: this.handleParagraphChange,\n            handleAdditionalText: this.handleAdditionalTextChange,\n            handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n            handleLink: this.handleLinkTextChange,\n            handleAdditionalLink: this.handleAdditionalTextChange\n        };\n        return this.props.renderView(viewProps) as React.ReactElement;\n    }\n\n    /**\n     * Handle link text change.\n     * @param linkIndex - The link index.\n     * @param event - The dialog that is allowed to remain open.\n     */\n    public handleLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\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    /**\n     * Handle text change.\n     * @param event - The dialog that is allowed to remain open.\n     */\n    public handleTextChange = (event: MsDyn365.ContentEditableEvent): void => {\n        this.props.config.heading!.text = event.target.value;\n    };\n\n    /**\n     * Handle paragraph change.\n     * @param event - The dialog that is allowed to remain open.\n     */\n    public handleParagraphChange = (event: MsDyn365.ContentEditableEvent): void => {\n        this.props.config.paragraph = event.target.value;\n    };\n\n    /**\n     * Handle additional text change.\n     * @param event - The dialog that is allowed to remain open.\n     */\n    public handleAdditionalTextChange(event: MsDyn365.ContentEditableEvent): void {\n        if (this.props.config.additionalContent) {\n            this.props.config.additionalContent.heading = event.target.value;\n        }\n    }\n\n    /**\n     * Handle additional link text change.\n     * @param linkIndex - The link index.\n     * @param event - The dialog that is allowed to remain open.\n     */\n    public handleAdditionalLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\n        const additionalContent = this.props.config.additionalContent ?? {};\n        if (additionalContent.links) {\n            additionalContent.links[Number(linkIndex)].linkText = event.target.value;\n        }\n    }\n\n    /**\n     * Handle additional paragraph change.\n     * @param event - The dialog that is allowed to remain open.\n     */\n    public handleAdditionalParagraphChange(event: MsDyn365.ContentEditableEvent): void {\n        if (this.props.config.additionalContent) {\n            this.props.config.additionalContent.subtext = event.target.value;\n        }\n    }\n\n    /**\n     * Get video details links.\n     * @returns - React node.\n     */\n    private _getVideoDetailsLinks(): React.ReactNode[] | undefined {\n        const { links } = this.props.config;\n        const payLoad = getPayloadObject('click', this.telemetryContent, '');\n\n        return links?.map((linkData: ILinksData, index: number) => {\n            payLoad.contentAction.etext = linkData.linkText;\n            const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n            const linkId = index;\n            const editableLink: MsDyn365.ILinksData = {\n                ariaLabel: linkData.ariaLabel,\n                className: 'ms-video-player__details__cta__link',\n                linkText: linkData.linkText,\n                linkUrl: linkData.linkUrl.destinationUrl,\n                openInNewTab: linkData.openInNewTab,\n                role: 'button',\n                additionalProperties: attributes\n            };\n\n            return (\n                <MsDyn365.Link\n                    key={linkId}\n                    link={editableLink}\n                    editProps={{\n                        /**\n                         * Handle additional paragraph change.\n                         * @param event - The keyboard event.\n                         */\n                        onTextChange: event => {\n                            this.handleLinkTextChange(index, event);\n                        },\n                        requestContext: this.props.context.request\n                    }}\n                />\n            );\n        });\n    }\n\n    private _getVideoDetailsHeading(): React.ReactNode | undefined {\n        const { heading } = this.props.config;\n\n        return (\n            heading && (\n                <MsDyn365.Text\n                    className='ms-video-player__details__title'\n                    tag={heading.tag ?? 'h1'}\n                    text={heading.text}\n                    editProps={{ onEdit: this.handleTextChange, requestContext: this.props.context.request }}\n                />\n            )\n        );\n    }\n\n    private _getVideoDetailsParagraph(): React.ReactNode | undefined {\n        const { paragraph } = this.props.config;\n\n        return (\n            paragraph && (\n                <MsDyn365.RichTextComponent\n                    text={paragraph}\n                    className='ms-video-player__details__text'\n                    editProps={{ onEdit: this.handleParagraphChange, requestContext: this.props.context.request }}\n                />\n            )\n        );\n    }\n}\n\nexport default VideoPlayer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IVideoPlayerAdditionalContentViewProps } from './components/additional-content';\nimport { IVideoPlayerViewProps } from './video-player';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IVideoPlayerAdditionalContentViewProps) => {\n    if (additionalContent.additionalContentItems) {\n        return (\n            <Node {...additionalContent.additionalContentNode}>\n                <>\n                    {additionalContent.additionalContentItems.heading}\n                    <Node {...additionalContent.additionalContentItems.additionalContentItemContainer}>\n                        {additionalContent.additionalContentItems.text}\n                        <Node {...additionalContent.additionalContentItems.additionalContentItemLinks}>\n                            {additionalContent.additionalContentItems.links}\n                        </Node>\n                    </Node>\n                </>\n            </Node>\n        );\n    }\n\n    return null;\n};\n\nconst VideoPlayerView: React.FC<IVideoPlayerViewProps> = props => {\n    return (\n        <div id={props.id} className='ms-video-player' {...props.renderModuleAttributes(props)}>\n            {props.player}\n            <Node {...props.detailsContainer} className={props.detailsContainer ? props.detailsContainer.className : ''}>\n                {props.title}\n                {props.text}\n                {props.additionalContent && renderAdditionalContent(props.additionalContent)}\n                <Node {...props.detailsContainerCta} className={props.detailsContainerCta ? props.detailsContainerCta.className : ''}>\n                    {props.links}\n                </Node>\n            </Node>\n        </div>\n    );\n};\n\nexport default VideoPlayerView;\n","module.exports = React;","module.exports = ReactDOM;"],"names":["binding","modules","dataActions","c","require","$type","da","iNM","ns","n","p","pdp","md","window","__bindings__","viewDictionary","cn","getAdditionalContentItems","item","props","heading","additionalContentHeading","requestContext","React","Msdyn365","text","tag","className","editProps","onEdit","event","handleAdditionalTextChange","renderHeading","subtext","additionalContentParagraphText","handleAdditionalParagraphChange","renderParagraph","links","map","ctaLink","index","linkIndex","editableLink","ariaLabel","linkText","linkUrl","destinationUrl","openInNewTab","role","key","link","onTextChange","handleAdditionalLinkTextChange","renderLinks","additionalContentItemContainer","additionalContentItemLinks","videoPlayerAdditionalContent","additionalContent","additionalContentNode","additionalContentItems","VideoPlayer","constructor","super","handleTextChange","this","config","target","value","handleParagraphChange","paragraph","isMobileDevice","isMobile","variant","VariantType","Viewport","context","request","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","telemetry","render","options","video","playerResources","playAriaLabel","resources","playLabel","pauseAriaLabel","pauseLabel","playingAriaLabel","playingLabel","pausedAriaLabel","pausedLabel","muteAriaLabel","muteLabel","unMuteAriaLabel","unMuteLabel","fullScreenAriaLabel","fullScreenLabel","exitFullScreenAriaLabel","exitFullScreenLabel","seekBarLabel","videoTimeDurationLabel","closedCaptionLabel","videoMetaData","videoId","id","title","duration","playTime","thumbnail","posterframeUrl","src","_links","binaryReferences","videoBinaryReferences","videoPlayerData","metaData","viewProps","player","MsDyn365","Player","playerData","isEditor","params","_getVideoDetailsHeading","_getVideoDetailsParagraph","_getVideoDetailsLinks","detailsContainer","detailsContainerCTA","handleText","handleParagraph","handleAdditionalText","handleAdditionalParagraph","handleLink","handleLinkTextChange","handleAdditionalLink","renderView","Number","payLoad","getPayloadObject","linkData","contentAction","etext","attributes","getTelemetryAttributes","linkId","additionalProperties","renderModuleAttributes","Node","detailsContainerCta","module","exports","ReactDOM"],"sourceRoot":""}