aboutsummaryrefslogtreecommitdiff
path: root/src/client/util/SelectionManager.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/util/SelectionManager.ts')
-rw-r--r--src/client/util/SelectionManager.ts20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/client/util/SelectionManager.ts b/src/client/util/SelectionManager.ts
index 25f158f40..d36a360a1 100644
--- a/src/client/util/SelectionManager.ts
+++ b/src/client/util/SelectionManager.ts
@@ -1,4 +1,4 @@
-import { action, observable } from 'mobx';
+import { action, makeObservable, observable } from 'mobx';
import { Doc, Opt } from '../../fields/Doc';
import { DocViews } from '../../fields/DocSymbols';
import { List } from '../../fields/List';
@@ -12,9 +12,13 @@ import { UndoManager } from './UndoManager';
export namespace SelectionManager {
class Manager {
- @observable SelectedViews: DocumentView[] = [];
+ @observable SelectedViews: DocumentView[] = observable([]);
@observable IsDragging: boolean = false;
- @observable SelectedSchemaDocument: Doc | undefined;
+ @observable SelectedSchemaDocument: Doc | undefined = undefined;
+
+ constructor() {
+ makeObservable(this);
+ }
@action
SelectSchemaViewDoc(doc: Opt<Doc>) {
@@ -26,7 +30,7 @@ export namespace SelectionManager {
if (!extendSelection) this.DeselectAll();
manager.SelectedViews.push(docView);
docView.SELECTED = true;
- docView.props.whenChildContentsActiveChanged(true);
+ docView._props.whenChildContentsActiveChanged(true);
}
}
@action
@@ -34,7 +38,7 @@ export namespace SelectionManager {
if (docView && manager.SelectedViews.includes(docView)) {
docView.SELECTED = false;
manager.SelectedViews.splice(manager.SelectedViews.indexOf(docView), 1);
- docView.props.whenChildContentsActiveChanged(false);
+ docView._props.whenChildContentsActiveChanged(false);
}
}
@action
@@ -44,7 +48,7 @@ export namespace SelectionManager {
manager.SelectedSchemaDocument = undefined;
manager.SelectedViews.forEach(dv => {
dv.SELECTED = false;
- dv.props.whenChildContentsActiveChanged(false);
+ dv._props.whenChildContentsActiveChanged(false);
});
manager.SelectedViews.length = 0;
}
@@ -87,7 +91,7 @@ export namespace SelectionManager {
ScriptingGlobals.add(function SelectionManager_selectedDocType(type: string, expertMode: boolean, checkContext?: boolean) {
if (Doc.noviceMode && expertMode) return false;
if (type === 'tab') {
- return SelectionManager.Views().lastElement()?.props.renderDepth === 0;
+ return SelectionManager.Views().lastElement()?._props.renderDepth === 0;
}
let selected = (sel => (checkContext ? DocCast(sel?.embedContainer) : sel))(SelectionManager.SelectedSchemaDoc() ?? SelectionManager.Docs().lastElement());
return selected?.type === type || selected?.type_collection === type || !type;
@@ -115,7 +119,7 @@ ScriptingGlobals.add(function redo() {
});
ScriptingGlobals.add(function selectedDocs(container: Doc, excludeCollections: boolean, prevValue: any) {
const docs = SelectionManager.Views()
- .map(dv => dv.props.Document)
+ .map(dv => dv.Document)
.filter(d => !Doc.AreProtosEqual(d, container) && !d.annotationOn && d.type !== DocumentType.KVP && (!excludeCollections || d.type !== DocumentType.COL || !Cast(d.data, listSpec(Doc), null)));
return docs.length ? new List(docs) : prevValue;
});