From 005367a60410af854cad60ee59be642bd411c37e Mon Sep 17 00:00:00 2001 From: Bob Zeleznik Date: Tue, 16 Jul 2019 00:53:58 -0400 Subject: fixed youtube except for automatic update on scrubbing and hiding of related videos. --- src/client/views/nodes/VideoBox.tsx | 116 +++++++++++++++++------------------- 1 file changed, 56 insertions(+), 60 deletions(-) (limited to 'src') diff --git a/src/client/views/nodes/VideoBox.tsx b/src/client/views/nodes/VideoBox.tsx index 552d3f188..864db0bfc 100644 --- a/src/client/views/nodes/VideoBox.tsx +++ b/src/client/views/nodes/VideoBox.tsx @@ -24,6 +24,11 @@ export class VideoBox extends DocComponent(VideoD private _youtubeReactionDisposer?: IReactionDisposer; private _youtubePlayer: any = undefined; private _videoRef: HTMLVideoElement | null = null; + private _youtubeIframeId: number = -1; + private _youtubeContentCreated = false; + static _youtubeIframeCounter: number = 0; + @observable _forceCreateYouTubeIFrame = false; + @observable static _showControls: boolean; @observable _playTimer?: NodeJS.Timeout = undefined; @observable _fullScreen = false; @observable public Playing: boolean = false; @@ -53,6 +58,7 @@ export class VideoBox extends DocComponent(VideoD } @action public Seek(time: number) { + //if (this._youtubePlayer && this._youtubePlayer.getPlayerState() === 5) return; this._youtubePlayer && !this.Playing && this._youtubePlayer.seekTo(time); } @@ -73,15 +79,10 @@ export class VideoBox extends DocComponent(VideoD @action updateTimecode = () => { - let ctime = this._youtubePlayer.getCurrentTime(); - let otime = this.lastyoutube ? (this.lastyoutube as any).getCurrentTime() : -1; - console.log("Setting " + ctime + " " + otime); this.player && (this.props.Document.curPage = this.player.currentTime); this._youtubePlayer && (this.props.Document.curPage = this._youtubePlayer.getCurrentTime()); } - static _staticCounter: number = 0; - counter: number = -1; - _startupTime: number = -1; + componentDidMount() { if (this.props.setVideoBox) this.props.setVideoBox(this); @@ -94,28 +95,6 @@ export class VideoBox extends DocComponent(VideoD this.Document.nativeHeight = this.Document.nativeWidth / youtubeaspect; this.Document.height = FieldValue(this.Document.width, 0) / youtubeaspect; } - this._reactionDisposer = reaction(() => this.props.Document.curPage, () => this.Seek(this.Document.curPage || 0), { fireImmediately: true }); - this._youtubeReactionDisposer = reaction(() => [this.props.isSelected(), DocumentDecorations.Instance.Interacting, InkingControl.Instance.selectedTool], () => { - let interactive = InkingControl.Instance.selectedTool === InkTool.None && this.props.isSelected() && !DocumentDecorations.Instance.Interacting; - this._youtubePlayer.getIframe().style.pointerEvents = interactive ? "all" : "none"; - }, { fireImmediately: true }) - } - } - - @action - onYoutubePlayerReady = (event: any) => { - this._youtubePlayer && (this._youtubePlayer.getIframe().style.pointerEvents = "none"); - if (this.Document.curPage) { - this.Playing = false; - if (this._startupTime !== -1) { - this.Seek(this.Document.curPage); - } - else { - let cpage = this.Document.curPage; - this.Pause(); - this._startupTime = cpage; - this._youtubePlayer.seekTo(cpage); - } } } @@ -137,13 +116,6 @@ export class VideoBox extends DocComponent(VideoD } } - @observable static _showControls: boolean; - - @computed get youtubeVideoId() { - let field = Cast(this.Document[this.props.fieldKey], VideoField); - return field && field.url.href.indexOf("youtube") !== -1 ? ((arr: string[]) => arr[arr.length - 1])(field.url.href.split("/")) : ""; - } - specificContextMenu = (e: React.MouseEvent): void => { let field = Cast(this.Document[this.props.fieldKey], VideoField); if (field) { @@ -158,49 +130,73 @@ export class VideoBox extends DocComponent(VideoD let interactive = InkingControl.Instance.selectedTool || !this.props.isSelected() ? "" : "-interactive"; let style = "videoBox-content" + (this._fullScreen ? "-fullScreen" : "") + interactive; return !field ?
Loading
: -