From 61420d03c48d67913cd85571088dd31ac88fbb5a Mon Sep 17 00:00:00 2001 From: bobzel Date: Mon, 23 Aug 2021 15:03:44 -0400 Subject: cleaned up videobox controls along with option to switch to native controls. changed placement of link buttons in lightbox to be outside of document --- src/client/views/nodes/VideoBox.tsx | 72 +++++++++++++++++++++---------------- 1 file changed, 42 insertions(+), 30 deletions(-) (limited to 'src/client/views/nodes/VideoBox.tsx') diff --git a/src/client/views/nodes/VideoBox.tsx b/src/client/views/nodes/VideoBox.tsx index ce45c01e6..fc97a6f4d 100644 --- a/src/client/views/nodes/VideoBox.tsx +++ b/src/client/views/nodes/VideoBox.tsx @@ -28,6 +28,8 @@ import { LinkDocPreview } from "./LinkDocPreview"; import "./VideoBox.scss"; import { DragManager } from "../../util/DragManager"; import { DocumentManager } from "../../util/DocumentManager"; +import { DocumentType } from "../../documents/DocumentTypes"; +import { Tooltip } from "@material-ui/core"; const path = require('path'); type VideoDocument = makeInterface<[typeof documentSchema]>; @@ -49,7 +51,7 @@ export class VideoBox extends ViewBoxAnnotatableComponent = React.createRef(); private _playRegionTimer: any = null; private _playRegionDuration = 0; - @observable static _showControls: boolean; + @observable static _nativeControls: boolean; @observable _marqueeing: number[] | undefined; @observable _savedAnnotations = new ObservableMap(); @observable _screenCapture = false; @@ -125,7 +127,7 @@ export class VideoBox extends ViewBoxAnnotatableComponent { this._fullScreen = true; this.player && this.player.requestFullscreen(); try { @@ -137,7 +139,6 @@ export class VideoBox extends ViewBoxAnnotatableComponent { Utils.CopyText(url); }, icon: "expand-arrows-alt" }); - subitems.push({ description: "Toggle Show Controls", event: action(() => VideoBox._showControls = !VideoBox._showControls), icon: "expand-arrows-alt" }); - subitems.push({ description: "Take Snapshot", event: () => this.Snapshot(), icon: "expand-arrows-alt" }); - subitems.push({ + subitems.push({ description: "Full Screen", event: this.FullScreen, icon: "expand" }); + subitems.push({ description: "Take Snapshot", event: this.Snapshot, icon: "expand-arrows-alt" }); + this.rootDoc.type === DocumentType.SCREENSHOT && subitems.push({ description: "Screen Capture", event: (async () => { runInAction(() => this._screenCapture = !this._screenCapture); this._videoRef!.srcObject = !this._screenCapture ? undefined : await (navigator.mediaDevices as any).getDisplayMedia({ video: true }); @@ -292,6 +292,8 @@ export class VideoBox extends ViewBoxAnnotatableComponent this.layoutDoc.dontAutoPlayFollowedLinks = !this.layoutDoc.dontAutoPlayFollowedLinks, icon: "expand-arrows-alt" }); subitems.push({ description: (this.layoutDoc.autoPlayAnchors ? "Don't auto play" : "Auto play") + " anchors onClick", event: () => this.layoutDoc.autoPlayAnchors = !this.layoutDoc.autoPlayAnchors, icon: "expand-arrows-alt" }); + subitems.push({ description: "Toggle Native Controls", event: action(() => VideoBox._nativeControls = !VideoBox._nativeControls), icon: "expand-arrows-alt" }); + subitems.push({ description: "Copy path", event: () => { Utils.CopyText(url); }, icon: "expand-arrows-alt" }); ContextMenu.Instance.addItem({ description: "Options...", subitems: subitems, icon: "video" }); } } @@ -315,7 +317,7 @@ export class VideoBox extends ViewBoxAnnotatableComponent this.Play()} onSeeked={this.updateTimecode} onPause={() => this.Pause()} @@ -380,26 +382,36 @@ export class VideoBox extends ViewBoxAnnotatableComponent - {"" + formatTime(curTime)} - {" " + Math.round((curTime - Math.trunc(curTime)) * 100)} - , -
- -
, -
- -
, - VideoBox._showControls ? (null) : [ - //
-
- -
, -
- F - {/*
*/} -
- ]]); + const nonNativeControls = [ + {"playback"}} placement="bottom"> +
+ +
+
, + {"timecode"}} placement="bottom"> +
+ {formatTime(curTime)} + {" " + Math.floor((curTime - Math.trunc(curTime)) * 100).toString().padStart(2, "0")} +
+
, + {"view full screen"}} placement="bottom"> +
+ +
+
]; + return
+ {[...(VideoBox._nativeControls ? [] : nonNativeControls), + {"snapshot current frame"}
} placement="bottom"> +
+ +
+ , + {"show annotation timeline"}} placement="bottom"> +
+ +
+
,]} + ; } onPlayDown = () => this._playing ? this.Pause() : this.Play(); @@ -453,7 +465,7 @@ export class VideoBox extends ViewBoxAnnotatableComponent; + src={`https://www.youtube.com/embed/${this.youtubeVideoId}?enablejsapi=1&rel=0&showinfo=1&autoplay=0&mute=1&start=${start}&modestbranding=1&controls=${VideoBox._nativeControls ? 1 : 0}`} />; } @action.bound @@ -610,4 +622,4 @@ export class VideoBox extends ViewBoxAnnotatableComponent