{"version":3,"file":"static/js/6b55e5897937decf85a7.bundle.js","mappings":";mvBAAA,MAAMA,EAAU,CAAEC,QAAS,CAAC,EAAGC,YAAa,CAAC,GAExCF,EAAQC,QAAQ,gBAAkB,CAC/BE,EAAG,IAAMC,EAAQ,MACjBC,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,eACHC,EAAG,eAEHC,IAAK,GAGLC,GAAI,sFAKRC,OAAOC,aAAeD,OAAOC,cAAgB,CAAC,EAC9CD,OAAOC,aAAab,QAAO,OACpBY,OAAOC,aAAab,SAAW,CAAC,GAChCD,EAAQC,SAGXY,OAAOC,aAAaZ,YAAW,OAC5BW,OAAOC,aAAaZ,aAAe,CAAC,GACpCF,EAAQE,aAEY,MAAMa,EAAiB,CAAC,EAC/BA,EAAe,6EAA+E,CACtGZ,EAAG,IAAMC,EAAQ,MACjBY,GAAI,wDAEpBH,OAAOC,aAAeD,OAAOC,cAAgB,CAAC,EAC9CD,OAAOC,aAAaC,eAAc,OACPF,OAAOC,aAAaC,gBAAkB,CAAC,GACvCA,iGCY3B,MAyFME,EAA4B,CAC9BC,EACAC,KAC4C,MAC5C,MAAMC,EAAcF,EAAKG,SA7FP,EAACC,EAAkCH,KACrD,MAAMI,EAAiBJ,EAAMI,eAC7B,OACIC,EAAAA,cAACC,EAAAA,GAAa,CACVC,KAAMJ,EACNK,IAAI,IACJC,UAAU,qDACVC,UAAW,CAKPC,OAAQC,IACJZ,EAAMa,2BAA2BD,EAAM,EAE3CR,mBAEN,EA4E8BU,CAAcf,EAAKG,QAASF,GAC1De,EAAgBhB,EAAKiB,SAnEP,EAACC,EAAwCjB,KAC7D,MAAMI,EAAiBJ,EAAMI,eAC7B,OACIC,EAAAA,cAACC,EAAAA,GAAa,CACVC,KAAMU,EACNT,IAAI,IACJC,UAAU,0DACVC,UAAW,CAKPC,OAAQC,IACJZ,EAAMkB,gCAAgCN,EAAM,EAEhDR,mBAEN,EAkDgCe,CAAgBpB,EAAKiB,QAAShB,GAC9DoB,EAAsB,QAAb,EAAGrB,EAAKsB,aAAK,aAAV,EAAYC,KAAI,CAACC,EAAqBC,IAxCxC,EAACD,EAAqBvB,EAA2CyB,KACjF,MAAMC,EAAoC,CACtCC,UAAWJ,EAAQI,UACnBlB,UAAW,2DACXmB,SAAUL,EAAQK,SAClBC,QAASN,EAAQM,QAAQC,eACzBC,aAAcR,EAAQQ,aACtBC,KAAM,QAEJ5B,EAAiBJ,EAAMI,eAC7B,OACIC,EAAAA,cAACC,EAAAA,GAAa,CACV2B,IAAKR,EACLS,KAAMR,EACNhB,UAAW,CAKPyB,aAAcvB,IACVZ,EAAMoC,+BAA+BX,EAAWb,EAAM,EAE1DR,mBAEN,EAiBKiC,CAAYd,EAASvB,EAAOwB,KAGvC,MAAO,CACHtB,QAASD,EACTM,KAAMQ,EACNM,MAAOD,EACPkB,+BAAgC,CAAE7B,UAAW,2DAC7C8B,2BAA4B,CAAE9B,UAAW,qDAC5C,EAQQ+B,EACTxC,IAEA,MAAM,kBAAEyC,GAAsBzC,EAC9B,IAAKyC,EACD,OAIJ,MAAO,CACHC,sBAAuB,CAAEjC,UAAW,gDACpCkC,uBAH2D7C,EAA0B2C,EAAmBzC,GAI3G,ukBCrIL,MAAM4C,UAAoBvC,EAAAA,cAKtBwC,YAAmB7C,GACf8C,MAAM9C,GAgGH,KAAA+C,iBAAoBnC,IACvBoC,KAAKhD,MAAMiD,OAAO/C,QAASK,KAAOK,EAAMsC,OAAOC,KAAK,EAOjD,KAAAC,sBAAyBxC,IAC5BoC,KAAKhD,MAAMiD,OAAOI,UAAYzC,EAAMsC,OAAOC,KAAK,EAxGhDH,KAAKM,eAAsG,QAArFC,EAAAA,EAAAA,UAAS,CAAEC,QAASC,EAAAA,YAAAA,SAAsBC,QAASV,KAAKhD,MAAM0D,QAAQC,UAC5FX,KAAKY,kBAAmBC,EAAAA,EAAAA,oBACpBb,KAAKhD,MAAM0D,QAAQC,QAAQG,kBAC3Bd,KAAKhD,MAAM+D,aACXf,KAAKhD,MAAMgE,UAEnB,CAEOC,SACH,MAAMC,EAAO,OACNlB,KAAKhD,MAAMiD,QAAM,IACpBK,eAAgBN,KAAKM,iBAEnBa,EAA6BnB,KAAKhD,MAAMiD,OAAOkB,MAC/CC,EAAoC,CACtCC,cAAerB,KAAKhD,MAAMsE,UAAUC,UACpCC,eAAgBxB,KAAKhD,MAAMsE,UAAUG,WACrCC,iBAAkB1B,KAAKhD,MAAMsE,UAAUK,aACvCC,gBAAiB5B,KAAKhD,MAAMsE,UAAUO,YACtCC,cAAe9B,KAAKhD,MAAMsE,UAAUS,UACpCC,gBAAiBhC,KAAKhD,MAAMsE,UAAUW,YACtCC,oBAAqBlC,KAAKhD,MAAMsE,UAAUa,gBAC1CC,wBAAyBpC,KAAKhD,MAAMsE,UAAUe,oBAC9CC,aAActC,KAAKhD,MAAMsE,UAAUgB,aACnCC,uBAAwBvC,KAAKhD,MAAMsE,UAAUiB,uBAC7CC,mBAAoBxC,KAAKhD,MAAMsE,UAAUkB,oBAEvCC,EAAgC,CAAC,EAE3B,IAAD,EAAPtB,IACAsB,EAAcC,QAAUvB,EAAMwB,GAC9BF,EAAcG,MAAQzB,EAAMyB,MAC5BH,EAAcI,SAAW1B,EAAM2B,SAE3B3B,EAAM4B,YACNN,EAAcO,eAAiB7B,EAAM4B,UAAUE,KAGnC,QAAhB,EAAI9B,EAAM+B,cAAM,OAAZ,EAAcC,mBACdV,EAAcW,sBAAwBjC,EAAM+B,OAAOC,mBAG3D,MAAME,EAA+B,CAAEnC,QAASA,EAA2BoC,SAAUb,GAC/Ec,EAAS,OAGRvD,KAAKhD,OAAK,IAEbwG,OACInG,EAAAA,cAACoG,EAAAA,GAAc,CAAChG,UAAU,GAAGC,UAAW,CAAEuB,IAAKe,KAAKhD,MAAMiD,OAAOkB,MAAO/D,eAAgB4C,KAAKhD,MAAM0D,QAAQC,UACvGtD,EAAAA,cAACqG,EAAAA,OAAM,CACHC,WAAYN,EACZjC,gBAAiBA,EACjBR,iBAAkBZ,KAAKY,iBACvBgD,SAAU5D,KAAKhD,MAAM0D,QAAQC,QAAQkD,OAAOD,YAIxDhB,MAAO5C,KAAK8D,0BACZvG,KAAMyC,KAAK+D,4BACX1F,MAAO2B,KAAKgE,wBACZC,iBAAkB,CAAExG,UAAW,4BAC/ByG,oBAAqB,CAAEzG,UAAW,iCAClCgC,kBAAmBD,EAA6B,CAC5CpC,eAAgB4C,KAAKhD,MAAM0D,QAAQC,QACnClB,kBAAmBO,KAAKhD,MAAMiD,OAAOR,kBACrC5B,2BAA4BmC,KAAKnC,2BACjCK,gCAAiC8B,KAAK9B,gCACtCkB,+BAAgCY,KAAKZ,iCAEzC+E,WAAYnE,KAAKD,iBACjBqE,gBAAiBpE,KAAKI,sBACtBiE,qBAAsBrE,KAAKnC,2BAC3ByG,0BAA2BtE,KAAK9B,gCAChCqG,WAAYvE,KAAKwE,qBACjBC,qBAAsBzE,KAAKnC,6BAE/B,OAAOmC,KAAKhD,MAAM0H,WAAWnB,EACjC,CAOOiB,qBAAqB/F,EAAmBb,GACvCoC,KAAKhD,MAAMiD,OAAO5B,OAAS2B,KAAKhD,MAAMiD,OAAO5B,MAAMsG,OAAOlG,MAC1DuB,KAAKhD,MAAMiD,OAAO5B,MAAMsG,OAAOlG,IAAYG,SAAWhB,EAAMsC,OAAOC,MAE3E,CAsBOtC,2BAA2BD,GAC1BoC,KAAKhD,MAAMiD,OAAOR,oBAClBO,KAAKhD,MAAMiD,OAAOR,kBAAkBvC,QAAUU,EAAMsC,OAAOC,MAEnE,CAOOf,+BAA+BX,EAAmBb,GAAoC,MACzF,MAAM6B,EAAuD,QAAtC,EAAGO,KAAKhD,MAAMiD,OAAOR,yBAAiB,QAAI,CAAC,EAC9DA,EAAkBpB,QAClBoB,EAAkBpB,MAAMsG,OAAOlG,IAAYG,SAAWhB,EAAMsC,OAAOC,MAE3E,CAMOjC,gCAAgCN,GAC/BoC,KAAKhD,MAAMiD,OAAOR,oBAClBO,KAAKhD,MAAMiD,OAAOR,kBAAkBzB,QAAUJ,EAAMsC,OAAOC,MAEnE,CAMQ6D,wBACJ,MAAM,MAAE3F,GAAU2B,KAAKhD,MAAMiD,OACvB2E,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS7E,KAAKY,iBAAkB,IAEjE,OAAOvC,aAAK,EAALA,EAAOC,KAAI,CAACwG,EAAsBtG,KACrCoG,EAAQG,cAAcC,MAAQF,EAASlG,SACvC,MAAMqG,GAAaC,EAAAA,EAAAA,wBAAuBlF,KAAKY,iBAAkBgE,GAC3DO,EAAS3G,EACTE,EAAoC,CACtCC,UAAWmG,EAASnG,UACpBlB,UAAW,sCACXmB,SAAUkG,EAASlG,SACnBC,QAASiG,EAASjG,QAAQC,eAC1BC,aAAc+F,EAAS/F,aACvBC,KAAM,SACNoG,qBAAsBH,GAG1B,OACI5H,EAAAA,cAACoG,EAAAA,GAAa,CACVxE,IAAKkG,EACLjG,KAAMR,EACNhB,UAAW,CAKPyB,aAAcvB,IACVoC,KAAKwE,qBAAqBhG,EAAOZ,EAAM,EAE3CR,eAAgB4C,KAAKhD,MAAM0D,QAAQC,UAEzC,GAGd,CAEQmD,0BAAuB,MAC3B,MAAM,QAAE5G,GAAY8C,KAAKhD,MAAMiD,OAE/B,OACI/C,GACIG,EAAAA,cAACoG,EAAAA,GAAa,CACVhG,UAAU,kCACVD,IAAgB,QAAb,EAAEN,EAAQM,WAAG,QAAI,KACpBD,KAAML,EAAQK,KACdG,UAAW,CAAEC,OAAQqC,KAAKD,iBAAkB3C,eAAgB4C,KAAKhD,MAAM0D,QAAQC,UAI/F,CAEQoD,4BACJ,MAAM,UAAE1D,GAAcL,KAAKhD,MAAMiD,OAEjC,OACII,GACIhD,EAAAA,cAACoG,EAAAA,GAA0B,CACvBlG,KAAM8C,EACN5C,UAAU,iCACVC,UAAW,CAAEC,OAAQqC,KAAKI,sBAAuBhD,eAAgB4C,KAAKhD,MAAM0D,QAAQC,UAIpG,EAGJ,+ECnPA,MAoCA,EAhByD3D,IACrD,OACIK,EAAAA,cAAAA,MAAAA,OAAAA,OAAAA,CAAKsF,GAAI3F,EAAM2F,GAAIlF,UAAU,mBAAsBT,EAAMqI,uBAAuBrI,IAC3EA,EAAMwG,OACPnG,EAAAA,cAACiI,EAAAA,KAAI,iBAAKtI,EAAMiH,iBAAgB,CAAExG,UAAWT,EAAMiH,iBAAmBjH,EAAMiH,iBAAiBxG,UAAY,KACpGT,EAAM4F,MACN5F,EAAMO,KACNP,EAAMyC,qBA3BUA,EA2BmCzC,EAAMyC,mBA1BhDE,uBAEdtC,EAAAA,cAACiI,EAAAA,KAAI,iBAAK7F,EAAkBC,uBACxBrC,EAAAA,cAAAA,EAAAA,SAAAA,KACKoC,EAAkBE,uBAAuBzC,QAC1CG,EAAAA,cAACiI,EAAAA,KAAI,iBAAK7F,EAAkBE,uBAAuBL,gCAC9CG,EAAkBE,uBAAuBpC,KAC1CF,EAAAA,cAACiI,EAAAA,KAAI,iBAAK7F,EAAkBE,uBAAuBJ,4BAC9CE,EAAkBE,uBAAuBtB,UAQ3D,MAWKhB,EAAAA,cAACiI,EAAAA,KAAI,iBAAKtI,EAAMuI,oBAAmB,CAAE9H,UAAWT,EAAMuI,oBAAsBvI,EAAMuI,oBAAoB9H,UAAY,KAC7GT,EAAMqB,SA7BMoB,KAgCnB,SChDd+F,EAAOC,QAAUpI,cCAjBmI,EAAOC,QAAUC","sources":["webpack://@msdyn365-commerce-partners/fabrikam/./lib/video-player/module-registration.js?ce80","webpack://@msdyn365-commerce-partners/fabrikam/./src/modules/video-player/components/additional-content.tsx?b368","webpack://@msdyn365-commerce-partners/fabrikam/./src/modules/video-player/video-player.tsx?53e5","webpack://@msdyn365-commerce-partners/fabrikam/./src/modules/video-player/video-player.view.tsx?fedb","webpack://@msdyn365-commerce-partners/fabrikam/external var \"React\"?0d3b","webpack://@msdyn365-commerce-partners/fabrikam/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 {\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 {\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 {\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>}\n */\nclass VideoPlayer extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly isMobileDevice: boolean;\n\n public constructor(props: IVideoPlayerProps) {\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 \n \n \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 {\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 \n )\n );\n }\n\n private _getVideoDetailsParagraph(): React.ReactNode | undefined {\n const { paragraph } = this.props.config;\n\n return (\n paragraph && (\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 \n <>\n {additionalContent.additionalContentItems.heading}\n \n {additionalContent.additionalContentItems.text}\n \n {additionalContent.additionalContentItems.links}\n \n \n \n \n );\n }\n\n return null;\n};\n\nconst VideoPlayerView: React.FC = props => {\n return (\n
\n {props.player}\n \n {props.title}\n {props.text}\n {props.additionalContent && renderAdditionalContent(props.additionalContent)}\n \n {props.links}\n \n \n
\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","headingNode","heading","additionalContentHeading","requestContext","React","Msdyn365","text","tag","className","editProps","onEdit","event","handleAdditionalTextChange","renderHeading","paragraphNode","subtext","additionalContentParagraphText","handleAdditionalParagraphChange","renderParagraph","linksNode","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","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":""}