aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/MainView.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/views/MainView.tsx')
-rw-r--r--src/client/views/MainView.tsx57
1 files changed, 25 insertions, 32 deletions
diff --git a/src/client/views/MainView.tsx b/src/client/views/MainView.tsx
index 2b47c2534..825856ff3 100644
--- a/src/client/views/MainView.tsx
+++ b/src/client/views/MainView.tsx
@@ -1,7 +1,7 @@
import { library } from '@fortawesome/fontawesome-svg-core';
import {
faArrowDown, faArrowUp, faBolt, faCaretUp, faCat, faCheck, faChevronRight, faClone, faCloudUploadAlt, faCommentAlt, faCut, faEllipsisV, faExclamation, faFilePdf, faFilm, faFont, faGlobeAsia, faLongArrowAltRight,
- faMusic, faObjectGroup, faPause, faMousePointer, faPenNib, faFileAudio, faPen, faEraser, faPlay, faPortrait, faRedoAlt, faThumbtack, faTree, faTv, faUndoAlt, faHighlighter
+ faMusic, faObjectGroup, faPause, faMousePointer, faPenNib, faFileAudio, faPen, faEraser, faPlay, faPortrait, faRedoAlt, faThumbtack, faTree, faTv, faUndoAlt, faHighlighter, faMicrophone
} from '@fortawesome/free-solid-svg-icons';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { action, computed, configure, observable, reaction, runInAction } from 'mobx';
@@ -24,7 +24,7 @@ import { HistoryUtil } from '../util/History';
import SharingManager from '../util/SharingManager';
import { Transform } from '../util/Transform';
import { CollectionLinearView } from './CollectionLinearView';
-import { CollectionBaseView, CollectionViewType } from './collections/CollectionBaseView';
+import { CollectionViewType, CollectionView } from './collections/CollectionView';
import { CollectionDockingView } from './collections/CollectionDockingView';
import { ContextMenu } from './ContextMenu';
import { DictationOverlay } from './DictationOverlay';
@@ -41,6 +41,8 @@ import { SchemaHeaderField, RandomPastel } from '../../new_fields/SchemaHeaderFi
import { RecommendationsBox } from './RecommendationsBox';
import { PresBox } from './nodes/PresBox';
import { OverlayView } from './OverlayView';
+import { Scripting } from '../util/Scripting';
+import { AudioBox } from './nodes/AudioBox';
@observer
export class MainView extends React.Component {
@@ -48,6 +50,7 @@ export class MainView extends React.Component {
private _buttonBarHeight = 75;
private _flyoutSizeOnDown = 0;
private _urlState: HistoryUtil.DocUrl;
+ private _docBtnRef = React.createRef<HTMLDivElement>();
@observable private _panelWidth: number = 0;
@observable private _panelHeight: number = 0;
@@ -113,6 +116,7 @@ export class MainView extends React.Component {
library.add(faEraser);
library.add(faFileAudio);
library.add(faPenNib);
+ library.add(faMicrophone);
library.add(faFilm);
library.add(faMusic);
library.add(faTree);
@@ -137,6 +141,7 @@ export class MainView extends React.Component {
globalPointerDown = action((e: PointerEvent) => {
this.isPointerDown = true;
+ AudioBox.Enabled = true;
const targets = document.elementsFromPoint(e.x, e.y);
if (targets && targets.length && targets[0].className.toString().indexOf("contextMenu") === -1) {
ContextMenu.Instance.closeMenu();
@@ -196,11 +201,6 @@ export class MainView extends React.Component {
var dockingLayout = { content: [{ type: 'row', content: [CollectionDockingView.makeDocumentConfig(freeformDoc, freeformDoc, 600)] }] };
let mainDoc = Docs.Create.DockDocument([freeformDoc], JSON.stringify(dockingLayout), {}, id);
if (this.userDoc && ((workspaces = Cast(this.userDoc.workspaces, Doc)) instanceof Doc)) {
- if (!this.userDoc.linkManagerDoc) {
- let linkManagerDoc = new Doc();
- linkManagerDoc.allLinks = new List<Doc>([]);
- this.userDoc.linkManagerDoc = linkManagerDoc;
- }
Doc.AddDocToList(workspaces, "data", mainDoc);
mainDoc.title = `Workspace ${DocListCast(workspaces.data).length}`;
}
@@ -233,7 +233,7 @@ export class MainView extends React.Component {
if (!state.nro) {
DocServer.Control.makeReadOnly();
}
- CollectionBaseView.SetSafeMode(true);
+ CollectionView.SetSafeMode(true);
} else if (state.nro || state.nro === null || state.readonly === false) {
} else if (doc.readOnly) {
DocServer.Control.makeReadOnly();
@@ -351,15 +351,15 @@ export class MainView extends React.Component {
}
}
mainContainerXf = () => new Transform(0, -this._buttonBarHeight, 1);
- @computed
- get flyout() {
+
+ @computed get flyout() {
let sidebarContent = this.userDoc && this.userDoc.sidebarContainer;
if (!(sidebarContent instanceof Doc)) {
return (null);
}
let sidebarButtonsDoc = Cast(CurrentUserUtils.UserDocument.sidebarButtons, Doc) as Doc;
sidebarButtonsDoc.columnWidth = this.flyoutWidth / 3 - 30;
- return <div className="mainView-flyoutContainer">
+ return <div className="mainView-flyoutContainer" >
<div className="mainView-tabButtons" style={{ height: `${this._buttonBarHeight}px` }}>
<DocumentView
Document={sidebarButtonsDoc}
@@ -417,8 +417,7 @@ export class MainView extends React.Component {
</div></div>;
}
- @computed
- get mainContent() {
+ @computed get mainContent() {
const sidebar = this.userDoc && this.userDoc.sidebarContainer;
return !this.userDoc || !(sidebar instanceof Doc) ? (null) : (
<div className="mainView-mainContent" >
@@ -449,31 +448,24 @@ export class MainView extends React.Component {
</div>);
}
+ public static expandFlyout = action(() => {
+ MainView.Instance._flyoutTranslate = true;
+ MainView.Instance.flyoutWidth = 250;
+ });
+
@computed get expandButton() {
- return !this._flyoutTranslate ? (<div className="mainView-expandFlyoutButton" title="Re-attach sidebar" onPointerDown={action(() => {
- this.flyoutWidth = 250;
- this._flyoutTranslate = true;
- })}><FontAwesomeIcon icon="chevron-right" color="grey" size="lg" /></div>) : (null);
+ return !this._flyoutTranslate ? (<div className="mainView-expandFlyoutButton" title="Re-attach sidebar" onPointerDown={MainView.expandFlyout}><FontAwesomeIcon icon="chevron-right" color="grey" size="lg" /></div>) : (null);
}
- addButtonDoc = (doc: Doc) => {
- Doc.AddDocToList(CurrentUserUtils.UserDocument.expandingButtons as Doc, "data", doc);
- return true;
- }
- remButtonDoc = (doc: Doc) => {
- Doc.RemoveDocFromList(CurrentUserUtils.UserDocument.expandingButtons as Doc, "data", doc);
- return true;
- }
- @action
- moveButtonDoc = (doc: Doc, targetCollection: Doc, addDocument: (document: Doc) => boolean): boolean => {
- return this.remButtonDoc(doc) && addDocument(doc);
- }
+ addButtonDoc = (doc: Doc) => Doc.AddDocToList(CurrentUserUtils.UserDocument.expandingButtons as Doc, "data", doc);
+ remButtonDoc = (doc: Doc) => Doc.RemoveDocFromList(CurrentUserUtils.UserDocument.expandingButtons as Doc, "data", doc);
+ moveButtonDoc = (doc: Doc, targetCollection: Doc, addDocument: (document: Doc) => boolean) => this.remButtonDoc(doc) && addDocument(doc);
+
buttonBarXf = () => {
if (!this._docBtnRef.current) return Transform.Identity();
let { scale, translateX, translateY } = Utils.GetScreenTransform(this._docBtnRef.current);
return new Transform(-translateX, -translateY, 1 / scale);
}
- _docBtnRef = React.createRef<HTMLDivElement>();
@computed get docButtons() {
if (CurrentUserUtils.UserDocument.expandingButtons instanceof Doc) {
return <div className="mainView-docButtons" ref={this._docBtnRef}
@@ -483,7 +475,7 @@ export class MainView extends React.Component {
Document={CurrentUserUtils.UserDocument.expandingButtons}
DataDoc={undefined}
fieldKey={"data"}
- fieldExt={""}
+ annotationsKey={""}
select={emptyFunction}
chromeCollapsed={true}
active={returnFalse}
@@ -511,7 +503,7 @@ export class MainView extends React.Component {
}
render() {
- return (<div className="mainView-container">
+ return (<div id="mainView-container">
<DictationOverlay />
<SharingManager />
<GoogleAuthenticationManager />
@@ -525,3 +517,4 @@ export class MainView extends React.Component {
</div >);
}
}
+Scripting.addGlobal(function freezeSidebar() { MainView.expandFlyout(); });