aboutsummaryrefslogtreecommitdiff
path: root/src/client/util/SnappingManager.ts
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2023-12-12 14:06:38 -0500
committerbobzel <zzzman@gmail.com>2023-12-12 14:06:38 -0500
commitb769a150c8da505289f045b8b296a759c75e03a8 (patch)
tree7aa8c82b1335bc5fe9e4a1a9fb72a4dcbab3a69f /src/client/util/SnappingManager.ts
parent6951e98f1b863fe1f404d8bf532a9241e2371ec2 (diff)
fixed and cleaned up snapping lines
Diffstat (limited to 'src/client/util/SnappingManager.ts')
-rw-r--r--src/client/util/SnappingManager.ts93
1 files changed, 33 insertions, 60 deletions
diff --git a/src/client/util/SnappingManager.ts b/src/client/util/SnappingManager.ts
index 715eb021f..44c6aad52 100644
--- a/src/client/util/SnappingManager.ts
+++ b/src/client/util/SnappingManager.ts
@@ -1,68 +1,41 @@
-import { observable, action, runInAction } from 'mobx';
+import { observable, action, runInAction, reaction, makeObservable } from 'mobx';
import { Doc } from '../../fields/Doc';
-export namespace SnappingManager {
- class Manager {
- @observable ShiftKey = false;
- @observable CtrlKey = false;
- @observable IsDragging: boolean = false;
- @observable IsResizing: Doc | undefined = undefined;
- @observable CanEmbed: boolean = false;
- @observable public horizSnapLines: number[] = [];
- @observable public vertSnapLines: number[] = [];
- @action public clearSnapLines() {
- this.vertSnapLines = [];
- this.horizSnapLines = [];
- }
- @action public addSnapLines(horizLines: number[], vertLines: number[]) {
- this.horizSnapLines.push(...horizLines);
- this.vertSnapLines.push(...vertLines);
- }
+export class SnappingManager {
+ static _manager: SnappingManager;
+ private static get Instance() {
+ return SnappingManager._manager ?? new SnappingManager();
}
- const manager = new Manager();
+ @observable _shiftKey = false;
+ @observable _ctrlKey = false;
+ @observable _isDragging: boolean = false;
+ @observable _isResizing: Doc | undefined = undefined;
+ @observable _canEmbed: boolean = false;
+ @observable _horizSnapLines: number[] = [];
+ @observable _vertSnapLines: number[] = [];
- export function clearSnapLines() {
- manager.clearSnapLines();
- }
- export function addSnapLines(horizLines: number[], vertLines: number[]) {
- manager.addSnapLines(horizLines, vertLines);
- }
- export function horizSnapLines() {
- return manager.horizSnapLines;
- }
- export function vertSnapLines() {
- return manager.vertSnapLines;
+ constructor() {
+ SnappingManager._manager = this;
+ makeObservable(this);
}
- export function SetShiftKey(down: boolean) {
- runInAction(() => (manager.ShiftKey = down));
- }
- export function SetCtrlKey(down: boolean) {
- runInAction(() => (manager.CtrlKey = down));
- }
- export function SetIsDragging(dragging: boolean) {
- runInAction(() => (manager.IsDragging = dragging));
- }
- export function SetIsResizing(doc: Doc | undefined) {
- runInAction(() => (manager.IsResizing = doc));
- }
- export function SetCanEmbed(canEmbed: boolean) {
- runInAction(() => (manager.CanEmbed = canEmbed));
- }
- export function GetShiftKey() {
- return manager.ShiftKey;
- }
- export function GetCtrlKey() {
- return manager.CtrlKey;
- }
- export function GetIsDragging() {
- return manager.IsDragging;
- }
- export function GetIsResizing() {
- return manager.IsResizing;
- }
- export function GetCanEmbed() {
- return manager.CanEmbed;
- }
+ @action public static clearSnapLines = () => (this.Instance._vertSnapLines.length = this.Instance._horizSnapLines.length = 0);
+ @action public static addSnapLines = (horizLines: number[], vertLines: number[]) => {
+ this.Instance._horizSnapLines.push(...horizLines);
+ this.Instance._vertSnapLines.push(...vertLines);
+ };
+
+ public static get HorizSnapLines() { return SnappingManager.Instance._horizSnapLines; } // prettier-ignore
+ public static get VertSnapLines() { return SnappingManager.Instance._vertSnapLines; } // prettier-ignore
+ public static get ShiftKey() { return SnappingManager.Instance._shiftKey; } // prettier-ignore
+ public static get CtrlKey() { return SnappingManager.Instance._ctrlKey; } // prettier-ignore
+ public static get IsDragging() { return SnappingManager.Instance._isDragging; } // prettier-ignore
+ public static get IsResizing() { return SnappingManager.Instance._isResizing; } // prettier-ignore
+ public static get CanEmbed() { return SnappingManager.Instance._canEmbed; } // prettier-ignore
+ public static SetShiftKey = (down: boolean) => runInAction(() => (SnappingManager.Instance._shiftKey = down));
+ public static SetCtrlKey = (down: boolean) => runInAction(() => (SnappingManager.Instance._ctrlKey = down));
+ public static SetIsDragging = (dragging: boolean) => runInAction(() => (SnappingManager.Instance._isDragging = dragging));
+ public static SetIsResizing = (doc: Doc | undefined) => runInAction(() => (SnappingManager.Instance._isResizing = doc));
+ public static SetCanEmbed = (canEmbed: boolean) => runInAction(() => (SnappingManager.Instance._canEmbed = canEmbed));
}