aboutsummaryrefslogtreecommitdiff
path: root/src/client/util/SnappingManager.ts
blob: 2c0a1da8bb70feff0068959b1f39e7db7071bf57 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import { observable, action, runInAction } from 'mobx';
import { computedFn } from 'mobx-utils';
import { Doc } from '../../fields/Doc';

export namespace SnappingManager {
    class Manager {
        @observable IsDragging: boolean = false;
        @observable public horizSnapLines: number[] = [];
        @observable public vertSnapLines: number[] = [];
        @action public clearSnapLines() {
            this.vertSnapLines = [];
            this.horizSnapLines = [];
        }
        @action public setSnapLines(horizLines: number[], vertLines: number[]) {
            this.horizSnapLines = horizLines;
            this.vertSnapLines = vertLines;
        }
    }

    const manager = new Manager();

    export function clearSnapLines() {
        manager.clearSnapLines();
    }
    export function setSnapLines(horizLines: number[], vertLines: number[]) {
        manager.setSnapLines(horizLines, vertLines);
    }
    export function horizSnapLines() {
        return manager.horizSnapLines;
    }
    export function vertSnapLines() {
        return manager.vertSnapLines;
    }

    export function SetIsDragging(dragging: boolean) {
        runInAction(() => (manager.IsDragging = dragging));
    }
    export function GetIsDragging() {
        return manager.IsDragging;
    }

    export function SetShowSnapLines(show: boolean) {
        runInAction(() => (Doc.UserDoc().showSnapLines = show));
    }
    export function GetShowSnapLines() {
        return Doc.UserDoc().showSnapLines;
    }
}