{"version":3,"file":"static/js/af74a28ae448e360bead.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/loacker/views/video-player.view.tsx?3d0b","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":["/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IVideoPlayerAdditionalContentViewProps } from '@msdyn365-commerce-modules/video-player/src/modules/video-player/./components/additional-content';\r\nimport { IVideoPlayerViewProps } from '@msdyn365-commerce-modules/video-player/src/modules/video-player/./video-player';\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: IVideoPlayerAdditionalContentViewProps) => {\r\n if (additionalContent.additionalContentItems) {\r\n return (\r\n \r\n <>\r\n {additionalContent.additionalContentItems.heading}\r\n \r\n {additionalContent.additionalContentItems.text}\r\n \r\n {additionalContent.additionalContentItems.links}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\r\nconst _isIPhone = () => {\r\n const useragent = window && window.navigator.userAgent;\r\n return !!useragent.match(/iphone/i);\r\n}\r\n\r\nconst VideoPlayerView: React.FC = props => {\r\n const config = {\r\n childList: true,\r\n subtree: true,\r\n attributes: false,\r\n characterData: false\r\n };\r\n var observer = new MutationObserver(function (mutationRecords, observer) {\r\n const fullScreenBtn = document.querySelector(`#video-player .msc-videoplayer__controls__fullscreenbtn`) as HTMLElement;\r\n if(_isIPhone() && fullScreenBtn){\r\n const videoPlayer = document.querySelector(`#${props.id} video`);\r\n const fullScreenBtn = document.querySelector(`#video-player .msc-videoplayer__controls__fullscreenbtn`) as HTMLElement;\r\n function handleButtonClick(){\r\n // @ts-ignore\r\n videoPlayer && videoPlayer.webkitEnterFullscreen();\r\n //webkitRequestFullscreen\r\n }\r\n fullScreenBtn.addEventListener('click', handleButtonClick);\r\n }\r\n });\r\n React.useEffect(() => {\r\n const videoCtn = document && document.getElementById(`${props.id}`);\r\n console.log(\"videoCtn didMount\");\r\n console.log(videoCtn);\r\n videoCtn !== null && observer.observe(videoCtn, config);\r\n },[]);\r\n\r\n return (\r\n \r\n {props.player}\r\n \r\n {props.title}\r\n {props.text}\r\n {props.additionalContent && renderAdditionalContent(props.additionalContent)}\r\n \r\n {props.links}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default VideoPlayerView;\r\n","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['__local__|__local__|themes|loacker|views|video-player'] = {\n c: () => require('partner/themes/loacker/views/video-player.view.tsx'),\n cn: '__local__-__local__-video-player'\n };\nviewDictionary['@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":["props","config","childList","subtree","attributes","characterData","additionalContent","observer","MutationObserver","mutationRecords","fullScreenBtn","document","querySelector","window","navigator","userAgent","match","videoPlayer","id","addEventListener","webkitEnterFullscreen","React","videoCtn","getElementById","console","log","observe","Object","assign","className","renderModuleAttributes","player","Node","detailsContainer","title","text","additionalContentItems","additionalContentNode","heading","additionalContentItemContainer","additionalContentItemLinks","links","detailsContainerCta","binding","modules","dataActions","c","require","$type","da","iNM","ns","n","p","pdp","md","__bindings__","_objectSpread","viewDictionary","cn","getAdditionalContentItems","item","_item$links","renderHeading","additionalContentHeading","requestContext","Msdyn365","tag","editProps","onEdit","event","handleAdditionalTextChange","subtext","renderParagraph","additionalContentParagraphText","handleAdditionalParagraphChange","map","ctaLink","index","renderLinks","linkIndex","editableLink","ariaLabel","linkText","linkUrl","destinationUrl","openInNewTab","role","key","link","onTextChange","handleAdditionalLinkTextChange","videoPlayerAdditionalContent","VideoPlayer","constructor","super","handleTextChange","this","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","_video$_links","videoId","duration","playTime","thumbnail","posterframeUrl","src","_links","binaryReferences","videoBinaryReferences","videoPlayerData","metaData","viewProps","MsDyn365","Player","playerData","isEditor","params","_getVideoDetailsHeading","_getVideoDetailsParagraph","_getVideoDetailsLinks","detailsContainerCTA","handleText","handleParagraph","handleAdditionalText","handleAdditionalParagraph","handleLink","handleLinkTextChange","handleAdditionalLink","renderView","Number","_this$props$config$ad","payLoad","getPayloadObject","linkData","contentAction","etext","getTelemetryAttributes","linkId","additionalProperties","_heading$tag","module","exports","ReactDOM"],"sourceRoot":""}